概述
- 2022年4月,靈動(dòng)微電子發(fā)布了搭載安謀科技“星辰”STAR-MC1處理器的全新高性能 MM32F5 微控制器系列。該系列在內(nèi)核、總線和外設(shè)配置等多個(gè)方面進(jìn)行了創(chuàng)新,內(nèi)核上更是首次搭載了 Armv8-M 架構(gòu)的 “星辰” STAR-MC1 處理器。很高興通過ARM中國拿到該芯片的開發(fā)板(可以搞事情)
-
MM32F5270 是一款搭載了安謀科技 STAR-MC1 內(nèi)核的 MCU 產(chǎn)品,其工作頻率可達(dá) 120MHz,內(nèi)置多達(dá) 256KB Flash 和 192KB RAM,配置浮點(diǎn)運(yùn)算單元(Floating Point Unit, FPU)、數(shù)字信號(hào)處理單元(Digital Signal Processing,DSP)、信號(hào)間互聯(lián)矩陣 MindSwitch、可配置邏輯單元 CLU、三角函數(shù)加速單元 CORDIC 等算法加速單元,并集成了豐富的外設(shè)模塊和充足的 I/O 端口。MM32F5270 相較于現(xiàn)有產(chǎn)品全面提升了性能、存儲(chǔ)容量、總線架構(gòu)和外設(shè)配置。
-
芯片資源:
類型 | 描述 |
---|---|
內(nèi)核 | Arm China STAR-MC1 處理器,基于 Armv8-M Mainline 指令集架構(gòu),集成FPU 和 DSP |
主頻 | 可達(dá)120MHz |
Cache | 4KB L1 I-Cache,4KB L1 D-Cache |
FLASH | 256KB |
RAM | 192KB(包括 32KB ITCM、32KB DTCM 和 128KB System RAM) |
USB OTG | 1個(gè),全速接口 |
以太網(wǎng) | 10M/100M 以太網(wǎng)控制器 |
CAM | 2 個(gè) FlexCAN 接口 |
- 拿到開發(fā)板,就想著移植個(gè)操作系統(tǒng)。嘻嘻嘻,那必須先上RT-THREAD,組件資源豐富,易于后續(xù)功能的各項(xiàng)開發(fā)。
RT-Thread完整版的移植說明
移植之前須知內(nèi)容:
- 芯片是什么內(nèi)核?
- 答:MM32F5270是基于Armv8-M 架構(gòu)的 “星辰” STAR-MC1 處理器。通過下圖可以看出,我們可以參考CM33內(nèi)核進(jìn)行移植。
- 編譯工具鏈?
- 答:MM32F5270提供的demo是采用armclang(AC6),所以他跟ARMCC還不太一樣。通過官方文檔(https://www.keil.com/appnotes/files/apnt_298.pdf)可以看出AC6的匯編代碼是可以兼容GUN的。所以這個(gè)對(duì)移植是非常友好的。
開始移植
- 修改libcpu--把m33的名字修改為star_mc1。
- 修改libcpu的匯編分割--復(fù)制libcpu的gcc匯編代碼到keil的匯編代碼中。從移植須知的第二點(diǎn)可知,AC6的匯編風(fēng)格是和GUN一樣的。所以直接拷貝。
- 修改board.h--修正芯片資源宏定義。
- 修改鏈接腳本--RT-Thread的動(dòng)態(tài)內(nèi)存堆是在ZI段結(jié)尾處到RAM尾部,而board.h中指向ZI段結(jié)尾處的變量(Image$$RW_IRAM1$$ZI$$Limit),所以需要修改MM32F5270的默認(rèn)鏈接腳本為如下:
- 初始化系統(tǒng)時(shí)鐘--將mm32f5279的sdk中系統(tǒng)時(shí)鐘初始化拷貝到board.c中
- 初始化系統(tǒng)tick--將函數(shù)rt_tick_increase()放在system tick中斷中。
- 以上步驟基本把rtt移植到mm32f5270中。
移植驗(yàn)證
- 在main.c中main函數(shù)添加點(diǎn)燈的代碼。如果能夠看到led在閃爍,就說明移植成功了。
- 現(xiàn)象
shell適配
- 適配uart驅(qū)動(dòng)
- 實(shí)現(xiàn)ops的5個(gè)函數(shù)
- 將ops注冊(cè)到serial框架中
- 注冊(cè)serial中斷,在中斷服務(wù)程序中調(diào)用rt_hw_serial_isr()函數(shù)
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);
- 將對(duì)應(yīng)的串口驅(qū)動(dòng)名設(shè)置到rt_console_set_device()函數(shù)中。
shell驗(yàn)證
- 串口終端可以正常輸入輸出
-
RT-Thread
+關(guān)注
關(guān)注
31文章
1240瀏覽量
39485 -
MM32F5
+關(guān)注
關(guān)注
0文章
12瀏覽量
523 -
MM32
+關(guān)注
關(guān)注
1文章
106瀏覽量
677
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論