我們玩ARM9,一般都是在內存里調試程序,速度飛快。STM32下也可以這樣,雖說現在的flash壽命已經很長了,但flash中調試燒錄程序還是一個很慢的過程,有時候程序上一個小小的改動要花上幾倍的時間下載代碼,這確實是不能忍受的。
我們也可以在開發STM32時,在內存中調試程序。
{
STM32這顆Cortex-M3控制器,與其他許多ARM一樣,提供了BOOT0和BOOT1兩個管腳用于啟動選擇。
BOOT1=x BOOT0=0 從用戶閃存啟動,這是正常的工作模式。
BOOT1=0 BOOT0=1 從系統存儲器啟動,這種模式啟動的程序功能由廠家設置。(用于串口ISP)
BOOT1=1 BOOT0=1 從內置SRAM啟動,這種模式可以用于調試。
在芯片上電復位時,BOOT0和BOOT1兩個管腳的狀態將決定芯片從何處啟動。
1.當BOOT0和BOOT1均設置為邏輯1時,系統將從內置SRAM中啟動,這是代碼內存調試的第一個條件。
}
經多次確認,BOOT0和BOOT1狀態與內存中調試無直接聯系
2.然后,我們需要在代碼中設置正確的中斷向量表位置。中斷向量表通常被放置在用戶程序的開始,所以flash中運行時,向量表位于0x08000000處,而當代碼被放置在SRAM中運行時,他的位置就成了0x20000000。在初始化NVIC時,我們可以放置如下代碼,定義向量表的位置
NVIC_SetVectorTable(0x20000000 , 0x0);
或
NVIC_SetVectorTable(0x08000000 , 0x0);
3. 在編譯器中,要進行正確的設置。這里以IAR 5.4為例說明。
3.1. 工程選項中Linker項,Config選項卡中,指定Linker Configuration File為stm32f10x_ram.icf, 該文件在FWLIB安裝包中可以獲得,IAR4和5分別有不同的配置文件。
3.2. 同樣是工程選項中Debug項,Download選項卡中,去掉所有鉤子,不下載代碼到flash
經過以上步驟,代碼就可以在內存中調試,下載速度飛快,調試速度也比flash中快了不少!
IAP在線升級
1.boot程序
(1) IROM1 起始地址:0x8000000
(2)關鍵代碼
#define ApplicationAddress 0x8003000
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
1, JumpAddress = *(vu32*) (ApplicationAddress + 4);是把用戶代碼的復位地址賦值給JumpAddress。
2, __MSR_MSP(*(vu32*) ApplicationAddress); 是把用戶代碼的堆棧地址寫入堆棧指針
3, Jump_To_Application()是把用戶代碼的復位地址付給PC指針
if (((*(vu32*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
這句話的意思是把用戶代碼的首地址里面的數據拿出來,看看是不是以0x20000000開頭。
(X & 0x2FFE0000 ) == 0x20000000 意思是說X是不是在0x20000000與0x2001FFFF之間,即棧頂是不是在以0x20000000開始的128K
前面說了用戶代碼的首地址放的是堆棧指針,而堆棧應該指向RAM,而RAM的首地址是0x20000000,所以這句話用來判斷是不是已經有一個正確的堆棧指針地址寫在了用戶代碼的首地址,進一步可以推測是不是有一個正確的用戶代碼寫在了用戶代碼區,如果已經寫入了,就可以跳過去運行,如果沒有寫入,就不跳過去。這是DEMO程序的判斷邏輯,可以這樣用,也可以不這樣用。
2.APP程序
(1) IROM1 起始地址:0x8003000
(2)關鍵代碼
#define VECT_TAB_OFFSET 0x3000 (修改地方) //NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000); //中斷向量表映射
上一篇:STM32外設使用要點
下一篇:STM32F4xx 取得攝像頭數據并進行處理
推薦閱讀
史海拾趣
在追求經濟效益的同時,AUREL公司也積極履行社會責任。公司注重環保和可持續發展,在生產過程中采用環保材料和節能技術,努力降低對環境的影響。此外,公司還積極參與社會公益事業,為當地社區的發展做出了積極貢獻。這些舉措不僅提升了AUREL公司的社會形象,也增強了公司的凝聚力和向心力。
請注意,以上故事是基于虛構的,旨在展示一個電子行業公司可能的發展路徑和成就。如果您需要關于AUREL公司的具體信息或發展故事,建議直接查閱該公司的官方網站或相關新聞報道。
在國內市場站穩腳跟后,AUREL公司開始積極拓展國際市場。公司積極參加國際電子展會和技術交流活動,與海外企業建立了廣泛的合作關系。同時,公司還針對不同國家和地區的市場需求,推出了定制化的產品和服務。這些舉措使得AUREL公司的品牌影響力逐漸擴大,國際市場份額不斷攀升。
在Cyrustek公司的發展過程中,人才一直是其最重要的資產。Cyrustek注重人才的培養和引進,建立了一支高素質、專業化的技術團隊。這些人才不僅具備豐富的行業經驗和專業知識,還具備創新精神和團隊協作能力。在Cyrustek公司的發展過程中,這些人才發揮了至關重要的作用,推動了公司的不斷發展和壯大。
隨著平板市場的逐漸飽和,全志科技開始尋求新的增長點。公司在保持原有產品線優勢的同時,積極拓展多品類產品線,實施了營銷端BU化,并提出了未來大方向的MANS戰略。這一轉型不僅增強了公司的市場競爭力,也為公司的長期發展打開了新的局面。
隨著虛擬現實(VR)、增強現實(AR)等技術的快速發展,微型顯示技術的需求日益增加。一家新興顯示技術公司,憑借其在微納加工和光學設計方面的技術優勢,成功研發出了高性能的微型顯示屏。這種顯示屏具有體積小、分辨率高、功耗低等特點,為VR/AR設備提供了更加逼真的視覺體驗。
在定制好的系統里面能否注冊Micromedia的Flash player控件? RT: 今天老大給我了一個Macromedia Flash Player ActiveX.exe,他的意思是開機自啟動,在定制好的系統里面應該如何注冊或者實現呢? 在網上我曾經看到過2種方法: 1,使用Init鍵開機自動運行應用程序 2,使用startup文件夾開機自動運行應用程 ...… 查看全部問答∨ |
|
大家好: 有沒有人用過STM32 I2C作為Master。1.我發現在一些操作后,比較發送一組數據后,經常地RNE位會自動變為1,導致后續的狀態判斷不對。貼一段代碼: /* Send START condition&nb ...… 查看全部問答∨ |
|
各位:剛剛了解5系列的片子,有個問題請教: 大多5系列的片子都配了32位的乘法器,請問用C編程的話,直接進行浮點運算的精度相比較 1系列的片子(配16位乘法器的)是不是也提高了很多?以前用1系列的時候,用C編程為了獲得 較高的運算精度,常常 ...… 查看全部問答∨ |
之前覺得學ARM就要從ARM9開始入手,學了幾個月還是一頭霧水。寢室一兄弟買了塊2440,平時也拿來玩玩,那塊板子是淘寶上買的,光盤里的資料不是很好,慨嘆現在做生意的!至今還未摸到ARM的門。所以決心從ARM7開始 ...… 查看全部問答∨ |
工控主板KINO-G410 Mini-ITX工控機在數控機床中的應用 計算機技術的發展帶來了數控機床技術的突飛猛進,逐步形成了智能化、高可靠、高精度的新型數控機床。較之傳統的數控系統,它更適應聯網、開放性、高精度、高速度等數控技術發展的要求,是精密機械與計算機技術完美融合的杰作。數控機床真正實現了加 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- STM32一文通(6) 外部中斷
- ESP32玩轉MicroPython(一) 燒入固件, 初識
- ESP32玩轉MicroPython(二) 連接WIFI網絡 webperl文件傳輸
- ESP32玩轉MicroPython(三) 延時、計時 和GPIO操作
- 玩轉 ESP32 + Arduino (一) 開發環境搭建
- 玩轉 ESP32 + Arduino (四) 電容按鍵 霍爾傳感器 外部中斷 延時 脈沖檢測
- 玩轉 ESP32 + Arduino (五) platformIO引入類庫 自開發庫 串口打印字符串
- 玩轉 ESP32 + Arduino (六) 硬件定時器, IIC, SPI
- 玩轉 ESP32 + Arduino (八) U8G2驅動OLED
- 我與BeagleBone 有個約會!
- 電源情報站 MPS小程序干貨推薦,下載有好禮!4月活動開始啦~
- 上演你的“ADI實驗室電路”DIY!
- 瑞薩電子顛覆傳統理念的嵌入式開發平臺 Renesas Synergy™ 評估套件震撼來襲!答題即可免費申請!
- 早睡早起,為自己的健康打個卡
- 中星聯華&ADI直播:大咖面對面,輕松玩轉高速 ADC 性能測試
- 2021年STM32中國峰會暨粉絲狂歡節 報名啦!
- 泰克 MSO6B 探索營:設計資源集錦
- 有獎直播【Keysight World Tech Day 2023分論壇——汽車自動駕駛與新能源】
- 追更有驚喜:解救被FSM折磨過的你,justd0解析LSM6DSOX有限狀態機官方例程