第一次接触单片机,自然选择了简单的51单片机。然而我的操作系统是 Linux 。在 Windows 下上手51似乎很容易。但是 Linux 上搭建 51 开发环境不是很顺。
那么谈谈 Linux 我如何搭建 STC89C52RC 的开发环境吧。
(一)
选择自己喜好的代码编辑器即可。vim , emacs , gedit 等都可以。
(二)
安装编译器。一般选择 sdcc 。一般可从发行版的包管理器中直接安装。
如Arch中:
$ sudo pacman -S sdcc
如果不行,需要自行下载编译。
简单介绍使用sdcc:
假如当前目录有一个写好的源文件 main.c 。 使用如下简单方式即可编译。
$ sdcc main.c
生成的若干个文件中 main.ihx 是一个生成的16进制可执行文件。后面便可以将其烧录到单片机中。
(三)
将生成的可执行程序烧录到单片机是需要一条下载线的。一般说来使用 USB 转串口的下载线。插上之后,在 /dev 里面有个设备叫 ttyUSB* 说明可以进行后面内容。
否则你可能需要安装 USB 转串口的驱动。
选择烧录工具。网上大部分使用的是 gSTCISP 这个工具烧录。但是在我尝试之后,总是卡在 We are trying to connect your MCU...这个地方。
起初我还以为下载线出现问题了。后来发现不是。你可以尝试。注意 gSTCISP 需要的是二进制文件,因此需要把 main.ihx 转换为二进制文件。
一个转换例子:
$ makebin < main.ihx > main.bin
你需要把文件名更改成你自己相应文件名。其他方法还有很多,自行搜索。
通过我测试的一个烧录工具 stcflash 。这是一个 python 脚本。因此你需要安装 python 环境。大部分 Linux 发行版安装了 python 。但是你需要安装一个额外的运行库 python-serial 。
$ sudo pacman -S python-serial
将下载好的 stcflash.py 放入源文件目录。接下来开始烧录。
首先关闭板子。执行
$ sudo python ./stcflash.py ./main.ihx
打开开发板即可烧录进去。成功结果如下:
Connect to /dev/ttyUSB0 at baudrate 2400
Detecting target... done
FOSC: 11.996MHz
Model: STC89C52RC (ver4.3C)
ROM: 8KB
Baudrate: 38400
Erasing target... done
Size of the binary: 218
Programming: #################### done
另外二进制文件使用 stcflash 也可以烧录进入。
sdcc 下载地址:#Linux
gSTCISP 下载地址:?fulllist=1
stcflash 下载地址:https://github.com/RainMark/stcflash.git