bootloader---23.u-boot-2010.06-rc1移植之3nand flash移植
发布时间:2020-12-15 20:00:53 所属栏目:百科 来源:网络整理
导读:增加nand flash 特性 当可以正常启动serial可以显示之后,接下来移植nand flash 1. nand flash的初始化是在 arch/arm/lib/board.c中 arch / arm / lib / board . c? start_armboot? { ????# if ?defined ( CONFIG_CMD_NAND ) ???? ????puts? ( "NAND: " ) ;
增加nand flash 特性
当可以正常启动serial可以显示之后,接下来移植nand flash
1. nand flash的初始化是在 arch/arm/lib/board.c中
2.nand的初始化
//
这儿调用了s3c2440_get_base_nand,需要在include/asm/arch-s3c24x0/s3c2410.h中添加这个函数
? ? ??
? ? ??//以下初始化函数指针
#define S3C2440_NFCONF_TACLS(x)? <<12) 5. driver/mtd/nand/nand_base.c
L3061
start_armboot-> nand_init->nand_init_chip
6. driver/mtd/nand/nand_base.c ? ?L2770
start_armboot-> nand_init->nand_init_chip->nand_scan
6. driver/mtd/nand/nand_base.c ? ?L2555
start_armboot>?nand_init>nand_init_chip>nand_scan-->nand_scan_ident
7.??driver/mtd/nand/nand_base.c ? ?L2603
*
? ? ? //以下是读取设备ID的过程:参见K9F2G08U0B的datasheet
? ? ? //1. 发送命令0x90 ? 2.发送地址0x00 ?3.读取第一个字节为manufacturer 第二个字节为DEV_ID??
2. 在include/configs/smdk2410.h中添加
#define CONFIG_CMD_NAND ??
1
#define CONFIG_SYS_MAX_NAND_DEVICE ?
1
#define CONFIG_SYS_NAND_BASE
???
0x4E000000
3.start_armboot--> nand_init 在driver/mtd/nand/nand.c中
nand_init-->nand_init_chip-->board_nand_init
4. board_nand_init函数在driver/mtd/nand/s3c2410_nand.c中
不过这需要在?include/configs/smdk2410.h中添加
#define CONFIG_NAND_S3C2410
1
5.删除多余的文件
root@ubuntu:~/u-boot-2010.06-rc1/drivers/mtd/nand# rm atmel_nand.c bfin_nand.c davinci_nand.c fsl_elbc_nand.c fsl_upm.c kb9202_nand.c kirkwood_nand.c kmeter1_nand.c mpc5121_nfc.c mxc_nand.c ndfc.c nomadik.c ?s3c64xx.c spr_nand.c omap_gpmc.c nand_plat.c?
同时在driver/mtd/nand/Makefile中删除多余的东东,不删也没有关系。
root@ubuntu:~/uboot/u-boot-2010.06-rc1# vi drivers/mtd/nand/Makefile?
6. 这里候就可以编译通过了,不过打印的是
DRAM: ?64 MiB
Flash: 512 KiB
NAND: ?No NAND device found!!!
0 MiB
*** Warning - bad CRC,using default environment
7. 修改一下driver/mtd/nand/s3c2410_nand.c中的board_nand_init函数
a.将driver/mtd/nand/s3c2410_nand.c中所有的2410替换为2440
8. 在include/asm/arch-s3c24x0/s3c2410.h中添加
#define S3C24X0_NAND_BASE
0x4E000000
static inline struct s3c2440_nand *s3c2440_get_base_nand(void)
{
return (struct s3c2440_nand *)S3C24X0_NAND_BASE;
}
9.?在driver/mtd/nand/s3c2410_nand.c中
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |