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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【国产MCU移植】移植RT-Thread到国产芯片HC32F460PETB -> 正文阅读

[嵌入式]【国产MCU移植】移植RT-Thread到国产芯片HC32F460PETB

本文由RT-Thread论坛用户@想当诸侯的小蚂蚁 原创发布:https://club.rt-thread.org/ask/article/3018.html

#移植前的准备

##前提
现在芯片价格不断上涨,国内很多厂商也在不断的找替换方案。虽然公司对芯片价格不是很敏感,作为新生代农民工菊花还是紧了紧,主动要求替换国产芯片本来想使用GD系列,领导拍板使用华大的,最终我选择了HC32F460PETB。
最近rt-thread举办【国产MCU移植】活动,工作人员建议我把原先移植nano版本基础上提交PR,刚好练练手。
HC32F460基于Keil MDK 移植 RT-Thread Nano
https://club.rt-thread.org/ask/article/2966.html

##硬件

  • 芯片型号:HC32F460PETB
  • 芯片内核:ARM Cortex M4
  • 芯片主频:最高200MHz
  • 片内SRAM:192K
  • 片内FLASH:512K

##目标

  • 环境搭建
  • 基础工程
  • 验证工程

#移植过程
##1.环境搭建
安装KEIL5。
安装HC32F460的pack:HDSC.HC32F460.1.0.7.pack,官网下载链接: http://www.hdsc.com.cn/Category83-1487

pack包.png

串口助手 - MobaXterm

##2.基础工程
###1.准备rt-thread-master源码包
下载地址: https://gitee.com/rtthread/rt-thread

###2.准备模版
查找基础模板华大系列bsp包,rt-thread代码仓库中已存在hc32f4a0,复制一份文件夹名修改为hc32f460

复制一份.png

按照目录文件顺序依次做修改

修改目录.png

###3.修改模版

修改hc32f460\application目录下main.c

main.png

hc32f460\application目录下SConscript 不做修改,可以继续使用

修改hc32f460\board\linker_scripts目录下link.sct,此文件为链接文件需要根据芯片资料修改

link脚本.png

修改hc32f460\board目录下board.c,此文件为芯片提供芯片时钟配置、系统时钟配置、滴答定时器、堆栈初始化、rtt Components初始化、console设置

boardc.png

修改hc32f460\board目录下board.h,设置堆栈其实位置、大小。

修改hc32f460\board目录下board_config.c,初始化串口引脚

borad_configc.png

修改hc32f460\board\Kconfig,源代码修改为

board_kconfig.png

hc32f460\board\Sconscript不做修改

hc32f460\drivers目录下保留 drv_gpio.c、drv_gpio.h、drv_irq.c、drv_irq.h、drv_usart.c、drv_usart.h、SConscript

hc32f460\drivers目录下 drv_gpio.c 修改为

drv_gpio.png

hc32f460\drivers目录下 drv_gpio.h 修改为

drv_gpioh.png

hc32f460\drivers目录下 drv_irq.c 修改为

drv_irqc.png

hc32f460\drivers目录下 drv_irq.h 修改为

drv_irq.png

hc32f460\drivers目录下 drv_usart.c 修改为

drv_usart.png

hc32f460\drivers目录下 drv_usart.h 修改为

drv_usarth.png

hc32f460\drivers目录下 SConscript 修改为

drv_sconscript.png
删除hc32f460\figures文件夹

删除figur.png

hc32f460\Libraries\CMSIS\Device\HDSC目录下文件夹修改为 HC32F460

修改hdsc下文件夹名.png

hc32f460\Libraries\CMSIS\Device\HDSC\HC32F460\Include删除ddl_config.h、hc32_common.h、hc32_ddl.h、hc32f4a0.h、system_hc32f4a0.h,

删除hc32f460include.png

替换为HC32F460系列文件

9e6667e05f346f7bd50542e06104d55c.png

hc32f460\Libraries\CMSIS\Device\HDSC\HC32F460\Source目录下删除system_hc32f4a0.c

hc32f460下删除source.png

hc32f460\Libraries\CMSIS\Device\HDSC\HC32F460\Source\ARM目录下替换为

arm目录下替换.png

hc32f460\Libraries\CMSIS\Device\HDSC\HC32F460\Source\GCC目录下替换为

gcc目录下替换.png

hc32f460\Libraries\CMSIS\Device\HDSC\HC32F460\Source替换为system_hc32f460.c

hc32f460source目录下替换.png

hc32f460\Libraries目录下HC32F4A0_StdPeriph_Driver替换为HC32F460_StdPeriph_Driver

替换library内容.png

hc32f460\Libraries\HC32F460_StdPeriph_Driver目录下替换为HC32F460标准驱动程序

stdperiph目录下.png

hc32f460\Libraries\SConscript修改为以下内容

librarysconstrip.png
修改\hc32f460目录下 rtconfig.py 里面HC32F4A0全部替换为HC32F460

修改\hc32f460目录下 SConstruct.py 里面hc32f4a0全部替换为hc32f460

测试Kconfig是否修改成功。在\hc32f460目录下右键

conemu.png

输入命令 menuconfig 结束后保存配置文件

测试menuconfig.gif

控制台使用usart4 需要修改可在 RT-thread Kernel–>Kernel Device Object–>the device name for console
修改console串口.gif

修改模板工程

修改模板工程.png

换芯片Options for Target -> Device

选择芯片.png

选择仿真器 Options for Target ->Debug->J-LINK

选择jlink.png

修改芯片容量Options for Target->Utilities->Settings

选择芯片大小.png

新建工程
编译过程.gif

##验证工程
打开新建工程,编译下载
打开工程.png

运行结果
动画.gif

#经验总结

从8月20日确定接手,21日开搞到9月2日移植完成,期间走了小弯路,收益颇多。总结有一下几点:

  1. 之前从来都是拿来主义从没考虑过东西怎么来的,rtt实话只能说会用离精通还差老远并没有深入了解函数来龙去脉调用过程,此次移植稍微了解一下结构,我想说的是rtt架构师真是天人,叹为观止,程序架构设计精妙,大牛编程技巧真绝,今后编程过程中借鉴使用。

  2. 之前只是知道python可以用于人工智能、大数据处理等,平时都是使用py+qt编写一些小程序使用,此次移植过程中终于见识py批量处理文件的强大。

  3. 天外有天,人外有人。学海无涯。

  4. 吐槽一下hc函数库定义乱乱的,两个系列芯片函数居然不通用,移植过程中检查库函数功能太痛苦了。期间发现个rtt-master另一个系列中有严重bug,抽时间提交个PR。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 11:01:09  更:2021-09-10 11:02:21 
 
开发: 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年12日历 -2024/12/30 1:16:12-

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