概述 2022年4月,灵动微电子发布了搭载安谋科技“星辰”star-mc1处理器的全新高性能 mm32f5 微控制器系列。该系列在内核、总线和外设配置等多个方面进行了创新,内核上更是首次搭载了 armv8-m 架构的 “星辰” star-mc1 处理器。很高兴通过arm中国拿到该芯片的开发板(可以搞事情) 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提供的demo是采用armclang(ac6),所以他跟armcc还不太一样。通过官方文档(https://www.keil.com/appnotes/files/apnt_298.pdf)可以看出ac6的汇编代码是可以兼容gun的。所以这个对移植是非常友好的。 开始移植 复制模板 -- 通过查找,可以复制bsp-stm32l552-st-nucleo作为模板 修改rtconfig.py -- 修改cpu类型,修改编译选项
修改libcpu--把m33的名字修改为star_mc1。 修改libcpu的汇编分割--复制libcpu的gcc汇编代码到keil的汇编代码中。从移植须知的第二点可知,ac6的汇编风格是和gun一样的。所以直接拷贝。 修改board.h--修正芯片资源宏定义。 修改链接脚本--rt-thread的动态内存堆是在zi段结尾处到ram尾部,而board.h中指向zi段结尾处的变量(image$$rw_iram1$$zi$$limit),所以需要修改mm32f5270的默认链接脚本为如下: 替换mm32的库--将mm32f5270的sdk中的库porting到libraies目录中,并创建sconscript脚本文件。注意需要定义宏定义-brd_plus_f5270 初始化系统时钟--将mm32f5279的sdk中系统时钟初始化拷贝到board.c中 初始化系统tick--将函数rt_tick_increase()放在system tick中断中。 以上步骤基本把rtt移植到mm32f5270中。 移植验证 在main.c中main函数添加点灯的代码。如果能够看到led在闪烁,就说明移植成功了。 现象 shell适配 适配uart驱动 实现ops的5个函数 将ops注册到serial框架中 注册serial中断,在中断服务程序中调用rt_hw_serial_isr()函数 struct rt_uart_ops{ rt_err_t (*configure)(struct rt_serial_device *serial, struct serial_configure *cfg); rt_err_t (*control)(struct rt_serial_device *serial, int cmd, void *arg); int (*putc)(struct rt_serial_device *serial, char c); int (*getc)(struct rt_serial_device *serial); rt_size_t (*dma_transmit)(struct rt_serial_device *serial, rt_uint8_t *buf, rt_size_t size, int direction);};void rt_hw_serial_isr(struct rt_serial_device *serial, int event);rt_err_t rt_hw_serial_register(struct rt_serial_device *serial, const char *name, rt_uint32_t flag, void *data); 将对应的串口驱动名设置到rt_console_set_device()函数中。 shell验证 串口终端可以正常输入输出
什么是杂散干扰、互调干扰、阻塞干扰?
真无线耳机哪个延迟低?吃鸡低延迟真无线蓝牙耳机榜单
诺基亚8现身京东,初于情怀,你会购买吗?
在ANSYS软件中对单相三柱式电压互感器的耦合进行分析与研究
一加5最新消息,还说不是OPPO亲儿子,一加5和R11如出一辙,苹果都不开心了!
MM32F5270(STAR-MC1内核)适配RT-Thread教程
空客预测未来20年中国市场需要新增约7420架飞机
芯片设计错误数十万GPS产品或随时罢工
中国制定机器人发展规划,汽车行业出现逆转
华为nova3的拍照性能更胜OPPO与vivo一筹
医疗废物在线监测系统医废监管好帮手
HDZF智能蓄电池充电放电放电综合测试仪使用与接线说明
泵吸式氨气检测仪有哪些功能
linux makefile教程
哪些岗位在物联网时代受欢迎
如何延长iot设备的工作寿命和提高设备的EMI抗扰性
AMD Radeon Pro 5000M系列移动显卡为苹果全新16英寸MacBook Pro带来高性能的RDNA架构
Verizon与微软合作,提供移动边缘计算平台
机器人未来:向工业倾斜,几款建筑机器人介绍
光载无线通信应用之光纤无线电技术