430能扩展内存吗?怎么扩展?处理以太网和SD卡文件读写,USB压力太大,缓冲区不足.
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
DeDeBug,
430地址总线和数据总线均不对外开放,故不能扩展内存RAM。 建议使用USB搬移数据时,合理地利用DMA,能大大减少数据搬移的操作,节约大量的时间。
之前Triton分享过相关经验,具体如下,
Section
1. USB传输速率
全速USB的传输速率标准为12MBPS, 这个是指USB的物理层数据速率,落实到具体的帧数据,大概有10-15%的帧格式消耗,一般按照5-10M来计算USB的实际数据速率。
这部分消耗的时间和系统主频没有关系。
2. 实现U盘消耗的时间.也和你处理的方式也有关系。
这部分操作中MCU要完成USB的命令解析,数据搬移,以及SD卡的读写访问。这部分的时间取决于两个方面,一个就是MCU的主频,另一个就是你的操作流程是否合理.
例如如果处理写U盘操作,你如果没接收到一帧USB数据就去写SD卡,这样的效率就非常低,因为USB的一帧数据只有64个字节,而你传送的文件一般都不只这么长。你可以设计一个稍微大点的BUFFER来接收USB的数据,当BUFFER要满了,或者数据接收完成后在往SD卡中写.同理,你也可以把读SD的操作分解下,看如何最大达到节约处理时间的效果。
一般的SD卡的SPI都可以达到10M以上的速率,所以不用太担心1M的SPI速率。
个人认为流程的优化才是解决访问速度的根本,因为主频都相对固定的。流程的优化原则是,尽量让CPU事先流水操作,而不是顺序操作。另外如果能合理地利用DMA,能大大减少数据搬移的操作,节约大量的时间。
Section 2:
1. 如果你能空2K出来,就可以用做2个1K的BUFFER,乒乓使用.这样不会存在操作SD卡时时,不能倒USB的数据的问题.
2. DMA主要用在成块的数据搬移,SPI操作SD卡时,包含命令操作和数据操作,不建议在命令操作时使用DMA,但在数据操作时可以使用DMA功能。一块的数据读写操作,数据访问占到了主要的时间,命令和控制命令的比例要越小越好,否者无效的操作就太多了.
3. 实际应用中全速的U盘的读写速度取决于2个方面,一个是FLASH的读写速度,一个是数据搬移的速度。
排除FLASH ERASE的时间,FLASH的实际读写速度可以达到10M以上的速度。数据搬移的速度取决于主频和U盘的BUFFER及上位机的BUFFER。
此讨论帖链接为:http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55/t/29625.aspx
希望对你有所帮助!O(∩_∩)O~
DeDeBug,
我在你提供的链接中看到下面内容:
Now, as the 2553 only has 512 bytes of RAM I am using an external SPI SRAM chip to provide a bit more storage as an IPv6 address takes up 16 bytes and you can’t get around storing around 4 or 5 of them. Currently, around 2K are used of the SPI ram. Currently supported are basic IPv6 things such as obtaining an address from Router Advertisments (only 1, though), ICMP ping, UDP transmission, and a very simple TCP implementation that support both server and client mode.
The implementation is very rough (especially TCP), so I won’t share it at this time
其实就是使用SPI 外接了一个SPI SRAM chip,并不是实现了直接寻址。故其使用也只是用外部的SRAM做了一个数据的缓存。