(一)裸機程式編譯與燒寫

2021-10-08 11:11:35 字數 1118 閱讀 5887

準備

編譯鏈:arm-linux-gnueabihf-gcc

原始檔:led.s(彙編檔案)

程式編譯

編譯檔案

arm-linux-gnueabihf-gcc -g -c led.s -o led.o

鏈結檔案

這裡要理解一下「執行位址」和「儲存位址」這兩個概念,儲存位址是可執行程式檔案所在的位置,這個位址可以隨意選擇;執行位址是**執行時所處的位址,這個位址就是在我們鏈結檔案的時候確定的,**要執行,就必須處在執行位址處。這次,我將**燒寫到sd卡中,要執行就需要把可執行**從sd卡拷貝到執行位址處。下面將 led.o 檔案鏈結到位址 0x87800000,生成檔案 led.elf。

arm-linux-gnueabihf-ld -ttext 0x87800000 led.o -o led.elf

格式轉換

arm-linux-gnueabihf-objcopy -o binary -s -g led.elf led.bin

上述命令中,「-o」選項指定以什麼格式輸出,後面的「binary」表示以二進位制格式輸出,

選項「-s」表示不要複製原始檔中的重定位資訊和符號資訊,「-g」表示不複製原始檔中的除錯

資訊。這樣,我們就得到了最終的可以在開發板上執行的 led.bin 可執行檔案。

makefile內容

led.bin:led.s

arm-linux-gnueabihf-gcc -g -c led.s -o led.o

arm-linux-gnueabihf-ld -ttext 0x87800000 led.o -o led.elf

arm-linux-gnueabihf-objcopy -o binary -s -g led.elf led.bin

arm-linux-gnueabihf-objdump -d led.elf > led.dis

clean:

rm -rf *

.o led.bin led.elf led.dis

arm-linux-gnueabihf-objdump -d led.elf > led.dis這一行是反彙編。

busybox編譯與燒寫

一 實驗環境 硬體 jz2440開發板 busybox版本 busybox 1.7.0 交叉工具鏈 gcc 3.4.5 glibc 2.3.6 二 實驗步驟 1 解壓核心原始碼包 為了方便以後檢視我們對核心原始碼所作的修改可以使用git建立乙個 倉庫,從而記錄修改的點滴 tar xjfv busyb...

tq2440JLink燒寫裸機程式的問題

首先回顧一下編寫裸機程式的步驟 1 使用ads1.2建立工程,在debugrel setting中的language setting中要選中arm920t,因為用的是s3c2440的cpu。arm linker中的起始位址是0x30000000,首先執行的檔案為2440init.o,入口函式式ini...

裸機2410 h jtag 配置(燒寫flash)

裸機2410 h jtag 配置 燒寫flash 主要配置 1.軟復位 2.看門狗設定 3.中斷控制暫存器設定,關閉所有中斷 4.子中斷控制器設定,關閉所有中斷 5.pll設定 6.設定儲存控制器 配置檔案如下,拷貝後修改字尾為.hfc flash section amdam29lv800db me...