uboot默認是支持執行應用程序的,就像引導內核一樣,我們也可以自己寫一個應用程序,讓uboot啟動時引導。
在uboot examples/standalone 目錄下,有hello_world.c文件,編譯uboot的時候,會自動編譯hello_world.bin文件。
裸機程序未加鏈接地址時,只能使用text代碼段,如果裸機程序中使用出現了跨端操作(使用text端段以外的段:rodata,data,bss段),必須在鏈接時手工指定連接鏈接地址為實際的運行地址。
默認的鏈接地址由 Makefile中通過CONFIG_STANDALONE_LOAD_ADDR
指定。
這個地址不一定適合我們的板子,為了不影響uboot的正常運行,我們修改該地址為內核的鏈接地址0x280000
。
重新編譯的uboot后,將hello_world.bin通過tftp加載到內存中。
uboot設置好參數。
=> setenv ipaddr 192.168.137.110
=> setenv serverip 192.168.137.1
=> setenv gatewayip 192.168.137.1
=> tftp 0x00280000 hello_world.bin
ethernet@fe300000 Waiting for PHY auto negotiation to complete.. done
Speed: 1000, full duplex
Using ethernet@fe300000 device
TFTP from server 192.168.137.1; our IP address is 192.168.137.110
Filename 'hello_world.bin'.
Load address: 0x280000
Loading: #
0 Bytes/s
done
Bytes transferred = 794 (31a hex)
執行go指令去引導我們的程序。
=> go 0x280000
## Starting application at 0x00280000 ...
Example expects ABI version 9
Actual U-Boot ABI version 9
Hello World
argc = 1
argv[0] = "0x280000"
argv[1] = ""
Hit any key to exit ...
成功打印出Hello World。
也可以將 go 0x280000
添加到bootcmd
中,每次啟動內核前,先去引導應用程序,再引導內核。
end
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內核
+關注
關注
3文章
1311瀏覽量
39883 -
應用程序
+關注
關注
37文章
3146瀏覽量
56562 -
Uboot
+關注
關注
4文章
123瀏覽量
27941
發布評論請先 登錄
相關推薦
引導程序和應用程序重置向量的問題
*Read設備。在MPLAIDE內部,我為我的應用程序設置以下限制:ROM范圍:默認,-1B9C-1FFFand用于引導加載程序:ROM范圍:1BA0- FFFAll似乎工作得很好。應用程序
發表于 08-23 08:54
如何從引導加載程序跳轉到主應用程序?
大家好,我正在使用SPC56EL60L3和SPC5STUDIO v5.0。我有兩個不同的應用程序: - 引導加載程序應用程序 - 主要應用我們的想法是從閃存扇區0(閃存地址0x0000
發表于 06-20 13:33
PIC32引導加載程序和應用程序固件問題
大家好,我有一個奇怪的問題:硬件是PIC32MX695+LAN8740。我有一個程序成功地獨立運行和連接到sslWeb服務(沒有引導加載程序、鏈接器文件等)。當我使用引導加載
發表于 09-29 14:01
為什么引導加載程序不啟動應用程序?
和電源的卡。我的簡單應用程序會閃爍一個LED,當我編程時它會工作。但是使用引導加載程序時,我沒有看到任何閃爍。在沒有SDcard的情況下,一個接一個的程序
發表于 10-29 10:37
如何首次下載應用程序后跳過引導加載程序?
嗨,我是dspic的新手,但我正在嘗試開發一個CAN引導程序應用程序,它似乎工作得很好,但是在第一次應用程序下載之后出現了一個奇怪的行為。o可以看到
發表于 10-29 08:06
怎么從應用程序跳回到引導程序?
一個面包屑,引導程序可以使用它來知道我不想讓它跳轉到應用程序?是否有一種方法來重新創建函數中的“yReSeTyAdDR”代碼,以創建可以從應用程序跳轉的位置?我跳出
發表于 04-06 07:06
【MaaXBoard開發板試用體驗】uboot 應用程序開發
Uboot 是近似裸機的程序,沒有 libc 庫使用,更沒有高級的組件可用,開發uboot 開發應用程序想想就很很不容易??墒?uboot
發表于 01-19 21:02
IMX6UL從自定義引導加載程序引導vxworks,音頻應用程序不工作的原因?
我有一個基于 IMX6UL 的定制板,音頻編解碼器連接到 SAI1。應用程序適用于 vxworks。BSP 有自己的 SDMA 和 SAI 驅動程序。當 vxworks 內核從 uboot 啟動時
發表于 03-16 08:43
blhost應用程序可以與ROM引導加載程序通信嗎?
NXP LPCXpresso54S018 中的 ROM 引導加載程序支持使用串行 ISP 下載應用程序固件映像到閃存 ?
如果不支持,我們可以為此使用 EVK 閃存加載程序
發表于 05-06 08:27
IMX6ULL Uboot 移植
使用的開發板:正點原子ALPHA V2.2Uboot簡介在學習STM32的過程中使用過IAP在線升級就會知道,有引導程序+APP程序,即bootloader
發表于 12-22 19:08
?13次下載
Qt應用程序出現卡頓的現象怎么解決呢
在使用Qt完成項目開發后,需要將其運行在嵌入式linux平臺上,在設備啟動后,經uboot引導和linux內核后,直接進入Qt應用程序。
評論