uCOSII如何自定义一个循环链表
我是在S3C2440上搭一个uCOSII系统,在创建应用任务时需要创建一个循环链表来存储数据,但是在动态分配内存是遇到了问题。用malloc分配内存总是出现死机,去掉后系统却运行正常。在UCOS中是否有系统自己的分配内存的方法?如何才能创建自己的循环链表呢?
估计你的CPU不带MMU。
不带MMU的CPU不能反复malloc和free,因为会产生内存碎片,最后导致内存耗尽。
有两个方法:
(1)使用UCOSII的内存管理,你看看邵贝贝的那本教材,这个有点复杂。
(2)创建固定大小的循环链表,或创建的链表只增大不减小,只调用malloc,或干脆不使用malloc,使用全局数据。UCOS是不带动态内存管理功能的,使用的malloc()函数是编译器提供的。这时不建议使用malloc函数,容易出现内存碎片。
你所说的死机问题,很可能是非法地址错误,建议检查地址空间。