在nandflash有程序的情况下可以从nandflash正常启动,但是从SD卡启动时找不到nandflash这个设备,请问这是为什么?
Steven Liu1:
NAND有程序可以正常启动的原因是你选择的启动模式中有NAND启动,所以ROM code做了NAND的初始化。
你这里用SD卡启动找不到nand设备,那就说明你的SD卡这套逻辑中并没有做NAND的初始化操作,我之前在写Uniflash的初始化的时候,是有提到过SDK 6.0上如何在uboot中设置nand的初始化的,参考:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/52381.aspx
Linux uboot需要修改的部分:这部分工作就是对Linux uboot进行移植的工作,主要修改的有三处地方:EEPROM, DDR2/3, NAND FLASH(包括pinmux)
3.1 对于EEPROM操作的修改:由于在官方的开发板上,都会有EEPROM来进行板子的型号辨识,不同板子资源不同,配置也就不同,因此该处的配置会影响到DDR的配置以及NAND flash的配置;一般来说客户自己的开发板上没有eeprom,所以要对此处进行修改。文件位置:uboot的根目录/board/ti/am335x/board.c文件中搜索"eeprom“既可找到配置的地方。
3.2 对于DDR的配置的修改:因为板子上可能使用DDR2或者DDR3,要根据实际情况对UBOOT进行修改。在uboot的根目录/board/ti/am335x/board.c文件中搜索"config_ddr“既可找到配置的地方。
3.3 对于NAND FLASH的修改:这里最常遇到的问题是,选择的板卡并没有对NAND flash进行Pinmux的设置,简单的解决方法是:在uboot/board/ti/am335x/mux.c文件中,在 void enable_board_pin_mux (struct am335x_baseboard_id *header)这个函数实现的第一句中加入
configure_module_pin_mux(nand_pin_mux); 确保nand的Pinmux配置成功。对于NAND Flash的位宽配置,时序参数配置,可参考TRM中的7.1 GPMC章节。其中,常用的NAND位宽配置(8bit和16bit)在GPMC_CONFIG1的13-12bit位上。