Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
灵动微_MM32
国产MCU移植
【国产MCU移植】移植 RT-Thread 到 MM32F103xx 芯片
发布于 2021-09-14 18:47:37 浏览:3174
订阅该版
[tocm] ## 1.硬件简介 MM32F103x 是灵动微电子研发的一款pin to pin兼容stm32f103的,在行业普遍缺芯的背景下, 寻找替换芯片成为热门话题。 本文就以灵动微这款芯片制作 BSP。 BSP链接:https://github.com/RT-Thread/rt-thread/tree/master/bsp/mm32f103x ### 硬件参数 - 32位ARM Cortex-M3处理器内核 - 最高工作频率可达96MHz - 128K字节的闪存程序存储器 - 20K字节的SRAM - 2.0V~5.5V **宽电压**供电 - HSE/LSE 晶振外接支持 - 支持睡眠、停机和待机模式 - DMA、USB、2x12bit ADC、7xTimer、CAN等外设 - LQFP64、LQFP48、LQFP32、QFN32 封装 本文档使用 MM32 MiniBoard 开发板作为移植使用的平台 ### 1.1 开发板介绍 MM32 MiniBoard 是为了用户快速上手、了解学习MM32系列MCU的一块入门级开发板,可满足基础测试及高端开发需求。 开发板外观如下图所示: MM32 MiniBoard ![081e96a5c07b02e2a89f7ff20ee9bd28.jpg.webp](https://oss-club.rt-thread.org/uploads/20210914/081e96a5c07b02e2a89f7ff20ee9bd28.jpg.webp) MM32 MiniBoard 开发板板载资源如下: - MCU:MM32F103RB ARM 32-bit Cortex-M3,主频 96MHz,128KB FLASH ,20KB SRAM - 常用外设 - LED:4个4色LED,可用于测试GPIO功能 - 按键:1个复位按键、 1个WakeUp按键、两个普通按键 - SPI Flash W25P80,容量8M bit,速度50MHz - I2C接口EEPROM芯片,AT24C02,容量256字节 - 1个旋转式电位计(变阻器),用于ADC测试 - 能耗测试开关:待机模式和运行模式 - 常用接口:Micro-USB接口,RS-232接口,UART接口 - 调试接口:SWD,支持J-Link、U-LINK2、MM32-LINK调试器 更多信息可以访问:[灵动微电子官方网站][https://www.mindmotion.com.cn] ## 2.移植过程 1. 标准做法是在 rt-thread 的 [rtthread-specification](https://github.com/RT-Thread/rtthread-specification) 仓库中找到 /**bsp_skeleton**/ 这个项目,点进去看到标准的芯片BSP移植流程,我们将它拷贝到我们新建的文件夹下。 > 捷径:在 rt-thread/bsp/ 中可以找到 mm32 系列家族的其他 MCU BSP。我们可以借用它作为我们的模板,这个是比较方便的形式。 2. 分别修改 `template.uvprojx` 和 `template.eww` 这两个模板文件,指定我们的芯片和对应的下载方式,下载算法等参数。 3. 此时可以尝试使用 env 来生成工程了,借此不断修改 kconfig 和 自己工程所需的 Libraries 等一系列 Sconscript 脚本,直到我们的工程的外部文件和环境能够使用 env 完成工程的一键创建。另外这一步骤需要完成将 rtt 的 cortex - m3 所需支持的文件包含进来。我建议结合其他 bsp 去深入学习理解 [scons](https://www.rt-thread.org/document/site/#/development-tools/scons/scons) 的构建方式。 4. 为 main.c 新建 /applications 文件夹,为 board.c drv_gpio.c drv_uart.c 等新建 /drivers 文件夹,分别将这些文件使用 Sconscript 管理起来。 5. 设置 kconfig选项,完善 bsp 项目的基础功能需求,让脚本自动创建 rtconfig.h。 6. 对接 board.c :结合文档,对接 SysTick_Handler() 和 rt_hw_board_init(),为MCU创造最初始的运行条件。 7. 对接 drv_gpio.c : 我们可以拿一份其他bsp的这份文件参考,结合 mm32 的出厂历程解决 gpio 的初始化接口对接,同时排 pin_map 的时候一定注意不要错位。 8. 对接 drv_uart.c:这一步需要把灵动微的历程初始化部分 结合 rtt 设备框架,对接串口。我在串口这边遇到了一个疑似是芯片 ip 层的 bug ,找到mm32的库文件仔细对比操作上的不同,也并未发现哪里有明显的疏漏。现象是在UART初始化之后,如果系统不延时一些时间,立即调用串口输出时会把整个串口搞乱掉,按键复位MCU也不能恢复,必须完整上下电冷启动,我个人认为是芯片这部分时钟分配存在一定冲突。所以这部分就不太适合使用自动初始化的方法了,我们可以在board.c中安排一个位置为它初始化。 9. 编译通过、调试、运行,我们的 MCU 正常启动了。此时应该多多测试我们写好的 drv_gpio.c 和 drv_uart.c 。 10. 确认无误,微调工程结构,整理代码,提交文档。 11. 提交代码,发 pr 到 github 仓库,RTT仓库合并代码需要签署 CLA,而且默认过了自动化测试脚本(CI)才可以准入代码。经过小伙伴指导,将mm32官方的 Library内部的 GB2312 编码的文件忽略掉编码检查,顺利通过CI后,代码就可以正式合并进入主仓库啦! ## 3. 编译说明 本 BSP 为开发者提供 MDK5 和 IAR 工程。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 > 工程默认配置使用 Jlink 仿真器下载程序,在通过 Jlink 连接开发板到 PC 的基础上,点击下载按钮即可下载程序到开发板 推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/page/download.html),可以在console下进入到 `bsp/mm32f103` 目录中,运行以下命令: `scons` 来编译这个板级支持包。如果编译正确无误,会产生rtthread.elf、rtthread.bin文件。其中 rtthread.bin 可以烧写到设备中运行。 ## 4. 烧写及执行 ### 4.1 硬件连接 使用MM32-LINK或Jlink等调试工具连接开发板到PC,通过调试调试工具供电或使用Micro-USB供电。若使用Jlink等调试工具,还需要将UART1_TX(PA9)、UART1_RX(PA10)、GND接到串口工具上。 使用MM32-LINK连接开发板如下图所示: MM32-LINK+MiniBoard ![162f467976b3c935e4f76718b8ce3d7e.jpg.webp](https://oss-club.rt-thread.org/uploads/20210914/162f467976b3c935e4f76718b8ce3d7e.jpg.webp) *你也可以使用 J-Link 或者 DAP-Link 实现下载调试。 ### 4.2 运行结果 如果编译 & 烧写无误,当复位设备后,会看到板子上的1个LED闪烁。串口打印RT-Thread的启动logo信息: ``` \ | / - RT - Thread Operating System / | \ 4.0.0 build SEP 12 2021 2006 - 2021 Copyright by rt-thread team msh /> ``` ## 5. 驱动支持情况及计划 | 驱动 | 支持情况 | 备注 | | ---------- | :------: | :--------------------------: | | UART | 支持 | UART1/2 | | GPIO | 支持 | / | ## 6. 参考 - [MM32F103xx 系列数据手册](https://www.mindmotion.com.cn/userfiles/images/MM32F103XiLieWenDang/DS_MM32F103xx_n_V1.09_SC.pdf) - [MM32F103xx 系列用户手册](https://www.mindmotion.com.cn/userfiles/images/MM32F103XiLieWenDang/UM_MM32F103xx_n_V1.69_SC.pdf) - [MiniBoardStartKit资料包](https://www.mindmotion.com.cn/download.aspx?cid=2545) - [keil pack安装包](https://www.mindmotion.com.cn/download.aspx?cid=2546) - [MM32 支持工具包](https://www.mindmotion.com.cn/download.aspx?cid=2547)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
StackYuan
这家伙很懒,什么也没写!
文章
3
回答
224
被采纳
38
关注TA
发私信
相关文章
1
MM32L373的bsp包中不支持spi,自己做难度有多大?
2
小白!做比赛使用RTT,请问怎么在不使用env工具的情况下移植使用软件包
3
MM32f3277使用串口设备示例类型报错
4
应用rplidar软件包在msh里list_device看不到rplidar设备
5
建议studio增加MM32F32的一些芯片的下载算法
6
有没有MM单片机 rt-thread的软件demo 具体是MM32F0144C6P 安装资源包好像也没有
7
RTT 资源包里MM32的芯片只有一个型号的 是通用的吗 ?
8
官方有没有移植到STC32的计划
9
哪些国产MCU移植了rtthread
10
Studio何时能支持其他国产IC
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
8
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
12
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部