本人比较过rtthread的例程以及freertos的例程,freertos的例程跟论坛中的都是大同小异。
但是发现一个问题,rtthread进行系统之前使能了mmu,但是freertos没看到使能mmu。
那存在着一个问题,当这2个程序分别在ddr运行的时候,没有使能mmu的freertos能正常响应中断不?
之前还以为在spl中使能了 mmu,但是发现spl中也没找到mmu的使能。但是实际中freertos也可以正常运行,也可以响应中断。
哪位大虾 可以 指点下。
离线
ARM核的MMU有两个作用,1、必须使能MMU才能使能CACHE。2、MMU有内存隔离保护作用。
大多数的RTOS仅支持单核心,因此MMU不是必须的。
RT-THREAD这个OS跟硬件的结合比较多,RT-THREAD提供了一套较完整的开发框架,有利于标准化开发但是学习难道也大一点。FREERTOS仅需要提供一个心跳中断接入就可以,对硬件几乎无感,很容易把芯片厂商提供的驱动例程用起来,因此FREERTOS更容易移植。
离线
ARM的MMU和CACHE在一起,为了开CACHE,MMU也必须开。
但可以像RT-Thread那样,虽然开了,但做1:1映射就行。
注意cache只对ddr部分开启,外设部分不开。
RISC-V的大部分芯片,MMU和CACHE分开的,可以不开MMU只开CACHE
当然CACHE也可以不开,但用DDR的话会卡成狗。
可以直接用坛友移植好的: https://whycan.com/t_3958.html
RT-Thread主仓库的bsp也可以用: https://gitee.com/rtthread/rt-thread/tree/v4.0.x/bsp/allwinner_tina
离线
感谢两位的回答。看你能我的描述 不是很清晰。我意思是想说,链接文件将整个程序都链接到DDR,但是没有开MMU,那么中断的响应还是回到0x00也就是sram的区域,但是链接文件已经将程序包含中断处理函数的那部分 都 放到DDR,那这样不是存在着冲突了吗?这点我一直没搞明白。但是实际情况运行好像又没有什么问题。
离线
映射 or 拷贝
问题是没看到有映射过去到ddr的。
离线
arm9有将中断向量单独映射到ddr的?@aozima
离线