bootload開發readme文件

2021-09-30 04:23:57 字數 2198 閱讀 7790

read me

一、功能

1.硬體初始化

2.延時判斷載入作業系統,按任意鍵bootloader shell

3.載入作業系統

4.shell

三、檔案結構

1.led_s.s 程式入口,負責硬體初始化,bootloader自搬移

2.uart0.c uart.h  串列埠驅動的實現

3.main.c 進入bootload延時選擇載入作業系統還是進入shell

4.my_printf.c my_printf.h 封裝printf函式的實現

5.my_stdio.h my_stdio.c 標準輸入輸出函式的實現

6.my_shell.c my_shell.h  shell命令的實現

7.copy_myself.c bootloader自拷貝函式

8.led.c led.h led燈的測試函式

9.beep.s 測試蜂鳴器及七段數碼管函式

10.xmodem.h xmodem.c xmodem協議實現

11.beep_os.s  模擬作業系統

12.makefile

四、流程及設計思想

1.硬體初始化

2.bootloader自搬移

3.延時,判斷是否有輸入

4.(1)無輸入則載入作業系統,作業系統燒寫於nand flash的第0塊

(2)有輸入則進入shell命令模式

5.解釋命令,使用自己實現的標準庫函式來匹配輸入的命令

6.匹配函式,定義了乙個包含字元指標以及函式指標的結構體,可以通過對應關係迅速呼叫命令對應的函式

五、測試條件及結果

1. 開啟超級終端,給開發板上電,超級終端上列印提示資訊

2. 超級終端上開始5秒倒計時,5秒內不動鍵盤,提示載入作業系統

3. 重啟開發板,3秒內按下任意鍵,可看到有welcome#提示符,程式進入shell模式

4. 輸入help,可看到5條命令的使用方法

5. 輸入led_test 可看到跑馬燈

6. 輸入beep_test 可聽到蜂鳴器響3次

7. 輸入xmodem,傳送檔案  測試xmodem/interrupt.bin

8. 輸入flash_load 0x32000000 可看到記憶體位址中的資料

9. 輸入go 0x32000000 可觀察到七段數碼管1——f迴圈顯示及蜂鳴器響

六、函式及功能

1.uart0.h

int uart0_init(void);               初始化串列埠

char uart0_getchar(void);      從鍵盤接收乙個字元

void uart0_putchar(char ch);    列印乙個字元從終端輸出

int uart0_test(void);        在終端現在鍵盤輸入

2.my_stdio.h

void my_gets(char *str);            接收乙個字串,並設定退格及回退後的字元不賦值給字串

char my_getchar(void);       重寫uart0_getchar

int my_putchar(char ch);      重寫uart0_putchar

3.command.h

void command(char *str,char *s2);   命令解析,將命令和引數分開。

4.go.h

void go(char *s2);                  將得到的引數轉化成十六進製制,並在些函式下呼叫go(temp)給pc賦值

以實現調轉go 命令

5.flash_load.h

void flash_load(char *s2);          將得到的引數轉化成十六進製制,

my_printf("%x/n",*(unsigned int *)temp);得到記憶體位址中的資料

6.my_shell.h

void my_shell(void);                所有的shell命令 呼叫,都在這裡來呼叫。

7.led.h                               跑馬燈的實現

8.help.h                              在help.c中呼叫my_printf 來輸入字串

9.協議xmodem.h 及 輸出my_printf.h             均是移植的

bootload啟動核心

bootloader 將核心和檔案系統載入記憶體 linux 核心 linux 核心由記憶體管理 程序管理 裝置驅動程式 網路管理等組成,它是作業系統的核心,具有很多最基本的功能,決定了系統的效能和穩定性。使用者空間的檔案系統用來提供管理系統的各種配置,提供相應的應用程式 服務 資料交換等。檔案系統...

STM32F407 bootload 程式測試

stm32f407 bootload 程式測試 最近產品需要上遠端公升級功能,那麼微控制器肯定要用bootload了。初步設計方法為先用原子的程式作為基礎版,採用串列埠公升級的方式進行除錯,基本配置如下 1 iap程式的配置 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如...

作業系統筆記(二)Bootload載入ELF檔案

ctime 2020 04 29 15 34 46 0900 1588142086 標籤 空格分隔 技術 作業系統 elfhdr的位址是 0x10000,僅僅是乙個暫存位址。elf檔案的檔案頭格式 struct elfhdr 乙個elf檔案中分為好幾個段,程式段 資料段等,每個資料段的定義 stru...