99热久久这里只有精品,99久久人妻精品免费二区,成人综合亚洲欧美一区,国产成人精品亚洲一区,久久国产亚洲精品赲碰热

華大單片機(jī)HC32L110遠(yuǎn)程升級(jí)

  • 發(fā)布時(shí)間:2022-05-16 10:46:11,加入時(shí)間:2021年07月05日(距今1537天)
  • 地址:中國(guó)»遼寧»沈陽(yáng):遼寧省沈陽(yáng)市鐵西區(qū)建工西路5號(hào)財(cái)富星座B座
  • 公司:沈陽(yáng)芯碩科技有限公司, 用戶等級(jí):普通會(huì)員 已認(rèn)證
  • 聯(lián)系:宣女士,手機(jī):13840143924 電話:024-85718900 QQ:3540893315

通常實(shí)現(xiàn)IAP功能時(shí),需要在設(shè)計(jì)固件程序時(shí)編寫(xiě)兩個(gè)項(xiàng)目代碼,第一個(gè)項(xiàng)目程序即BOOT程序不執(zhí)行正常的功能操作,而只是通過(guò)某種通信方式(如USB、USART)接收程序或數(shù)據(jù),執(zhí)行對(duì)第二部分代碼的更新;第二個(gè)項(xiàng)目程序即APP程序用戶真正的功能代碼。這兩部分項(xiàng)目代碼同時(shí)燒錄在Flash中,當(dāng)芯片上電后,首先是第一個(gè)項(xiàng)目程序BOOT開(kāi)始運(yùn)行,它主要實(shí)現(xiàn)如下功能:
1)檢查是否需要對(duì)第二部APP程序代碼進(jìn)行更新
2)如果不需要更新則轉(zhuǎn)到4)
3)執(zhí)行更新操作
4)跳轉(zhuǎn)到第二部分代碼執(zhí)行
     第一部分BOOT代碼可以通過(guò)SWD或者離線編程器下到芯片F(xiàn)lash內(nèi)部,第二部分APP和第一部分BOOT一起燒入芯片內(nèi)部,以后需要程序更新再通過(guò)第一把BOOT代碼更新。根據(jù)芯片系列的Flash存放不同地址范圍,從低地址區(qū)域開(kāi)始存放BOOT,緊跟其后的就是APP程序,本篇筆記受限于芯片內(nèi)部Flash容量,只是存放一個(gè)APP程序。即在芯片內(nèi)部有兩個(gè)程序即BOOT和APP程序。
IAP功能具體實(shí)現(xiàn)
      芯片程序一般從Flash地址0x0000_0000開(kāi)始執(zhí)行,基于Cortex-M0+內(nèi)核特性,內(nèi)部通過(guò)中斷向量表來(lái)響應(yīng)中斷,程序從中斷向量表取出復(fù)位中斷向量執(zhí)行中斷程序,當(dāng)中斷產(chǎn)生,芯片內(nèi)部PC指針定位到中斷向量表來(lái)取出對(duì)應(yīng)的中斷服務(wù)程序執(zhí)行。如果沒(méi)有中斷產(chǎn)生,在芯片執(zhí)行完復(fù)位中斷服務(wù)程序后,跳轉(zhuǎn)到main函數(shù)順序執(zhí)行死循環(huán)。如果有中斷產(chǎn)生,通過(guò)中斷向量表執(zhí)行對(duì)應(yīng)的中斷服務(wù)程序。
      當(dāng)加入IAP后,芯片還是從中斷向量表取出復(fù)位中斷向量執(zhí)行中斷程序,如果沒(méi)有中斷產(chǎn)生,在芯片執(zhí)行完復(fù)位中斷服務(wù)程序后,跳轉(zhuǎn)到main函數(shù)。在執(zhí)行完IAP后,新程序的復(fù)位中斷向量地址為0x0000_0004 + BOOT程序大小,跳轉(zhuǎn)到APP程序的復(fù)位向量表,執(zhí)行APP的復(fù)位中斷服務(wù)程序,隨后跳轉(zhuǎn)到APP程序的main函數(shù)執(zhí)行。
其中:BOOT程序大小3.5KB
      Para 區(qū)域存放IAP升級(jí)期間參數(shù)和標(biāo)志占用0.5KB
      APP程序大小為24KB 
  Demo程序,操作流程如下:   
先將APP工程HEX下到芯片內(nèi)部
打開(kāi)BOOT工程HEX下到芯片,或者可以使用工具將兩個(gè)HEX文件合并在一起下到芯片內(nèi)部。
使用上位機(jī)演示程序,打開(kāi)串口波特率固定為9600。按照協(xié)議將APP工程的bin文件下到0x1000開(kāi)始的芯片內(nèi)部,其中要求APP的bin文件小于28KB。
參考樣例及驅(qū)動(dòng)
通過(guò)上述介紹,使用演示Demo程序IAP需要特定協(xié)議。
通信協(xié)議格式如下:
///*frame:68  A0  A1  C  Page   L0  L1  D0... DN-1   CRC0  CRC1   16*///
///*offset :0    1    2    3      4       5    6    7      8+N     9+N   10+N   11 +N*///
頭字符:    固定字符為0x68 一個(gè)字節(jié)
地址:       A0 A1 兩個(gè)字節(jié)  
控制碼C: 讀地址為0x15    寫(xiě)地址為0x25
頁(yè)地址page: 一個(gè)字節(jié) 代表現(xiàn)在要操作的那個(gè)頁(yè)
長(zhǎng)度L0 L1:  兩個(gè)字節(jié) L0代表高字節(jié),L1代表低字節(jié),此處長(zhǎng)度僅代表數(shù)據(jù)區(qū)域長(zhǎng)度
數(shù)據(jù)域D0…DN-1 : 代表讀出或者寫(xiě)入的數(shù)據(jù)
數(shù)據(jù)校驗(yàn)CRC: 采用CRC-16方式,代表數(shù)據(jù)域數(shù)據(jù)的校驗(yàn)。
結(jié)束符號(hào):固定字符為0x16 一個(gè)字節(jié)
讀指令如下:
68   A0   A1   15   Page   0x00   0x00   CRC0   CRC1 16  
正確回復(fù):68 A0 A1   95   Page   0x04   0x00   D0 ………… D1023   CRC0 CRC1 16
錯(cuò)誤回復(fù)   68 A0  A1  D5   Page   0x00   0x00  CRC0  CRC1 16
Page 選擇(0 -- 27)
每次讀取1K字節(jié)數(shù)據(jù)
寫(xiě)指令如下:
68   A0   A1   25   Page   04   00   D0 ………… D1023   CRC0   CRC1 16  
正確回復(fù):68 A0   A1   A5   Page   04   00   CRC0 CRC1 16
錯(cuò)誤回復(fù)   68 A0   A1   E5   Page   00   00    CRC0  CRC1 16
Page 選擇(0 -- 27)
每次寫(xiě)1K字節(jié)數(shù)據(jù)
開(kāi)始IAP升級(jí)指令
68   A0   A1   36   00   00    00    00   00   16  
正確回復(fù)  68  A0   A1    B6   00    00  00  00    00   16
錯(cuò)誤回復(fù)  68  A0   A1    F6    00   00  00  00    00   16
結(jié)束IAP升級(jí)指令
68   A0   A1   49   00   00   00   00    00   16  
正確回復(fù)  68  A0   A1   C9   00     00  00  00    00   16
錯(cuò)誤回復(fù)  68  A0   A1   09   00     00  00  00    00   16
發(fā)送數(shù)據(jù)幀如果發(fā)送結(jié)束到接收小于2s,如果超過(guò)說(shuō)明IAP升級(jí)通信錯(cuò)誤。
以下部分簡(jiǎn)要介紹IAP實(shí)現(xiàn)關(guān)鍵代碼:
1)BOOT實(shí)現(xiàn)跳轉(zhuǎn)到APP代碼:
if(((*(__IO uint32_t*)appxaddr)&0x2FFE0000)==0x20000000) //檢查棧頂?shù)刂肥欠窈戏?br /> {
  jump2app=(iapfun)*(__IO uint32_t*)(appxaddr+4);  //APP程序復(fù)位地址
  MSR_MSP(*(__IO uint32_t*)appxaddr);              //初始化APP堆棧指針
  jump2app();                                      //跳轉(zhuǎn)到APP程序
}  
2)APP程序中斷向量偏移:
   new_vect_table  EQU     0x00001000         ;中斷向量偏移長(zhǎng)度
; reset Vector table address.
   LDR     R0, =0xE000ED08
   LDR     R2, =new_vect_table
   STR     R2, [R0]       ;向量表重定義點(diǎn)擊并拖拽以移動(dòng)
總結(jié)
      以上章節(jié)簡(jiǎn)要介紹了HC32L110系列的IAP控制模塊基本功能,詳細(xì)說(shuō)明了該模塊的各個(gè)功能及操作步驟,用戶在實(shí)際的應(yīng)用開(kāi)發(fā)過(guò)程中,如果需要更深一步了解該模塊的使用方法及操作事項(xiàng),應(yīng)以HC32L110的用戶手冊(cè)為準(zhǔn)。本章中提到的樣例既可以作為用戶進(jìn)一步的實(shí)驗(yàn)與學(xué)習(xí),也可以在實(shí)際開(kāi)發(fā)中直接應(yīng)用。

聯(lián)系我時(shí)請(qǐng)說(shuō)明來(lái)自志趣網(wǎng),謝謝!

免責(zé)申明:志趣網(wǎng)所展示的信息由用戶自行提供,其真實(shí)性、合法性、準(zhǔn)確性由信息發(fā)布人負(fù)責(zé)。使用本網(wǎng)站的所有用戶須接受并遵守法律法規(guī)。志趣網(wǎng)不提供任何保證,并不承擔(dān)任何法律責(zé)任。 志趣網(wǎng)建議您交易小心謹(jǐn)慎。