用word 做網(wǎng)站seo推廣軟件排名
目錄
- 1. 燒寫方式
- 2. 燒寫之代碼編譯
- 2.1 led.s->led.o
- 2.2 led.o->led.elf
- 2.3 led.elf->led.bin
- 2.4 反匯編:led.elf->led.dis
- 3. 燒寫之燒錄到SD卡上:
- 3.1 開(kāi)啟燒錄軟件權(quán)限:
- 3.2 確定SD卡的格式:FAT32
- 3.3 燒錄到SD卡上
- 3.4 SD卡插到板子上并SD卡啟動(dòng)
- 4. Makefiel的文件編寫:
1. 燒寫方式
??這里推薦兩種,一種就是SD卡燒寫,一種就是USB燒寫;
- USB燒寫:這里推薦一位博主寫的比較好:是正點(diǎn)原子的IMXULL的板子
- SD燒寫:接下來(lái)就細(xì)講一下SD燒寫
2. 燒寫之代碼編譯
??由于是在LInux環(huán)境下寫的.s匯編文件,因此要編譯成ARM環(huán)境下的二進(jìn)制文件,這里就要用到交叉編譯器:arm-linux-gnueabihf
,一般整體思路就是,led.s->led.o->led.elf->led.bin
,先把led.s文件編譯成led.o文件,再由led.o文件鏈接成led.elf文件,二然后再把led.elf文件轉(zhuǎn)換成二進(jìn)制led.bin文件,如果進(jìn)行調(diào)試要把.elf文件反匯編一下:下面簡(jiǎn)要介紹一下這些步驟的命令:
2.1 led.s->led.o
arm-linux-gnueabihf-gcc -g -c led.s -o led.o
:這條指令是在使用arm-linux-gnueabihf-gcc
編譯器進(jìn)行編譯操作。具體解釋如下:
-g
:表示生成調(diào)試信息,以便在調(diào)試時(shí)使用。-c
:表示只進(jìn)行預(yù)處理、編譯和匯編,生成目標(biāo)文件(.o
文件)。led.s
:是要編譯的源文件的名稱。-o led.o
:指定輸出的目標(biāo)文件的名稱為led.o
。
2.2 led.o->led.elf
arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf
:該指令的作用是將目標(biāo)文件led.o
鏈接成可執(zhí)行文件led.elf
,并指定了代碼段的起始地址。
arm-linux-gnueabihf-ld
:這是鏈接器程序。-Ttext 0x87800000
:指定代碼段的起始地址為0x87800000
。led.o
:這是要鏈接的目標(biāo)文件。-o led.elf
:指定輸出的鏈接結(jié)果文件名為led.elf
。
2.3 led.elf->led.bin
arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
:是一個(gè)格式轉(zhuǎn)換指令,用于將led.elf
文件轉(zhuǎn)換為二進(jìn)制格式的led.bin
文件,通過(guò)執(zhí)行這個(gè)指令,可以將led.elf
文件轉(zhuǎn)換為可在目標(biāo)設(shè)備上運(yùn)行的二進(jìn)制文件led.bin
。
-O binary
:指定輸出格式為二進(jìn)制。-S
:表示不復(fù)制源文件中的重定位信息和符號(hào)信息。-g
:表示不復(fù)制源文件中的調(diào)試信息。
2.4 反匯編:led.elf->led.dis
arm-linux-gnueabihf-objdump -D led.elf > led.dis
:使用arm-linux-gnueabihf-objdump
工具對(duì)led.elf
文件進(jìn)行反匯編操作。
-D
選項(xiàng)表示反匯編所有的段> led.dis
:將反匯編的結(jié)果輸出到文件led.dis
中。
3. 燒寫之燒錄到SD卡上:
??這里要用到燒錄軟件:這個(gè)軟件是在Linux環(huán)境下運(yùn)行的,因此要給其開(kāi)啟權(quán)限:
3.1 開(kāi)啟燒錄軟件權(quán)限:
chmod 777 imxdownload
:即可讀可寫可執(zhí)行
3.2 確定SD卡的格式:FAT32
??如果存儲(chǔ)卡的SD卡的容量比較大的話,要進(jìn)行手動(dòng)的格式話,這里必須采用FAT32的格式
,怎么更改格式可以參考這個(gè)視頻,非常簡(jiǎn)單:鏈接,如不改的話掛載不到Ubuntu的系統(tǒng)上;
3.3 燒錄到SD卡上
./iimxdownload led.bin /dev/sdb
:即把二進(jìn)制的文件led.bin燒錄到sdb設(shè)備上,其中sdb設(shè)備就是我們掛載的SD卡,因此要確定SD卡掛載在了那個(gè)上面,叫什么名稱;
3.4 SD卡插到板子上并SD卡啟動(dòng)
??結(jié)果如下:
4. Makefiel的文件編寫:
??還是老規(guī)矩,把一個(gè)led.s的文件變成一個(gè)可以燒錄的可執(zhí)行文件,如果每次都進(jìn)行手動(dòng)的操作這是一件非常繁瑣的事情,因此可以使用make工具進(jìn)行一件編譯,就是把我們手動(dòng)編譯的過(guò)程用代碼的形式描述下來(lái),具體如下,注意make語(yǔ)法中不要使用空格,要使用tap的按鍵;具體如下:
led.bin : led.sarm-linux-gnueabihf-gcc -g -c led.s -o led.oarm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elfarm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.binarm-linux-gnueabihf-objdump -D led.elf > led.dis
clean:rm -rf *.o led.bin led.elf led.dis