172 chip->select_chip = s3c2410_nand_select_chip;
173 chip->options = 0;/* 设置位宽等,位宽为8 */
174 } else {
175 chip->IO_ADDR_R = (void *)&s3c2440nand->NFDATA;
176 chip->IO_ADDR_W = (void *)&s3c2440nand->NFDATA;
177 chip->hwcontrol = s3c2440_nand_hwcontrol;
178 chip->dev_ready = s3c2440_nand_devready;
179 chip->select_chip = s3c2440_nand_select_chip;
180 chip->options = 0;/* 设置位宽等,位宽为8 */
181 }
182
183 chip->eccmode = NAND_ECC_SOFT;/* ECC较验方式:软件ECC */
184 }
185
186 #endif
文件中分别针对S3C2410、S3C2440实现了NAND
Flash最底层访问函数,并进行了一些硬件的设置(比如时序、使能NAND Flash控制器等)。新的代码对NAND
Flash的封装做得很好,只要向上提供底层初始化函数board_nand_init来设置好平台/开发板相关的初始化、提供底层接口即可。
最后,只要将新建的nand_flash.c文件编入U-Boot中就可以擦除、读写NAND Flash了。如下修改cpu/arm920t/s3c24x0/Makefile文件即可:
COBJS = i2c.o interrupts.o serial.o speed.o \
usb_ohci.o
改为:
COBJS = i2c.o interrupts.o serial.o speed.o \
usb_ohci.o nand_flash.o
现在,可以使用新编译的u-boot.bin烧写内核映像到NAND Flash去了,请参考15.2.6。
5. 支持烧写yaffs文件系统映像
在实际生产中,可以通过烧片器等手段将内核、文件系统映像烧入固态存储设备中,Bootloader不需要具备烧写功能。但为了方便开发,通常在Bootloader中增加烧写内核、文件系统映像文件的功能。
增加了NAND Flash功能的U-Boot 1.1.6已经可以通过“nand
write ……”、“nand write.jffs2 ……”等命令来烧写内核,cramfs、jffs2文件系统映像文件。但是在NAND
Flash上,yaffs文件系统的性能更佳,下面增加“nand write.yaffs ……”命令以烧写yaffs文件系统映像文件。
“nand write.yaffs ……”字样的命令中,“nand”是具体命令,“write.yaffs ……”是参数。nand命令在common/cmd_nand.c中实现:
U_BOOT_CMD(nand, 5, 1, do_nand,
"nand - NAND sub-system\n",
"info - show available NAND devices\n"
"nand device [dev] - show or set current device\n"
"nand read[.jffs2] - addr off|partition size\n"
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-30.html
和美海军这样的对手玩比和毛子玩会有意义
我看你还能嚣张到什么时候