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