日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]LPC43xx IAP函數(shù)的調(diào)用一般MCU的IAP是,廠商固化一段代碼在芯片的某個區(qū)域,然后告訴你這個代碼的入口地址。我們一般可以這么做:typedef void (*IAP_ENTRY_T)(參數(shù)列表)#define IAP_ADDR (0xdeadbeef) // 假設(shè)的地

LPC43xx IAP函數(shù)的調(diào)用

一般MCU的IAP是,廠商固化一段代碼在芯片的某個區(qū)域,然后告訴你這個代碼的入口地址。
我們一般可以這么做:


typedef void (*IAP_ENTRY_T)(參數(shù)列表)

#define IAP_ADDR (0xdeadbeef) // 假設(shè)的地址

IAP_ENTRY_T const iap_entry = (IAP_ENTRY_T)IAP_ADDR;


這樣我們便可以通過iap_entry來調(diào)用芯片里的固化代碼了。

然而,LPC43xx系列內(nèi)部的布局卻不是這樣。

LPC43xx ROM API結(jié)構(gòu)

上面是LPC43xx內(nèi)部固化代碼的結(jié)構(gòu),可以看出:NXP把固化的函數(shù)的入口地址放到了一個數(shù)組里,然后告訴我們數(shù)組的起始地址,IAP函數(shù)排在第0位。
那么我們可以這樣調(diào)用IAP函數(shù):


/* 定義IAP入口函數(shù)的類型別名 */

typedef void (*IAP_ENTRY_T)(unsigned int[5], unsigned int[4]);


// ROM Driver Table的起始地址

#define LPC_ROM_API_BASE_LOC (0x10400100)


// 因為Cortex-M4是32位的,所以用uint32_t類型把IAP入口函數(shù)的地址提取出來

#define IAP_ENTRY_LOCATION (*((uint32_t *)LPC_ROM_API_BASE_LOC))


static inline void iap_entry(unsigned int cmd_param[5], unsigned int status_result[4])

{ // 強制轉(zhuǎn)換為函數(shù)指針,然后調(diào)用

((IAP_ENTRY_T)IAP_ENTRY_LOCATION)(cmd_param, status_result);

}

內(nèi)部FLASH操作是的注意事項

關(guān)全局中斷

一定要先調(diào)用 Init 命令,再調(diào)用其他命令

擦除或?qū)慒LASH區(qū)塊前,要先調(diào)用Prepare sectors for write operation命令

LPC43xx命令總覽




本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉