硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6048|回复: 6
收起左侧

[有问必答] 关于CCM的问题?

[复制链接]

6

主题

14

回帖

6

积分

新手上路

积分
6
发表于 2015-11-4 18:30:12 | 显示全部楼层 |阅读模式
硬汉哥  你写的CCM内存是怎么理解的  怎么协调128K与64K的利用呀  比如你那个示波器    QQ截图20151104182519.png


    TCB_Temp = (OS_TCB *)0x10000000;
    AppTaskStartTCB = TCB_Temp;
    TCB_Temp ++;

    AppTaskUpdateTCB = TCB_Temp;
    TCB_Temp ++;
       TCB_Temp = (OS_TCB *)0x10000000;这个是一个控制块的起始对吗?大小呢?
    TCB_Temp ++; 是什么意思?



/**********下面的6个是UCOS-III的内核服务程序*****************/
    STK_Temp = STK_Temp + APP_CFG_TASK_GUIRefresh_STK_SIZE;
    OSCfg_IdleTaskStk = STK_Temp;
    OSCfg_IdleTaskStkBasePtr = OSCfg_IdleTaskStk;
    STK_Temp = STK_Temp + OS_CFG_IDLE_TASK_STK_SIZE;  这几个服务函数又怎么理解呀!!?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2015-11-4 21:38:50 | 显示全部楼层
1. CCM的ram空间不能用于DMA,这一点要切记,通用的128KB是可以的。
2. CCM的RAM空间,我是用于uCOS-III的任务栈空间了。不要在MDK的这个地方设置使用CCM(不打前面的对勾就可以了)。
    如果通用的128KB的RAM空间不够用,MDK会从CCM的RAM空间分配。
    1.png
3. 0x10000000是CCM的首地址
4. TCB_Temp是OS_TCB类型的指针变量,执行一次指针加加操作就会增加sizeof(OS_TCB)大小的字节
     这一点要特别的注意。关于这个问题在C语言的课本上面都有讲解,比如谭浩强C课本的指针章节
5. OS_CFG_IDLE_TASK_STK_SIZE是空闲任务占用的栈大小,这个你可以用过右击变量go to define进行查找的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2015-11-4 21:41:31 | 显示全部楼层
楼主还有什么问题的话,我们继续交流。
回复

使用道具 举报

6

主题

14

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2015-11-5 13:51:42 | 显示全部楼层
嗯嗯  谢谢硬汉哥  你的ucos程序我怎么没看到那个进入临界区  还有退出临界的呢?不是应该要的吗  ?

/**********下面的6个是UCOS-III的内核服务程序*****************/
    STK_Temp = STK_Temp + APP_CFG_TASK_GUIRefresh_STK_SIZE;
    OSCfg_IdleTaskStk = STK_Temp;
    OSCfg_IdleTaskStkBasePtr = OSCfg_IdleTaskStk;
    STK_Temp = STK_Temp + OS_CFG_IDLE_TASK_STK_SIZE;

/***************中断队列任务*********************************/
#if (OS_CFG_ISR_POST_DEFERRED_EN > 0u)
   
    OSCfg_IntQTaskStk = STK_Temp;
    OSCfg_IntQTaskStkBasePtr = OSCfg_IntQTaskStk;
    STK_Temp = STK_Temp + OS_CFG_INT_Q_TASK_STK_SIZE;
#else
    OSCfg_IntQTaskStkBasePtr = (CPU_STK *)0;
#endif

/****************ISR堆栈*************************************/
#if (OS_CFG_ISR_STK_SIZE > 0u)
    OSCfg_ISRStk = STK_Temp;
    OSCfg_ISRStkBasePtr = OSCfg_ISRStk;
    STK_Temp = STK_Temp + OS_CFG_ISR_STK_SIZE;
#else
    OSCfg_ISRStkBasePtr = (CPU_STK *)0;
#endif

/**************统计任务*************************************/
#if (OS_CFG_STAT_TASK_EN > 0u)
    OSCfg_StatTaskStk = STK_Temp;
    OSCfg_StatTaskStkBasePtr = OSCfg_StatTaskStk;
    STK_Temp = STK_Temp + OS_CFG_STAT_TASK_STK_SIZE;
#else
    OSCfg_StatTaskStkBasePtr = (CPU_STK *)0;
#endif

/****************滴答任务**********************************/   
    OSCfg_TickTaskStk = STK_Temp;
    OSCfg_TickTaskStkBasePtr = OSCfg_TickTaskStk;
    STK_Temp = STK_Temp + OS_CFG_TICK_TASK_STK_SIZE;

/*****************定时器任务*******************************/
#if (OS_CFG_TMR_EN > 0u)
    OSCfg_TmrTaskStk = STK_Temp;
    OSCfg_TmrTaskStkBasePtr = OSCfg_TmrTaskStk;
    STK_Temp = STK_Temp + OS_CFG_TMR_TASK_STK_SIZE;
#else
    OSCfg_TmrTaskStkBasePtr = (CPU_STK *)0;
#endif
}
这几个地方是在你示波器里面的程序 如果去掉影响大吗?还有如果示波器不用CCM能工作吗?就是用普通的128K   ?

内容来自[短消息]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2015-11-5 14:18:18 | 显示全部楼层

回 6神无主 的帖子

6神无主:嗯嗯  谢谢硬汉哥  你的ucos程序我怎么没看到那个进入临界区  还有退出临界的呢?不是应该要的吗  ?

/**********下面的6个是UCOS-III的内核服务程序*****************/
    STK_Temp = STK_Temp + APP_CFG_TASK_GU .. (2015-11-05 13:51) 
1. 建议先找一本任哲老师或者邵贝贝写的uCOS-II书籍,搞清楚临界区的含义。
2. 不能去掉,CCM的读写速度比通用RAM区快。而且对于示波器的例子,通用128kb已经不够用了。
回复

使用道具 举报

6

主题

14

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2015-11-5 17:32:08 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 建议先找一本任哲老师或者邵贝贝写的uCOS-II书籍,搞清楚临界区的含义。
2. 不能去掉,CCM的读写速度比通用RAM区快。而且对于示波器的例子,通用128kb已经不够用了。 (2015-11-05 14:18) 
你用到外部SRAM 吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2015-11-5 20:40:16 | 显示全部楼层

回 6神无主 的帖子

6神无主:你用到外部SRAM 吗 (2015-11-05 17:32) 
2MB的SRAM用于emWin的动态内存,要不界面刷新不过来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-19 05:03 , Processed in 0.243260 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表