找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2405|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

如何在Linux下進(jìn)行51單片機(jī)開(kāi)發(fā) sdcc使用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:992041 發(fā)表于 2021-12-23 09:27 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我是先接觸了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)然你也可以下載源碼編譯安裝。



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

stcflash download link github

sdcc編譯

編寫c文件

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

  2. void Delay(unsigned int);

  3. void main(void){
  4.         while(1){
  5.                 P2_0 = 0;        // 注意sdcc的庫(kù)文件位引腳定義和keli的區(qū)別    keli一個(gè)是^  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>





詳細(xì)頭文件見(jiàn)末尾。

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


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


stcflash 燒錄到單片機(jī)

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


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

命令后接文件把文件燒錄到單片機(jī)。



需要注意的地方

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

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

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

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表