arm-linux-gcc 編譯:
arm-linux-gcc -nostartfiles -nostdlib -ttext 40008000 -e led led.c -o led
//-nostartfiles:不加入起始檔案開始
//-nostdlib :不加入標準庫
//-ttext:指定**在裸機執行位址
//-e:表示程式入口位址
//40008000:程式入口位址
arm-linux-objcopy編譯成二進位制
arm-linux-objcopy -o binary led led.bin
//編譯成二進位制檔案,將elf檔案轉成純二進位制檔案
tftp 40008000 led.bin (回車)
//執行**
go 40008000
makefile編譯
led.bin: led.o
arm-none-linux-gnueabi-ld -ttext 0x40000000 -o led.elf $^
arm-none-linux-gnueabi-objcopy -o binary led.elf led.bin
arm-none-linux-gnueabi-objdump -d led.elf > led.dis
%.o : %.s
arm-none-linux-gnueabi-gcc -o $@ $< -c -nostdlib
%.o : %.c
arm-none-linux-gnueabi-gcc -o $@ $< -c -nostdlib
clean:
rm *.o *.elf *.bin *.dis -f
若檔名改變:將led替換成你所寫的檔案 裸機驅動模板
編寫裸機驅動,一般都比較隨意。這通常導致 不統一,移植性差。本例以spi flash來分析一種優秀的裸機驅動編寫模板。首先定義乙個裝置類。flash device class typedef struct flash dev s flash dev t structure of pointers t...
(一)裸機程式編譯與燒寫
準備 編譯鏈 arm linux gnueabihf gcc 原始檔 led.s 彙編檔案 程式編譯 編譯檔案 arm linux gnueabihf gcc g c led.s o led.o 鏈結檔案 這裡要理解一下 執行位址 和 儲存位址 這兩個概念,儲存位址是可執行程式檔案所在的位置,這個位...
nand flash裸機程式
開發板 mini2440 nand flash k9f2g08u0b2,56m arm處理器裸機開發實戰 機制而非策略 知識點梳理 頁的絕對位址與相對位址 在nand.c中有乙個函式void rdnf2sdram 它的功能是將nand flah的內容複製到sdram,如下 nand flash的頁讀...