C51
Linux下C51开发教程配套代码
Install / Use
/learn @JackeyLea/C51README
C51_Linux
Linux下C51单片机开发
windows下单片机开发有keil工具链,而且代码实例很多。
但是Linux下使用sdcc编译器搭配codeblocks开发而且代码与Windows下不同。
准备
Linux使用的是SDCC编译器

烧录工具使用stcflash.py(https://github.com/laborer/stcflash) + python-serial
硬件是普中单片机开发版V3.0和V2.0以及其他的一些扩展。
本仓库代码有部分来自普中单片机开发版配套光盘,我将其转换为Linux下。
系统环境:Manjaro Linux 19.0 dde 64bit
SDCC
Manjaro Linux源里面包含SDCC最新版的软件包,直接安装。
运行
sdcc -v
查看sdcc是否正确安装,正确安装执行上述代码会返回版本号

编译
sdcc main.c
这样的话预编译,汇编,链接全部都做了,直接生成ihx文件。
转换ihx文件为hex
#转换成hex文件
packihx main.ihx > main.hex
#也可以转成bin文件
objcopy -I ihex -O binary main.hex mian.bin
#or (makebin是sdcc的一个工具,应该默认装的了)
makebin main.hex main.bin
将生成的可执行程序烧录到单片机是需要一条下载线的。一般说来使用 USB 转串口的下载线。插上之后,在 /dev 里面有个设备叫 ttyUSB* 说明可以进行后面内容。
否则你可能需要安装 USB 转串口的驱动。
选择烧录工具。网上大部分使用的是 gSTCISP 这个工具烧录。但是在我尝试之后,总是卡在 We are trying to connect your MCU...这个地方。
起初我还以为下载线出现问题了。后来发现不是。你可以尝试。注意 gSTCISP 需要的是二进制文件,因此需要把 main.ihx 转换为二进制文件。
makebin <main.ihx> main.bin
然后检查USB连接: a.
$ lsmod | grep usbserial
如果输出有 usbserial,说明系统支持USB转串口。 b. 用USB数据线将开发板与电脑连接起来,运行
$ ls /dev/ttyUSB*
如果输出有/dev/ttyUSB0或1等等,说明系统已正确识别该USB转串口设备。 也可以用“#lsusb”命令查看是否有“USB-Serial adapter”类似的设备。
c. 设置串口为ttyUSB0(可以不做,在下载时手动指定--port):
$ dmesg | grep ttyUSB0
d. 关闭开发板电源,使用的时候要把stcflash.py这个文件复制到hex文件同目录下,假设需要烧写的文件是test.hex ,那么在终端进入到test.hex 目录下,执行下面语句
stcflash.py test.bin
此时会提示:

表示没有权限,解决方法有两个:
一为赋予root权限:
sudo stcflash.py test.bin
二是永久解决这个问题:
/etc/udev/rules.d/50-udev-default.rules
KERNEL=="ttyUSB0",GROUP="uucp",MODE="0666"
KERNEL=="ttyS0",GROUP="uucp",MODE="0666"
重启后就好了,不用每次都输入sudo。
以我自己的一个工程为例,需要烧写的文件为test.hex ,此时会有如下图所示

此时要关闭51单片机电源然后重启,就像在win系统下一样,然后会看到以下情况:

有晶振频率,芯片型号,ROM大小等信息。
参考资料
[1]https://blog.csdn.net/hjd03132301/article/details/17298103
Related Skills
node-connect
352.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
