一. 安装编译软件
编译需要使用SDCC,此时编译出来的是hex文件,如果需要转成bin格式,需要用到hex2bin。
貌似还要一个驱动?
1 2 3 |
pip install pyserial |
这几个安装好即可。
二. 安装IDE
如果需要使用IDE,可以选择MCU 8051,注意这个IDE用的头文件不是Keil那般,应为
1 2 3 |
#include <at89x51.h> |
对端口的定义也不是用sbit,而是形如:
1 2 3 |
#define led P0_0 |
也就是端口可以直接拿来用,如P0_1, P0_2……
三. 配置烧录软件环境
以上搞定好后需要一个下载或者说烧录软件,以前用过stcflash,stcgal,但是问题很多,经常下载不了,读者有兴趣可以尝试,也许对于你来说就是可行的。
这里我找到了另一个办法,用stc-isp,即Windows下的软件,在此之前需要为Linux安装一个wine环境,但这里不赘述wine的安装和配置。
之后在终端里试着运行
1 2 3 |
wine ./stc-isp.exe |
大概率会报错,告知我们缺失哪些dll文件,可以在终端运行
1 2 3 4 5 |
winetricks <缺失的dll名> 如 winetricks mfc42 |
通过上面的命令可以补全缺失的dll文件,作者这边挂了代理才安装成功,有点坑,如果你安装失败的话,试着从网上直接下载安装。
四. 将串口设备映射到stc-isp需要使用的COM口上
经过以上步骤stc-isp应该可以成功运行起来,但是其下载使用的串口名是COMx,Linux对应的设备文件是形如/dev/ttyUSB0,所以我们需要做一个简单的映射.
1 2 3 |
wine regedit |
执行上方命令打开注册表,展开 HKEY_LOCAL_MACHINE\Software\Wine\Port , 然后右键Port,New一个String Value, 名字为COMx, Value值为Linux串口设备文件。
终端执行 wineserver -k 关闭wine,再启动stc-isp
1 2 3 |
wine ./stc-isp.exe |
按上图步骤分别完成芯片型号选择,COM口选择(COM口是前面设置的字符串名称,记得对应),再打开hex文件,波特率不要调太高,容易下载失败,之后点击Download Program,对单片机进行冷启动(关上电,再通电),就可以下载成功了。
五. 创建入口图标
1. sudo vim /usr/share/applications/STCISP.desktop
复制以下内容到文件中并保存退出
1 2 3 4 5 6 7 8 9 |
[Desktop Entry] Name=STC-ISP Comment=MCU89C51 Downloader Exec=wine /home/rease/.wine/drive_c/Program\ Files/isp.exe #需修改为自己的软件所放置的绝对路径 Icon=/home/rease/.wine/drive_c/icon/stc-isp.jpg #请修改为你自己想要的图标的绝对路径 Type=Application Terminal=false |
2. 安装入口图标
1 2 3 |
sudo desktop-file-install /usr/share/applications/STCISP.desktop |
3. 刷新入口图标缓存
1 2 3 |
sudo update-desktop-database |
经过如上处理,点击图标就可以直接运行下载程序了(Gnome是按Super键搜索入口图标)
SDCC Makefile参考
1 2 3 4 5 6 7 8 9 10 11 12 |
cc = sdcc objects = lcd.rel myfunc.rel timer.rel main.rel flags = --verbose --debug target : $(objects) $(cc) $(objects) $(flags) -o main.hex %.rel : %.c $(cc) -c $< |