Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
国产MCU移植
HC32L13x
华大_小华单片机HC32
【国产MCU移植】HC32L136
发布于 2021-08-21 13:36:35 浏览:4294
订阅该版
![1.png](https://oss-club.rt-thread.org/uploads/20210821/0f8d5dae664214bb13661e9e57c3df6f.png.webp) 拿到这个板子,首先肯定是去看看RT-THREAD是否已经包含这个BSP了,答案:没有这个HC32L13X系列的BSP。那必须把他移植个RTT,然后PR一个BSP上去才行。 移植M系列的BSP还是比较简单的,我主要分为5个步骤: 1、环境搭建 2、BSP基础工程 3、GPIO驱动 4、串口驱动 5、完成BSP总结 **环境搭建** 编程器,板载有CMSIS-DAP,也可以使用JLINK进行下载调试。 集成开发环境,安装KEIL5,IAR。 串口助手使用的是SecureCRT。 **BSP基础工程** 其实移植RT-THREAD到一些比较通用的内核还是比较方便的,因为可以投机取巧。那接下来告诉你怎么投机取巧移植RT-Thread到国产MCU。 本文只适配KEIL5的环境,GCC、KEIL4和IAR环境不做讲解。 基础模板:首先看看RT-Thread代码仓库中已有的BSP已存在华大的芯片hc32f4a0。而我要移植的是HC32L136,Cortex-M0内核。拷贝hc32f4a0工程,这样就有一个基础的工程。然后就开始增删改查,完成最终的BSP。 ![2.png](https://oss-club.rt-thread.org/uploads/20210821/89ebe86c6093e52f1affd9f6a8b6abdb.png) 修改board文件夹下的board.c,board.h,将主频修改为24MHz。参考https://gitee.com/windtsang163/hc32l136_rtt_nano.git。 ![3.png](https://oss-club.rt-thread.org/uploads/20210821/fa8699940c456e8652ec00e8f5d7c9dd.png.webp) ![4.png](https://oss-club.rt-thread.org/uploads/20210821/97266a7091a0d4cf013259686986719f.png.webp) 修改board/Kconfig文件,修改内容如下图。修改成对应的SOC名字,所以去除不相关的配置。 ![5.png](https://oss-club.rt-thread.org/uploads/20210821/4d77d705aa26f8838aa66a251fdb9c55.png.webp) 链接脚本:修改KEIL5的连接脚本,flash大小为64K,SRAM大小为8K。所以要进行修改。其实这一步不修改也是可以的,可以在KEIL中设置,修改内容如下图: ![6.png](https://oss-club.rt-thread.org/uploads/20210821/8f32620c1e7fe65bed1b94db02db8461.png) 修改库: 1、下载HC32L130_SDK。 2、删除BSP的Libraries目录下除了SConscript文件的其他内容 3、Bsp的Libraries目录下,增加HC32L136_StdPeriph_Driver目录,将HC32L130_SDK/drivers的文件拷贝到HC32L136_StdPeriph_Drive目录下。 4、将SDK中的启动文件startup_hc32l136.s,IAR和MDK两个版本的文件拷贝分别拷贝到 HC32L136_StdPeriph_Drive/CMSIS/Device/HDSC/HC32L136/Source/ARM/startup_hc32l136.S, HC32L136_StdPeriph_Drive/CMSIS/Device/HDSC/HC32L136/Source/IAR/startup_hc32l136.S 修改Libraries中SConscript文件。修改内容如下: ![7.png](https://oss-club.rt-thread.org/uploads/20210821/b8c8bade32542db44435454494689440.png.webp) 修改驱动文件夹,保留如下文件,如何修改驱动,稍后再讲,假定现在都已编写完成。 ![8.png](https://oss-club.rt-thread.org/uploads/20210821/15acc696622a87e5932cc62fe947aed4.png) 修改KEIL的模板工程。双击:template.uvprojx,如下图: ![9.png](https://oss-club.rt-thread.org/uploads/20210821/f8f38ad4f38590ccc88e533bdebd3978.png) ![10.png](https://oss-club.rt-thread.org/uploads/20210821/8d74349b83264444f5e8baf1e8786700.png) ![11.png](https://oss-club.rt-thread.org/uploads/20210821/500086cb12e88b9a6b6a87af18b413fe.png) 修改驱动文件夹下的脚本SConscript ![12.png](https://oss-club.rt-thread.org/uploads/20210821/1637b7f824be246e0e8017b6bc7c4c77.png) 修改bsp目录下的rtconfig.py文件,将m4替换为m0,将HC32F460替换为HC32L136。 ![13.png](https://oss-club.rt-thread.org/uploads/20210821/c65b3be33bdef6a9ac256d93b444e5b1.png.webp) menuconfig配置,关闭文件系统,将main和shell的任务堆栈改为512。 ![14.png](https://oss-club.rt-thread.org/uploads/20210821/1dc10b2955b0423788212370ab5ef3a5.png) ![15.png](https://oss-club.rt-thread.org/uploads/20210821/1d26e386ec2aaf906980ac7e4fba3d11.png) ![16.png](https://oss-club.rt-thread.org/uploads/20210821/6ff6884848b26ed66201e96b3411234a.png) 生成mdk工程,scons --target=mdk5 ![17.png](https://oss-club.rt-thread.org/uploads/20210821/d5c206d897bc5df455b92775648f116e.png) **PIN驱动** 为了跟其他rt--thread工程一样用统一的方法控制GPIO,移植PIN功能很有必要。关键是要实现好IO port和pin的映射关系,中断的映射关系。 ![18.png](https://oss-club.rt-thread.org/uploads/20210821/baf7d9aecbe3f1d8838ffee403b49bc4.png.webp) **串口驱动** 一个基本的BSP中,串口是必不可少的,所以还需要编写串口驱动 在hc32l136中有两组驱动:UART0和UART1,lpuart暂时没有实现。由于改芯片的驱动没有人实现过,我们需要自己去实现,参考其他bsp的例子,只能慢慢磨了。 ![19.png](https://oss-club.rt-thread.org/uploads/20210821/73b6e20617a6fc7e3fb26c82c2dde680.png) **完成BSP总结** 关于RT-THREAD的移植还是比较方便的,主要是复杂地方官方都已经做好了,如调度器。Gpio和Uart驱动这块,由于没有写好的例子,所以要自己花一些例子实现了。所以也难免会存在bug,希望大家多多谅解。 关于华大这款芯片,修改了库函数的Uart_SendData。测试中发现,如果在console中疯狂按下Tab键,会卡死在while(FALSE == Uart_GetStatus(u8Idx,UartTC))。所以将库函数做了修改。 ![20.png](https://oss-club.rt-thread.org/uploads/20210821/cfe8eeb75681cc9b331c67dd4d4349be.png) ![21.png](https://oss-club.rt-thread.org/uploads/20210821/0faa37d056784627f279ba516d83f294.png)
5
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
ching
这家伙很懒,什么也没写!
文章
1
回答
117
被采纳
8
关注TA
发私信
相关文章
1
华大的芯片移植rt-thread nano,怎么配置uart控制台与finsh
2
Studio何时能支持其他国产IC
3
华大芯片如何在rt-thread系统下使用休眠功能
4
华大HC32F460 USB console
5
华大单片机HC32L36 bsp制作
6
HC32F460+rt-thread不能在线仿真
7
什么时候能支持华大F460等芯片
8
RT-thread studio 何时支持华大选项
9
HC32F460使用scons编译不能运行
10
什么时候增加华大MCU支持
推荐文章
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在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部