第一步:下载源代码
从下面的网址中下载最新的代码:
ftp://www.at91.com/pub/at91bootstrap/
第二步:
开发板的硬件:
cpu AT91SAM9260
SDRAM MT48LC16M 1片(32MB 16bit)
NANDFLASH K9F1208U0c(64MB)
BOOTSTRAP
针对我板子对BootStrap进行了如下修改。
一、因为我用的sdram是32M的,用了13根地址线,所以AT91C_SDRAMC_NR_13就不用改了,如果为12条,则要改为AT91C_SDRAMC_NR_12。但是我们的SDARM的数据线是16位,所以要把AT91C_SDRAMC_DBW_32_BITS,改为AT91C_SDRAMC_DBW_16_BITS(at91sam9260ek.c)
sdram_init(
AT91C_SDRAMC_NC_9 |
AT91C_SDRAMC_NR_13 |
AT91C_SDRAMC_CAS_2 |
AT91C_SDRAMC_NB_4_BANKS |
AT91C_SDRAMC_DBW_16_BITS |
AT91C_SDRAMC_TWR_2 |
AT91C_SDRAMC_TRC_7 |
AT91C_SDRAMC_TRP_2 |
AT91C_SDRAMC_TRCD_2 |
AT91C_SDRAMC_TRAS_5 |
AT91C_SDRAMC_TXSR_8,
(MASTER_CLOCK *7)/1000000);
二、将nand_ids.h中的nandflash参数改成{0xec75,0x800,0x4000,0x200,0x10,0x0,"Samsung K9F5608U0M32MB\0"}
{0xec76,0x1000,"Samsung K9F1208U0B 64Mb\0"},
{0xecdc,0x20000,0x40,"Samsung K9F4G08U0M512Mb\0"},
ID 0xecdc
块的数量 set nf(nandNbBlocks) 0x1000
块的大小 set nf(nandBlockSize) 0x20000
簇的大小 setnf(nandSectorSize) 0x800
闲置空间 set nf(nandSpareSize) 0x40
总线宽度 set nf(nandBusWidth) 0
三、将JUMP_ADDR(board/at91sam9260ek/nandflash/at91sam9260ek.h)的值由23F00000改成21F80000。在高版本中,如3.2中,是在根目录下的Config.in中修改的。(U-BOOT跳转地址)
编译: makeat91sam9260ek_defconfig
make
默认为:dateflash 模式
这时可以用make menuconfig进入配置菜单,来定制,如下图
在这里说话一点,不要选择debug功能,这样只会加大目录文件的大小,我们可以自己写一下printf函数,但一直有一个疑问,就是不能在对nand的操作中用printf,如果调用,就会出现
nand_scan(): Cannot allocate oob_buf;
也可以通过下面的命令来配置:
$ make MEMORY=nandflash at91sam9260ek_defconfig
$make
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。