首页 > 技术知识 > 正文

概述

2022年4月,灵动微电子发布了搭载安谋科技“星辰”STAR-MC1处理器的全新高性能 MM32F5 微控制器系列。该系列在内核、总线和外设配置等多个方面进行了创新,内核上更是首次搭载了 Armv8-M 架构的 “星辰” STAR-MC1 处理器。很高兴通过ARM中国拿到该芯片的开发板(可以搞事情) MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f3270

MM32F5270 是一款搭载了安谋科技 STAR-MC1 内核的 MCU 产品,其工作频率可达 120MHz,内置多达 256KB Flash 和 192KB RAM,配置浮点运算单元(Floating Point Unit, FPU)、数字信号处理单元(Digital Signal Processing,DSP)、信号间互联矩阵 MindSwitch、可配置逻辑单元 CLU、三角函数加速单元 CORDIC 等算法加速单元,并集成了丰富的外设模块和充足的 I/O 端口。MM32F5270 相较于现有产品全面提升了性能、存储容量、总线架构和外设配置。

芯片资源:

类型 描述 内核 Arm China STAR-MC1 处理器,基于 Armv8-M Mainline 指令集架构,集成FPU 和 DSP 主频 可达120MHz Cache 4KB L1 I-Cache,4KB L1 D-Cache FLASH 256KB RAM 192KB(包括 32KB ITCM、32KB DTCM 和 128KB System RAM) USB OTG 1个,全速接口 以太网 10M/100M 以太网控制器 CAM 2 个 FlexCAN 接口 拿到开发板,就想着移植个操作系统。嘻嘻嘻,那必须先上RT-THREAD,组件资源丰富,易于后续功能的各项开发。

RT-Thread完整版的移植说明

移植之前须知内容:

芯片是什么内核? 答:MM32F5270是基于Armv8-M 架构的 “星辰” STAR-MC1 处理器。通过下图可以看出,我们可以参考CM33内核进行移植。 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32701MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32702 编译工具链? 答:MM32F5270提供的demo是采用armclang(AC6),所以他跟ARMCC还不太一样。通过官方文档(https://www.keil.com/appnotes/files/apnt_298.pdf)可以看出AC6的汇编代码是可以兼容GUN的。所以这个对移植是非常友好的。 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32703

开始移植

复制模板 — 通过查找,可以复制BSP-stm32l552-st-nucleo作为模板 修改rtconfig.py — 修改CPU类型,修改编译选项

MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32704MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32705MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32706

修改libcpu–把m33的名字修改为star_mc1。 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32707 修改libcpu的汇编分割–复制libcpu的gcc汇编代码到keil的汇编代码中。从移植须知的第二点可知,AC6的汇编风格是和GUN一样的。所以直接拷贝。 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32708 修改board.h–修正芯片资源宏定义。 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f32709 修改链接脚本–RT-Thread的动态内存堆是在ZI段结尾处到RAM尾部,而board.h中指向ZI段结尾处的变量(Image$$RW_IRAM1$$ZI$$Limit),所以需要修改MM32F5270的默认链接脚本为如下: MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f327010MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f327011 替换mm32的库–将mm32f5270的sdk中的库porting到libraies目录中,并创建SConscript脚本文件。注意需要定义宏定义-BRD_PLUS_F5270 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f327012 初始化系统时钟–将mm32f5279的sdk中系统时钟初始化拷贝到board.c中 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f327013 初始化系统tick–将函数rt_tick_increase()放在system tick中断中。 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f327014 以上步骤基本把rtt移植到mm32f5270中。 移植验证 在main.c中main函数添加点灯的代码。如果能够看到led在闪烁,就说明移植成功了。 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f327015 现象

shell适配

适配uart驱动 实现ops的5个函数 将ops注册到serial框架中 注册serial中断,在中断服务程序中调用rt_hw_serial_isr()函数 复制structrt_uart_ops { rt_err_t(*configure)(structrt_serial_device*serial,structserial_configure*cfg); rt_err_t(*control)(structrt_serial_device*serial,intcmd,void*arg); int(*putc)(structrt_serial_device*serial,charc); int(*getc)(structrt_serial_device*serial); rt_size_t(*dma_transmit)(structrt_serial_device*serial,rt_uint8_t*buf,rt_size_tsize,intdirection); }; voidrt_hw_serial_isr(structrt_serial_device*serial,intevent); rt_err_trt_hw_serial_register(structrt_serial_device*serial, constchar*name, rt_uint32_tflag, void*data); 将对应的串口驱动名设置到rt_console_set_device()函数中。 shell验证 串口终端可以正常输入输出 MM32F5270(STAR-MC1内核)适配RT-Thread教程-mm32f5270和mm32f327016

猜你喜欢