文章目录
- 应用环境安装
-
- MacOS安装HomeBrew
- MacOS安装VSCode
- MacOS安装QEMU
- [ARM GCC](#ARM GCC)
- Make
- Git
- 获取FreeRTOS源码
- 配置VSCode
- 相关文章
应用环境安装
MacOS安装HomeBrew
通过HomeBrew可以很方便的安装各种应用,
在MacOS上安装Homebrew是一个简单的过程,它允许你轻松地安装、更新和管理各种命令行工具和应用程序。以下是安装Homebrew的步骤:
-
打开终端
首先,打开你的终端(Terminal)。你可以通过在"应用程序">"实用工具"文件夹中找到并打开它,或者在搜索栏中输入"Terminal"来找到它。
-
安装Homebrew
在终端中,输入以下命令来安装Homebrew:
bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
这个命令会从Homebrew的GitHub仓库下载安装脚本并执行它。
- 等待安装完成
安装过程可能需要一些时间,因为它会下载Homebrew的代码并将其放置在系统路径中。安装完成后,你会看到类似以下的提示:
text
Your next step: run `brew help`
- 添加Homebrew到你的PATH(可选)
如果你在安装过程中没有自动添加Homebrew到你的PATH,你可以手动添加。通常,安装脚本会自动处理这个步骤。但是,如果你需要手动添加,可以使用以下命令:
bash
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
对于某些旧版本的MacOS或特定的shell配置,你可能需要使用/.bash_profile或/.bashrc文件代替~/.zprofile。你可以通过运行以下命令来检查你的shell配置文件:
bash
echo $SHELL
然后,根据输出结果选择合适的配置文件。例如,如果你使用的是bash,你可以使用:
bash
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.bash_profile
eval "$(/opt/homebrew/bin/brew shellenv)"
- 验证安装
为了验证Homebrew是否正确安装,你可以运行:
bash
brew doctor
这个命令会检查你的系统配置,并告诉你是否一切正常。
MacOS安装VSCode
官网
https://code.visualstudio.com/

点击"Download for macOS"下载,然后安装。
MacOS安装QEMU
前面已经介绍了HomeBrew的安装,这里可以直接使用brew指令安装QEMU
bash
brew install qemu
ARM GCC
安装gdb调试工具:
bash
brew install arm-none-eabi-gdb
安装gcc
不要使用如下指令安装,编译时会缺少头文件的,
bash
brew install arm-none-eabi-gcc
gcc请到官网下载
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
选择macOS这个32位的,注意要选择下载tar.xz这一个文件,不要下载pkg后缀的及其它文件

bash
# 进入下载目录
cd ~/Downloads
# 解压下载的文件(请将文件名替换为你实际下载的版本)
sudo tar xjf arm-gnu-toolchain-15.2.rel1-darwin-arm64-arm-none-eabi.tar.xz -C /usr/local/
# 为了方便,可以创建一个没有版本号的软链接
cd /usr/local/
sudo ln -s arm-gnu-toolchain-* arm-gnu-toolchain
配置环境变量
编辑你的 shell 配置文件(~/.zshrc 或 ~/.bash_profile),将工具链的 bin 目录添加到 PATH 环境变量中。
bash
# 打开配置文件,比如使用 nano
nano ~/.zshrc
# 在文件末尾添加以下行(根据你实际的安装路径调整)
export PATH="/usr/local/arm-gnu-toolchain/bin:$PATH"
保存文件后,执行以下命令使配置立即生效:
bash
source ~/.zshrc
如果要在VSCode中使用,需要重启下电脑,不然会找不到gcc的。
步骤4:验证安装
检查安装是否成功,以及标准库头文件是否存在。
bash
# 检查版本
arm-none-eabi-gcc --version
# 查找标准库头文件路径(应该会返回一个路径,例如 /usr/local/arm-gnu-toolchain/arm-none-eabi/include)
arm-none-eabi-gcc -print-sysroot
ls $(arm-none-eabi-gcc -print-sysroot)/include
如果 ls 命令列出了 stdlib.h 等头文件,说明安装成功。

Make
bash
brew install make
Git
bash
brew install git
获取FreeRTOS源码
FreeRTOS官方已经提供了针对QEMU的演示项目,我们直接克隆即可:
bash
# 克隆FreeRTOS仓库(包含子模块)
git clone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodules --depth=1
这里使用--depth=1参数可以加快下载速度,只获取最新版本。
github有可能会下载失败:

可以利用国内加速下载
bash
git clone https://gitclone.com/github.com/FreeRTOS/FreeRTOS.git --recurse-submodules --depth=1
如果失败,尝试
bash
git clone https://bgithub.xyz/FreeRTOS/FreeRTOS.git --recurse-submodules --depth=1
我在使用gitclone.com的指令、kkgithub.com加速都失败后,最后是通过bgithub.com的指令下载成功的:

下载过程可能会异常中止,比如在下载ThirdParty/mbedtls子模块时失败了:
text
Cloning into '/Users/temp/Documents/project/FreeRTOS/FreeRTOS-Plus/ThirdParty/mbedtls'...
remote: Enumerating objects: 209768, done.
remote: Counting objects: 100% (1020/1020), done.
remote: Compressing objects: 100% (498/498), done.
error: RPC failed; curl 56 Recv failure: Connection reset by peer
error: 8170 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
fatal: clone of 'https://github.com/Mbed-TLS/mbedtls.git' into submodule path '/Users/temp/Documents/project/FreeRTOS/FreeRTOS-Plus/ThirdParty/mbedtls' failed
Failed to clone 'FreeRTOS-Plus/ThirdParty/mbedtls' a second time, aborting
如果已经下载了一半(目录已存在):
进入 FreeRTOS 目录,尝试重新初始化并更新子模块:
bash
# 如果目录里有失败的 mbedtls 文件夹,先删除它
rm -rf FreeRTOS/FreeRTOS-Plus/ThirdParty/mbedtls
# 通过配置 Git,让它在遇到 github.com 时自动替换为可用的加速前缀
git config --global url."https://bgithub.xyz/".insteadOf "https://github.com/"
# 重新更新子模块
cd FreeRTOS
git submodule update --init --recursive --depth=1
配置VSCode
打开Demo项目
克隆完成后,打开VSCode并加载演示项目:
在VSCode菜单中选择 File > Open Folder
导航到刚刚克隆的FreeRTOS仓库中的演示目录:
text
FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC
点击"确定"打开项目
Demo下面有许多子文件夹,

可以搜索查找后打开

这个演示项目已经预先配置好了针对ARM Cortex-M3(mps2-an385板)的QEMU仿真环境。
配置VSCode调试环境
- 查看交叉编译工具路径
bash
which arm-none-eabi-gdb
输出
/opt/homebrew/bin/arm-none-eabi-gdb
调整工具链路径
打开项目后,需要根据你的系统环境调整调试配置:
在VSCode中打开.vscode/launch.json文件
找到miDebuggerPath配置项,将其修改为你系统上arm-none-eabi-gdb的实际路径:
"/opt/homebrew/bin/arm-none-eabi-gdb"

确认编译配置
打开项目中的main.c文件,确保以下配置:
c
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 1
设置为1表示编译简单的blinky演示(两个任务通过队列通信),设置为0则会编译完整的测试演示。
默认已经是1了

一键编译运行
- 在VSCode左侧栏点击Run And Debug
如下图的左侧的一只虫子在三角形图标上:

- 从顶部的下拉菜单中选择"Launch QEMU RTOSDemo"

- 点击绿色的"播放"按钮开始编译和运行
这个过程会自动:- 调用make编译FreeRTOS演示程序
- 启动QEMU仿真器,加载编译好的程序
- 连接GDB调试器
如果没有任何反应,那可能是编译失败了,可以直接按F5快捷键进行编译,编译失败会报错:

这个错误是因为安装的gcc只是精简的版本,不是完整的,没有头文件,一般是用brew指令安装会有这个问题,要解决这个问题要到官网去下载安装包安装。

注意不是安装名字叫cppdbg的扩展插件,而是要安装c/c++插件:

出现这个图就代码运行成功了,main就是运行入口函数:

点击如下右边的三角运行按钮:

在这里可以很方便地进行下断点调试。
查看运行输出
可以在下方终端输出看到已经在运行了,会有不停的打印:

这表明FreeRTOS正在QEMU中正常运行,任务正在按预期调度。
详细代码可以打开main_blinky.c查看,工作原理就是两个任务在不停地发,一个任务接受到并打印信息。
相关文章
MacOS安装VSCode在QEMU上模拟跑FreeRtos
RTOS日志库ulog与EasyLogger详细对比
RTOS数据库FlashDB、TFDB、SQLite选哪个
作者:帅得不敢出门