這幾天一直在嘗試學STM32 bootloader,在網上查閱了一番,發現實現方法不計其數。于是自己有了想動手實現一番的欲望。
下面請聽我細細道來,我選用的芯片是STM32F103ZE系類,該芯片是512k,每頁是2k的。
接下來就是你要重點了:
其實bootloader說白了,就是在原有APP程序 再加上另一段程序---bootloader,這個bootloader可以對你flash進行擦寫操作。
那么關于STM32具體實現BOOTLOADER步驟是怎么樣的呢?
下面我就具體幾個細節之處談談:
1,如何實現在APP程序跳轉到BOOTLOADER程序.
2,既然APP程序可以跳轉到bootloader,那么反之也是可以的。
//判斷用戶是否已經下載程序,因為正常情況下此地址是棧地址。//若沒有這一句的話,即使沒有下載程序也會進入而導致跑飛。
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{
SerialPutString("Execute user Programrnn");
//跳轉至用戶代碼
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
//初始化用戶程序的堆棧指針
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
else
{
SerialPutString("no user Programrnn");
}
3,設計bootloader程序,采用YMODEM協議,一次數據1024字節、需要在keil進行設置ROM1,下載utilities也設置一下,然后download。
4,設計好bootloader程序并且用仿真器燒錄到芯片之后,下面就開始設計APP程序,所需設置也是大同小異,只是將STARTADDRESS 設置成從 0800 0200 size只要不超過你整個flash剩下的區域即可
,還需要設置一點的是,產生bin文件,這里我教大家一個方法 @p.bin就是說項目名來作為bin文件名,axf也一樣。假設我項目名是BOOT-Y,那么你生成的bin文件就是這個名字
5.,接下來用SECURECRT軟件進行程序app的bin文件燒錄,我boot程序里面有設計了一個按鍵,就是你是進入到boot程序還是app程序,當然你app程序如果沒有的話,那么就需要在這里進行校驗了。如果按鍵按住,然后復位,那么程序就進入到剛才的boot區域,這里是一個串口菜單,有一個函數捕獲你的按鍵輸入字符。
/*******************************************************************************
* @函數名稱 GetKey
* @函數說明 通過超級中斷回去鍵碼
* @輸入參數 無
* @輸出參數 無
* @返回參數 按下的鍵碼
*******************************************************************************/
uint8_t GetKey(void)
{
uint8_t key = 0;
//等待按鍵按下
while (1)
{
if (SerialKeyPressed((uint8_t*)&key)) break;
}
return key;
}
6、下面就是boot的串口菜單,你輸入1,加載bin文件,點擊transfer的send-ymodem,然后選擇你的bin文件,接下來就是1024字節數據開始發送到串口緩存區,如果校驗正確的話,那么就會寫入到對應的flash當中。
7、看到沒?成功了!
(7.1)、
忘記說了,APP程序里面需要在 在system_stm32f10x.c文件的128行處 #define VECT_TAB_OFFSET 0x2000 /*!< Vector Table base offset field. 將中斷向量表的偏移量改成你APP程序flash地址偏移量, 這個非常關鍵,因為你BOOT的中斷和APP中斷不能是同一個! 否則會出事的!
上一篇:基于Ymodem協議的STM32F407的串口IAP
下一篇:stm32 Bootloader設計(YModem協議)
推薦閱讀
史海拾趣
Accelink Technologies Co Ltd是一家中國領先的光通信器件和子系統供應商,以下是該公司發展的五個相關故事:
公司成立和起步階段: Accelink Technologies Co Ltd成立于2001年,總部位于中國安徽省合肥市。公司最初專注于光通信領域的研發和生產,致力于提供高性能的光通信器件和解決方案。起步階段,公司的產品主要包括光纖光柵、光纖耦合器、光開關等。
技術創新和產品拓展: 隨著市場需求的增長和技術進步,Accelink不斷進行技術創新,并逐步拓展產品線。公司推出了包括光模塊、光收發器、光放大器等在內的多種光通信子系統產品,為客戶提供了更全面的解決方案。
市場擴張和國際合作: Accelink積極拓展國內外市場,并與全球各地的客戶建立了合作關系。公司的產品被廣泛應用于光網絡建設、數據中心、無線通信等領域,贏得了國內外客戶的認可。同時,Accelink還與國際知名光通信企業展開合作,共同推動技術創新和市場發展。
持續投入研發和創新: Accelink不斷加大研發投入,致力于技術創新和產品升級。公司設立了研發中心,擁有一支技術精湛的團隊,致力于開發新產品和解決方案,滿足客戶不斷變化的需求。同時,Accelink還與國內外高校和研究機構合作,共同推動光通信技術的發展。
未來發展展望: Accelink將繼續致力于光通信技術的研發和應用,不斷推出更先進、更可靠的產品和解決方案,滿足客戶在光網絡建設和數據傳輸方面的需求。公司將加強國際市場拓展,拓展海外業務版圖,同時不斷提升自身的技術實力和市場競爭力,為光通信行業的發展做出更大的貢獻。
作為一家有社會責任感的企業,EFC公司始終關注社會公益事業。他們積極參與各種公益活動和社會捐贈活動,為社會做出自己的貢獻。同時,EFC還關注員工成長和福利保障問題,為員工提供良好的工作環境和福利待遇。這種對社會的回饋和關愛讓EFC成為了一個值得信賴和尊敬的企業。
以上五個故事雖然是虛構的,但它們基于電子行業的一般情境和可能的EFC業務特性,展示了一個電子薄膜電容器公司可能的發展歷程和成功因素。希望這些故事能夠為您提供一些啟示和靈感。
作為一家領先的電子企業,ETC公司深知自身肩負的社會責任。公司積極履行社會責任,關注環境保護和資源節約。ETC通過引進先進的生產工藝和設備,減少生產過程中的能源消耗和廢棄物排放。同時,公司還積極參與公益事業和社會活動,為社會做出了積極貢獻。這些舉措不僅提升了ETC的企業形象,也為公司的可持續發展奠定了堅實的基礎。
在電子行業的早期,ETC公司以其獨特的技術創新能力在晶體管市場上嶄露頭角。公司創始人帶領研發團隊,通過不斷的實驗和改進,成功研發出一種新型的MOSFET晶體管,具有更高的性能和更低的功耗。這一創新成果迅速在市場上引起轟動,ETC公司的知名度也隨之提升。隨著產品銷量的不斷增長,ETC逐漸在電子行業中確立了其領導地位。
除了關注業務發展,Baton Lock公司還非常重視履行企業社會責任。公司積極參與公益事業,支持環保項目,并努力減少生產過程中的環境污染。此外,Baton Lock還注重員工的成長和福利,提供了良好的工作環境和培訓機會。這些舉措不僅提升了公司的社會形象,也增強了員工的歸屬感和忠誠度。
請注意,這些故事是基于假設構建的,并非真實事件。如果您需要關于實際存在的電子公司的故事,請提供具體的公司名稱,以便我能夠為您提供更準確的信息。
Esterline Power Systems公司在其早期階段就致力于研發創新技術,以滿足航空和國防行業對高性能電源系統的需求。一次關鍵的技術突破發生在公司對一種新型高效能電源控制器的研發上。面對市場上已有的產品性能瓶頸,公司的研發團隊經過數月的深入研究與實驗,成功開發出了具有更高效率和更穩定性能的電源控制器。這一創新不僅贏得了客戶的認可,也為公司贏得了市場份額,奠定了在電源系統領域的領先地位。
嵌入式學習,越來越迷茫了??? 我是一名大三的學生,從剛開始接觸嵌入式,到動手做實驗,零零散散,已有半年的時間了。剛開始信誓旦旦,一定要將它學好,現在卻感覺越來越無從下手了。該開始的時候,對嵌入式,只知道嵌入式這個名字,對于它具體 ...… 查看全部問答∨ |
|
模擬設計工程師短缺的情況正日益惡化,正迫使甚至像飛思卡爾半導體公司這樣強大的數字芯片公司加倍努力征募和培養模擬設計工程師,以應對混合信號處理中“魔法藝術”的挑戰。 “模擬集成電路設計存在一定的藝術性,”iSuppli公司負責模擬IC和半 ...… 查看全部問答∨ |
|
在Windows下寫了一個很簡單的WDM驅動程序,在用READ_REGISTER_UCHAR函數去讀PCI卡的內存空間時發現一個好奇怪的問題,那就是所有奇數地址(BaseAddress + 0x00F1)的內存讀出來的值是正確的,而偶數地址(BaseAddress + 0x00F0)的內存讀出來的值卻是隨 ...… 查看全部問答∨ |
目前要在基于一套硬件平臺來做wince下的視頻處理,由于sdk不支持vfw,也不支持dshow的枚舉,所以不知道該怎么采集視頻信號了。在網上找了兩天了,很多人問這個問題,但是沒有妥當的解決方案,請知道的弟兄姐妹幫忙,謝謝! … 查看全部問答∨ |
編址方式(獨立編址和統一編址)與結構(哈佛結構和馮.諾依曼結構)有關系嗎? 有些資料上說程序存儲器和數據存儲器統一編址就是馮.諾依曼結構或普林斯頓體系結構(Freescale的MC68HC05/08),而兩者獨立編址就是哈弗體系結構(MCS-51),而到了Microchip,他們說他們的PIC16系列除了采用“哈弗體系結構”(MCS-51 ...… 查看全部問答∨ |
可控硅用做三相可控整流時,隨著導通角的減小,可控硅導通時間越來越短,可控硅的額定輸出電流應該降額使用,在輸出電壓很低的情況下,可控硅的電流降額度大的驚人。 我現做一個項目,三相380V輸入,50VDC輸出,整流后直接接電解電容濾波,計算得到 ...… 查看全部問答∨ |
和傳輸無關的信號Avalon接口提供具有系統級功能的控制信號,如中斷請求和復位請求信號。這些信號不是和每個數據傳輸直接相關的。中斷請求信號Avalon中斷請求信號允許從端口發出中斷請求(IRQ), 表示它需要主端口為之服務。Avalon交換架構在系統的從 ...… 查看全部問答∨ |