qemu可执行固件编译的探索
- 环境
- demo的模拟
- SDK构建
- zephyr环境设置
- 安装依赖项
- 下载 Aspeed Zephyr 软件包
- 安装工具链
- 配置
环境
ubuntu22.04
、 qemu9.0.0-rc1
、cmake 3.25.2
、python 3.8.10
、dtc 1.5.0
、west 1.2.0
、zephyr-sdk-0.16.1
demo的模拟
首先先尝试一个可以正常跑起来的案例
我们先看看自己的qemu可以模拟的arm机器类型:
这里使用的qemu版本是qemu-9.0.0-rc1,具体编译安装过程看qemu9.0.0编译安装
之后我们下载我们尝试使用的demo:
https://github.com/AspeedTech-BMC/zephyr/releases/download/v00.01.04/ast1030-evb-demo.zip
下载之后解压,之后进入该目录然后执行:值得注意的是下图中的qemu是编译目录下的qemu
qemu-system-arm -M ast1030-evb -kernel ./zephyr.elf -nographic
这样就模拟成功了
SDK构建
zephyr环境设置
安装依赖项
下载依赖:
sudo apt install --no-install-recommends git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget \
python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \
make gcc gcc-multilib g+±multilib libsdl2-dev
检查一下必要项的版本
cmake -version
python3 -version
dtc -version
要求:
下载 Aspeed Zephyr 软件包
安装west,配置环境变量,这里的west操作比较吃网络,多试几次吧
pip3 install – user - U west
echo ‘export PATH=~/.local/bin:“$PATH”’ >> ~/.bashrc
source ~/.bashrc
west init -m https://github.com/AspeedTech-BMC/zephyr.git --mr v00.02.01 zephyrproject
cd zephyrproject
west update
之后按照Zephyr 的 scripts/requirements.txt 文件声明了其他 Python 依赖项。使用 pip3 安装它们。
cd zephyr/scripts/
pip3 install --user -r requirements.txt
在pip的时候可能会遇到一些问题,这是缺少一些必要的库
之后我们分别安装下面这些依赖即可:
pip install --upgrade packaging
pip install --upgrade Jinja2
pip install testresources
pip install --upgrade six
pip install --upgrade pyyaml
安装工具链
下载 Zephyr SDK 捆绑包:
cd ~
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz
解压()建议解压到$Home下
cd ~
mkdir zephyr-sdk-0.16.1
tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz -C ~/zephyr-sdk-0.16.1
设置环境变量
touch .zephyrrc
echo “export ZEPHYR_TOOLCHAIN_VARIANT=zephyr” > ~/.zephyrrc
echo “export ZEPHYR_SDK_INSTALL_DIR=/home/”$(whoami)“/zephyr-sdk-0.16.1” >> ~/.zephyrrc
配置
进入之前的Zephyr 软件包(/zephyrproject/zephyr)中执行
source zephyr-env.sh
west build -b ast1030_evb -t menuconfig samples/hello_world
板子的默认配置文件在/zephyrproject/zephyr/boards/arm/ast1030_evb/ast1030_evb_defconfig
目录中
这里根据自己需要进行配置的修改
之后我们可以构建application:
west build -b ast1030_evb samples/hello_world
在build/zephyr/
目录中可以看到编译后的bin文件,对于UART引导的,可以使用uart_zephyr.bin