HI3536 spi nand flash 求助
2 E币
成为会员,免费下载资料
文件大小:380.83 KB
上传者:ngswfx
时间:2016-06-14 20:19:51
下载量:18
本帖最后由 ngswfx 于 2016-6-14 20:37 编辑
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31498&ptid=11571]wen_jian_1973 发表于 2016-6-12 14:52[/url]
谢谢回复。
还是没搞定,一些信息如下:
[/quote]
你的这个信息,应该就是yaffs2的格式没弄对。
到了kernel后,系统会装载相应的文件系统驱动,kernel不同,支持的类型不同,(当然uboot里面的环境配置中,也要设置对bootarg等,要注明mtd是yaffs)注意看kernel配置里面关于文件系统的选择项。menuconfig界面打开后注意看 filesystem选项里面。检查文件系统支持那种格式。
//我估计你出现的问题就是用了400的压缩工具做的yaffs2,和kernel里面的配置不一致引起的。
device driver里面也要注意nand的驱动配置。
isilicon SPI Nand Controller v100 device Support (NEW) --│ │
│ │ <*> Hisilicon NAND Controller v610 device Support (NEW) --->
//////这些选项要匹配才行的。
/////////按照你的描述,你的Uboot支持的yaffs是400,难道写入的时候,格式有差异? 如果这样就很矛盾了。需要从uboot到kernel,再到产生rootfs用的makeyaffs工具,都必须保持一致。
mkyaffs2image400 mkyaffs2image610 mkyaffs2image504好几个版本呢
我就不是很确定,这里的Hisilicon NAND Controller v610 是不是必须要和mkyaffs2image610保持一致。
rootfs是和芯片关联性最弱的,你可以随便弄几个目录压缩成rootfs,使用mkyaffs400工具压缩成包,然后让kernel去挂载。没必要非用海斯默认给的rootfs。等能进入rootfs环境了,再来考虑里面具体内容即可。
//////////////////////////////////////////////////////////////你的Uboot的确有些怪异,怎么是nand 100而不是610
/*-----------------------------------------------------------------------
* NAND Flash Configuration
*----------------------------------------------------------------------*/
//#define CONFIG_NAND_SUPPORT
#ifdef CONFIG_NAND_SUPPORT
//#define CONFIG_ENV_IS_IN_NAND /* env in nand flash */
#define CONFIG_CMD_NAND
#define CONFIG_SYS_MAX_NAND_DEVICE 1
#define CONFIG_NAND_FLASH_HINFC610
/* #define CONFIG_NAND_FLASH_HISNFC100 */ //海斯默认没开100,开的是610 100是叫做SPI NAND 610是NAND,不解,没弄过这种SPI NAND
#endif /* CONFIG_NAND_SUPPORT */
#ifdef CONFIG_NAND_FLASH_HINFC610
#define CONFIG_SYS_NAND_MAX_CHIPS 1
#define CONFIG_SYS_NAND_BASE NAND_MEM_BASE
#define CONFIG_HINFC610_MAX_CHIP CONFIG_SYS_MAX_NAND_DEVICE
#define CONFIG_HINFC610_REG_BASE_ADDRESS NANDC_REG_BASE
#define CONFIG_HINFC610_BUFFER_BASE_ADDRESS NAND_MEM_BASE
#undef CONFIG_HINFC610_PAGESIZE_AUTO_ECC_NONE
#endif /* CONFIG_NAND_FLASH_HINFC610 */
#ifdef CONFIG_NAND_FLASH_HISNFC100
#define CONFIG_SYS_NAND_MAX_CHIPS 1
#define CONFIG_SYS_NAND_BASE SPI_NAND_MEM_BASE
#define CONFIG_HISNFC100_MAX_CHIP CONFIG_SYS_MAX_NAND_DEVICE
#define CONFIG_HISNFC100_REG_BASE_ADDRESS SPI_NAND_REG_BASE
#define CONFIG_HISNFC100_BUFFER_BASE_ADDRESS SPI_NAND_MEM_BASE
#define CONFIG_HISNFC100_HARDWARE_PAGESIZE_ECC
#endif /* CONFIG_NAND_FLASH_HISNFC100 */
///////////////如果确定是SPI nand 而不是nand,做kernel,用的defig也不同,hi3536_spinand_slave_defconfig:主CPU+从PCIE(或者没有PCIE)+不引导从CPU+SPINAND;
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31498&ptid=11571]wen_jian_1973 发表于 2016-6-12 14:52[/url]
谢谢回复。
还是没搞定,一些信息如下:
[/quote]
你的这个信息,应该就是yaffs2的格式没弄对。
到了kernel后,系统会装载相应的文件系统驱动,kernel不同,支持的类型不同,(当然uboot里面的环境配置中,也要设置对bootarg等,要注明mtd是yaffs)注意看kernel配置里面关于文件系统的选择项。menuconfig界面打开后注意看 filesystem选项里面。检查文件系统支持那种格式。
//我估计你出现的问题就是用了400的压缩工具做的yaffs2,和kernel里面的配置不一致引起的。
device driver里面也要注意nand的驱动配置。
isilicon SPI Nand Controller v100 device Support (NEW) --│ │
│ │ <*> Hisilicon NAND Controller v610 device Support (NEW) --->
//////这些选项要匹配才行的。
/////////按照你的描述,你的Uboot支持的yaffs是400,难道写入的时候,格式有差异? 如果这样就很矛盾了。需要从uboot到kernel,再到产生rootfs用的makeyaffs工具,都必须保持一致。
mkyaffs2image400 mkyaffs2image610 mkyaffs2image504好几个版本呢
我就不是很确定,这里的Hisilicon NAND Controller v610 是不是必须要和mkyaffs2image610保持一致。
rootfs是和芯片关联性最弱的,你可以随便弄几个目录压缩成rootfs,使用mkyaffs400工具压缩成包,然后让kernel去挂载。没必要非用海斯默认给的rootfs。等能进入rootfs环境了,再来考虑里面具体内容即可。
//////////////////////////////////////////////////////////////你的Uboot的确有些怪异,怎么是nand 100而不是610
/*-----------------------------------------------------------------------
* NAND Flash Configuration
*----------------------------------------------------------------------*/
//#define CONFIG_NAND_SUPPORT
#ifdef CONFIG_NAND_SUPPORT
//#define CONFIG_ENV_IS_IN_NAND /* env in nand flash */
#define CONFIG_CMD_NAND
#define CONFIG_SYS_MAX_NAND_DEVICE 1
#define CONFIG_NAND_FLASH_HINFC610
/* #define CONFIG_NAND_FLASH_HISNFC100 */ //海斯默认没开100,开的是610 100是叫做SPI NAND 610是NAND,不解,没弄过这种SPI NAND
#endif /* CONFIG_NAND_SUPPORT */
#ifdef CONFIG_NAND_FLASH_HINFC610
#define CONFIG_SYS_NAND_MAX_CHIPS 1
#define CONFIG_SYS_NAND_BASE NAND_MEM_BASE
#define CONFIG_HINFC610_MAX_CHIP CONFIG_SYS_MAX_NAND_DEVICE
#define CONFIG_HINFC610_REG_BASE_ADDRESS NANDC_REG_BASE
#define CONFIG_HINFC610_BUFFER_BASE_ADDRESS NAND_MEM_BASE
#undef CONFIG_HINFC610_PAGESIZE_AUTO_ECC_NONE
#endif /* CONFIG_NAND_FLASH_HINFC610 */
#ifdef CONFIG_NAND_FLASH_HISNFC100
#define CONFIG_SYS_NAND_MAX_CHIPS 1
#define CONFIG_SYS_NAND_BASE SPI_NAND_MEM_BASE
#define CONFIG_HISNFC100_MAX_CHIP CONFIG_SYS_MAX_NAND_DEVICE
#define CONFIG_HISNFC100_REG_BASE_ADDRESS SPI_NAND_REG_BASE
#define CONFIG_HISNFC100_BUFFER_BASE_ADDRESS SPI_NAND_MEM_BASE
#define CONFIG_HISNFC100_HARDWARE_PAGESIZE_ECC
#endif /* CONFIG_NAND_FLASH_HISNFC100 */
///////////////如果确定是SPI nand 而不是nand,做kernel,用的defig也不同,hi3536_spinand_slave_defconfig:主CPU+从PCIE(或者没有PCIE)+不引导从CPU+SPINAND;
展开》
折叠》