|
我是先接觸了linux,再學(xué)習(xí)編程語(yǔ)言。最后才嵌入式開(kāi)發(fā)學(xué)習(xí)。基本上網(wǎng)絡(luò)的教程資料都是keli這個(gè)IDE下進(jìn)行開(kāi)發(fā)的。由于我個(gè)人比較喜歡vim的編輯模式,在linux下用順手了。于是就在網(wǎng)上找了一些教程如何在linux進(jìn)行嵌入式開(kāi)發(fā),寫了一點(diǎn)小筆記,分享給大家。希望能幫助到你。
在linux下的步驟和windows一樣的,先編寫c文件,然后編譯,最后把hex文件燒錄到單片機(jī)。
只是在windows下使用IDE直接就可以編寫加編譯,把兩個(gè)步驟合成了一個(gè)。在linux則是分開(kāi)的,使用任何你喜歡的編輯器編寫c文件,然后使用sdcc編譯成ihx文件,再使用packihx把ihx文件轉(zhuǎn)換成hex文件,最后使用stcflash這個(gè)工具燒錄到單片機(jī)就可以了。
sdcc stcflash 下載
下載sdcc,根據(jù)你的linux發(fā)行版的包管理工具下載sdcc,當(dāng)然你也可以下載源碼編譯安裝。
1.png (448.35 KB, 下載次數(shù): 80)
下載附件
2021-12-24 05:15 上傳
stcflash是一個(gè)基于python的小工具,所以你需要提前準(zhǔn)備python環(huán)境。
stcflash download link github
sdcc編譯
編寫c文件
- #include<mcs51/8051.h> // 注意sdcc和keli的庫(kù)文件地址不一樣
- void Delay(unsigned int);
- void main(void){
- while(1){
- P2_0 = 0; // 注意sdcc的庫(kù)文件位引腳定義和keli的區(qū)別 keli一個(gè)是^ sdcc是_
- Delay(1000);
- P2_0 = 1;
- Delay(1000);
- }
- }
- void Delay(unsigned int x){
- unsigned int a, b;
- for(a = x; a > 0; a--)
- for(b = 100; b > 0; b--);
- }
復(fù)制代碼
在Keli下引用引腳定義是#include <reg51.h>,而sdcc則是#include <mcs51/8051.h>
2.png (245.95 KB, 下載次數(shù): 70)
下載附件
2021-12-24 05:15 上傳
3.jpg (297.19 KB, 下載次數(shù): 70)
下載附件
2021-12-24 05:15 上傳
詳細(xì)頭文件見(jiàn)末尾。
編譯文件的命令不是gcc而是sdcc。
4.png (228.86 KB, 下載次數(shù): 72)
下載附件
2021-12-24 05:15 上傳
可以看到sdcc并沒(méi)有生成hex文件,而是生成ihx文件。所以還需要使用`packihx`命令生成。
5.jpg (229.1 KB, 下載次數(shù): 76)
下載附件
2021-12-24 05:15 上傳
stcflash 燒錄到單片機(jī)
stcflash需要serial模塊支持,所以需要安裝pyserial
6.png (704.39 KB, 下載次數(shù): 73)
下載附件
2021-12-24 05:15 上傳
直接運(yùn)行程序可以檢測(cè)單片機(jī),注意需要root提權(quán)。
命令后接文件把文件燒錄到單片機(jī)。
7.jpg (160.7 KB, 下載次數(shù): 62)
下載附件
2021-12-24 05:15 上傳
需要注意的地方
1. 引腳定義文件 `reg51.h` > `mcs51/8051.h`
2. 引腳位操作 `P1^0` > `P1_0`
3. sdcc默認(rèn)生成的文件后綴不是`hex`而是`ihx`,需要使用`packihx`轉(zhuǎn)換。
|
評(píng)分
-
查看全部評(píng)分
|