STC32G调试笔记之01配置开发环境

听说STC出了32位的51单片机,本着尝尝新的想法,我入手了一块STC32的核心板来折腾,所以我打算开一个新坑,记录一下调试STC32的过程以及可能遇到的问题和麻烦。

0x00 前言

事情是这样的,为什么我要加这个前言呢?因为我被STC-ISP搞得精神崩溃了,这个STC提供的Flash烧录工具只有Windows版本,但是我日常用的开发环境是Mac OS,所以我试图用Wine来运行这个软件。但是这个软件不知道是用了什么奇怪的依赖,我装遍了所有我认为可能的依赖,但程序还是会在一个STC自家的弹窗广告弹出来之前发生闪退,所以我认为因为这个弹窗广告的原因导致闪退。我尝试了很多方法,但最终还是以失败告终。所以我决定在我正式开始编写这个系列的文章之前把STC好好地骂一顿。
但是我最后不死心,决定看看没有弹窗广告的老版本有没有这个问题的时候,在STC那宛如蜘蛛网一样乱的官网上找到了一个“精简版”STC-ISP,我抱着试试的态度打开它的时候,终于不闪退了,不过弹窗广告还是存在,但无法正常显示广告的状态,我调试了之后发现这个程序可以用,所以把原先的前言给删了。老姚的双亲暂时是保住了,就看他下次更新的时候有没有又整出什么幺蛾子。

0x01 配置开发环境

开发环境主要分为两部分,一个是编译器,一个是烧录程序。如果你使用的是Windows操作系统,那么很简单,安装一个Keil C251来编译程序,再在STC官网(stcmcudata.com)上下载一个STC-ISP来烧录程序即可。下面我将简单讨论一下Linux/Mac用户要如何配置开发环境。

编译器用的是C251编译器,很遗憾,SDCC并没有提供对C251支持,所以目前我只找到了Keil C251这一种可以编译C251的工具。而Keil只支持Windows,如果要在Linux或者Mac下开发的话,可以考虑使用Wine进行安装。我在MacOS12的机器上测试通过了Keil C251的运行,并且并不需要安装过多额外的依赖,只需要将字体组件corefonts安装至Wine容器中即可完美运行(关于如何安装依赖,请自行搜索Wine容器配置工具,在Mac下可以使用Wineskin这一图形化应用轻松配置)。

而烧录程序有多种选择,其一是像前文运行Keil一样,使用Wine环境运行。STC-ISP是用VC6.0+MFC写的程序,所以在Wine中安装mfc42这项依赖即可运行。请注意,官网上提供了几个版本的STC-ISP,请下载那个带有精简版字样的版本,否则会发生未知原因的闪退。在安装完成之后需要将串口映射到Wine中,使用指令:

1
ln -s /dev/[你的串口设备号] [你的Wine Prefix路径]/dosdevices/com1

然后在STC-ISP中选择串口号COM1即可进行烧录。

另一种方式是使用stcgal进行烧录,这个软件目前还在保持更新(Github地址:https://github.com/area-8051/stcgal-patched )。
从Github下载代码后,执行

1
2
python3 setup.py build
python3 setup.py install

在Install命令的输出信息里,可以找到类似这样的输出:

1
Installing stcgal script to /usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/bin

根据你自己实际的安装路径,将这个目录添加到环境变量:

1
sudo vi ~/.bash_profile

添加如下两行(路径换成你自己实际的):

1
2
export PYTHONPATH=/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/bin
export PATH=$PATH:$PYTHONPATH

然后保存退出并执行:

1
source ~/.bash_profile

烧录命令:

1
stcgal [要烧写的Hex文件路径] -P stc8d -p /dev/[你的串口设备号]

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器