Linux环境下开发51单片机

本文详细介绍了如何在Linux系统下配置51单片机的开发环境,包括安装SDCC编译器、解决ch340驱动问题以及烧录工具stcgal的安装与使用。遇到的挫折如驱动不识别和烧录错误等问题,也给出了相应的解决方案。通过这篇教程,读者可以在Linux下顺利进行51单片机的编程与烧录工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux系统下51单片机开发环境配置

因为现在使用linux的桌面系统进行办公,用虚拟机或者装双系统切换着实不方便。

需要的工具

sdcc

#51mcu等各种较老式的mcu的c语言编译器

#我使用的是deepin linux
sudo apt install sdcc #可能版本不是最新的但是对市面上的51系列单片机够用

#还可以自己下载编译,但是不推荐,总会有点解决不了的小问题
http://sdcc.sourceforge.net/snap.php#Linux

stcgal

#一个python编写的程序烧写器

#最好在root中安装这个包
sudo pip3 install stcgal

#这个工具有点小问题,待会再说

头文件位置

#如果用apt 下载的sdcc
#头文件在 
/usr/share/sdcc/mcs51
使用的时候调自己手里51单片机的型号就行,不知道就用<mcs51/8052.h>这个通用兼容的头文件就行

c文件编写

#include<mcs51/8052.h>

void main(){
    
    //寄存器位的赋值还有中断函数与keil不太一样,但是差别不大,编写的时候查百度就行
    P2_0 = 0;
    while(1);
    
    
}

编译

sdcc main.c

#产生的烧录文件
main.ihx

烧录

sudo python3 -m stcgal -P stc89 /home/username/main.ihx [-b 115200] 传输波特率可选设置默认 19200
#有些51单片机到这会出问题 

配置中可能会出现的挫折

1.ch340驱动问题

检查你的系统ch340驱动是否没问题(之前确保你的数据线没问题)

ls /dev/tty* | grep USB0
#出现 ttyUSB0 说明驱动好使
#啥都没有说明驱动有问题

有些版本的linux中,没有ch340的驱动,系统无法识别你开发板usb接口

下载驱动包

https://www.wch.cn/download/CH341SER_LINUX_ZIP.html

先不要着急编译,这里的c文件只支持到3.几的版本,其实我们只需要的是其中的makefile文件

再到

https://elixir.bootlin.com/linux/v5.10.113/source/drivers/usb/serial/ch341.c

中找到你系统内核版本的ch341.c文件

uname -r 可以查到内核版本

将找到的ch341.c内容 复制到驱动包中 改名为ch34x.c 将原来的ch34x.c替换。

到驱动包中,编译并加载内核

sudo make

sudo make load

查看内核是否加载成功

lsmod | grep ch
#出现 ch34x 的字样就是成功了

再查看驱动是否安装成功

ls /dev/tty* | grep USB0
ttyUSB0 

2.stcgal问题

当你进行烧录的时候

sudo python3 -m stcgal -P stc89 /home/username/main.ihx 

一直在等待上电重启

Waiting for MCU, please cycle power: 

或使用默认类型时

sudo python3 -m stcgal /home/username/main.ihx 

出现

Waiting for MCU, please cycle power: done
Protocol detected: stc89
Protocol error: packet checksum mismatch
Disconnected!

不要怕,这不是你差步骤或者别的问题,是stcgal的问题

查了很多是 BSL version的问题,虽然我也不知道这个是个什么东西但是只有下一个有stc89a类型的stcgal就解决了

git clone https://github.com/nrife/stcgal.git

再用这个 git下来的包中的stcgal.py来指定stc89a这个类型

sudo python3 stcgal.py -P stc89a /home/username/main.ihx

你的第一linux下写的51程序就烧好了!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值