最近從嵌入式linux學完,想要再往底層硬體走,於是寫了個裸機程式,希望放到自己板子上跑起來,發現可以利用uboot + minicom從串列埠接收裸機程式並執行。故記錄下此過程。
在沒有作業系統的支援下,直接編譯的程式是無法在裸機下執行的,需要去掉檔案頭。相關指令對應makefile如下:
led.bin:led.o
# 編譯
arm-linux-gcc -c led.c
arm-linux-ld led.o -o led.elf
# 去掉檔案頭
arm-linux-objcopy -o binary led.elf led.bin
# 反編譯,校對一下彙編**
arm-linux-objdump -d led.elf
在uboot中,敲入以下命令
loady 50008000(可用ram位址隨便選乙個, 也可以不寫,由uboot指定) // 通過ymodem協議接收資料
control+a -> z -> s mimicom選擇宿主機檔案led.bin傳送
go 50008000 //執行裸機程式
!!!有個小bug得提一下,在uboot中使用loady寫入資料後,如果再次寫到相同的位址會失效!!!
uboot啟動流程概述 uboot啟動流程
u boot系統啟動流程 大多數bootloader都分為stage1和stage2兩大部分,u boot也不例外。依賴於cpu體系結構的 如裝置初始化 等 通常都放在stage1,且可以用組合語言來實現,而stage2則通常用c語言來實現,這樣可以實現複雜的功能,而且有更好的可讀性和移植性。2.1...
uboot移植 uboot啟動回顧
一 uboot啟動的第一階段start.s 路徑uboot cpu s5pc11x start.s 1 include 標頭檔案包含,config.件原始碼中不存 在,配置後自動生成 路徑 include linux config.h 2 include 標頭檔案包含,version.件原始碼中不存...
uboot分析 uboot啟動核心
u boot啟動核心概述 u boot啟動完成後,最終進入到main loop 迴圈中。若在bootdelay倒計時為0之前,u boot控制台有輸入,則進入命令解析 執行的迴圈 若控制台無輸入,u boot將啟動核心。u boot啟動核心可歸結為以下四個步驟 1 將核心搬移至ddr中 2 校驗核心...