欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2362|回復: 0
收起左側

如何在Linux下進行51單片機開發 sdcc使用

[復制鏈接]
ID:992041 發表于 2021-12-23 09:27 | 顯示全部樓層 |閱讀模式
我是先接觸了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,當然你也可以下載源碼編譯安裝。

1.png

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

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的區別    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. }
復制代碼


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

2.png

3.jpg

詳細頭文件見末尾。

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

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

stcflash 燒錄到單片機

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

6.png
直接運行程序可以檢測單片機,注意需要root提權。

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

7.jpg

需要注意的地方

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

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

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

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表