飞凌am335x开发板,ti的uboot,用的配置文件是am335x_shc_sdboot_defconfig,因为这个配置文件不支持nandflash启动和操作,因此添加了CONFIG_NAND和其他与NAND相关的配置项,除此之外还添加了CONFIG_SYS_NAND_BASE=0x50000000,因为看到网上说这个CONFIG_SYS_NAND_BASE是NAND(GPMC)控制寄存器的起始地址,我就加上了,然后编译下载开始操作,uboot初始化也正确的显示NAND:256MIB,但是当我操作nand erase.chip或者其他读写命令时发现就死机了,我也尝试用printf函数去源码中查找问题(题外话,当我在__read_prefetch_aligned函数中加入printf函数时,哪怕之前操作nand正常的igep_0033配置文件编译的程序也开始进入死循环),没有找到。后来跟am335x_igep003x_defconfig配置文件编译时自动生成autoconf.mk文件进行比较才发现是CONFIG_SYS_NAND_BASE不一样,哪里是CONFIG_SYS_NAND_BASE=0x8000000,后来也改成这个值就正常了,这里想问一下,这个CONFIG_SYS_NAND_BASE是什么意思,难道不是nand控制器的起始地址么,如果不是的话是什么地址,uboot源码文件Mem-common.c(arch/arm/mach-omap2)中,set_gpmc_cs0函数里,有语句
base =CONFIG_SYS_NAND_BASE;我觉得这个就是nand控制器寄存器的起始地址,如果不是的话作用是什么,能否讲解一下。
Nancy Wang:
对应的是GPMC CS的地址,该地址配置是比较灵活的,一般通过GPMC_CONFIG7_i来配置。也可参考:
e2e.ti.com/…/am572x-nand-in-u-boot
,
user4181845:
明白咋回事了,之前看网上有些资料说的是NAND的起始地址,我一开始以为是nand控制寄存器的起始地址,原来这个就是nandflash芯片物理地址的起始地址,我这里是256M,那也就是说只要我的物理地址配置不超过0x1000-0000,应该都是可以的,超过这个物理地址,我的256M就没法放了,懂了,谢谢!
,
Nancy Wang:
感谢分享!