移 植 背 景 : 手 里 有 两 个 开 发 板 : 北 天 星 的 64M 的 SDRAM , 64M 的
NANDFLASH , 4M 的 DATAFLASH 。 启 动 是 从 DATAFLASH 启 动 , 没 有 对 应 的 从
NANDFLASH 启动代码。
另一个开发板是百特的 64M 的 SDRAM ,256M 的 NANDFLASH,2M 的 DATAFLASH。
启动是支持 nandflash 启动。
我的目的是想用一个 64M 的 nandflash,并且从 nandflash 启动。咨询了北天星的支持,其
回答是 ATMEL 的 at91sam9260 对 nandflash 启动支持的不是很好。所以不支持从 nandflash
启动,也就没给我答案了。又给百特支持去了邮件,经过几次的电话催促,终于回了邮件
“ 修 改 bootstraps 的 nandflash 部 分 的 代 码 使 之 支 持 新 的 flash 。 比 如
nand_ids.h,nandflash.c 等文件。”
主要是对 bootstraps 修改,修改地方如下:(以百特光盘自带的 AT91Bootstrap1.2 为例)
1:AT91Bootstrap1.2/include/nand_ids.h 中的增加两行
{0xecf1, 0x400, 0x20000, 0x800, 0x40, 0x0, "Samsung K9F1G08U0M 128Mb\0"},
{0xec76, 0x1000, 0x4000, 0x200, 0x10, 0x0, "Samsung K9F12808u0b 64Mb\0"},
即变成:
/* Supported NandFlash devices */
static struct SNandInitInfo NandFlash_InitInfo[] = {
{0xecda, 0x800, 0x20000, 0x800, 0x40, 0x0, "Samsung K9F2G08U0M 256Mb "},
{0xecf1, 0x400, 0x20000, 0x800, 0x40, 0x0, "Samsung K9F1G08U0M 128Mb\0"},
{0xec76, 0x1000, 0x4000, 0x200, 0x10, 0x0, "Samsung K9F12808u0b 64Mb\0"},
{0x2cca, 0x800, 0x20000, 0x800, 0x40, 0x1, "Micron MT29F2G16AAB 256Mb "},
{0,}
};
2 即增加了支持三星的 128M,64M 的两款 nandfalsh。
到此 128M 的 nandflash 可完全支持了。因为 128M 和 256M 的 nandflash 读写调用函数是一
个 。 但 要 注 意 烧 写 128M 的 时 候 还 要 对 SAM-BA2.5 里
的 lib/AT91SAM9260-ek/NANDFLASH.tcl 中增加支持 128M 的 nandflash,要不 SAM-BA2.5
无法发现 nandflash,具体修改为(红色部分为后加)
switch $devID {
"ca" {set nf(nandNbBlocks) 0x800
set nf(nandBlockSize) 0x20000
set nf(nandSectorSize) 0x800
set nf(nandSpareSize) 0x40
set nf(nandBusWidth) 1
set nf(monitorName) "SAM-BA-nand.bin"
puts "-I- NandFlash $manName 16 bits 256MB"}
"f1" {set nf(nandNbBlocks) 0x400
set nf(nandBlockSize) 0x20000
set nf(nandSectorSize) 0x800
set nf(nandSpareSize) 0x40
set nf(nandBusWidth) 0
set nf(monitorName) "SAM-BA-nand.bin"
评论5