怎样格式化开发板的nand flash烧录器

2071人阅读
Mini2440系统移植专题(23)
编者:linux中的nand的移植由于使用了MTD技术,所以就没有想象的那么复杂了。
1 Linux-2.6.32.2 内核所支持的Nand Flash 类型
&&&&&& Linux2.6.32.2 已经自带了大部分Nand Flash 驱动, 在linux-2.6.32.2/drivers/mtd/nand/nand_ids.c 文件中,定义了所支持的各种Nand Flash 类型。
2 修改Nand Flash 分区表
但是系统默认的分区不是我们所需的,所以要自已修改,除此之外,还有Nand Flash的结构信息需要增加填写,以便能够适合系统自带的Nand Flash 驱动接口,这可以参考SMDK2440 中关于Nand Flash 设备注册的一些信息。
打开/arch/arm/plat-24xx/common-smdk.c,可以看到这样一个结构体:
static struct mtd_partition smdk_default_nand_part[] = {
&&&&&&&& [0] = {
&&&&&&&&&&&&&&&&& .name = &Boot Agent&,
&&&&&&&&&&&&&&&&& .size = SZ_16K,
&&&&&&&&&&&&&&&&& .offset = 0,
&&&&&&&&&&&&&&&& },
&&&&&&&&&[1] = {
&&&&&&&&&&&&&&&&& .name = &S3C2410 flash partition 1&,
&&&&&&&&&&&&&&&&& .offset = 0,
&&&&&&&&&&&&&&&&& .size = SZ_2M,
&&&&&&&&&&&&&&& },
&&&&&&&& [2] = {
&&&&&&&&&&&&&&&&&& .name = &S3C2410 flash partition 2&,
&&&&&&&&&&&&&&&&&& .offset = SZ_4M,
&&&&&&&&&&&&&&&&&& .size = SZ_4M,
&&&&&&&&&&&&&&&&& },
&&&&&&&& [3] = {
&&&&&&&&&&&&&&&&&& .name = &S3C2410 flash partition 3&,
&&&&&&&&&&&&&&&&&&&.offset = SZ_8M,
&&&&&&&&&&&&&&&&&& .size = SZ_2M,
&&&&&&&&&&&&&&& },
&&&&&&&& [4] = {
&&&&&&&&&&&&&&&&&& .name = &S3C2410 flash partition 4&,
&&&&&&&&&&&&&&&&&& .offset = SZ_1M * 10,
&&&&&&&&&&&&&&&&&&&.size = SZ_4M,
&&&&&&&&&&&&&&&& },
&&&&&&&& [5] = {
&&&&&&&&&&&&&&&&&&& .name = &S3C2410 flash partition 5&,
&&&&&&&&&&&&&&&&&&& .offset = SZ_1M * 14,
&&&&&&&&&&&&&&&&&&& .size = SZ_1M * 10,
&&&&&&&&&&&&&&&&& },
&&&&&&&& [6] = {
&&&&&&&&&&&&&&&&&&& .name = &S3C2410 flash partition 6&,
&&&&&&&&&&&&&&&&&&&&.offset = SZ_1M * 24,
&&&&&&&&&&&&&&&&&&& .size = SZ_1M * 24,
&&&&&&&&&&&&&&&& },
&&&&&&&&&[7] = {
&&&&&&&&&&&&&&&&&&&& .name = &S3C2410 flash partition 7&,
&&&&&&&&&&&&&&&&&&&& .offset = SZ_1M * 48,
&&&&&&&&&&&&&&&&&&&& .size = SZ_16M,
&&&&&&&&&&&&&&& }
这其实就是Nand Flash 的分区表,在Linux-2.6.32.2 中,nand 驱动是被注册为平台设备的,这同样在/arch/arm/plat-24xx/common-smdk.c 文件中看出,如下:
static struct s3c2410_platform_nand smdk_nand_info = {
&&& .tacls = 20,
&&& .twrph0 = 60,
&&&&.twrph1 = 20,
&&& .nr_sets = ARRAY_SIZE(smdk_nand_sets),
&&& .sets = smdk_nand_sets,
/* devices we initialise */
static struct platform_device __initdata *smdk_devs[] = {
&&&&s3c_device_nand,
&&&&smdk_led4,
&& &smdk_led5,
&& &smdk_led6,
&& &smdk_led7,
参考以上结构信息,我们也在自己的mach-mini2440.c 中照此添加实现,同时需要参考友善之臂原厂内核中的Nand 分区表,如下图所示:
因此,在mach-mini2440.c 中加入以下代码;;以下蓝色部分为说明文字
static struct mtd_partition mini2440_default_nand_part[] = {
.name = &supervivi&, ;这里是bootloader 所在的分区,可以放置u-boot, supervivi 等内容,对应/dev/mtdblock0
.size = 0x,
.offset = 0,
.name = &param&, ;这里是supervivi 的参数区,其实也属于bootloader 的一部分,如果u-boot 比较大,可以把此区域覆盖掉,不会影响系统启动,对应/dev/mtdblock1
.offset = 0x,
.size = 0x,
.name = &Kernel&, ;内核所在的分区,大小为5M,足够放下大部分自己定制的巨型内核了,比如内核使用了更大的Linux Logo 图片等,对应/dev/mtdblock2
.offset = 0x,
.size = 0x,
.name = &root&, ;文件系统分区,友善之臂主要用来存放yaffs2 文件系统内容,对应/dev/mtdblock3
.offset = 0x,
.size = 1024 * 1024 * 1024, //
.name = &nand&, ;此区域代表了整片的nand flash,主要是预留使用,比如以后可以通过应用程序访问读取/dev/mtdblock4 就能实现备份整片nand flash 了。
.offset = 0x,
.size = 1024 * 1024 * 1024, //
;这里是开发板的nand flash 设置表,因为板子上只有一片,因此也就只有一个表
static struct s3c2410_nand_set mini2440_nand_sets[] = {
.name = &NAND&,
.nr_chips = 1,
.nr_partitions = ARRAY_SIZE(mini2440_default_nand_part),
.partitions = mini2440_default_nand_part,
;这里是nand flash 本身的一些特性,一般需要对照datasheet 填写,大部分情况下按照以下参数填写即可
static struct s3c2410_platform_nand mini2440_nand_info = {
.tacls = 20,
.twrph0 = 60,
.twrph1 = 20,
.nr_sets = ARRAY_SIZE(mini2440_nand_sets),
.sets = mini2440_nand_sets,
.ignore_unset_ecc = 1,
除此之外,还需要把nand flash 设备注册到系统中,
static struct platform_device *mini2440_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_nand, ;把nand flash 设备添加到开发板的设备列表结构
3 从启动信息中查看分区表
至此,就完成了nand flash 驱动的移植,此时在内核根目录执行“make zImage”,把生成的zImage 烧写到开发板,可以在启动时看到信息,它们正是我们刚刚添加的nandflash 分区信息,以及开发板本身nand flash 的一些信息,这里可以看到是256M 的nand flash。
PS:上面是按手册介绍的,说了一大堆,但是很明显我们刚才声明的结构体信息没有和s3c_device_nand产生任何关联,这样肯定就不会正常工作了。同样使在这个文件里面,一定要在下面的这个函数中加上一句这样的话:
static void __init mini2440_machine_init(void)
#if defined (LCD_WIDTH)
&s3c24xx_fb_set_platdata(&mini2440_fb_info);
&s3c_i2c0_set_platdata(NULL);
&s3c2410_gpio_cfgpin(S3C2410_GPC(0), S3C2410_GPC0_LEND);
&s3c_device_nand.dev.platform_data = &mini2440_nand_
&s3c_device_sdi.dev.platform_data = &mini2440_mmc_
&platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));
&s3c_pm_init();
这样才把这个信息关联到设备,就可以正常工作了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:189012次
积分:2959
积分:2959
排名:第7572名
原创:95篇
转载:33篇
评论:61条
(1)(5)(2)(3)(1)(13)(26)(21)(13)(2)(26)(15)骑士, 积分 2864, 距离下一级还需 136 积分
精华0帖子威望0 点积分2864 点注册时间最后登录
要用力才能点OK吗?
骑士, 积分 2864, 距离下一级还需 136 积分
精华0帖子威望0 点积分2864 点注册时间最后登录
楼主的USB线是好货色哦
平民, 积分 66, 距离下一级还需 34 积分
精华0帖子威望0 点积分66 点注册时间最后登录
x360 super nand flasher&&驱动软件资源:115网盘附件下载: (316.19KB)
公民, 积分 116, 距离下一级还需 184 积分
精华0帖子威望0 点积分116 点注册时间最后登录
刷版图看不清楚啊
佣兵, 积分 352, 距离下一级还需 398 积分
精华0帖子威望0 点积分352 点注册时间最后登录
3楼的看图上开发板上的针脚都给你弄弯了。。。
平民, 积分 32, 距离下一级还需 68 积分
精华0帖子威望0 点积分32 点注册时间最后登录
2148那里有卖的
佣兵, 积分 570, 距离下一级还需 180 积分
精华0帖子威望0 点积分570 点注册时间最后登录
三楼太帅了,,,省时省力啊
游民, 积分 3, 距离下一级还需 7 积分
精华0帖子威望0 点积分3 点注册时间最后登录
感谢楼主~!!!!!!!!!!!!!!!
游民, 积分 4, 距离下一级还需 6 积分
精华0帖子威望0 点积分4 点注册时间最后登录
我们这里有高手啊,学习了
平民, 积分 43, 距离下一级还需 57 积分
精华0帖子威望0 点积分43 点注册时间最后登录
楼大大,图看不清楚,能写详细些吗
Powered by
扫描二维码
下载 A9VG 客户端(iOS, Android)只需一步,快速开始
后使用快捷导航没有帐号?
查看: 1397|回复: 5
有谁会啊,求教啊,请列出详细步骤
这里所讲的方法仅供探讨,不做任何技术支持;需自行实现,如果用于违法的应用,天嵌科技不负任何责任。
1、在u-boot中实现,将nand read命令将整个Nand内容读出来,然后通过usb发送到PC,天嵌科技提供的u-boot没有这个功能,不过你可以根据天嵌科技发布的u-boot中的usb源码进行修改,或者利用天嵌科技u-boot能够读写SD卡的功能,向SD卡写入读取的镜像。
2、在Linux下实现,利用busybox中nand读写程序,读取整个Nand并 ...
yangyu110 发表于
能不能具体讲讲怎么读出开发板文件系统并复制到pc上呢?
这里所讲的方法仅供探讨,不做任何技术支持;需自行实现,如果用于违法的应用,天嵌科技不负任何责任。
1、在u-boot中实现,将nand read命令将整个Nand内容读出来,然后通过usb发送到PC,天嵌科技提供的u-boot没有这个功能,不过你可以根据天嵌科技发布的u-boot中的usb源码进行修改,或者利用天嵌科技u-boot能够读写SD卡的功能,向SD卡写入读取的镜像。
2、在Linux下实现,利用busybox中nand读写程序,读取整个Nand并写到指定的位置:SD卡或所挂载的NFS中。
在u-boot下载模式下,可以用命令:nand read 内存地址&&nand开始地址&&长度,来读取。如果要传到PC上,可以通过完善usb下载软件来实现。文件系统的话,可以在系统启动后压缩到SD卡或U盘的方式获取。
不错哦,现在我能读出kernel和u-boot,能不能详细的讲讲怎么读出文件系统
亚瑟王 发表于
在u-boot下载模式下,可以用命令:nand read 内存地址&&nand开始地址&&长度,来读取。如果要传到PC上,可以 ...
能不能具体讲讲怎么读出开发板文件系统并复制到pc上呢?
yangyu110 发表于
能不能具体讲讲怎么读出开发板文件系统并复制到pc上呢?
亲,问题解决了请将帖子类型修改为“已解决”(请参考:)。
Powered by_NAND-Flash-(1) ARMFLY开发板的 程序源代码,很有用 ARM-PowerPC-ColdFire-MIPS 微处理器
238万源代码下载-
&文件名称: _NAND-Flash-(1)
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 3699 KB
&&上传时间:
&&下载次数: 2
&&提 供 者:
&详细说明:ARMFLY开发板的nand flash程序源代码,很有用-Block ARMFLY development board of the EEPROM program source code
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&F4-007_NAND Flash+FatFS文件系统例程\Doc\F4-007_例程执行结果(串口打印信息的截图).PNG&&...................................\...\例程修改记录.txt&&...................................\...\例程功能说明.txt&&...................................\...\开发环境说明.txt&&...................................\Libraries\CMSIS\CMSIS END USER LICENCE AGREEMENT.pdf&&...................................\.........\.....\Device\ST\STM32F4xx\Include\stm32f4xx.h&&...................................\.........\.....\......\..\.........\.......\system_stm32f4xx.h&&...................................\.........\.....\......\..\.........\Release_Notes.html&&...................................\.........\.....\......\..\.........\Source\Templates\arm\startup_stm32f4xx.s&&...................................\.........\.....\......\..\.........\......\.........\gcc_ride7\startup_stm32f4xx.s&&...................................\.........\.....\......\..\.........\......\.........\iar\startup_stm32f4xx.s&&...................................\.........\.....\......\..\.........\......\.........\system_stm32f4xx.c&&...................................\.........\.....\......\..\.........\......\.........\TASKING\cstart_thumb2.asm&&...................................\.........\.....\......\..\.........\......\.........\.rueSTUDIO\startup_stm32f4xx.s&&...................................\.........\.....\Include\arm_common_tables.h&&...................................\.........\.....\.......\arm_math.h&&...................................\.........\.....\.......\core_cm0.h&&...................................\.........\.....\.......\core_cm3.h&&...................................\.........\.....\.......\core_cm4.h&&...................................\.........\.....\.......\core_cm4_simd.h&&...................................\.........\.....\.......\core_cmFunc.h&&...................................\.........\.....\.......\core_cmInstr.h&&...................................\.........\.....\Lib\ARM\arm_cortexM4bf_math.lib&&...................................\.........\.....\...\...\arm_cortexM4b_math.lib&&...................................\.........\.....\...\...\arm_cortexM4lf_math.lib&&...................................\.........\.....\...\...\arm_cortexM4l_math.lib&&...................................\.........\.....\README.txt&&...................................\.........\STM32F4xx_StdPeriph_Driver\inc\misc.h&&...................................\.........\..........................\...\stm32f4xx_adc.h&&...................................\.........\..........................\...\stm32f4xx_can.h&&...................................\.........\..........................\...\stm32f4xx_crc.h&&...................................\.........\..........................\...\stm32f4xx_cryp.h&&...................................\.........\..........................\...\stm32f4xx_dac.h&&...................................\.........\..........................\...\stm32f4xx_dbgmcu.h&&...................................\.........\..........................\...\stm32f4xx_dcmi.h&&...................................\.........\..........................\...\stm32f4xx_dma.h&&...................................\.........\..........................\...\stm32f4xx_exti.h&&...................................\.........\..........................\...\stm32f4xx_flash.h&&...................................\.........\..........................\...\stm32f4xx_fsmc.h&&...................................\.........\..........................\...\stm32f4xx_gpio.h&&...................................\.........\..........................\...\stm32f4xx_hash.h&&...................................\.........\..........................\...\stm32f4xx_i2c.h&&...................................\.........\..........................\...\stm32f4xx_iwdg.h&&...................................\.........\..........................\...\stm32f4xx_pwr.h&&...................................\.........\..........................\...\stm32f4xx_rcc.h&&...................................\.........\..........................\...\stm32f4xx_rng.h&&...................................\.........\..........................\...\stm32f4xx_rtc.h&&...................................\.........\..........................\...\stm32f4xx_sdio.h&&...................................\.........\..........................\...\stm32f4xx_spi.h&&...................................\.........\..........................\...\stm32f4xx_syscfg.h&&...................................\.........\..........................\...\stm32f4xx_tim.h&&...................................\.........\..........................\...\stm32f4xx_usart.h&&...................................\.........\..........................\...\stm32f4xx_wwdg.h&&...................................\.........\..........................\Release_Notes.html&&...................................\.........\..........................\src\misc.c&&...................................\.........\..........................\...\stm32f4xx_adc.c&&...................................\.........\..........................\...\stm32f4xx_can.c&&...................................\.........\..........................\...\stm32f4xx_crc.c&&...................................\.........\..........................\...\stm32f4xx_cryp.c&&...................................\.........\..........................\...\stm32f4xx_cryp_aes.c&&...................................\.........\..........................\...\stm32f4xx_cryp_des.c&&...................................\.........\..........................\...\stm32f4xx_cryp_tdes.c&&...................................\.........\..........................\...\stm32f4xx_dac.c&&...................................\.........\..........................\...\stm32f4xx_dbgmcu.c&&...................................\.........\..........................\...\stm32f4xx_dcmi.c&&...................................\.........\..........................\...\stm32f4xx_dma.c&&...................................\.........\..........................\...\stm32f4xx_exti.c&&...................................\.........\..........................\...\stm32f4xx_flash.c&&...................................\.........\..........................\...\stm32f4xx_fsmc.c&&...................................\.........\..........................\...\stm32f4xx_gpio.c&&...................................\.........\..........................\...\stm32f4xx_hash.c&&...................................\.........\..........................\...\stm32f4xx_hash_md5.c&&...................................\.........\..........................\...\stm32f4xx_hash_sha1.c&&...................................\.........\..........................\...\stm32f4xx_i2c.c&&...................................\.........\..........................\...\stm32f4xx_iwdg.c&&...................................\.........\..........................\...\stm32f4xx_pwr.c&&...................................\.........\..........................\...\stm32f4xx_rcc.c&&...................................\.........\..........................\...\stm32f4xx_rng.c&&...................................\.........\..........................\...\stm32f4xx_rtc.c&&...................................\.........\..........................\...\stm32f4xx_sdio.c&&...................................\.........\..........................\...\stm32f4xx_spi.c&&...................................\.........\..........................\...\stm32f4xx_syscfg.c&&...................................\.........\..........................\...\stm32f4xx_tim.c&&...................................\.........\..........................\...\stm32f4xx_usart.c&&...................................\.........\..........................\...\stm32f4xx_wwdg.c&&...................................\.........\....._USB_Device_Library\Class\audio\inc\usbd_audio_core.h&&...................................\.........\........................\.....\.....\...\usbd_audio_out_if.h&&...................................\.........\........................\.....\.....\src\usbd_audio_core.c&&...................................\.........\........................\.....\.....\...\usbd_audio_out_if.c&&...................................\.........\........................\.....\cdc\inc\usbd_cdc_core.h&&...................................\.........\........................\.....\...\...\usbd_cdc_if_template.h&&...................................\.........\........................\.....\...\src\usbd_cdc_core.c&&...................................\.........\........................\.....\...\...\usbd_cdc_if_template.c&&...................................\.........\........................\.....\dfu\inc\usbd_dfu_core.h&&...................................\.........\........................\.....\...\...\usbd_dfu_mal.h&&...................................\.........\........................\.....\...\...\usbd_flash_if.h&&...................................\.........\........................\.....\...\...\usbd_mem_if_template.h&&...................................\.........\........................\.....\...\...\usbd_otp_if.h&&...................................\.........\........................\.....\...\src\usbd_dfu_core.c&&...................................\.........\........................\.....\...\...\usbd_dfu_mal.c
&输入关键字,在本站238万海量源码库中尽情搜索:

我要回帖

更多关于 emunand 的文章

 

随机推荐