Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1261612
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: 嵌入式

2011-12-14 09:57:35

在AT91BootStrap的board.h文件,修改SDRAM配置参数:
#define BOARD_SDRAM_SIZE   (32*1024*1024)  // 64 MB
#define PINS_SDRAM  {0xFFFF0000, AT91C_BASE_PIOC, AT91C_ID_PIOC,PIO_PERIPH_A, PIO_DEFAULT}
#define BOARD_SDRAM_BUSWIDTH    16
 
    at91sam9260内部的romboot要利用SDRAM来烧写或读取dataflash程序,我之前一直以为romboot的运行过程中只使用内部SRAM,不会用到SDRAM;
    烧程序时,romboot先从PC机接收程序文件并放置在SDRAM,再从SDRAM烧写到dataflash;
    给PC机上传程序时,先读取dataflash的内容并放置到SDRAM,再从SDRAM上传到PC机;
    所以SDRAM很重要,没有SDRAM将不能烧写和读取程序。SAMBA软件默认的配置是32bit的SDRAM,所以换成16bit的SDRAM时,要修改配置。
    首先是SDRAM的宽度改为16bit,否则会烧写程序会出错;
    再次是dataflash的时钟速率,因为16bit的SDRAM速度比32bit慢,所以romboot跟dataflash通信的速度也要相应的调低,否则烧写和读取都会出错。所以之前出现了“程序烧不进去、烧了at91bootstrap后擦除了应用程序、烧写应用程序发现at91bootstrap也会被损坏、读取的dataflash程序跟烧写进去的程序不一致”...等现象。
    在SAMBA软件配置中,9260EK目录下,在SDRAM.tcl,设置AT91C_SDRAMC_DBW_16_BITS来改变SDRAM宽度。在DATAFLASH.tcl,修改variable DATAFLASH_CLK为1000000调低dataflash的操作时钟速率。
阅读(1262) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~