標題: 如何在Linux下進行51單片機開發(fā) sdcc使用 [打印本頁]

作者: wezhon    時間: 2021-12-23 09:27
標題: 如何在Linux下進行51單片機開發(fā) sdcc使用
我是先接觸了linux,再學(xué)習編程語言。最后才嵌入式開發(fā)學(xué)習;旧暇W(wǎng)絡(luò)的教程資料都是keli這個IDE下進行開發(fā)的。由于我個人比較喜歡vim的編輯模式,在linux下用順手了。于是就在網(wǎng)上找了一些教程如何在linux進行嵌入式開發(fā),寫了一點小筆記,分享給大家。希望能幫助到你。

在linux下的步驟和windows一樣的,先編寫c文件,然后編譯,最后把hex文件燒錄到單片機。
只是在windows下使用IDE直接就可以編寫加編譯,把兩個步驟合成了一個。在linux則是分開的,使用任何你喜歡的編輯器編寫c文件,然后使用sdcc編譯成ihx文件,再使用packihx把ihx文件轉(zhuǎn)換成hex文件,最后使用stcflash這個工具燒錄到單片機就可以了。

sdcc stcflash 下載

下載sdcc,根據(jù)你的linux發(fā)行版的包管理工具下載sdcc,當然你也可以下載源碼編譯安裝。



stcflash是一個基于python的小工具,所以你需要提前準備python環(huán)境。

stcflash download link github

sdcc編譯

編寫c文件

  1. #include<mcs51/8051.h>     // 注意sdcc和keli的庫文件地址不一樣

  2. void Delay(unsigned int);

  3. void main(void){
  4.         while(1){
  5.                 P2_0 = 0;        // 注意sdcc的庫文件位引腳定義和keli的區(qū)別    keli一個是^  sdcc是_
  6.                 Delay(1000);
  7.                 P2_0 = 1;
  8.                 Delay(1000);
  9.         }
  10. }

  11. void Delay(unsigned int x){
  12.         unsigned int a, b;

  13.         for(a = x; a > 0; a--)
  14.                 for(b = 100; b > 0; b--);
  15. }
復(fù)制代碼


在Keli下引用引腳定義是#include <reg51.h>,而sdcc則是#include <mcs51/8051.h>





詳細頭文件見末尾。

編譯文件的命令不是gcc而是sdcc


可以看到sdcc并沒有生成hex文件,而是生成ihx文件。所以還需要使用`packihx`命令生成。


stcflash 燒錄到單片機

stcflash需要serial模塊支持,所以需要安裝pyserial
  1. pip3 install pyseria
復(fù)制代碼


直接運行程序可以檢測單片機,注意需要root提權(quán)。

命令后接文件把文件燒錄到單片機。



需要注意的地方

1. 引腳定義文件  `reg51.h` > `mcs51/8051.h`

2. 引腳位操作  `P1^0` > `P1_0`

3. sdcc默認生成的文件后綴不是`hex`而是`ihx`,需要使用`packihx`轉(zhuǎn)換。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1