【请教】嵌入式系统的静态内存分配相关

jackcui 2011-07-21 05:28:54
开发环境:RTOS(比如uCOS,iTRON,ThreadX)
在嵌入式系统中,由于系统性能有限,为了让系统的性能更好,因此内存分配是采用静态内存分配。
也就是开发人员在连接的时候,人工指定程序加载到内存中的什么地址中去;对于Heap,Stack等空间,创建每个Task的时候,应该是由OS来进行分配,但是这些空间的分配貌似又是动态分配的。

以上是自己的理解,理解的很是模糊。请高人给予指导,或者介绍相关资料。
资料可以发送到Email:
yongjia_cui@163.com
...全文
107 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjcapple 2013-02-22
  • 打赏
  • 举报
回复
呵呵,这么老的一个帖子
zjk2752 2011-10-26
  • 打赏
  • 举报
回复
收藏了,明天看,最近也在看单片机内存相关问题
JuanA1 2011-08-03
  • 打赏
  • 举报
回复
顶楼上,我对这个也不是很懂
jackcui 2011-08-03
  • 打赏
  • 举报
回复
zhenghn2010说的却是是这样的。我以前的工作中,用到的就是要进行静态的内存分配;现在用到的是wince的系统,这时候用的肯定是动态内存分配了。
由于以前想学习一下静态内存分配,一直找不到讲解如何在自己的ucos中使用静态内存分配的相关资料,所以也就对静态内存分配只知道一个大概,一直觉得挺遗憾的。

所以还请大家更够给我提供一下静态内存分配相关的详细资料。因为这样的资料,在网上很难找啊,我一直找不到想要的资料。
zhenghn2010 2011-08-02
  • 打赏
  • 举报
回复
嵌入式适时系统,包括所谓的硬适时和软适时。
硬适时对系统要求比较高,不能存在过渡延时和不确定性。所以一般采用内存静态分配方案。也就是你所说的那种事先分配好的办法。这样就不存在分配释放过程,包括分配失败和不确定延时等结果。一般用在非常关键的设备上,绝对不能失败。比如原来的单片机系统,中断响亮表。。。 。优点是快速稳定,缺点是不灵活,事先安排好,移植性差。

如果要求不这么高,就可以用内存动态管理办法。所谓动态,就是在固定的一段内存(heap)现申请/释放。一般都是有操作系统支持,包括任务的创建,一段数据内存申请等,一般用malloc/free等。优点是灵活,可以方便移植。缺点就是要有延迟甚至是失败。

内存管理 ,只是嵌入式系统里一个关键的部分。看你的系统需求如何。往往相互结合起来来满足不同的需要。要求高的用静态内存,不高的可以用动态内存。随着电子和软件技术的提高,动态内存应用越来越多。但一定要注意其缺点。比如,高适时的航天,工业控制系统,可恩只采用可靠的静态分配策略。而网络设备等可采用动态策略。
dthxman 2011-08-02
  • 打赏
  • 举报
回复
那简单说下吧,那ucos来说,你一个task,在创建的时候,你必须为其开辟栈空间,这个是又你自己控制的,如果默认的话就有ucos的指定大小,这个是从ram中取出来的,然后你的task用到的所有的除malloc以外的内存使用都是来自于这个栈里的内存,所以,你栈不够的话,可能会溢出,任务崩溃,说道堆,你的malloc函数用的堆,具体的实现是ucos来实现的,看他用那种算法实现你底层的malloc,也是取自ram,这个就是动态的了,每次想用多少只要不超出范围都可以,大概过程就是这样。

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧