我是先接觸了linux,再學習編程語言。最后才嵌入式開發學習。基本上網絡的教程資料都是keli這個IDE下進行開發的。由于我個人比較喜歡vim的編輯模式,在linux下用順手了。于是就在網上找了一些教程如何在linux進行嵌入式開發,寫了一點小筆記,分享給大家。希望能幫助到你。
在linux下的步驟和windows一樣的,先編寫c文件,然后編譯,最后把hex文件燒錄到單片機。
只是在windows下使用IDE直接就可以編寫加編譯,把兩個步驟合成了一個。在linux則是分開的,使用任何你喜歡的編輯器編寫c文件,然后使用sdcc編譯成ihx文件,再使用packihx把ihx文件轉換成hex文件,最后使用stcflash這個工具燒錄到單片機就可以了。
sdcc stcflash 下載
下載sdcc,根據你的linux發行版的包管理工具下載sdcc,當然你也可以下載源碼編譯安裝。
stcflash是一個基于python的小工具,所以你需要提前準備python環境。
stcflash download link github
sdcc編譯
編寫c文件
- #include<mcs51/8051.h> // 注意sdcc和keli的庫文件地址不一樣
- void Delay(unsigned int);
- void main(void){
- while(1){
- P2_0 = 0; // 注意sdcc的庫文件位引腳定義和keli的區別 keli一個是^ 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--);
- }
復制代碼
在Keli下引用引腳定義是#include <reg51.h>,而sdcc則是#include <mcs51/8051.h>
詳細頭文件見末尾。
編譯文件的命令不是gcc而是sdcc。
可以看到sdcc并沒有生成hex文件,而是生成ihx文件。所以還需要使用`packihx`命令生成。
stcflash 燒錄到單片機
stcflash需要serial模塊支持,所以需要安裝pyserial
直接運行程序可以檢測單片機,注意需要root提權。
命令后接文件把文件燒錄到單片機。
需要注意的地方
1. 引腳定義文件 `reg51.h` > `mcs51/8051.h`
2. 引腳位操作 `P1^0` > `P1_0`
3. sdcc默認生成的文件后綴不是`hex`而是`ihx`,需要使用`packihx`轉換。
|