準備
編譯鏈: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...