在原子論壇偶爾搜到一篇 利用STM32片內(nèi)FLASH虛擬U盤(pán),使用文件復(fù)制方式實(shí)現(xiàn)IAP的帖子http://www.openedv.com/forum.php?mod=viewthread&tid=39012&extra=page%3D1 按照樓主提供的代碼修改了一下發(fā)現(xiàn)不能用,仔細(xì)閱讀相關(guān)zizi資料(《5 分鐘用 STM32的內(nèi)置 Flash 做一個(gè)超小 U 盤(pán)》)發(fā)現(xiàn)了我用的是STM32F103VET6屬于大容量的,片內(nèi)FLASH是2K一頁(yè),所以要修改相關(guān)代碼,貼出來(lái)修改的相關(guān)代碼
一.修改memory.c 文件
修改Data_Buffer數(shù)組為2K,BULK_MAX_PACKET_SIZE宏定義為64,所以BULK_MAX_PACKET_SIZE*4*2*sizeof(unit32)=2KB的容量。
二.修改mass_mal.c 文件
1. FLASH_START_ADDR 0x800300 這個(gè)是IAP的存儲(chǔ)容量12K ,要確保IAP不會(huì)超過(guò)這個(gè)容量,同時(shí)也是虛擬U盤(pán)的內(nèi)存起始地址。
2. FLASH_SIZE 0x7D000 這個(gè)是U盤(pán)的內(nèi)存大小他的計(jì)算原則是 單片機(jī)總?cè)萘?12K減去IAP的空間容量,即512-12 = 500K 也就是0x7D000
3. FLASH_PAGE_SIZE 0x800 這個(gè)是Flash頁(yè)大小,STM32大容量產(chǎn)品Flash分頁(yè)是2K 小容量是1K zhed這點(diǎn)要注意修改
4. FLASH_WAIT_TIMEOUT 100000 這個(gè)就不修改
三.計(jì)算跳轉(zhuǎn)地址
1. #define ApplicationAddress 0x0800A800 這個(gè)數(shù)據(jù)計(jì)算比較麻煩,首先要插入STM32虛擬U盤(pán),電腦會(huì)提示格式化U盤(pán),這個(gè)時(shí)候格式化U盤(pán),使用FAT默認(rèn)格式格式化U盤(pán)。格式化完成后會(huì)出現(xiàn)我們虛擬的U盤(pán)。查看U盤(pán)屬性得到U盤(pán)可用存儲(chǔ)空間如下圖。我的格式化以后有470K可用,這樣就可以計(jì)算跳轉(zhuǎn)地址512K-470K = 42K 即0xA800 ApplicationAddress = 0x8000000+0xA800 = 0x0800A800
到此虛擬U盤(pán)IAP程序修改完成,接下來(lái)修改APP程序
四.修改APP的地址生成Bin文件
1.修改APP起始地址
改成剛剛計(jì)算的跳轉(zhuǎn)地址
2.生成Bin文件
添加對(duì)應(yīng)目錄下的fromelf.exe
3.重新編譯APP程序,找到生成的BIN文件把他復(fù)制到我們虛擬的U盤(pán)里面 如下圖
五.斷電重啟或者按下復(fù)位鍵,IAP就會(huì)自動(dòng)跳轉(zhuǎn)到APP設(shè)置的起始地址執(zhí)行相應(yīng)的代碼。至此整個(gè)升級(jí)過(guò)程結(jié)束。
六.如何進(jìn)入IAP
IAP程序里面設(shè)置檢測(cè)引腳狀態(tài),剛上時(shí)單片機(jī)運(yùn)行IAP程序,檢測(cè)引腳判斷是跳轉(zhuǎn)還是執(zhí)行IAP初始化虛擬U盤(pán)。拉低該引腳則初始化虛擬U盤(pán),這個(gè)時(shí)候連接到電腦USB就能看到虛擬的U盤(pán)。
七.安全問(wèn)題
這種升級(jí)fa方式?jīng)]有安全性,僅僅用作測(cè)試。在此t可提供一種假設(shè),把IAP存儲(chǔ)空間擴(kuò)大后然后虛擬U盤(pán),虛擬U盤(pán)空間相應(yīng)減小(要能放下BIN文件才可以),這樣就相當(dāng)于IAP空間有一部分未使用,可以用來(lái)存放真正的用戶程序,然后把加密(AES128等加密算法)的BIN文件復(fù)制到U盤(pán)。再次上點(diǎn)后IAP程序檢測(cè)虛擬U盤(pán)的指定位置,如果有數(shù)據(jù)就把該數(shù)據(jù)全部復(fù)制到IAP存儲(chǔ)的可用空間,在復(fù)制的同時(shí)實(shí)現(xiàn)Bin文件的解密。這樣就可以間接對(duì)bin文件加密和解密,增加安全性。如下圖
上一篇:stemwin 19264單色屏移植
下一篇:STM32F4 UART1 DMA收發(fā)的一些問(wèn)題解決
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無(wú)刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無(wú)線智能控制器的設(shè)計(jì)
- 基于PTR2000的無(wú)線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無(wú)人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- AI時(shí)代的孩子,如何成為未來(lái)的開(kāi)創(chuàng)者?
- 通用汽車(chē)轉(zhuǎn)向LFP電池,LG新能源和三星SDI擬在美建廠
- 蓋世汽車(chē)研究院:政策助推疊加技術(shù)迭代 全固態(tài)電池蓄勢(shì)待發(fā)
- 小鵬汽車(chē)董事長(zhǎng)預(yù)測(cè):2027年激光雷達(dá)非智能駕駛必備
- 解碼大眾汽車(chē)中國(guó)戰(zhàn)略 - 決戰(zhàn)智能化電氣化的三板斧
- 2025從具身智能大腦展望人形機(jī)器人發(fā)展
- “荊楚”人形機(jī)器人即將量產(chǎn),智能時(shí)代的新篇章!
- 小鵬純視覺(jué)方案:技術(shù)突圍與市場(chǎng)下沉的雙重博弈
- 為什么無(wú)人出租車(chē)能“零”事故,而智能駕駛輔助卻事故頻發(fā)?
- 重磅!一顆要顛覆全球智駕的芯片點(diǎn)亮了!
- 快速獲取TI 工業(yè)電機(jī)驅(qū)動(dòng)資源 答題贏好禮
- 【已結(jié)束】TI 有獎(jiǎng)直播|CAN SIC(信號(hào)改進(jìn)功能)
- 2017年恩智浦物聯(lián)網(wǎng)設(shè)計(jì)大賽
- 2018開(kāi)“芯”學(xué):Mentor兩場(chǎng)知識(shí)有獎(jiǎng)問(wèn)答邀你新年充電
- MPS EMI 知識(shí)充電節(jié)盛大開(kāi)啟!賺積分贏好禮!
- 有獎(jiǎng)直播|安森美高能效產(chǎn)品在 EV-Charger 市場(chǎng)的應(yīng)用
- 參與e絡(luò)盟與 TE 傳感器的問(wèn)卷活動(dòng),贏50元亞馬遜購(gòu)物券!
- 更新個(gè)人資料贏驚喜大禮
- 電子方式盜車(chē)將不再可能 IMEC推新型低功耗藍(lán)牙測(cè)距技術(shù)
- FLIR公布?xì)W洲區(qū)熱成像數(shù)據(jù)集 可加速ADAS/AEB/AV系統(tǒng)的研發(fā)
- CNESA:儲(chǔ)能可以幫助中國(guó)無(wú)補(bǔ)貼太陽(yáng)能更好地與化石燃料競(jìng)爭(zhēng)
- Mobileye展示使用攝像頭導(dǎo)航的自動(dòng)駕駛汽車(chē)
- 功能與形式越來(lái)越豐富,數(shù)字化的車(chē)鑰匙安全嗎?
- Achronix為AI加速器提供新選擇
- SEMI預(yù)測(cè):2019中國(guó)大陸有望成為全球最大半導(dǎo)體市場(chǎng)
- 蘋(píng)果還未放棄AirPower 這項(xiàng)專(zhuān)利
- iPhone XR銷(xiāo)量低迷:供屏的JDI產(chǎn)能閑置
- 小米4800萬(wàn)鏡頭新機(jī)曝光
- zstack組網(wǎng)距離遠(yuǎn)遠(yuǎn)小于數(shù)據(jù)傳輸距離,如何實(shí)現(xiàn)遠(yuǎn)距離組網(wǎng)?
- 求一篇相關(guān)外文
- 【我給xilinx資源中心做貢獻(xiàn)】Xilinx Spartan 3E Starter Kit平臺(tái)控制1602液晶程序
- 調(diào)試經(jīng)驗(yàn)之---硬件篇
- TMS320F28335學(xué)習(xí)筆記-ADC控制器
- 請(qǐng)問(wèn)平方加和除法運(yùn)算如何用verilog實(shí)現(xiàn)?
- 最小系統(tǒng)6
- 2011年全國(guó)電子設(shè)計(jì)競(jìng)賽培訓(xùn)資料
- Keil C51 UV2調(diào)試命令(中文版) .pdf
- ADC2012是啥單片機(jī)?見(jiàn)多識(shí)廣的大大來(lái)看看吧