MacOS 如何使用SDCC编译烧录51程序(完整版)
(以下内容均运行在MacOS原生系统,未使用vm虚拟机。)
设备为2022air,m2芯片。
安装homebrew:
这里使用的是gitee镜像源。
打开终端输入:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
如果终端输入后,显示的是乱码,则说明终端编码没有使用unicode(utf-8)格式,按住【command+,】 打开终端设置,点击描述文件,将下方的文本编码选择utf-8格式即可。
按照提示依次操作。
用brew安装sdcc:
安装好homebrew后,在终端使用brew安装sdcc。
brew install sdcc
安装完成后查看sdcc版本信息
sdcc -v
出现以下内容说明安装成功。
SDCC : mcs51/z80/z180/r2k/r2ka/r3ka/sm83/tlcs90/ez80_z80/z80n/r800/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8/pdk13/pdk14/pdk15/mos6502/mos65c02 TD- 4.4.0 #14620 (Mac OS X ppc)
published under GNU General Public License (GPL)
安装CH34x驱动:
点击CH34x下载进入官网下载mac os版本驱动。
CH341下载链接: https://www.wch.cn/download/CH341SER_MAC_ZIP.html
打开zip后,先点dmg,再点pkg。
窗口弹出succeed就成功了。
安装完成后,打开终端,输入:
ls /dev/tty.wchusbser*
查看端口,出现以下内容,代表端口正常
/dev/tty.wchusbserial1110
1110是串口号。
如果出现 zsh: no matches found: /dev/tty.wchusbser*
不要慌,是因为你没有插上ch34x数据线,插上后再次输入 ls /dev/tty.wchusbser*
查看端口信息即可。
安装stcgal闪存烧录
提前下载好python3系列,推荐3.11万金油版本,当然也可以使用3.13最新版,不重要。
拥有python3后,使用终端下载stcgal
stcgal pip3 install stcgal
如果终端下载失败,那么就手动下载
点击stcgal下载前往github下载zip文件,打开后把文件拖动至桌面。
stcgal下载链接:https://github.com/grigorig/stcgal
打开终端输入
cd desktop
cd stcgal-master
让终端选择到解压好后的文件夹。
然后用终端运行其中的python文件。
/setup.py build
sudo ./setup.py install
就安装好stcgal了。
输入 stcgal -v
可以查看版本信息。
这时候环境就搭建完成了,用vs code写入代码(默认普中A2开发板)
#include <8051.h>
void main()
{
P2 = 0x00; //led全部点亮
}
保存为main.c文件
然后打开终端(可以直接在vscode终端操作)输入
sdcc main.c
开始编译.c文件为.ihx文件。
可以选择使用cat命令在终端查看各个文件信息,例如 cat main.mem
或 cat main.asm
。这里插一嘴,如果查看.asm或.c文件内容发现注释乱码,那就将unicode(utf-8)格式换成GB2312 即可。
然后输入
stcgal -P stc89 -p /dev/tty.usbserial-刚才的串口号 main.ihx
串口号每个人可能不一样,例如我的是1110,那么我终端输入的指令就是:
stcgal -P stc89 -p /dev/tty.usbserial-1110 main.ihx
如果提示
[notice] A new release of pip is available: 24.0 -> 24.3.1
[notice] To update, run: pip3 install --upgrade pip
说明缺少upgrade库,那就在终端输入
pip3 install --upgrade pip
安装好upgrade库后,再次输入
stcgal -P stc89 -p /dev/tty.usbserial-串口号 main.ihx
即可开始烧录.ihx文件。
(第一部分-p是选择mcu型号,第二部分-p是选择串口,第三部分是选择烧录的文件。)
出现
Waiting for MCU, please cycle power:
则需要重新上电,进行冷启动烧录。
如此就结束了我们整个流程,理工科除非是纯软,否则我还是不推荐MacOS。
附
在此再插一嘴,如果你的团队需要使用STC-ISP.exe烧录,但出现ihx文件打不开,报错之类的现象。可以使用SDCC自带的 packihx
或者 makebin
指令进行格式转换。
packihx main.ihx > main.hex
不覆盖的前提下,新成成hex文件。
makebin main.hex > main.bin
不覆盖的前提下,新生成bin文件。
综上所述,如有错误还请指正。
(ps:配置环境配置的我好辛苦啊??,没有一个包容度深的教程,纯靠自己踩坑得出的经验值 XP+1 HP-1,因为很少人用mac开发,就算有也是用 vs code中的Platform IO扩展开发,故此出文帮助部分少数比较喜欢SDCC这种简洁爱好的强迫症人群。)