Emgo项目技术文档
Emgo是一个专为小型32位微控制器设计的Go语言编译器套件,它能够将Go程序编译成C代码,进而通过C编译器生成可加载的二进制文件。虽然其主要发展已转向基于官方Go编译器的[Embedded Go]项目,但Emgo仍适用于某些特定的小型MCU场景。
安装指南
步骤1: 安装Go编译器
首先,确保您的系统上已安装Go编译器。访问Go官网下载并安装适合您操作系统的版本。Emgo需要在Unix-like操作系统环境下运行,对于Windows用户,建议配置Cygwin以提供相似环境(但未经过官方测试)。
步骤2: 克隆Emgo仓库
使用git命令克隆Emgo仓库到本地:
git clone https://github.com/ziutek/emgo.git
步骤3: 编译并安装Emgo编译器
进入Emgo的egc目录,并通过Go安装Emgo编译器(egc):
cd emgo/egc
go install
步骤4: 安装ARM工具链
Emgo当前仅支持ARM Cortex-M系列MCU,因此需要安装ARM嵌入式工具链。你可以选择通过Linux发行版的包管理器(如Debian/Ubuntu的apt-get install gcc-arm-none-eabi
),或者直接从GNU ARM Embedded Toolchain网站下载最新版本。之后设置必要的环境变量指向这些工具的位置。
步骤5: 设置Emgo环境变量
定义以下环境变量来指定Emgo的工作路径和编译相关工具的位置。
export EGCC="path_to_arm_gcc"
export EGLD="path_to_arm_linker"
export EGAR="path_to_arm_archiver"
export EGROOT="$HOME/emgo/egroot"
export EGPATH="$HOME/emgo/egpath"
# 如果手动下载了工具链,还需添加其bin目录到PATH中
export PATH="$PATH:path_to_arm_bin_dir"
项目的使用说明
选择一个与您的MCU/开发板对应的示例目录进行编译。Emgo提供了位于[$EGPATH/src/stm32/examples]
和[$EGPATH/src/nrf5/examples]
下的示例。
例如,为STM32 NUCLEO-F411RE编译“blinky”示例:
cd $EGPATH/src/stm32/examples/nucleo-f411re/blinky
./build.sh
首次编译可能较长,因为需要处理所有库和运行时环境。
API使用文档
Emgo支持的标准库文档位于Godoc,而为STM32、nRF5等特定MCU准备的库文档可在这里找到。
项目编译方式
- RAM加载: 对于调试和快速迭代,修改脚本以使用
stm32/loadram
。 - Flash编程: 需要修改脚本至使用
stm32/loadflash
,适用于最终部署或当程序无法在RAM中运行时。
利用提供的load-oocd.sh
, load-stutil.sh
, 或者针对Black Magic Probe的脚本来加载程序,并考虑使用gdb配合调试。
注意事项与资源
-
解决连接问题:若st-util或OpenOCD无法连接到开发板,尤其是外部编程器无复位引脚连接时,手动按住复位键并在加载/调试脚本执行后释放。
-
查阅更多资源:开发者博客、YouTube频道以及Google论坛以获取案例分析、视频教程和社区讨论。
通过以上步骤,您可以成功地在小型微控制器上开发、编译并调试Go程序,利用Emgo的强大功能探索嵌入式世界。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考