【问题标题】:IAP on LPC microcontrollerLPC 微控制器上的 IAP
【发布时间】:2013-12-21 17:10:40
【问题描述】:

此代码是 LPC 上 IAP 的一部分:

#define IAP_LOCATION 0x7ffffff1
...
unsigned long command[5];
unsigned long result[3];
...
typedef void (*IAP)(unsigned int [],unsigned int[]);
IAP iap_entry;

iap_entry = (IAP) IAP_LOCATION;

iap_entry(command, result);

谁能解释一下它是如何工作的,尤其是:

iap_entry = (IAP) IAP_LOCATION;
iap_entry(command, result)

【问题讨论】:

    标签: c microcontroller lpc


    【解决方案1】:
    typedef void (*IAP)(unsigned int [],unsigned int[]);
    

    IAP 是类型指向函数的指针(unsigned int[], unsigned int[])返回void

    iap_entry = (IAP) IAP_LOCATION;
    

    地址IAP_LOCATION有一些代码。将其视为 C 函数。

    iap_entry(command, result);
    

    调用函数


    通常,当硬件包含带有预编译代码的 ROM 时,就会发生这种情况。你必须告诉 C 编译器这段代码在内存中的什么位置,以及它期望的参数类型。

    【讨论】:

    • +1 是的 - 它是 IAP 入口点,(在应用程序编程中 - 吹闪)。这个未对齐的地址有一些魔力 - 忘了什么。
    • 必须为 Cortex M 设置拇指位。
    • 不要忘记禁用中断!它可能有效,但在 IAP 调用期间发生中断时会停止。
    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 2013-01-18
    相关资源
    最近更新 更多