| |
|
|
开发:
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试一下,使用指令:
其中常用的-p表示是否重新编译,常用的是auto和always,auto表示没有文件改动不会重新编译,而always表示总是会重新编译。-b表示所使用的开发板,这里我用的就是刚才自定义的开发板。-d表示生成的构建目录名字,这里我取名zet6。最后跟的是demo的目录。 最终正常编译后,输出log如下:
注意我前面提到的,在设备树文件中我取了一些别名,查看跑马灯demo的main.c可以看到获取设备树文件的宏定义使用的参数正是led0:
所以如果你的名字不是这个可能会编译出错。 编译完成后,可以使用以下指令下载:
如果使用其他工具则修改-r?参数比如: -r stlink或-r nrfjprog 如果连接正常,则可以看到下载成功:
当然也可以使用以下指令调试:
正常使用指令后会,终端log会停在下图所示:
同时会弹出来一个Jlink的GDB-Server的窗口,此时只需要在终端按照提示输入c即可:
然后GDB串口会显示正常连接:
剩下的就是使用gdb调试了,但是其实我觉得使用Ozone这种带GUI的更方便和直观。 |
|
|
| 嵌入式 最新文章 |
| 基于高精度单片机开发红外测温仪方案 |
| 89C51单片机与DAC0832 |
| 基于51单片机宠物自动投料喂食器控制系统仿 |
| 《痞子衡嵌入式半月刊》 第 68 期 |
| 多思计组实验实验七 简单模型机实验 |
| CSC7720 |
| 启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
| STM32初探 |
| STM32 总结 |
| 【STM32】CubeMX例程四---定时器中断(附工 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/20 22:59:13- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |