8051 通用开发环境搭建(全平台) Keil 工具链只能在Windows下安装使用,对于 MacOS,Linux等平台,可以参考本文搭建通用的开发环境(同样也支持Windows)
编译器 - SDCC 官网地址:SDCC - Small Device C Compiler
从官网下载对应平台的安装包,安装到系统。
也可以使用包管理器进行安装,如 Arch Linux可使用 pacman
安装:
安装完成后,确认 sdcc
在系统 PATH 里,可以通过以下命令确定
1 2 3 $ sdcc --version SDCC : mcs51/z80/z180/r2k/r2ka/r3ka/sm83/tlcs90/ez80_z80/z80n/r800/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8/pdk13/pdk14/pdk15/mos6502/mos65c02 TD- 4.4.0 published under GNU General Public License (GPL)
项目管理工具 项目管理工具可以选用 Make,CMake 等。写51大部分情况是写 C 或汇编,使用 Make 方便一些。
使用包管理器或下载安装 Make
烧录工具 烧录工具也有很多选择:stcflash, bossa, stcgal等。我们选用 stcgal
Arch Linux 可以从 AUR 安装,其他系统可以从 GitHub 下载 grigorig/stcgal
这样一套开发环境就搭建完成了,下面讲一下如何使用
配置 51 单片机开发项目(C语言) 新建一个文件夹用来存储项目文件,并创建一个简单的项目结构
1 2 3 4 mkdir -pv ~/workspace/51projectcd ~/workspace/51projectmkdir -pv src/{core,periph/{inc,src}} buildtouch Makefile
完成后,项目结构如下:
1 2 3 4 5 6 7 8 9 10 11 $ tree . ├── build ├── Makefile └── src ├── core └── periph ├── inc └── src 7 directories, 1 file
core
文件夹存储主程序,periph
下存储相关外设的封装库,Makefile
是项目的构建配置
编辑 Makefile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 CC := sdcc FLASH := stcgal PROJECT_NAME := project TARGET_NAME := target CFLAGS := -mmcs51 -Isrc/core -Isrc/periph/inc LDFLAGS := -mmcs51 BUILD_DIR := build OBJ_DIR := $(BUILD_DIR) /obj HEX_FILE := $(BUILD_DIR) /$(TARGET_NAME) .hex SRC_DIR := src CORE_DIR := $(SRC_DIR) /core PERIPH_DIR := $(SRC_DIR) /periph PERIPH_SRC := $(PERIPH_DIR) /src PERIPH_INC := $(PERIPH_DIR) /inc CORE_SOURCES := $(wildcard $(CORE_DIR) /*.c) PERIPH_SOURCES := $(wildcard $(PERIPH_SRC) /*.c) ALL_SOURCES := $(CORE_SOURCES) $(PERIPH_SOURCES) OBJ_FILES := $(patsubst %.c, %.rel, $(ALL_SOURCES) ) all: $(HEX_FILE) @echo Build completed %.rel: %.c $(OBJ_DIR) @echo Compiling $< @$(CC) $(CFLAGS) -c -o $(OBJ_DIR) /$@ $< $(HEX_FILE) : $(OBJ_FILES) @echo Linking @$(CC) $(LDFLAGS) $(OBJ_FILES:%=$(OBJ_DIR) /%) \ -o $(OBJ_DIR) /$(TARGET_NAME) .ihx @cp $(OBJ_DIR) /$(TARGET_NAME) .ihx $(HEX_FILE) flash: @if [ -e /dev/ttyUSB0 ]; then \ if [ -e $(HEX_FILE) ]; then \ @$(FLASH) -P stc89 $(HEX_FILE) -D; \ @echo Flash completed. ;\ else \ @echo Not built yet!; \ fi \ else \ echo "没有找到 USB 串口,停止烧录!" ; \ fi $(BUILD_DIR) : @mkdir -pv $@ $(OBJ_DIR) : $(BUILD_DIR) @mkdir -p $@ @mkdir -p $@ /$(CORE_DIR) @mkdir -p $@ /$(PERIPH_DIR) @mkdir -p $@ /$(PERIPH_SRC) clean: @rm -fr $(BUILD_DIR) .PHONY : clean all flash
之后就可以写代码了
测试 写程序测试
使用 make
编译
最后把单片机连接到电脑,make flash
进行测试。
总结 使用SDCC进行配置,对于大部分51的学习已经足够,对于协会培训内容而言绝对足够。配置完成后,在任何平台不需要额外进行项目的配置,只需要 make
工具就可以在Windows,Linux,MacOS,甚至其他架构的计算机上编译烧录51程序,非常地方便。
示例工程以发布于 GitHub:https://github.com/neoluxis/SDCC_89C52