找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1666|回复: 0
打印 上一主题 下一主题
收起左侧

如何在Linux下进行51单片机开发 sdcc使用

[复制链接]
跳转到指定楼层
楼主
我是先接触了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文件

  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>





详细头文件见末尾。

编译文件的命令不是gcc而是sdcc


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


stcflash 烧录到单片机

stcflash需要serial模块支持,所以需要安装pyserial
  1. pip3 install pyseria
复制代码


直接运行程序可以检测单片机,注意需要root提权。

命令后接文件把文件烧录到单片机。



需要注意的地方

1. 引脚定义文件  `reg51.h` > `mcs51/8051.h`

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

3. sdcc默认生成的文件后缀不是`hex`而是`ihx`,需要使用`packihx`转换。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表