请教下,使用 rtx5 v2 封装层,我想指定 stack_mem , cb_mem 的缓冲器地址,需要任何配置啊 ?
请教下,使用 rtx5 v2 封装层,我想指定 stack_mem , cb_mem 的缓冲器地址 及 cb_size 大小的话,需要如何配置啊 ?如下图所示:
你的截图里面,我注释掉的代码就是。 eric2013 发表于 2021-8-12 09:42
你的截图里面,我注释掉的代码就是。
貌似历程提供的,这几个刚好是 都是没有使用的,目前我想把这个使用起来,
我目前按照你提供的例程 应用是没有问题的,但是我吧 你屏蔽的那几行使用起来就不行,宏配置也捣鼓了一下,没有成功啊,所以我就来问一下大神你啊
eric2013 发表于 2021-8-12 17:03
你好,我的应用如下:
方法 1
__align(8) os_thread_t AppTaskStartTCB;
__align(8) uint64_tAppTaskStartStk;
/* 任务的属性设置 */
const osThreadAttr_t vTaskCreate_Attr =
{
/* 未使用 */
// .cb_mem = &worker_thread_tcb_1,
// .cb_size = sizeof(worker_thread_tcb_1),
// .stack_mem = &worker_thread_stk_1, // FreeRTOS 系统的 V2 封装层可以不使用
// .stack_size = sizeof(worker_thread_stk_1),
// .priority = osPriorityAboveNormal,
// .tz_module = 0
.name = "vTaskCreate",
.attr_bits = osThreadDetached,
.priority = (osPriority_t )APP_CFG_TASK_START_PRIO, //任务优先级设置
.stack_size = APP_CFG_TASK_START_STK_SIZE * sizeof(uint32_t),//V2 封装层必须使用
.stack_mem= &AppTaskStartStk, //V2 封装层必须使用
.cb_mem = &AppTaskStartTCB, //V2 封装层必须使用
.cb_size = sizeof(os_thread_t), //V2 封装层必须使用
};
xHandleTask_MainTask = osThreadNew(vTaskCreate, NULL, &vTaskCreate_Attr);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方法 2.
os_thread_t* AppTaskStartTCB=0;
uint64_t *AppTaskStartStk=0; //;
osThreadAttr_t vTaskCreate_Attr;
void show(void)
{
AppTaskStartTCB= (os_thread_t *)mymalloc(SRAM4, sizeof(os_thread_t));
if(AppTaskStartTCB== NULL)
{
My_Printf("AppTaskStartTCBfail ...\r\n");
while(1) {}
}
AppTaskStartStk= (void *)mymalloc(SRAM4, APP_CFG_TASK_SHOW_STK_SIZE * sizeof(uint32_t));
if(AppTaskStartStk== NULL)
{
My_Printf("AppTaskStartStk fail ...\r\n");
while(1) {}
}
vTaskCreate_Attr.name = "vTaskCreate";
vTaskCreate_Attr.attr_bits= osThreadDetached;
vTaskCreate_Attr.priority = (osPriority_t)APP_CFG_TASK_START_PRIO;
vTaskCreate_Attr.stack_size = APP_CFG_TASK_START_STK_SIZE * sizeof(uint32_t);
vTaskCreate_Attr.stack_mem= AppTaskStartStk;
vTaskCreate_Attr.cb_mem = AppTaskStartTCB;
vTaskCreate_Attr.cb_size = sizeof(os_thread_t);
xHandleTask_MainTask = osThreadNew(vTaskCreate, NULL, &vTaskCreate_Attr);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
说明
使用方法 1 是可以的,
使用方法 2 是不可以的
安装方法 2 的应用的话,是还需要配置什么吗???
hpdell 发表于 2021-8-13 09:25
你好,我的应用如下:
方法 1
1、方法一:
__align(8) os_thread_t AppTaskStartTCB; //删掉前端__align(8),多余
__align(8) uint64_tAppTaskStartStk;//删掉前端__align(8),多此一举,uint64_t定义的变量就是8字节对齐的。
2、方法二、
多此一举,RTX5本身默认内存分配就是动态的,类似malloc方式的。
eric2013 发表于 2021-8-13 09:51
1、方法一:
__align(8) os_thread_t AppTaskStartTCB; ...
我是想把内存定义到其他的内存区域啊 hpdell 发表于 2021-8-13 10:29
我是想把内存定义到其他的内存区域啊
RTX5的全局动态内存地址重定向方法
http://www.armbbs.cn/forum.php?mod=viewthread&tid=108313&fromuid=58
(出处: 硬汉嵌入式论坛)
页:
[1]