作为玩过51单片机但依然处于小白阶段的我不乖乖在 Keil 下写 C51 似乎有点说不过去,但反正学着玩,这样又有什么关系呢。毕竟C51是我最早接触的C语言版本,还是有点情结的。这篇文章也算是对网上各种资料的简单整理、继承和发展。
硬件和操作系统
- 开发板:比较有名的 TX-1C 开发板。C51也是我最早接触的C语言版本;
- 单片机:STC 89C52RC
- 主机主板:龙梦的 Lemote A1901,搭载龙芯 3A4000 处理器;
- 系统:龙梦 Fedora 28
安装软件
驱动
TX-1C 的 RS232-USB 转换芯片是 PL2303,驱动在 Fedora28 中已经集成。
通过 lsusb
和 dmesg | grep usb
可以查看到设备的信息,也可以看到分配的设备名称为 ttyUSB0 。当然也可以通过串口线连接主板和开发板的串口,设备名称通常为 ttyS0。
IDE
CodeBlocks 配合 SDCC 编写单片机程序。
sudo dnf install codeblocks sdcc
SDCC 的语法和 Keil 略有不同,可以参考 SDCC 的文档 http://sdcc.sourceforge.net/doc/sdccman.pdf
烧写工具
使用 stcflash:https://github.com/laborer/stcflash
支持bin文件和ihx/hex文件,在该网址中有详细的使用说明。
python 在 Fedora28 自带,但是需要手动安装依赖的库。
sudo dnf install python2-pyserial
在 stcflash.py 同目录通过 python stcflash.sh
运行。
串口调试工具
Linux 下的串口调试软件有很多,比如字符界面的 minicom 和图形界面的 cutecom 和 putty,可以直接通过 dnf 安装。
sudo dnf install minicom cutecom putty
CodeBlocks设置
新建 MCS51 Project,却显示找不到编译器,需要手动配置。
下面的设置方法完全是个人摸索出来的,如果有所差错或遗漏请具体问题具体分析~
- Debuger
菜单栏 Settings→Debuger,选中 GDB/CDB debugger,单击 Create Config,名称可以随便添,为了方便可以设为 sdcdb。
单击 ok 后可以看到选项框中多出了刚添加的选项,选中它,将 Executable path 设为sdcdb命令的目录,通常在 /usr/bin 下。在龙芯 Fedora28 下,由于命令名称有所不同,为 /usr/bin/sdcc-sdcdb 。
其他设置保持不变,单击 OK 保存退出。
- Compiler
菜单栏 Settings→Compiler,在 Selected compiler 的下拉框中选中 Small Device C Compiler。找到 Toolchain executables,将Compiler's installation directory 设置为 /usr;将 Program Files 每个选项按照下面的表格填写(不同的发行版会有所不同),其中 Debugger 一项根据前面的设置选择。
项目 | 龙芯 Fedora28 下的文件名 |
---|---|
C compiler | sdcc-sdcc |
C++ compiler | sdcc-sdcpp |
Linker for dynamic libs | sdcc-sdcc |
Linker for static libs | sdcc-sdcclib |
Debugger | GCB/CDB debugger: sdcdb |
Resource compiler | --(留空)-- |
Make program | make |
点击 OK 保存。
- packihx
按上面的设置后发现依然编译失败,查看 Build log 发现没有 packihx 命令,显然正确的命令应该是 sdcc-packihx,多方查找没有找到合适的修改方法,决定做一个软链接。
打开终端,首先进入命令所在的目录 cd /usr/bin
,查看已有的命令,确认文件名正确,运行 sudo ln -s sdcc-packihx packihx
完成软链接的建立。再次编译编译成功。
by SDUST weilinfox
原文链接:https://www.cnblogs.com/weilinfox/p/12298907.html