at91sam9260 bootstrap 3.2移植

  • Post author:
  • Post category:其他


第一步:下载源代码

从下面的网址中下载最新的代码:


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, 0x4000, 0x200, 0x10, 0x0, “Samsung K9F1208U0B 64Mb\0”},

{0xecdc, 0x1000, 0x20000, 0x800, 0x40, 0x0, “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

生成bin文件:binaries/at91sam9260ek-nandflashboot-3.2.bin



版权声明:本文为jackyard原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。