hpdell 发表于 2021-8-12 08:53:35

请教下,使用 rtx5 v2 封装层,我想指定 stack_mem , cb_mem 的缓冲器地址,需要任何配置啊 ?

请教下,使用 rtx5 v2 封装层,我想指定 stack_mem , cb_mem 的缓冲器地址 及 cb_size 大小的话,需要如何配置啊 ?

如下图所示:



eric2013 发表于 2021-8-12 09:42:29

你的截图里面,我注释掉的代码就是。

hpdell 发表于 2021-8-12 10:08:44

eric2013 发表于 2021-8-12 09:42
你的截图里面,我注释掉的代码就是。

貌似历程提供的,这几个刚好是 都是没有使用的,目前我想把这个使用起来,

我目前按照你提供的例程 应用是没有问题的,但是我吧 你屏蔽的那几行使用起来就不行,宏配置也捣鼓了一下,没有成功啊,所以我就来问一下大神你啊

eric2013 发表于 2021-8-12 17:03:12


hpdell 发表于 2021-8-13 09:25:27

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 的应用的话,是还需要配置什么吗???














eric2013 发表于 2021-8-13 09:51:30

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方式的。

hpdell 发表于 2021-8-13 10:29:06

eric2013 发表于 2021-8-13 09:51
1、方法一:
__align(8) os_thread_t   AppTaskStartTCB;                                           ...

我是想把内存定义到其他的内存区域啊

eric2013 发表于 2021-8-14 08:37:39

hpdell 发表于 2021-8-13 10:29
我是想把内存定义到其他的内存区域啊

RTX5的全局动态内存地址重定向方法
http://www.armbbs.cn/forum.php?mod=viewthread&tid=108313&fromuid=58
(出处: 硬汉嵌入式论坛)
页: [1]
查看完整版本: 请教下,使用 rtx5 v2 封装层,我想指定 stack_mem , cb_mem 的缓冲器地址,需要任何配置啊 ?