Linux 开发一些单片机一直是一种难题,毕竟单片机这玩意不少就是为了适应广大单片机工程师而采用 Windows 的 IDE ,而且比较封闭。
本文介绍如何在 Linux 上使用 Flatpak 版 Q4Wine 与 Keil 搭建 8051 开发环境,还包括全局设置等宽字体并使用 STC-ISP 连接 USB 串口设备刷写 HEX 文件。同时也会介绍另一种单片机开发工具。
由于采用了 Flatpak,所以是发行版通用的。openSUSE、Fedora、Arch、Ubuntu、Debian 等都可以使用。
Flatpak 环境准备
要使用 Flatpak 环境,首先需要安装 Flatpak。在大多数发行版上安装 Flatpak 都比较简单——安装名叫 flatpak 的软件包即可。
以 openSUSE 为例:
sudo zypper in flatpak
然后添加软件源:
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
之后安装 Q4Wine:
sudo flatpak install flathub ua.org.brezblock.q4wine
Q4Wine 配置
运行 Q4Wine(当然也可以在应用菜单中点击 Q4Wine 图标启动):
flatpak run ua.org.brezblock.q4wine
Wine 有个概念叫“前缀”,不同的前缀就是不同的虚拟 Windows 环境,可以把不同的应用隔离开来,避免相互影响。
点击 Q4Wine 的前缀标签(1),添加新的前缀(2):
弹出菜单,名称自己随便取,我这里以“C51”为例,然后架构的话建议选择 win32,因为 Keil4、Keil5 与 STC-ISP 都是 32 位的程序,没必要搞 64 位环境。其他路径什么的保持默认即可。默认会保存到 ~/.var/app/ua.org.brezblock.q4wine/data/wineprefixes/
下面,有需求的也可以自己修改。
安装 Keil5
添加完了返回程序标签页,右击 C51,在弹出菜单中选择运行、浏览,然后打开下载的 Keil 安装包( Keil4、Keil5 都行,个人推荐 Keil5,可以修改打开文件的字符集,更好解决乱码问题),勾选同意许可协议(I agree to XXX),一路确认安装即可。
中间会有地方叫用户填写名字和邮箱、公司这种信息,只要邮箱格式正确,其他随便乱填。(如下图)
安装 STC-ISP
这个软件原理上讲是不需要安装的,但我建议复制到 Wine 前缀内部运行。STC-ISP 不能直接像运行安装包那样运行,因为缺少了 mfc42.dll
这个运行库。有两种解决办法。
一种是用 Q4Wine 的设置选项卡来使用 Winetricks 安装 mfc42。首先更新一下 Winetricks 指令稿,再刷新应用程序清单。
之后在 DLL 那一栏找到 mfc42 安装。
这个方法的缺点是,对网络条件有要求,网络不好没法下载。
第二种方法是直接从别处复制一个 mfc42.dll 过来,并放在 stc-isp 的目录下,然后把整个文件夹复制到前缀里面。(不能放在前缀以外,因为这样 Q4Wine 在 Flatpak 内用“运行、浏览”只能看到选择的单个文件,看不到同一文件夹下的其他文件)。
添加 Q4Wine 图标
通常情况下,Wine 会为安装的程序创建应用菜单,但是因为 Flatpak 环境做了隔离,所以需要手动给 Q4Wine 添加。右键空白处,选择 new icon,就会弹出添加图标的窗口。选择前缀里的 drive_c/Keil{_v5}/UV4/UV4.exe
即可。
全局等宽字体
设置全局等宽字体看起来会舒服一些,因为 Wine 环境默认并不会把所有应该用等宽字体的地方用上等宽(比如 stc-isp 的界面)。原理就是用一个等宽字体替换默认的几个 Windows 字体,然后写注册表。
注册表文件的内容如下,把 wqy-zenhei-mono.ttf
换成自己的字体文件名称,然后在前缀内部另存为 font.reg
。
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
"Lucida Sans Unicode"="wqy-zenhei-mono.ttf"
"Microsoft Sans Serif"="wqy-zenhei-mono.ttf"
"MS Sans Serif"="wqy-zenhei-mono.ttf"
"Tahoma"="wqy-zenhei-mono.ttf"
"Tahoma Bold"="wqy-zenhei-mono.ttf"
"SimSun"="wqy-zenhei-mono.ttf"
"Arial"="wqy-zenhei-mono.ttf"
"Arial Black"="wqy-zenhei-mono.ttf"
"Courier New"="wqy-zenhei-mono.ttf"
把要用字体复制到 drive_c/windows/Fonts/
,然后打开 Q4Wine 的注册表编辑器(regedit),导入注册表文件。