搜索
bottom↓
回复: 15

关于1768单片机RAM 不够用的问题

[复制链接]

出0入0汤圆

发表于 2014-8-12 10:25:30 | 显示全部楼层 |阅读模式
最近在用1768做一个功能,1768与服务器能够进行数据交互,同时能够差U盘在开发板上进行数据读取。用到TCP和USB两个功能。作为两个大任务放在UCOS-II下运行。
在调试的过程遇到一些问题,叙述一下:
首先,我先单独测试TCP功能,单片机作为服务器端,电脑的调试软件作为客户端,能连接上,收发数据正常。见 图-1

然后单独测试USB的功能,也可以。
然后我把USB的功能移植到TCP工程里面,编译出错.  \Out\ReleaseInFlash\LPC1700.axf: Error: L6406E: No space in execution regions with .ANY selector matching ip.o(.data).
                                                                          \Out\ReleaseInFlash\LPC1700.axf: Error: L6406E: No space in execution regions with .ANY selector matching tcp.o(.data).
应该是说程序太大,RAM放不下了,然后百度了一下解决方法,把KEIL里面的Targe Option的 IRAM2前面打上勾 图-2,OK,编译通过。烧程序,运行,然后停住了,程序不走了。
我琢磨着是不是TCP和USB两个任务之间有冲突。我就创建了一个简单的任务,流水灯。我测试TCP和流水灯两个任务的运行情况(把和USB有关的代码都屏蔽了),也不能运行,灯走了几步就停了,TCP也连不上。然后我想到
这两个任务的代码没有那么大,32K的本地RAM应该可以放下,然后把IRAM2前面的勾去掉了,确实是的,编译通过,下载运行。竟然可以了,流水灯一直运行,TCP也连上了,收发数据正常。然后我回去又把IRAM2前面的勾打上,
下载运行,奇了怪了,灯走了几步就停了,TCP也连不上。同样的代码,什么都没改,仅仅在IRAM2前打了个勾,运行结果就差这么大。我就想,原先的USB和TCP一起的工程是不是也是因为这个呢?但是想不到解决的办法,程序核心发部分没法优化,只能把堆栈数组改小些,但是还是太大,不勾IRAM2编译不通过。所以上论坛和想和大家讨论交流一下,不知道你们有没有遇到这种情况,有什么解决的方法呢?

出0入0汤圆

 楼主| 发表于 2014-8-12 10:27:58 | 显示全部楼层
图片不知道怎么传不了,用附件形式把

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-8-12 12:09:56 | 显示全部楼层
把程序中特别大的数组指定一个IRAM中的地址,OPTION中不要勾选IRAM2,试试看

出0入0汤圆

 楼主| 发表于 2014-8-12 12:33:09 | 显示全部楼层
myxiaonia 发表于 2014-8-12 12:09
把程序中特别大的数组指定一个IRAM中的地址,OPTION中不要勾选IRAM2,试试看

嗯~好的,谢谢,我试一下。

出0入0汤圆

 楼主| 发表于 2014-8-14 13:05:55 | 显示全部楼层
myxiaonia 发表于 2014-8-12 12:09
把程序中特别大的数组指定一个IRAM中的地址,OPTION中不要勾选IRAM2,试试看

指定大数组地址这个方法我没有弄出结果,现在我是这样的,1768有两个16K的RAM,一个32K的本地RAM,正常都是放在32K的本地RAM里面的。现在程序数组较多,空间不够,如果放在第一个16K的RAM里面不行,放在第二个RAM里面竟然可以了,我把任务的堆栈改小了,现在第二个RAM空间还剩不少,第一个16K的RAM没有用,一用就出错。芯片手册上写的是这两个16K的RAM一般用于存储外设对数据,我想是不是第一个16K的RAM里面有一段地址是固定分配给某些外设,比如USB或者以太网,导致如果把任务堆栈发在里面就会出现堆栈不连续出错呢。现在虽然说能够满足使用了,但还是没有弄明白为什么第一个16k的RAM不能用~~

出0入0汤圆

发表于 2014-8-14 16:21:58 | 显示全部楼层
yebo_123 发表于 2014-8-14 13:05
指定大数组地址这个方法我没有弄出结果,现在我是这样的,1768有两个16K的RAM,一个32K的本地RAM,正常都 ...

我对1768没有研究啊,帮不上忙了呵呵

出5入0汤圆

发表于 2014-8-14 17:03:10 | 显示全部楼层
应该是网络跟USB都用到了同一个RAM,我的工程是这样做的在LPC17**—emac.h 里 定义 #define RX_DESC_BASE                0x20080000 //0x2007c000//  在 usbhost_lpc17xx.c 中 定义#define HOST_BASE_ADDRESS 0x2007C000; 。这样子RAM就能分开。

出0入0汤圆

 楼主| 发表于 2014-8-14 17:49:46 | 显示全部楼层
myxiaonia 发表于 2014-8-14 16:21
我对1768没有研究啊,帮不上忙了呵呵

恩呢~还是要谢谢你啦,呵呵

出0入0汤圆

 楼主| 发表于 2014-8-14 17:58:44 | 显示全部楼层
menglogic 发表于 2014-8-14 17:03
应该是网络跟USB都用到了同一个RAM,我的工程是这样做的在LPC17**—emac.h 里 定义 #define RX_DESC_BASE                 ...

那两个文件在哪里?我在工程中LPC17XX.H中 找到了
#define LPC_AHB_BASE          (0x50000000UL)
#define LPC_EMAC_BASE         (LPC_AHB_BASE  + 0x00000)和
#define LPC_USB_BASE          (LPC_AHB_BASE  + 0x0C000)
这是说明这两个同时用了一个RAM吗?

出0入0汤圆

发表于 2014-8-14 22:11:25 | 显示全部楼层
如果是我发现RAM不够用,我肯定直接把UCOS干掉,这丫太耗RAM了,平时耍耍还行,如果碍着道了,第一个搬走它;

出5入0汤圆

发表于 2014-8-15 09:16:23 | 显示全部楼层
yebo_123 发表于 2014-8-14 17:58
那两个文件在哪里?我在工程中LPC17XX.H中 找到了
#define LPC_AHB_BASE          (0x50000000UL)
#defin ...

不是在 LPC17XX.H 中,网络的在 lpc17xx_emac.h  定义, USB的在  usbhost_lpc17xx.c  定义。

出0入0汤圆

 楼主| 发表于 2014-8-15 09:59:37 | 显示全部楼层
menglogic 发表于 2014-8-15 09:16
不是在 LPC17XX.H 中,网络的在 lpc17xx_emac.h  定义, USB的在  usbhost_lpc17xx.c  定义。
...

没找到这两个文件,是工程建好就生成的?

出5入0汤圆

发表于 2014-8-15 13:49:17 | 显示全部楼层
yebo_123 发表于 2014-8-15 09:59
没找到这两个文件,是工程建好就生成的?

可能是我们用的模板不一样,你查看EMAC初始化,与USB HOST 相关的宏定义,肯定会有内存分配的定义的。

出0入0汤圆

 楼主| 发表于 2014-8-15 15:58:21 | 显示全部楼层
menglogic 发表于 2014-8-15 13:49
可能是我们用的模板不一样,你查看EMAC初始化,与USB HOST 相关的宏定义,肯定会有内存分配的定义的。 ...

嗯~谢谢啦

出0入0汤圆

发表于 2014-9-11 12:28:11 | 显示全部楼层
楼主在优化下程序吧

出0入0汤圆

 楼主| 发表于 2014-9-16 22:25:06 | 显示全部楼层
别有洞天下 发表于 2014-9-11 12:28
楼主在优化下程序吧

嗯~一步步优化之后已经可以了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 04:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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