-
大小: 463KB文件類型: .doc金幣: 1下載: 0 次發布日期: 2021-06-19
- 語言: 其他
- 標簽: bootloader??源碼實現??
資源簡介
我們整個ARM課程就分為三部分,這是第一部分,實現一個自己的最小bootloader
1.Read Me
一、實現功能
1.硬件初始化
2.延時判斷加載操作系統還是進入Bootloader Shell
3.加載操作系統
4.Bootloadershell
二、Bootloader Shell 支持的命令
1.help 幫助,顯示所有支持的命令,及命令格式
2.loadx 下載文件到開發板的內存,默認到0x32000000
3.led_on 點亮一個led燈
4.led_off 關閉一個led燈
5.led_test 測試所有led燈,全亮全滅循環3次
6.beep_test 測試蜂鳴器,響3聲
7.seg7_test 測試7段數碼管
8.dip4_test 測試4位撥碼開關
9.flash_load 將NandFlash中的文件搬移到SDARAM中
10.flash_write 將SDRAM中的內容下載到NandFlash中
11.GO 跳到某地址執行,默認到0x32000000
三、文件結構
1.start.s 程序入口,負責硬件初始化,Bootloader自搬移
2.uart.c uart.h 串口驅動的實現
3.load.c 選擇加載操作系統還是進入Shell
4.stdlib.h stdlib.c 標準庫函數的實現
5.stdio.h stdio.c 標準輸入輸出函數的實現
6.shell.c shell.h shell命令的實現
7.dip4.h dip4.c 撥碼開關相關底層函數
8.seg7.h seg7.c 7段數碼管相關底層函數
9.copy_myself.c nan.h NandFlash底層函數
10.xmodem.h xmodem.c xmodem協議實現
11.Datatype.h 數據定義
12.os/os.c 模擬操作系統
13.Makefile
四、流程及設計思想
1.硬件初始化
2.Bootloader自搬移
3.延時,判斷是否有輸入
4.(1)無輸入則加載操作系統,操作系統燒寫于Nand Flash的第100塊,即位于100*32*512 = 0x190000
操作系統加載到內存的Sdram中
(2)有輸入則進入shell命令模式
5.解釋命令,使用自己實現的標準庫函數來匹配輸入的命令
6.匹配函數,定義了一個包含字符指針以及函數指針的結構體,可以通過對應關系迅速調用命令對應的函數
所有函數為void fun(void *)形式。
五、測試條件及結果
1. 打開超級終端,給開發板上電,超級終端上打印提示信息
2. 超級終端上開始3秒倒計時,3秒內不動鍵盤,提示加載操作系統,模擬操作系統的閃燈程序運行,可觀察到LED等一閃一滅
3. 重啟開發板,3秒內按下任意鍵,可看到有T-Boot#提示符,程序進入Shell模式
4. 輸入help,可看到10條命令的使用方法
5. 輸入led_on 1可看到第一個led燈亮
6. 輸入led_off 1可看到第一個led燈滅
7. 輸入led_test 可看到所有led一閃一滅3次
8. 輸入beep_test 可聽到蜂鳴器響3聲
9. 輸入seg7_test 可看到7段數碼管每個led循環點亮
10.輸入dip4_test 撥動撥碼開關可觀察到7段數碼管對應的LED亮
11.輸入loadx,發送文件0x/0s.bin
12.輸入go 0x32000000 可觀察到led燈一亮一滅
13.輸入flash_load 0x190000 0x32000000 0x1000 (0x190000模擬操作系統燒寫位置)
14.go 0x32000000 可觀察到led一亮一滅
16.輸入flash_write 0x32000000 0x200000 0x1000
17.輸入flash_load 0x200000 0x31500000 0x1000
18.輸入go 0x31500000 可觀察到led燈一亮一滅
代碼片段和文件信息
評論
共有 條評論