前期准备
开发环境:ubuntu18.04
验证示例工程
本次实验验证的平台是plct提供的qemu,在linux下的qemu可以使用上述的笔者编译好的,也可以使用自己尝试编译plct提供的源码。
openhw提供了基于freertos的示例工程,由于使用的是plct提供的qemu,所以ide中自带的工程并不能直接使用,为了避免不必要的麻烦,本文采用plct提供的示例工程。
下载好示例工程,进入到app目录,执行以下命令配置编译工程:
source ../env/core-v-mcu.sh
make riscv=xxx //xxx为工具链的路径
编译完成后将生成的cli_test可执行文件拷到qemu的安装目录,运行下述命令验证工程;
./qemu-system-riscv32 -m core_v_mcu -bios none -kernel cli_test -nographic -monitor none -serial stdio
运行结果:
出现上述结果,则表示示例工程运行正常,这样我们就有一个可移植的模板工程,后续移植基于该工程开展。
移植rt-thread
cv32e40p内核是一个risc-v架构的内核,移植rtos不可避免的会涉及到汇编部分的修改,所以在移植前期学习一下risc-v架构与汇编会产生事半功倍的效果,同样在一之前需要熟悉cv32e40p的内核资源。
cv32e40p继承自pulp开源的ri5cy内核,而ri5cy内核的对接代码在rt-thread的仓库libcpu/riscv/rv32m1已经实现,所以以ri5cy中的代码为基础,移植cv32e40p的对接代码。
成功移植rt-thread有如下几个关键的阶段:
节拍定时器正常工作
线程可以正常创建,调度(这步最难,需要前面好多工作来保证)
shell可以正常使用(从这开始就顺利多了)
rtos的最小时间单位是系统节拍,系统正常工作需要节拍定时器的支持,因而以节拍定时器的移植为切入点展开移植。
core-v-mcu.c中放置的是系统初始化,中断处理相关代码。其中system_init函数完成了时钟初始化,串口,i2c等外设的初始化,以及中断函数的绑定。在文件的开头可以找到如下一个指针数组:
void (*isr_table[32])(uint32_t);
该数组用于绑定中断入口函数。
for (int i = 0 ; i help
rt-thread shell commands:
finshtocli - switch to cli: cli component of core-v-mcu
pin - pin [option]
clear - clear the terminal screen
version - show rt-thread version information
list - list objects
help - rt-thread shell help.
ps - list threads in the system.
free - show the memory usage in the system.
msh >ps
thread pri status sp stack size max used left tick error
tshell 20 running 0x00000160 0x00001000 22% 0x00000009 ok
tidle0 31 ready 0x000000f0 0x00000100 98% 0x1c05e62d ok
timer 4 suspend 0x000000e0 0x00000200 43% 0x00000008 ok
msh >
至此,移植rt-thread至openhw开源的基于cv32e40p内核的core-v-mcu便移植完成。
core-v-mcu bsp
core-v-mcu的bsp已经合并至rt-thread的主仓库,并配有详细的使用说明,链接。
小结
在为risc-v移植rtos时,笔者认为要具备risc-v架构规范与编程规范的基本的了解,磨刀不误砍柴工嘛,虽然在写本文时洋洋洒洒写的很自在,但是在移植的过程中每遇到一个坑就会卡好久,不过也不要妄自菲薄,经过这么一个过程就好很多了,此时不禁让人感慨“两岸猿声啼不住,轻舟已过万重山”。
数控高保真PLL调频发射电路说明
网络分析仪四大技能的详细介绍
PLC通过什么实现多节点协调工作
2021年将提升我国绿色数据中心可持续发展能力
亚太6D卫星:亚太星通全球高通量宽带卫星通信系统的首发星
OPENHW开源CORE-V-MCU移植RT-Thread
浅谈带有异步抽取滤波器的音频模数转换
程序员超任性,游戏上线测试日锁死服务器跑路创始人负债数百万
反激变换器拓扑的电路设计
传感器在细胞药制备过程中的作用
加速度计功耗内卷,但别忘了这些性能
双倍压对贴片电容的影响
小型太阳能发电站数据采集控制网关
高科技的产物 能放在兜里的榨汁机
华硕 ROG 手机上手体验:名副其实的游戏手机
集思宝UG905 高精度版
FIILRunner体验 299元的定价有着不错的性价比
城市排水管网监测的重要性及解决措施
谷歌亚马逊持续裁员,人工智能投资将成为重点
分享一种层状氧化物材料阳离子构型分析方法