嵌入式系统系统升级内核双备份的实现方式
2012-02-17 12:30
645 查看
1.nand flash MTD分区
kernels/linux-2.6.31.1-cavm1/drivers/mtd/maps/xxxxx-flash.c
/* MTD partitions: From CNW5602 32MB
* mtd0: 0x000C0000 00020000 "bootloader"
* mtd1: 0x00040000 00020000 "factory_config"
* mtd2: 0x00100000 00020000 "sysconfig"
* mtd3: 0x00DE0000 00020000 "kernel_and_fs"
* mtd4: 0x00020000 00020000 "bootloader_env"
* mtd5: 0x00DE0000 00020000 "kernel_and_fs_backup"
* mtd6: 0x001E0000 00020000 "syslog"
* mtd7: 0x00020000 00020000 "transconfig"
* mtd8: 0x00020000 00020000 "factoryconfig"
*/
static struct mtd_partition xxx_flash_partitions[] = {
{
.name = "bootloader", /* u-boot 6 sector (768KB), 0x20000-0xC0000: Reserved Space */
.size = 0x000C0000, /* 0x00000000 .. 0x000BFFFF */
.offset = 0,
.mask_flags = MTD_WRITEABLE, /* force read-only */
}, {
.name = "factory_config", /* Static Configuration from factory, (256KB = 128KB used + 128KB reserved) */
.size = 0x00040000, /* 0x000C0000 .. 0x000FFFFF */
.offset = MTDPART_OFS_APPEND,
.mask_flags = MTD_WRITEABLE, /* force read-only */
}, {
.name = "sysconfig", /* sysconfig 8 sector (1024KB) */
.size = 0x00100000, /* 0x00100000 .. 0x001FFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "kernel_and_fs", /* Linux Kernel and File System (bootpImage) (14208KB) */
.size = 0x00DE0000, /* 0x00200000 .. 0x00FDFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "bootloader_env", /* bottom 1 sector (128KB) for u-boot env variables */
.size = 0x00020000, /* 0x00FE0000 .. 0x00FFFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "kernel_and_fs_backup", /* Linux Kernel and File System (bootpImage) (14208KB) */
.size = 0x00DE0000, /* 0x01000000 .. 0x01DDFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "syslog", /* syslog 15 sector (1920KB) */
.size = 0x001E0000, /* 0x01DE0000 .. 0x01FBFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "transconfig", /* transconfig 1 sector (128KB) */
.size = 0x00020000, /* 0x01FC0000 .. 0x01FDFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "factoryconfig", /* factoryconfig 1 sector (128KB) */
.size = MTDPART_SIZ_FULL, /* 0x01FE0000 .. 0x01FFFFFF */ /* MTDPART_SIZ_FULL= 0x00020000 */
.offset = MTDPART_OFS_APPEND,
}
};
2.在应用层读写open("/dev/mtd3", O_RDWR);
kernels/linux-2.6.31.1-cavm1/drivers/mtd/maps/xxxxx-flash.c
/* MTD partitions: From CNW5602 32MB
* mtd0: 0x000C0000 00020000 "bootloader"
* mtd1: 0x00040000 00020000 "factory_config"
* mtd2: 0x00100000 00020000 "sysconfig"
* mtd3: 0x00DE0000 00020000 "kernel_and_fs"
* mtd4: 0x00020000 00020000 "bootloader_env"
* mtd5: 0x00DE0000 00020000 "kernel_and_fs_backup"
* mtd6: 0x001E0000 00020000 "syslog"
* mtd7: 0x00020000 00020000 "transconfig"
* mtd8: 0x00020000 00020000 "factoryconfig"
*/
static struct mtd_partition xxx_flash_partitions[] = {
{
.name = "bootloader", /* u-boot 6 sector (768KB), 0x20000-0xC0000: Reserved Space */
.size = 0x000C0000, /* 0x00000000 .. 0x000BFFFF */
.offset = 0,
.mask_flags = MTD_WRITEABLE, /* force read-only */
}, {
.name = "factory_config", /* Static Configuration from factory, (256KB = 128KB used + 128KB reserved) */
.size = 0x00040000, /* 0x000C0000 .. 0x000FFFFF */
.offset = MTDPART_OFS_APPEND,
.mask_flags = MTD_WRITEABLE, /* force read-only */
}, {
.name = "sysconfig", /* sysconfig 8 sector (1024KB) */
.size = 0x00100000, /* 0x00100000 .. 0x001FFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "kernel_and_fs", /* Linux Kernel and File System (bootpImage) (14208KB) */
.size = 0x00DE0000, /* 0x00200000 .. 0x00FDFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "bootloader_env", /* bottom 1 sector (128KB) for u-boot env variables */
.size = 0x00020000, /* 0x00FE0000 .. 0x00FFFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "kernel_and_fs_backup", /* Linux Kernel and File System (bootpImage) (14208KB) */
.size = 0x00DE0000, /* 0x01000000 .. 0x01DDFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "syslog", /* syslog 15 sector (1920KB) */
.size = 0x001E0000, /* 0x01DE0000 .. 0x01FBFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "transconfig", /* transconfig 1 sector (128KB) */
.size = 0x00020000, /* 0x01FC0000 .. 0x01FDFFFF */
.offset = MTDPART_OFS_APPEND,
}, {
.name = "factoryconfig", /* factoryconfig 1 sector (128KB) */
.size = MTDPART_SIZ_FULL, /* 0x01FE0000 .. 0x01FFFFFF */ /* MTDPART_SIZ_FULL= 0x00020000 */
.offset = MTDPART_OFS_APPEND,
}
};
2.在应用层读写open("/dev/mtd3", O_RDWR);
相关文章推荐
- 嵌入式系统系统升级内核双备份的实现方式
- 教你如何实现在原系统上编译升级新内核的编译
- 利用SD卡实现嵌入式Linux系统的自动升级
- 基于嵌入式Linux的视频采集系统5--基于MJPEG编码方式的视频采集实现
- 基于at91sam9x5ek嵌入式系统的内核和文件系统双备份实现
- 嵌入式linux烧写内核,文件系统的2种方式
- 在Bootloader中实现嵌入式系统自动升级
- 嵌入式Linux编译系统的设计——Bootloader, 内核,驱动,文件系统,升级镜像等自动化编译打包
- 用中断方式在嵌入式操作系统μC/OS-Ⅱ上实现多任务通信
- 嵌入式系统实现FLASH文件系统存储之我见一
- 自动升级系统的设计与实现(源码)
- mac os系统复制粘贴ctrl+c ctrl+v快捷键实现方式
- Android差分升级原理和实现方式
- SOA系统的实现方式
- 嵌入式 Linux 系统在线升级策略架构
- 烂泥:centos6 yum方式升级内核
- 嵌入式视频监控毕业设计过程中保存的标签。。。嵌入式系统视频信号接收、显示 与存储程序设计与实现
- 简易版聊天系统实现 Socket VS NIO两种实现方式
- 嵌入式系统中的镜像升级
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink