yono 发表于 2023-12-13 14:22:37

ThreadX Module的MPU问题

本帖最后由 yono 于 2023-12-13 15:13 编辑

使用threadX的Module,尝试使用共享内存始终有问题,问题如下
    在app中的 *(ULONG *)READWRITE_REGION = 0xABABABAB; 这句赋值时会触发错误处理,经查是加载module后的MPU配置有问题



因为我想用最新的threadX和Module,所以我是自己移植的一个threadX工程,最初参考的是官方的一个例子尝试,现在是参考硬汉大哥的这个第5期ThreadX视频教程:单片机动态APP加载MPU玩法,隔离应用和系统,APP死机了系统也不会挂(2022-05-15) - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! (armbbs.cn)
ModuleManager的内容和Module的内容,除了thread是自己移植的,其他都和硬汉大哥一致,也试过用硬汉大哥的BSP包做初始化,发现不是这个问题

这是硬汉大哥的ModuleManager加载Module后的MPU,和宏定义是一一对应的

这是我的ModuleManager加载Module后的MPU,就莫名其妙,不一样

这是我的ModuleManager的宏定义,和硬汉大哥一致(其实整个文件都是粘过来的:lol)

我的ModuleManager的内存区域配置函数,也是没有返回错误的

在Module中使用*(ULONG *)READWRITE_REGION = 0xABABABAB;赋值,就会出错,消息队列传递都正常




找了一周多问题了,最终锁定在MPU配置上:'(
在进入模组运行前会在这里修改MPU配置,但是小弟实力有限,完全找不到这个数据从哪里来的,也就没法debug了,最终来球球诸位大佬指点










yono 发表于 2023-12-13 14:31:59

这是我的ModuleManager工程,MDK的工程在 src/5_PhysicalChip/STM32CubeMX/H7MXdemo/MDK-ARM 下
因为想借助STM32cubeMX配置,工程所在的路径有点过分复杂了。






yono 发表于 2023-12-13 14:35:36


这是我的Module工程,为了避免不同threadX版本可能的冲突问题,这个也是自己移的threadX,不过硬汉大哥的ModuleManager可以载这个APP,我的就不行!!:'(
MDK工程在WorkSpace/MDK-ARM下,这个没有stm32cubeMX的限制,自己做的结构就会规整一些



eric2013 发表于 2023-12-13 19:08:50

1、直接在我的例子基础上修改成你自己的工程方式,然后重新移植个对比下,这个锁定问题方便些。
2、注意RAM空间,主工程别也使用了



页: [1]
查看完整版本: ThreadX Module的MPU问题