最近的一个项目使用了Microchip的SAMA5D27-D5M。按照www.at91.com中的说明“git clone git://github.com/linux4sam/at91bootstrap.git”克隆了AT91bootstrap的源码,
版本号:commit fd315b21a04f369ceec707f2220fd3a65323f206
Merge: 684ea39 c3ccd73
Author: Wenyou.Yang <wenyou.yang@microchip.com>
Date: Mon Dec 4 08:52:51 2017 +0800
并按照说明分别执行 :$ make mrproper
$ make sama5d27_som1_eksd_uboot_defconfig
$ make
顺利编译得到boot.bin。
但是这个 sama5d27_som1_eksd_uboot_defconfig 是针对 SAMA5D27-D1G的,在make menuconfig中虽然有64MB和128MB的选项,但是代码里其实完全没有理会
CONFIG_RAM_64MB 和 CONFIG_RAM_128MB 这两个编译选项,导致我走了2天的弯路。
修改文件:board/sama5d27_som1_ek/sama5d27_som1_ek.c 中 ddramc_reg_config函数,增加如下红色代码:
ddramc_config->cr = AT91C_DDRC2_NC_DDR10_SDR9 |
AT91C_DDRC2_NR_13 |
AT91C_DDRC2_CAS_3 |
AT91C_DDRC2_DISABLE_RESET_DLL |
AT91C_DDRC2_WEAK_STRENGTH_RZQ7 |
AT91C_DDRC2_ENABLE_DLL |
#ifdef CONFIG_RAM_64MB
AT91C_DDRC2_NB_BANKS_4 |
#elif CONFIG_RAM_128MB
AT91C_DDRC2_NB_BANKS_8 |
#else
#error "Choice 128MB or 64MB DDR2 RAM"
#endif
AT91C_DDRC2_NDQS_ENABLED |
AT91C_DDRC2_DECOD_INTERLEAVED |
AT91C_DDRC2_UNAL_SUPPORTED;