当前位置: 技术问答>linux和unix
MTD驱动擦除地址的问题
来源: 互联网 发布时间:2016-10-12
本文导语: 系统中有两片NOR FLash,文件系统为jffs2格式,分区如下 #define FLASH_BASE_ADDR 0x80000000 //每片4M #define FLASH_BASE_ADDR_2 0x81000000 //第二片4M #define FLASH_SIZE 0x400000 /*4 MB*/ #define BUS_WIDTH 2 //flash 信息 static struct map_info...
系统中有两片NOR FLash,文件系统为jffs2格式,分区如下
如分区信息显示,共分了6个区,需要对第4,5个分区进行擦除操作,记录一些历史事件,40字节一条一条的写,
我对其进行擦除除是,不知为什么为把文件系统给擦了,导致启动事panci
下面是makfile中的节点
mtd0,c,90,0 mtd1,c,90,1 mtd2,c,90,2
mtd3,c,90,3 mtd4,c,90,4 mtd5,c,90,5
mtdblock0,b,31,0 mtdblock1,b,31,1 mtdblock2,b,31,2
mtdblock3,b,31,3 mtdblock4,b,31,4 mtdblock5,b,31,5
#define FLASH_BASE_ADDR 0x80000000 //每片4M
#define FLASH_BASE_ADDR_2 0x81000000 //第二片4M
#define FLASH_SIZE 0x400000 /*4 MB*/
#define BUS_WIDTH 2
//flash 信息
static struct map_info lpc24xx_map[2] = {
{
.name = "NXP lpc24xx1",
.bankwidth = BUS_WIDTH,
.size = FLASH_SIZE,
.phys = FLASH_BASE_ADDR,
}
,{
.name = "NXP lpc24xx2",
.bankwidth = BUS_WIDTH,
.size = FLASH_SIZE,
.phys = FLASH_BASE_ADDR_2,
}
};
//分区表
static struct mtd_partition lpc24xx_partitions[] = {
{
.name = "uboot",
.size = 0x00040000, /*256 KB*/
.offset = 0,
.mask_flags = MTD_WRITEABLE,
},{
.name = "Kernel",
.size = 0x00180000, /*1.5 MB*/
.offset = MTDPART_OFS_APPEND,
.mask_flags = MTD_WRITEABLE,
},{
.name = "jffs2", /*2.25 MB*/
.size = MTDPART_SIZ_FULL,
.offset = MTDPART_OFS_APPEND,
}
};
static struct mtd_partition lpc24xx_partitions1[] = {
{
.name = "user",
.size = 0x380000, /*3.5 MB*/
.offset = 0,
},{
.name = "firecord",
.size = 0x40000, /*256 KB*/
.offset = MTDPART_OFS_APPEND,
},{
.name = "applycation", /*256 KB*/
.size = MTDPART_SIZ_FULL,
.offset = MTDPART_OFS_APPEND,
}
};
如分区信息显示,共分了6个区,需要对第4,5个分区进行擦除操作,记录一些历史事件,40字节一条一条的写,
我对其进行擦除除是,不知为什么为把文件系统给擦了,导致启动事panci
下面是makfile中的节点
mtd0,c,90,0 mtd1,c,90,1 mtd2,c,90,2
mtd3,c,90,3 mtd4,c,90,4 mtd5,c,90,5
mtdblock0,b,31,0 mtdblock1,b,31,1 mtdblock2,b,31,2
mtdblock3,b,31,3 mtdblock4,b,31,4 mtdblock5,b,31,5
//对其进行打开时,没有报错,
#define HisFile "/dev/mtd4" //历史事件
if ((Fd = open(HisFile, O_RDWR))