![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| linux-fpga系列文章之—-ppc开发中的内存分配 | |||||
作者:风雷的技… 文章来源:风雷的技术天地 点击数: 更新时间:2008-1-3 ![]() |
|||||
|
在FPGA嵌入式开发过程中,有的朋友可能会遇到这样一个情况,要用嵌入式内核做大数据量应用的工程,Bram肯定容量是不够的,需要用到外置DDR内存并在程序中进行内存分配。本文就针对PowerPC嵌入式开发中的内存分配做一个简单的讨论,大部分内容适用于MicroBlaze的开发。 不管是BSB默认成的工程,还是自己定制的工程,一般来讲程序的所有部分都是放在bram上的,很显然,这是一个不适用于大数量IO的情况。如果牵涉到大量的数据的存储,转移等操作,一种比较通用的办法就是用malloc家族的函数进行内存分配。
光使用malloc还是不够的。我们还要修改ld文件,这样就能自由控制heap和stack的大小。在使用malloc的前提下,把heap和stack都放在内存上,然后就可以自由调整大小了。注意一点的是malloc能分配的最大空间要比实际heap的size小一些,比如heap的size是4000(16384B),那么实际能够给你的空间就是16356B,因为总是有28B是用处来存储分配信息的,这是个人猜想,如果不对欢迎各位朋友指出。 对相关情况做一个总结。实现大数据量内存分配的方法包括: 1. 静态分配你的内存,如果你不嫌麻烦的话。 2. 使用PPC405 + 外部 SDRAM + malloc。 3. 自己实现一个能够处理大于64KB内容的malloc。虽然代码不是很复杂,不过MicroBlaze用户就要注意,它没有MMU,内存碎片的处理是一个问题。 4. 使用像uClinux这样的操作系统。 5. 使用其它基于C的malloc库。 6. 如果有志于在没有MMU的系统上自己实现malloc,可以参考这篇文章。 最后再罗嗦两句,这两天感觉到,嵌入式系统中很多程序的错误都是stack溢出引起的,而不是heap的问题。特别是那些从PC端移植过来的程序,因为很多程序在PC端根本就不需要考虑内存管理以及stack、heap的分布。对于PC程序员来说,stack总是那么大,而对于embedded程序员来说,stack总是那么小…… |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关文章 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|