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

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀](擴展-IAP主要用于產(chǎn)品出廠后應(yīng)用程序的更新作用,上一篇博文詳細(xì)的對IAP 升級程序做了詳細(xì)的分析http://blog.csdn.net/yx_l128125/article/details/12992773,考慮到出廠時要先燒寫IAP 再燒寫APP應(yīng)用程序要燒寫2次

(擴展-IAP主要用于產(chǎn)品出廠后應(yīng)用程序的更新作用,上一篇博文詳細(xì)的對IAP 升級程序做了詳細(xì)的分析http://blog.csdn.net/yx_l128125/article/details/12992773,考慮到出廠時要先燒寫IAP 再燒寫APP應(yīng)用程序要燒寫2次增加工人勞動力基礎(chǔ)上寫了“STM32 IAP+APP ==>雙劍合一”鏈接稍后發(fā),希望通過IAP程序的hex 文件 和 APP的hex文件 合成一個hex 或者把合成的hex文件轉(zhuǎn)成.bin 文件 減少“體力”)


一、簡單框架介紹

(簡單回顧上篇博文《IAP在線 升級詳解》http://blog.csdn.net/yx_l128125/article/details/12992773的幾個重要知識點:

1、stm32內(nèi)部flash起始地址:0x0800 0000 -- 0x0802 0000 ,其中 從 0x0800 0000開始位置存放IAP 升級程序, 從0x 0800 3000開始的位置存放APP應(yīng)用程序[ 而APP中的中斷向量表放在0x0800 3000地方,更重要的是中斷向量表的第1項存放的是棧頂?shù)刂罚诙椃诺氖恰睆?fù)位中斷“ ]

二、IAP +APP 結(jié)合的方法

IAP 和APP 的hex 文件合成1個hex 文件的方法有2種:

(1) "簡單1+1"

(2) IAP 先燒寫進flash 的 0x0800 0000 開始位置, APP燒寫到 flash 的0x 0800 3000開始的地方; 之后通過我上一篇博文的 IAP程序的文件讀出功能讀取flash 上的數(shù)據(jù)讀到一個.bin文件上;


我們先來詳細(xì)分析“方法一”的操作:

1.我們設(shè)置編譯IAP程序的編譯器(如圖),這個設(shè)置意思是把IAP程序下載到flash 的0x0800 0000開頭的位置,然后編譯程序


2.編譯完程序后,在工程目錄的output文件夾中找到編譯后生產(chǎn)的.hex文件;

用 notepad++ 或者 UltraEdit 打開 IAP 的.hex文件 和APP 的.hex 文件 , (順便問一下.hex文件格式你會看嗎?)

hex文件格式:

(1)以行為單位,每行以冒號開頭,內(nèi)容全部為16進制碼(以ASCII碼形式顯示)

(2)在HEX文件里面,每一行代表一個記錄。記錄的基本格式為:


冒號本行數(shù)據(jù)長度本行數(shù)據(jù)起始地址數(shù)據(jù)類型數(shù)據(jù)校驗碼
1 byte2 bytes1 byten byte1 byte













第一個字節(jié)表示本行數(shù)據(jù)的長度;

第二、三字節(jié)表示本行數(shù)據(jù)的起始地址;

第四字節(jié)表示數(shù)據(jù)類型,數(shù)據(jù)類型有:0x00、0x01、0x02、0x03、0x04、0x05。

'00' Data Rrecord:用來記錄數(shù)據(jù),HEX文件的大部分記錄都是數(shù)據(jù)記錄

'01' End of File Record:用來標(biāo)識文件結(jié)束,放在文件的最后,標(biāo)識HEX文件的結(jié)尾

'02' Extended Segment Address Record:用來標(biāo)識擴展段地址的記錄

'03' Start Segment Address Record:開始段地址記錄

'04' Extended Linear Address Record:用來標(biāo)識擴展線性地址的記錄

'05' Start Linear Address Record:開始線性地址記錄

然后是數(shù)據(jù),最后一個字節(jié)為校驗和。

校驗和的算法為:計算校驗和前所有16進制碼的累加和(不計進位),檢驗和= 0x100 -累加和

打開.hex內(nèi)容如下:(中間部分?jǐn)?shù)據(jù)略去)


:020000040800F2

:10000000B80B00207D250008850300088703000841

:100010009B0300089F030008A303000800000000E2

:10002000000000000000000000000000A70300081E

:10003000A903000800000000AB030008AD0300089E

。

。

:102B40000400000000000000000000000000000081

:102B50000000000000000000000000000000000075

:102B6000010203040102030406070809020406081F

:102B700000366E01000000000000000001020304A6

:042B80000607080933

:0400000508000121CD

:00000001FF


先分析第一條語句---- “:02 0000 04 0800 F2”



冒號本行數(shù)據(jù)長度本行數(shù)據(jù)起始地址(偏移地址)數(shù)據(jù)類型數(shù)據(jù)校驗碼
1 byte2 bytes1 byten byte1 byte







:020000040800F2

在上面的數(shù)據(jù)類型后2種記錄(04,05)都是用來提供地址信息的。每次碰到這2個記錄的時候,都可以根據(jù)記錄計算出一個“基”地址。對于后面的數(shù)據(jù)記錄,計算地址的時候,都是以這些“基”地址為基礎(chǔ)的。以我們的語句為例:


第1條記錄的長度為02,LOAD OFFSET為0000,RECTYPE為04,說明該記錄為擴展段地址記錄。數(shù)據(jù)為0008,校驗和為F2。從這個記錄的長度和數(shù)據(jù),我們可以計算出一個基地址,這個地址為(0x0800 << 16) = 0x0800 0000,后面的數(shù)據(jù)記錄都以這個地址為基地址。

第二條語句----“ :10000000B80B00207D250008850300088703000841”

冒號本行數(shù)據(jù)長度本行數(shù)據(jù)起始地址(偏移地址)數(shù)據(jù)類型數(shù)據(jù)校驗碼
1 byte2 bytes1 byten byte1 byte







:10000000B80B00207D250008850300088703000841

第2條記錄的長度為10(0x10=16字節(jié)),LOAD OFFSET為0000,RECTYPE為00('00' Data Rrecord:用來記錄數(shù)據(jù),HEX文件的大部分記錄都是數(shù)據(jù)記錄),數(shù)據(jù)為B80B00207D2500088503000887030008 校驗碼為41;此時基地址為:0x0800 0000 加上偏移地址:0x0000 這條記錄的16個字節(jié)的數(shù)據(jù)的起始地址為:0x0800000 + 0x0000 =0x0800 0000


第3條語句----“:0400000508000121CD”

冒號本行數(shù)據(jù)長度本行數(shù)據(jù)起始地址(偏移地址)數(shù)據(jù)類型數(shù)據(jù)校驗碼
1 byte2 bytes1 byten byte1 byte







:0400000508000121CD

記錄的長度為04,LOAD OFFSET為0000,RECTYPE為05 ,此時,EIP寄存器里存放的地址:0x0800 0121; 即IP指向下一個要執(zhí)行的指令所在地址,我們來看一下IAP工程list目錄下的.map文件,其中第393行處如圖:(看到?jīng)]?0x0800 0121值main函數(shù)的入口地址)


EIP是32位機的指令寄存器,IP是指令寄存器,存放當(dāng)前指令的下一條指令的地址。CPU該執(zhí)行哪條指令就是通過IP來指示的

上圖參考hex數(shù)據(jù)文檔:http://pages.interlog.com/~speff/usefulinfo/Hexfrmt.pdf或http://microsym.com/editor/assets/intelhex.pdf

第4條語句---“:00000001FF” (每一個.hex文件的最后一行都是固定為這個內(nèi)容)

冒號本行數(shù)據(jù)長度本行數(shù)據(jù)起始地址(偏移地址)數(shù)據(jù)類型數(shù)據(jù)校驗碼
1 byte2 bytes1 byten byte1 byte







:00000001
FF

(每一個.hex文件的最后一行都是固定為這個內(nèi)容)
記錄的長度為00,LOAD OFFSET為0000,RECTYPE為01 (01' End of File Record:用來標(biāo)識文件結(jié)束,放在文件的最后,標(biāo)識HEX文件的結(jié)尾)


三、iap 和app 的.hex 文件結(jié)合

操作1:設(shè)置編譯IAP程序的編譯器(如圖),這個設(shè)置意思是把IAP程序下載到flash 的0x0800 0000開頭的位置,然后編譯程序,生產(chǎn).hex文件;


操作2:設(shè)置編譯APP程序的編譯器(如圖),這個設(shè)置意思是把APP程序下載到flash 的0x0800 3000開頭的位置,然后編譯程序,生產(chǎn).hex文件;



操作3:用%20notepad++%20或者%20UltraEdit%20打開%20IAP%20的.hex文件%20%20和APP%20的.hex%20文件

把IAP的.hex%20最后一句結(jié)束語句去掉(即:刪除:00000001FF)

把APP的.hex%20全部內(nèi)容拷貝復(fù)制到%20剛才刪掉結(jié)束語句的%20IAP的.hex后面(如圖)

原來第701行為:00000001FF%20的結(jié)束語句


操作4:把兩個.hex合成的.hex文件重新命名,燒寫到0x0800 0000 開始位置的地址即可;

這里把 合成的.hex文件上傳到我的資源:http://download.csdn.net/detail/yx_l128125/6475171(必須把PB1管腳拉低,串口1連接超級終端才能看到升級程序的引導(dǎo)信息):


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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉