flash 分区 nor nand FLASH区别(开发板启动时) 及 结构 【转自网络】
2014-03-05 23:43
603 查看
nandflash 的分区表 对应于内核arch/arm/mach-s3c2440/mach-mini2440.c中(友善官网提供的2.6.32.2的移植内核)
在linux2.6.32.2 中 已经自带了大部分nandflash驱动
在linux-2.6.32.2/drivers/mtd/nand/nand_ids.c这个文件中
里面定义了所支持的各种nandflash类型
在linux 2.6.32 中 nand驱动是被注册为平台设备
在linux统源代码树中 在linux2.6.32/arch/arm 这个文件夹中
目录plat-s3c24xx中 有common-smdk.c文件
里面定义nandflash的默认分区情况 这个是这个s3c24xx平台的 可能并不适合我们的具体的开发板
因此在这个目录外 有相应得开发板的具体的一些硬件结构信息
mach-s3c2440 这个目录 里面 的mach-mini2440.c中就定义了我们自己开发板上自己划分的适合的分区
static struct mtd_partition friendly_arm_default_nand_part[]
= {
[0]
= {
.name =
"supervivi",//bootloader 所在分区 可以放u-boot supervivi 等对应为/dev/mtdblock0
.size =
0x00040000,
.offset =
0,
},
[1]
= {
.name =
"param",//这里是supervivi 或bootloader(uboot)等参数区
如果uboot较大 可以覆盖此区域 不会影响系统的启动 对应于/dev/mtdblock1
.offset
= 0x00040000,
.size =
0x00020000,
},
[2]
= {
.name =
"Kernel",//内核所在的分区 大小5M 一般内核也就是2点几兆 足够了 对应/dev/mtdblock2
.offset
= 0x00060000,
.size =
0x00500000,
},
[3]
= {
.name =
"root",//文件系统分区 nandflash用的多的yaffs2文件系统 对应/dev/mtdblock3
.offset
= 0x00560000,
.size =
1024 * 1024 * 1024, //
},
[4]
= {
.name =
"nand",//此区域代表了整片的nandflash 主要是预留使用 比如以后可以通过应用程序访问读取/dev/mtdblock4 就能实现备份整片nandflash了
.offset
= 0x00000000,
.size =
1024 * 1024 * 1024, //
}
};
特别注意:对文件系统的分区大小要是nand页的大小的整数倍
否则会出现readonly错误 flash按页读取
//下面为开发板的nandflash设置表 因为板子上只有一片 因此也就只有一个表
static struct s3c2410_nand_set friendly_arm_nand_sets[] = {
[0]
= {
.name =
"NAND",
.nr_chips =
1,
.nr_partitions =
ARRAY_SIZE(friendly_arm_default_nand_part),
.partitions =
friendly_arm_default_nand_part,
},
};
//下面是nand flash 本身的一些特性 一般需要对照datasheet填写 大部分情况下按照以下参数填写即可
static struct s3c2410_platform_nand friendly_arm_nand_info = {
.tacls =
20,
.twrph0 =
60,
.twrph1 =
20,
.nr_sets =
ARRAY_SIZE(friendly_arm_nand_sets),
.sets =
friendly_arm_nand_sets,
.ignore_unset_ecc
= 1,
};
注意:
mini2440_nand_info需要注册到mini2440_map_io中。
static void __init mini2440_map_io(void)
{
s3c24xx_init_io(mini2440_iodesc,
ARRAY_SIZE(mini2440_iodesc));
s3c24xx_init_clocks(12000000);
在linux2.6.32.2 中 已经自带了大部分nandflash驱动
在linux-2.6.32.2/drivers/mtd/nand/nand_ids.c这个文件中
里面定义了所支持的各种nandflash类型
在linux 2.6.32 中 nand驱动是被注册为平台设备
在linux统源代码树中 在linux2.6.32/arch/arm 这个文件夹中
目录plat-s3c24xx中 有common-smdk.c文件
里面定义nandflash的默认分区情况 这个是这个s3c24xx平台的 可能并不适合我们的具体的开发板
因此在这个目录外 有相应得开发板的具体的一些硬件结构信息
mach-s3c2440 这个目录 里面 的mach-mini2440.c中就定义了我们自己开发板上自己划分的适合的分区
static struct mtd_partition friendly_arm_default_nand_part[]
= {
[0]
= {
.name =
"supervivi",//bootloader 所在分区 可以放u-boot supervivi 等对应为/dev/mtdblock0
.size =
0x00040000,
.offset =
0,
},
[1]
= {
.name =
"param",//这里是supervivi 或bootloader(uboot)等参数区
如果uboot较大 可以覆盖此区域 不会影响系统的启动 对应于/dev/mtdblock1
.offset
= 0x00040000,
.size =
0x00020000,
},
[2]
= {
.name =
"Kernel",//内核所在的分区 大小5M 一般内核也就是2点几兆 足够了 对应/dev/mtdblock2
.offset
= 0x00060000,
.size =
0x00500000,
},
[3]
= {
.name =
"root",//文件系统分区 nandflash用的多的yaffs2文件系统 对应/dev/mtdblock3
.offset
= 0x00560000,
.size =
1024 * 1024 * 1024, //
},
[4]
= {
.name =
"nand",//此区域代表了整片的nandflash 主要是预留使用 比如以后可以通过应用程序访问读取/dev/mtdblock4 就能实现备份整片nandflash了
.offset
= 0x00000000,
.size =
1024 * 1024 * 1024, //
}
};
特别注意:对文件系统的分区大小要是nand页的大小的整数倍
否则会出现readonly错误 flash按页读取
//下面为开发板的nandflash设置表 因为板子上只有一片 因此也就只有一个表
static struct s3c2410_nand_set friendly_arm_nand_sets[] = {
[0]
= {
.name =
"NAND",
.nr_chips =
1,
.nr_partitions =
ARRAY_SIZE(friendly_arm_default_nand_part),
.partitions =
friendly_arm_default_nand_part,
},
};
//下面是nand flash 本身的一些特性 一般需要对照datasheet填写 大部分情况下按照以下参数填写即可
static struct s3c2410_platform_nand friendly_arm_nand_info = {
.tacls =
20,
.twrph0 =
60,
.twrph1 =
20,
.nr_sets =
ARRAY_SIZE(friendly_arm_nand_sets),
.sets =
friendly_arm_nand_sets,
.ignore_unset_ecc
= 1,
};
注意:
mini2440_nand_info需要注册到mini2440_map_io中。
static void __init mini2440_map_io(void)
{
s3c24xx_init_io(mini2440_iodesc,
ARRAY_SIZE(mini2440_iodesc));
s3c24xx_init_clocks(12000000);
相关文章推荐
- HttpWatch工具简介及使用技巧
- http://robomongo.org/
- ASP.NET中处理HTTP请求的原理
- android解析httpresponce内容
- 黑马程序员<网络编程UDP\TCP>
- tcpdump+wireshark分析包数据
- HTTP配置
- Android 使用自带的HttpClient进行https请求出现403的解决过程记录
- 网络服务队管理系统
- Linux网络服务_DNS子域授权-Redhat Enterprise 5.9
- UNIX网络编程读书笔记:简介
- 【开源】Https数据读取C++实现
- Asp.net错误“System.Web.HttpException: 超过了最大请求长度”解决办法
- 网络爬虫(二):利用urllib2通过指定的URL抓取网页内容
- 第一个MOOC课程《人群与网络》证书(电子版),好高兴!
- 网络红人斌少代言游戏 2014网络红人
- PON无源光纤网络中ONU的VLAN功能
- HTTP——网关、隧道、中继、Agent代理
- HTTP——Web服务器、代理、缓存
- sgu Perspective 网络流 竞赛图