微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > NOR FLASH驱动程序

NOR FLASH驱动程序

时间:11-21 来源:互联网 点击:

2. make modules

cp drivers/mtd/maps/physmap.ko /work/nfs_root/first_fs

3. 启动开发板

ls /dev/mtd*

insmod physmap.ko

ls /dev/mtd*

cat /proc/mtd

测试2: 使用自己写的驱动程序:

1. ls /dev/mtd*

2. insmod s3c_nor.ko

3. ls /dev/mtd*

4. 格式化:

flash_eraseall -j /dev/mtd1 //-j:表示格式化成jffs2,一般nor flash用jffs2,nand flash用yaffs

//格式化的时候用字符设备mtd1

5. mount -t jffs2 /dev/mtdblock1 /mnt //挂接的时候用块设备mtdblock1

在/mnt目录下操作文件

NOR FLASH识别过程:

do_map_probe("cfi_probe", s3c_nor_map);

drv = get_mtd_chip_driver(name)

ret = drv->probe(map); // cfi_probe.c

cfi_probe

mtd_do_chip_probe(map, &cfi_chip_probe);

cfi = genprobe_ident_chips(map, cp);

genprobe_new_chip(map, cp, &cfi)

cp->probe_chip(map, 0, NULL, cfi)

cfi_probe_chip

// 进入CFI模式

cfi_send_gen_cmd(0x98, 0x55, base, map, cfi, cfi->device_type, NULL);

// 看是否能读出"QRY"

qry_present(map,base,cfi)

.....

do_map_probe("jedec_probe", s3c_nor_map);

drv = get_mtd_chip_driver(name)

ret = drv->probe(map); // jedec_probe

jedec_probe

mtd_do_chip_probe(map, &jedec_chip_probe);

genprobe_ident_chips(map, cp);

genprobe_new_chip(map, cp, &cfi)

cp->probe_chip(map, 0, NULL, cfi)

jedec_probe_chip

// 解锁

cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL);

cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi, cfi->device_type, NULL);

// 读ID命令

cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL);

// 得到厂家ID,设备ID

cfi->mfr = jedec_read_mfr(map, base, cfi);

cfi->id = jedec_read_id(map, base, cfi);

// 和数组比较

jedec_table


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top