驅動裸機程式編譯

2021-10-02 22:49:39 字數 1030 閱讀 3031

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的頁讀...