1、stm32的boot0和boot1管腳
在每個stm32的晶元上都有兩個管腳boot0和boot1,這兩個管腳在晶元復位時的電平狀態決定了晶元復位後從哪個區域開始執行程式,見下表:
boot1=x boot0=0 從使用者快閃儲存器啟動,這是正常的工作模式。
boot1=0 boot0=1 從系統儲存器啟動,這種模式啟動的程式功能由廠家設定。
boot1=1 boot0=1 從內建sram啟動,這種模式可以用於除錯。
stm32三種啟動模式對應的儲存介質均是晶元內建的,它們是:
1)使用者快閃儲存器 = 晶元內建的flash。
2)sram = 晶元內建的ram區,就是記憶體啦。
3)系統儲存器 = 晶元內部一塊特定的區域,晶元出廠時在這個區域預置了一段bootloader,就是通常說的isp程式。這個區
域的內容在晶元出廠後沒有人能夠修改或擦除,即它是乙個rom區。
2、bootloader
在嵌入式作業系統中,bootloader是在作業系統核心執行之前執行。可以初始化硬體裝置、建立記憶體空間對映圖,從而將系統的軟硬體環境帶到乙個合適狀態,以便為最終呼叫作業系統核心準備好正確的環境。在嵌入式系統中,通常並沒有像bios那樣的韌體程式(注,有的嵌入式cpu也會內嵌一段短小的啟動程式),因此整個系統的載入啟動任務就完全由bootloader來完成。在乙個基於arm7tdmi core的嵌入式系統中,系統在上電或復位時通常都從位址0x00000000處開始執行,而在這個位址處安排的通常就是系統的bootloader程式。
3、微控制器串列埠資料處理
微控制器串列埠資料處理
嵌入式Linux開發知識點
1.阻塞和非阻塞的區別 阻塞的定義 對於read,block指當串列埠輸入緩衝區沒有資料的時候,read函式將會阻塞在這裡,移植到串列埠輸入緩衝區中有資料可讀取,read讀到了需要的位元組數之後,返回值為讀到的位元組數 對於write,block指當串列埠輸出緩衝區滿,或剩下的空間小於將要寫入的位元...
嵌入式開發必備知識點
一.c語言 結構體struct 聯合union 指標巨集定義 預編譯 動態記憶體分配 malloc和calloc函式申請記憶體空間 delete 記憶體洩漏 變數的生命週期 static關鍵字 函式指標 鍊錶 雙向鍊錶 佇列 fifo 樹二.51微控制器 定時器 計數器原理 什麼暫存器 外部中斷 串...
一些嵌入式知識點
預處理器 preprocessor 1 用預處理指令 define 宣告乙個常數,用以表明1年中有多少秒 忽略閏年問題 define seconds per year 60 60 24 365 ul 我在這想看到幾件事情 define 語法的基本知識 例如 不能以分號結束,括號的使用,等等 懂得預處...