[STM32U5]【NUCLEO-U5A5ZJ-Q测评】Zephyr开发环境建立

看到 NUCLEO-U5A5ZJ-Q 是 Nucleo-144 系列的,因为以前用过 该系列的开发板,由Arduino_Core_STM32提供支持,可以用Arduino IDE进行快速原型开发: 




不过,实际进行开发的时候,傻眼了,这块板子,目前还没有被Arduino_Core_STM32提供支持:
 

 




虽然用Keil或者STM32CubeIDE也能开发,不过我还是想试试有没有一些新的环境。


今年研究过Nordic的开发板,使用过Zephyr,欣喜的看到,其对 NUCLEO-U5A5ZJ-Q 提供的支持:ST Nucleo U5A5ZJ Q — Zephyr Project Documentation
于是赶紧试了一下,快速建立起了 NUCLEO-U5A5ZJ-Q 的Zephyr开发环境。
实际上,Zephyr可以说是白搭的,能够支持至少500多种开发板呢。

下面,把构建NUCLEO-U5A5ZJ-Q 的Zephyr开发环境的步骤,给大家分享。
我的开发环境操作系统为macOS,Linux环境下面可以直接参考,Windows下面,建议在wsl中进行。

一、Python安装和设置专属运行环境
Zephyr环境需要使用到使用Python开发的工具,所以需要首先安装好Python。
下载Python要使用科学友好上网方式访问 Download Python | Python.org,下载最新的版本即可。
百度上面搜搜Python,提供的下载,99.9999%都是垃圾,居然还要收费,真是娘心被狗给吃了狗都嫌丢脸。

建议安装Python3.8及以后的版本,我的开发环境的版本为3.10.10:
 




安装好Python以后,使用Python3自带的venv来设置专属运行环境:

复制
# 设定运行环境

python -m venv ~/zephyrproject/.venv



# 进入运行环境

source ~/zephyrproject/.venv/bin/activate



# 升级pip

pip install --upgrade pip



二、git安装
因为Zephyr的源码使用git管理,所以需要安装git工具,访问下面的网址,选择对应的系统安装即可:Git - 安装 Git (git-scm.com)安装完成后,检查安装结果:

复制
git --version



三、Stm32CubeProgrammer安装
因为没有使用Keil或者STM32CubeIDE进行开发,烧录系统的时候,可以使用west自身的flash命令,也可以使用Stm32CubeProgrammer工具,或者openocd、pycod等开源工具。使用west  flash烧录的时候,编译开发要在同一个环境中。使用Stm32CubeProgrammer或者openocd、pyocd烧录的时候,仅需要hex文件即可。
这次在NUCLEO-U5A5ZJ-Q上,我的编译环境在远程,而烧录在本地macOS,所以在本地macOS使用了Stm32CubeProgrammer和pycod,两者都可以很方便的进行固件的烧录。
注意,Stm32CubeProgrammer不是STM32CubeIDE,不是用于开发,而是用于硬件烧录专用的工具,从 STM32CubeProg - 用于STM32产品编程的STM32CubeProgrammer软件 - 意法半导体STMicroelectronics 下载安装即可:
 




安装后,将NUCLEO-U5A5ZJ-Q 开发板连接到电脑,再打开Stm32CubeProgrammer,看看能否识别到:
 


如果Windows不能识别的话,可以从ST官方下载对应的驱动包安装:STSW-LINK009 - 为Windows 7、Windows 8、Windows 10签署的ST-LINK、ST-LINK/V2、ST-LINK/V2-1 USB驱动 - 意法半导体STMicroelectronics,然后重新连接。


识别成功后,点击Connect连接,即可读取Flash的信息:
 



连接成功后,点击Disconnect,端口连接,以便后续的pyocd可以正常连接。

四、pyocd安装
安装pyocd非常简单,使用python的包管理命令pip安装即可,安装后,还需要安装STM32U5的Keil 支持包:

复制
# 安装; pyocd工具

pip install pyocd



# 更新pyocd

pyocd pack --update

>>>0000640 I Updating pack index... [pack_cmd]

>>>Downloading descriptors (1065/1065)



# 安装Keil STM32U5支持包

pyocd pack --install stm32u5

>>>Downloading packs (press Control-C to cancel):

>>>Keil.STM32U5xx_DFP.2.1.0

>>>Downloading descriptors (001/001)



# 查看安装的支持包

pyocd pack show

>>>Pack                 Version

>>>--------------------------------

>>>Keil.STM32U5xx_DFP   2.1.0



# 查看支持的开发板

pyocd list --targets | grep -i u5a5zj

>>>stm32u5a5zjtx   STMicroelectronics STM32U5A5ZJTx  STM32U5 Series, STM32U5A5   pack

>>>stm32u5a5zjtxq  STMicroelectronics STM32U5A5ZJTxQ STM32U5 Series, STM32U5A5   pack

>>>stm32u5a5zjyxq  STMicroelectronics STM32U5A5ZJYxQ STM32U5 Series, STM32U5A5   pack



# 查看是否支持当前的开发板

pyocd list --boards | grep -i U5A5ZJ-Q

>>>0877   NUCLEO-U5A5ZJ-Q                  stm32u5a5zjtxq           None

依次执行上面的命令,最后出现 NUCLEO-U5A5ZJ-Q 就表示安装好了支持包。

此时,可以将NUCLEO-U5A5ZJ-Q 开发板连接到电脑,然后使用下面的命令查看是否能够识别:

复制
# 连接开发板后,查看是否成功识别,stm32u5a5zjtxq在后续命令中需要作为target使用

pyocd list --probes

>>>#   Probe/Board       Unique ID                  Target

>>>---------------------------------------------------------------------

>>>0   STLINK-V3         001C002B3132511438363431   ✔︎ stm32u5a5zjtxq

>>>NUCLEO-U5A5ZJ-Q


在使用下面的命令,擦除Flash:

复制
pyocd erase --chip --target stm32u5a5zjtxq

>>>0002442 I Erasing chip... [eraser]

>>>0003738 I Chip erase complete [eraser]


五、安装west工具
Zephyr项目使用west工具来进行管理,需要使用pip先安装west工具:

复制
# 安装west

pip install west

west --version

>>>West version: v1.1.0


六、建立Zephyr环境

复制
# 初始化zephyr环境

mkdir ~/zephyrproject

west init ~/zephyrproject

west update


最后一条命令,可以多执行两次,确保最后没有Error出现,结果类似下面:
 



需要提醒的是,west下载源码,需要科学友好的上网方式,否则可能上网不顺利。
一般在执行前,使用下面的方式设置:

复制
export http_proxy="http://127.0.0.1:8080"

export https_proxy="http://127.0.0.1:8080"

具体设置proxy到哪里,根据你的实际情况确定。

七、安装python支持库
Zephyr官方收集了需要安装的支持库到~/zephyrproject/zephyr/scripts/requirements.txt文件中,除此以外,还要安装elftools:

复制
# 安装支持库

pip install -r ~/zephyrproject/zephyr/scripts/requirements.txt



# 安装 elftools工具

pip install pyelftools


八、安装zephyr SDK  
上面使用west部署了Zephyr环境,但还需要安装SDK,才能完成正常的编译开发。
具体步骤如下:

复制
# 安装zephyr SDK

cd ~/zephyrproject/

mkdir -p sdk

cd sdk

wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.3/zephyr-sdk-0.16.3_linux-x86_64.tar.xz

xz -dk zephyr-sdk-0.16.3_linux-x86_64.tar.xz

tar xvf zephyr-sdk-0.16.3_linux-x86_64.tar

cd cd zephyr-sdk-0.16.3/

./setup.sh



九、编译hello world实例
经过以上的步骤,Zephyr环境算是部署了,下面,就需要测试能否正常编译了。

复制
# 编译实例

cd ~/zephyrproject/zephyr



# hello world实例

west build -b nucleo_u5a5zj_q samples/hello_world

ls -lh ./build/zephyr/zephyr.hex



具体编译结果如下:
 



最终出现 ./build/zephyr/zephyr.hex ,表示编译成功。

十、烧录固件
烧录固件,使用Stm32CubeProgrammer和pyocd。

使用 Stm32CubeProgrammer烧录:
 


烧录完成后提示:
 



使用pyocd烧录:

复制
# 擦除烧录一条龙

pyocd flash --erase chip --target stm32u5a5zjtxq ./build/zephyr/zephyr.hex

>>>0002540 I Loading ~/zephyrproject/zephyr/build/zephyr/zephyr.hex [load_cmd]

>>>[==================================================] 100%

>>>0004075 I Erased chip, programmed 28672 bytes (28 pages), skipped 0 bytes (0 pages) at 18.66 kB/s [loader]


如果出现类似下面的错误提示,说明Stm32CubeProgrammer没有断开连接(Disconnect):
0002518 C Error: [Errno 13] Access denied (insufficient permissions) [__main__]

烧录完成后,可以使用串口工具连接到NUCLEO-U5A5ZJ-Q的ST-Link显示的串口,然后按开发板上的RESET按键,重启板子,串口工具会收到如下的信息:
 



到这里,编译烧录,就都成功了,也就是Zephyr开发环境,成功搭建起来。

其实,对于Nucleo系列的板子,烧录固件还有更简单的办法,那就是直接把固件,拷贝到连接开发板后出现的U盘中即可: 


拷贝完成,NUCLEO-U5A5ZJ-Q会自动重启,zephyr.hex文件消失,但系统已经自动更新了。

十一、点灯
编写程序的第一步是输出Hello World,而玩板子的灵魂,则是点灯,点完了,板子就可以收起来压箱底了。
在 ~/zephyrproject/zephyr/samples/basic/blinky 目录中,有点灯的实例,具体内容如下:
 



可以打开 ~/zephyrproject/zephyr/samples/basic/blinky/src/main.c,看看具体内容:
 



从上述代码可以看到,这个点灯实例,是控制LED,每秒闪烁一次。
我们可以把SLEEP_TIME_MS修改为100ms,让LED狂闪:
 



然后编译:

复制
# 编译实例

cd ~/zephyrproject/zephyr

rm -rf build



# blinky实例

west build -b nucleo_u5a5zj_q samples/basic/blinky

ls -lh ./build/zephyr/zephyr.hex


编译完成后,使用west flash或者Stm32CubeProgrammer或者pyocd进行烧录即可。
烧录完成后,按一下开发板RESET按键,串口工具会收到输出:

 



开发板上的LED也正在狂闪了:
 




十二、总结
虽然上面的步骤较多,但一旦搭建好了,后面就非常的方便了。
Zephyr的samples中,提供了数百个实例,很多都可以在NUCLEO-U5A5ZJ-Q开发板上使用,减少了学习研究的难度。
如果你也感兴趣的话,也可以试试Zephyr,相信一定会有新的收获。:
---------------------
作者:HonestQiao
链接:https://bbs.21ic.com/icview-3341412-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值