IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ZephyrOS--添加自定义STM32开发板 -> 正文阅读

[嵌入式]ZephyrOS--添加自定义STM32开发板

本文使用开发板为STM32F103ZET6最小系统板,不涉及架构移植。

1.查找相近开发板

首先你应该清楚自己开发板的主控属于哪个系列,比如我这里使用的是STM32F103ZET6,它属于F103xE系列。然后在SDK里面搜索:

SOC_STM32F103xE

我这里就搜索到了一块使用相同SOC的开发板waveshare的open103z:

?注意,搜索时应该找boards目录下的比如我这里的:

2.修改配置

找到相近开发板后把整个文件夹在相同目录下复制一个,然后修改成你自己开发板的名字,比如我这里命名为stm32f103zet6:

?然后修改文件夹里面别人的开发板名字为自己的:

注意如果你要使用west?flash烧写程序,必须指定使用哪个烧写工具(-r):

如果使用stlink,这里需要安装openocd,还就是你需要修改support文件夹下的openocd.cfg。这里我复制的文件夹里面已经修改好了,但是因为手上没有stlink,也没有下载openocd,所以也没有试过:

然后就是修改Kconfig.board和Kconfig.defconfig文件中的板子名字:

?

然后在defconfig里面有一些只要选择了此开发板就会启用的一些默认配置项,根据自己的需求可以选择开启或关闭,我建议基础的都不要修改,如下(不过这会增加代码量,使用这个默认配置编译跑马灯demo,FLASH使用大概13KB):

最重要的就是开发板的设备树文件,它的作用就是完成你这个开发板所使用外设的基础配置。用过ST的标准库的都知道,ST有专门写好一个头文件,里面包含了芯片所有的寄存器名字和地址的映射,我们实际使用的时候,直接用名字就可以访问对应寄存器地址,而不再需要再去查芯片手册一个个的找,现在那个头文件就被替换为了设备树文件:

这些文件都是事先写好的可以直接使用的,我们的设备树文件只需要关注我们的开发板怎么使用这些外设就可以了。?因为我使用的是最小系统板,所以使用外设有限,初始我只配置了LED,按键,串口,USB,和一个SPI?flash。注意这里配置好,你还需要到代码里去初始化和配置才能使用,只是使用的时候可以直接用设备树文件中我们设置的名字,这样更加方便,而且如果后续要更改板子,改动起来会更快更方便。而且配置设备树就是依葫芦画瓢,比如你使用了I2C,你完全可以找其他ST系列的板子中有使用I2C的抄过来,只需要稍作修改。比如我这里配置的:

控制台和shell的配置是你启用了zephyr中的相关模块才会有用。?其他模块配置:

?这里的RCC就是系统时钟。其他外设:

在包含的头文件里面(stm32f103z(c-d-e)tx-pinctrl.dtsi)有这些引脚的定义,比如串口的PA9引脚:

在头文件stm32f1-pinctrl.h里有这个函数的具体解释:

?

3.实际测试

修改好之后,我们编译一个zephyr自带的跑马灯demo试一下,使用指令:

west build -p always -b stm32f103zet6 -d zet6 ?.\samples\basic\blinky\

其中常用的-p表示是否重新编译,常用的是autoalwaysauto表示没有文件改动不会重新编译,而always表示总是会重新编译。-b表示所使用的开发板,这里我用的就是刚才自定义的开发板。-d表示生成的构建目录名字,这里我取名zet6。最后跟的是demo的目录。

最终正常编译后,输出log如下:

注意我前面提到的,在设备树文件中我取了一些别名,查看跑马灯demo的main.c可以看到获取设备树文件的宏定义使用的参数正是led0

所以如果你的名字不是这个可能会编译出错。

编译完成后,可以使用以下指令下载:

west flash -d zet6?-r jlink

如果使用其他工具则修改-r?参数比如:

-r stlink或-r nrfjprog

如果连接正常,则可以看到下载成功:

当然也可以使用以下指令调试:

west debug -d zet6 -r jlink?

正常使用指令后会,终端log会停在下图所示:

同时会弹出来一个Jlink的GDB-Server的窗口,此时只需要在终端按照提示输入c即可:

然后GDB串口会显示正常连接:

剩下的就是使用gdb调试了,但是其实我觉得使用Ozone这种带GUI的更方便和直观。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:27:45  更:2022-09-04 01:29:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:25:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码