初级会员

- 积分
- 187
- 金钱
- 187
- 注册时间
- 2016-9-2
- 在线时间
- 42 小时
|
大神好,捣鼓了几天结合各种论坛上下载的程序,终于把lwip+ucosiii移植了,目前起码已经可以ping通,别的功能还没有弄,但是我有一个问题,因为项目上没有片外sram,而现在我的memp_memory和内核以及dm9000接收任务都是在片外sram上申请的内存,如下所示:memp_memory=mymalloc(SRAMEX,mempsize); //为memp_memory申请内存 printf("memp_memory内存大小为:%d\r\n",mempsize);
ramheapsize=LWIP_MEM_ALIGN_SIZE(MEM_SIZE)+2*LWIP_MEM_ALIGN_SIZE(4*3)+MEM_ALIGNMENT;//得到ram heap大小
ram_heap=mymalloc(SRAMEX,ramheapsize); //为ram_heap申请内存
printf("ram_heap内存大小为:%d\r\n",ramheapsize);
TCPIP_THREAD_TASK_STK=mymalloc(SRAMEX,TCPIP_THREAD_STACKSIZE*4); //给内核任务申请堆栈
printf("tcpip=%d\r\n",*TCPIP_THREAD_TASK_STK);
// LWIP_DHCP_TASK_STK=mymalloc(SRAMEX,LWIP_DHCP_STK_SIZE*4); //给dhcp任务申请堆栈
LWIP_DM9000_INPUT_TASK_STK=mymalloc(SRAMEX,LWIP_DM9000_INPUT_TASK_SIZE*4); //给dm9000接收任务申请堆栈
我想要把它改成在片内申请,应该怎么做呢?是改下面这里吗?
//mem1内存参数设定.mem1完全处于内部SRAM里面.
#define MEM1_BLOCK_SIZE 32 //内存块大小为32字节
#define MEM1_MAX_SIZE 20*1024 //最大管理内存 20K
#define MEM1_ALLOC_TABLE_SIZE MEM1_MAX_SIZE/MEM1_BLOCK_SIZE //内存表大小
我把之前最大管理内存从40K改为20K,如果在片内申请的话,内存申请会出错,lwip_comm_mem_malloc()函数返回值为1。
还有把lwipopts.h中的MEM_SIZE值改小一点,也不行。
请大神教教我怎么弄,具体应该改哪一块呢?不是很懂
|
|