性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

Westbrook
認證:VIP會員
所在專題目錄 查看專題
dsPIC33 BootLoader(4)-基于MCC配置Boot區(qū)
dsPIC33 BootLoader(5)-基于MCC生成應用程序
Bootloader演示
dsPIC33 Bootloader(6) -開發(fā)時需要考慮的一些關鍵問題
dsPIC33 BootLoader(7)-修改鏈接描述文件GLD
dsPIC33 Bootloader(8)-Hex文件解析
作者動態(tài) 更多
10分鐘教你快速完成數(shù)字電源的閉環(huán)控制
2022-04-02 17:26
數(shù)字電源學習板演示
2022-02-19 13:36
手把手教你學數(shù)字電源系列視頻(22)- 數(shù)字控制的軟件流程
2022-02-19 13:28
手把手教你學數(shù)字電源系列視頻(21)- 設計數(shù)字補償器(LDE執(zhí)行)
2022-02-19 13:28
手把手教你學數(shù)字電源系列視頻(20)- 設計數(shù)字補償器(AB系數(shù)計算)
2022-02-19 13:27

dsPIC33 Bootloader(8)-Hex文件解析

市面上大多數(shù)單片機的Hex文件都是基于Intel Hex,而dsPIC33C也不例外,dsPIC33C支持的格式為Intel HEX32(INHX32)。

hex文件以ascii形式,按照行來記錄數(shù)據(jù)。

Hex文件的基本格式為:

                           :BBAAAATTHHHH....HHHHCC

每個數(shù)據(jù)記錄都是以9字符前綴開始,并總是以2字符校驗和結束。無論格式如何,所有記錄都是以“:”開始。以下介紹了其中的各個元素。                

  • BB -- 16進制,表示此行數(shù)據(jù)長度字節(jié)數(shù),表示HH的數(shù)目                
  • AAAA -- 16進制,表示數(shù)據(jù)記錄的起始地址,若此行是數(shù)據(jù)記錄,則表示偏移地址,其它無意義                     
  • TT -- 16進制,表示記錄類型

         00-數(shù)據(jù)記錄(Data Record);

         01-文件記錄結束(End of File record);

         02-擴展段地址記錄(Extend Segment address record);后面所有數(shù)據(jù)地址+段地址左移4位;

         03-擴展線性地址記錄(Extend Linear address record);后面所有數(shù)據(jù)地址+線性地址左移16位             

  • HH...HH -- 16進制,低字節(jié)/高字節(jié) 結合數(shù)據(jù),高字節(jié)在后;注意,若是偏移地址,則都是2字節(jié),高字節(jié)在前,低字節(jié)在后  ;                   

CC -- 16進制,校驗碼,除冒號和自身以外的其他字節(jié)數(shù)據(jù)加起來模除256的余數(shù)的補碼。

例如:10 A6B0 00 0000EB00D4FD0700000F78001E007800 BA

CC=01+~(10+A6+B0+00+00+00+EB+00+D4+FD+07+00+00+0F+78+00+1E+00+78+00)=BA

由于Inter hex文件格式是針對字節(jié)的,而16位程序計數(shù)器不是,所以程序存儲器段需要特殊的處理。每個24位程序字都通過插入所謂的“虛擬字節(jié)”而擴展為32位。每個程序存儲器地址都乘以2來獲得字節(jié)地址。

下面是編譯后生成的Hex代碼示例。

第一條紅色框:02 0000 04 0000 fa

表示這條記錄有2個字節(jié)的數(shù)據(jù),起始地址為0000,類型為04,表示為擴展地址,具體數(shù)據(jù)為0000,校驗和為fa。

第二條紅色框 10 3008 00 0000fa00007c80000080fa0000000600 42

表示這條記錄有10(HEX)個字節(jié)的數(shù)據(jù),起始地址為2400,類型為00,具體數(shù)據(jù)為0000fa00007c80000080fa0000000600,校驗和為42。

第三條紅色框:00 0000 01 FF - 結尾標志行

表示文件結束。

請注意,數(shù)據(jù)記錄的第二條紅框的裝入地址為3008,而源代碼指定的地址為0x1804。

Microchip 16bit MCU采用字的形式存儲指令代碼,每個字的長度為24位,共3個字節(jié)。指令的地址按2往上增加,地址的尾數(shù)都為偶數(shù)。在HEX文件中每條指令對應有4個字節(jié),即在最高位進行了補0操做,在HEX文件中插入了00“虛高字節(jié)”。數(shù)據(jù)是以“小數(shù)位”格式表示的,表示最低有效字節(jié)(LSB)先出現(xiàn)。虛擬字節(jié)后出現(xiàn),正好位于校驗和之前。


MCU另外的一種傳輸文件格式為BIN文件,BIN文件采用數(shù)據(jù)流的形式,從第一條有效數(shù)據(jù)開始,直到最后一個字節(jié)的數(shù)據(jù)均會包含。

HEX文件特點:優(yōu)點是整個文件小,有有效數(shù)據(jù)時才會產生記錄。缺點是傳輸時包含了起始符,地址,數(shù)據(jù)類型校驗和等數(shù)據(jù),數(shù)據(jù)的有效負荷率低。對數(shù)據(jù)幀的解析復雜。BIN文件特定:優(yōu)點是數(shù)據(jù)傳輸時簡單,傳輸?shù)亩际菙?shù)據(jù)。缺點是整個文件大,包含了全FF這種無效的數(shù)據(jù)。

HEX文件到BIN文件轉換,采用軟件H-Converter  bin to hex可實現(xiàn)HEX和BIN之間的相互轉換。

下面以CAN Bootloader來傳輸數(shù)據(jù)(可以采用具有CAN外設的MCU,比如PIC18F46K80),實現(xiàn)對目標板應用程序的升級。

Bootloader程序流程圖如下,Appstate ==0x55,表示應用程序已升級到Flash空間。

Application程序流程圖。


至此,本專題初步介紹了Bootloader的原理、Flash空間分配、中斷重映射以及Hex解析,關于更深入的討論不作為本專題的討論范圍,感謝大家支持。如果覺得本專題對你有幫助,歡迎關注,點贊,轉發(fā),收藏!最后,由于本人認識水平有限,某些內容也認識不全面,望各位大佬賜教。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉載。授權事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 3
收藏 4
關注 844
成為作者 賺取收益
全部留言
0/200
  • 電源漫談 2021-09-07 23:02
    摩拜大佬
    回復