技术 · 4月 21, 2021 0

不用汇编的 Cortex-M 裸机编程(其一)——开发环境和目标平台

嵌入式软件开发做了这么些年,总感觉越来越多的人对我所谓“独特开发风格“的误解越来越多。仔细想想,这也许是我常年述而不作,完全忽视了文档的后果吧。这个系列算是补课,把我的开发思路整体整理一下。

这第一篇讲的主要是用公版 Eclipse Embedded CDT 和 GCC 等开源工具搭建一个完整的 ARM Cortex-M 开发环境。同时我也会兼顾一下目标板的选择,不过这个教程系列我会尽量不过多绑定特定厂商或特定型号,而是介绍一种可以放之四海而皆准的开发方式和思路。

环境搭建

虽说很多商业嵌入式开发平台限定 Windows 平台,我用的公版开源工具是跨平台的,因此这里也会提供 Windows、macOS 和 Ubuntu Linux 三种操作系统下安装公版开源工具的方式。

系统要求

这套开发平台有如此的基本系统要求:

  • 处理器需要使用 AMD64 架构,CPU 绝对算力(线程数×全核心最高频率)多多益善。1在我的实验环境中,2013 年的 Ivy Bridge 架构,3.1GHz 最高频率 24 核心 48 线程的双路志强 E5-2696v2 处理器工作站代码编译性能大约是 2018 年的 Coffee Lake 架构,5.2GHz 水冷超频 8 核心 8 线程的 i7-9700K 处理器游戏主机的两倍多。前者虽然有六代代差和超过 50% 的频率差,但是前者靠线程数堆砌出来的绝对算力还是力压后者。
  • 内存多多益善,最好是每个线程都有不少于 2GB 的内存空间。
  • 存储设备需要有良好的 4kB 随机读写性能,尽量使用 NVMe 固态硬盘,再不济也至少要 SATA 固态硬盘。如果内存有充分余量,可以考虑用 Ramdisk。
  • 操作系统:Windows 10 版本 20H2、Ubuntu 20.04 LTS 或 macOS Big Sur

处理器、内存和存储设备有如此的要求,是因为在软件编译的时候我们会打开 GNU Make 的并行编译功能,编译器多开极限压榨处理器极限整数性能、内存容量和存储设备的小文件并行 I/O。

软件安装

由于步骤中大多数软件都是跨平台的开源软件,安装步骤大同小异。安装所有这些软件的时候,尽量安装到默认位置,这样后续使用过程中就可以省略大量配置过程。

Java

Eclipse 依赖 Java,需要在安装 Eclipse 之前装妥。Java 可以从这里下载,然后按提示安装即可。

Eclipse Embedded CDT

Eclipse Embedded CDT 是 Eclipse CDT 吸收原 GNU MCU Embedded 项目之后的产物,包括了完整的 Eclipse CDT 环境和嵌入式烧录调试支持。下载链接在这里。

编译环境工具

Eclipse Embedded CDT 需要依赖一些常见于 UNIX 环境的编译环境命令才能正常工作。这些命令大多数情况下都需要单独安装,安装方法视操作系统而异。

Windows 10

Windows 10 缺少所有 UNIX 编译环境命令。不过这里有打包好的所有命令文件。下载这个压缩包,解压缩到 %USERPROFILE%\AppData\Roaming\xPacks\windows-build-tools 目录下即可。

Ubuntu 20.04

Ubuntu 默认并不包含大多数开发者命令,因此需要用以下命令单独安装:

apt install build-essential
macOS Big Sur

macOS Big Sur 默认并不包含所有 UNIX 开发者命令。虽然说下载安装 Xcode 可以解决这些问题,但为了方便后续软件安装维护,用下面的命令安装 Homebrew 的效果会更好:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

这个过程中 Homebrew 会安装 500MB 左右的 Xcode Command Line Tools,达成和安装超过 10GB 的完整 Xcode 包一样的效果。

GNU ARM Embedded

GNU ARM Embedded 工具链提供了开发 Cortex-M 单片机所需的交叉编译器、连接器和 Newlib C 标准库。

Windows 10

ARM 为 Windows 用户事先打包好了 GNU ARM Embedded 的安装包,下载安装到默认路径即可。下载链接在这里。

Ubuntu 20.04

Ubuntu 软件仓库中默认的 gcc-arm-none-eabi 软件包已经非常陈旧了,不建议使用。建议从这里下载用于 64 位 Linux 的 GNU ARM Embedded 工具链,然后安装到 /usr/local 目录下。

macOS Big Sur

macOS Big Sur 在安装好 Homebrew 之后,可以简单的用一条命令安装 GNU ARM Embedded 工具链:

brew install gcc-arm-embedded

在后续的教程中我会主要用 Segger J-Link 做为调试接口,因此需要从这里下载安装 J-Link 驱动与工具包。

  • 1
    在我的实验环境中,2013 年的 Ivy Bridge 架构,3.1GHz 最高频率 24 核心 48 线程的双路志强 E5-2696v2 处理器工作站代码编译性能大约是 2018 年的 Coffee Lake 架构,5.2GHz 水冷超频 8 核心 8 线程的 i7-9700K 处理器游戏主机的两倍多。前者虽然有六代代差和超过 50% 的频率差,但是前者靠线程数堆砌出来的绝对算力还是力压后者。