NOR Flash驱动

发布者:WhisperingWind最新更新时间:2024-07-31 来源: cnblogs关键字:NOR  Flash驱动 手机看文章 扫描二维码
随时随地手机看文章

 

驱动程序

/*
* 参考:
* .linux-2.6.22.6driversmtddevicesmtdram.c
* .linux-2.6.22.6driversmtdmapsphysmap.c
*/
#include
#include
#include
#include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 #include
17 #include
18
19
20 static struct map_info *nor_map;
21 static struct mtd_info *nor_mtd;
22
23
24 //分区信息
25 static struct mtd_partition nor_parts[] = {
26         [0= {
27                 .name         'bootloader_nor',                        
28                 .size         = 0x00040000,                        
29                 .offset = 0,                                        /* offset within the master MTD space */
30         },
31
32         [1= {
33                 .name         'root_nor',                                
34                 .offset = MTDPART_OFS_APPEND,        //紧跟着上一个分区的大小
35                 .size         = MTDPART_SIZ_FULL,                
36         },
37 };
38
39
40
41 /* 1 出入口函数 */
42 static int __init nor_init(void)
43 {
44         /* 2 分配map_info结构体 */
45         nor_map = kmalloc(sizeof(struct map_info), GFP_KERNEL);
46         /******** 2 end ********/
47
48
49         /* 3 设置:物理基地址(phys)、大小(size)、位宽(bankwidth)、虚拟基地址(virt) */
50         nor_map->name 'nor';
51         nor_map->phys = 0;
52         nor_map->size = 1000000;        //16M,大于nor的实际大小
53         nor_map->bankwidth = 2;
54         nor_map->virt = ioremap(nor_map->phys, nor_map->size);
55
56         simple_map_init(nor_map);
57         /******** 3 end ********/
58
59
60         /* 4 使用:调用Nor Flash协议层提供的函数来识别 */
61         printk('use cfi_proben');
62         nor_mtd = do_map_probe('cfi_probe', nor_map);
63         if (!nor_mtd)
64         {
65                 printk('use jedec_proben');
66                 nor_mtd = do_map_probe('jedec_probe', nor_map);
67         }
68         
69         if (!nor_mtd)
70         {
71                 printk('failn');
72                 iounmap(nor_map->virt);
73                 kfree(nor_map);
74                 kfree(nor_mtd);
75                 return -EIO;
76         }
77         /******** 4 end ********/
78
79         /* 5 添加分区:add_mtd_partison */
80         add_mtd_partitions(nor_mtd, nor_parts, 2);
81         /******** 5 end ********/
82         return 0;
83 }
84
85
86 static void __exit nor_exit(void)
87 {
88         iounmap(nor_map->virt);
89         kfree(nor_map);
90         kfree(nor_mtd);
91         del_mtd_partitions(nor_mtd);
92         return;
93 }
94
95 module_init(nor_init);
96 module_exit(nor_exit);
97
98 MODULE_LICENSE('GPL');
99 /******** 1 end ********/

   

   

调试

测试1:通过配置内核支持NOR FLASH

1. make menuconfig

-> Device Drivers

-> Memory Technology Device (MTD) support

-> Mapping drivers for chip access

CFI Flash device in physical memory map

(0x0) Physical start address of flash mapping // 物理基地址

(0x1000000) Physical length of flash mapping // 长度

(2) Bank width in octets (NEW) // 位宽

 

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

5. mount -t jffs2 /dev/mtdblock1 /mnt

在/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


关键字:NOR  Flash驱动 引用地址:NOR Flash驱动

上一篇:NAND Flash驱动
下一篇:关于ARM9 S3C2440 wince6.0 内存 128M的使用问题

推荐阅读最新更新时间:2024-11-07 11:53

三星看好PCM内存潜力 有望取代NAND和NOR闪存
三星表示,PCM(相变内存)所具有的体积小及节电优势可能让这种内存替代现有的移动存储形式.    多年来,半导体厂商一直在致力研究PCM内存,不过,它一直处于试验阶段.PCM内存当中包含有类似玻璃的材料,当其中的原子重新排列,它的状态就会发生改变,晶体的变化对应计算上的0,1状态,从而可以用于数据存储.    一直以来,包括英特尔和英飞凌在内的很多公司都在从PCM的研发,他们试图将这种存储器的体积减小,增存储加速度与容量.支持PCM的人士认为,PCM最终可能取代NAND和NOR闪存.    三星半导体公司的技术营销经理Harry Yoon认为,PCM最早将被应用于手机等移动设备当中,它可以节省30%的耗电.    三
[手机便携]
一加Nord 2 CE不会早于2月发布,预计配备天玑900 SoC
一加 Nord 2 CE 手机此前被曝光,本月已经通过了 BIS 认证,其型号为“IV2201”。根据 mspoweruser 消息,有爆料者在推特表示,这款手机不会早于 2022 年 2 月发布,预计将在印度地区首发。   此前有消息称一加 Nord 2 CE 将于 1 月发布,但最新的爆料对发布日期进行了更正。这款手机预计将搭载联发科天玑 900 5G SoC,配备 6.4 英寸全面屏,刷新率 90Hz,具有 microSD 扩展卡槽。   手机将搭载 4500mAh 电池,支持 65W 快充,预装 Android 12 系统。影像方面,后置主摄预计为 64MP,还配备 8MP 超广角摄像头、2MP 微距镜头、16M
[手机便携]
峰值400MB/s 兆易创新SPI NOR Flash造福应用端
“2019年兆易创新基于四口的通道协议把频率加到了200MHz,数据吞吐量达到200MB/s。自80年代发明SPI协议,经过了大概四五代到第六代产品,数据吞吐量从最初的2.5MB发展到今天的200或400MB,最大程度上发挥了Flash的读取性能。”兆易创新存储事业部资深产品市场总监陈晖先生,在第八届年度中国电子ICT媒体论坛暨2019产业和技术展望研讨会上,就《SPI NOR Flash如何应对高性能应用领域的趋势和需求》为主题,发表了演讲。 兆易创新存储事业部资深产品市场总监陈晖先生 累计出货量超过100亿颗 陈晖先生首先介绍了兆易创新SPI NOR Flash业务和性能:“SPI NOR Flash是存储器大
[嵌入式]
峰值400MB/s 兆易创新SPI <font color='red'>NOR</font> <font color='red'>Flash</font>造福应用端
NorFlash程序烧死的解锁
我们的某位客户,在使用K9仿真器烧写cavium的CNW5602芯片外接的NorFlash时出现因烧写非法代码导致仿真器无法停止内核的问题。所用的Flash器件为一块普通的并行NorFlash器件。问题现像描述如下: 一块空板子(flash是空的)是可以通过K9正常读写flash的,但当flash中已经写入程序后,在测试过程中很容易出现不能通过K9重新烧写flash。 我做了一下实验,在一块可以正常读写的板子上向flash中正常启动地址写入一个文本文件,让板子不能正常启动,这时候再用K9擦除flash时会报“无法停止目标板上的器件”,在设置中选用“特殊停止”可以清除“无法停止目标板器件”的错误,但K9会一直停在“初始化fla
[单片机]
<font color='red'>Nor</font>Flash程序烧死的解锁
Jlink烧写JZ2440的Nor Flash
一、需要Jlink烧写Nor Flash。 这只能在windows下操作。 a.开发板设置为Nor Flash启动,连接电脑,上电。 b.启动j-flash。J-flash操作如下: 在J-Flash里操作: 1.选择菜单“File - Open - Open Project…”,打开附件里的s3c2440.jflash。 图 打开S3C2440工程 2.选择菜单“Target - Connect” 图 连接开发板 3. 选择菜单“File - Open”,打开要烧写的二进制文件,比如u-boot.bin,并且在“Start address”里输入0。 图 打开bin文件 4. 选择菜单“
[单片机]
Jlink烧写JZ2440的<font color='red'>Nor</font> <font color='red'>Flash</font>
一加 Nord 2 CE通过了BIS认证,暗示发布在即
此前 91mobiles 称,一加正在准备一款新的 Nord 系列手机,型号为 Nord 2 CE,预计将在 2022 年初在印度上市。   现有网友发现,OnePlus Nord 2 CE 近日已经通过了 BIS 认证,型号为 IV2201,暗示即将在印度推出。但很可惜 BIS 认证并未透露任何信息。   根据爆料,这款手机将配备三卡插槽,支持双 nano SIM 卡和一个 microSD 卡。   配置方面,一加 Nord 2 CE 配备 6.4 英寸 AMOLED 显示屏,刷新率为 90Hz;采用联发科天玑 900 5G 处理器,8/12GB 内存,最高 256GB 存储空间。   一加 Nord 2 CE 手机将
[手机便携]
一加 <font color='red'>Nor</font>d 2 CE通过了BIS认证,暗示发布在即
Spansion NOR闪存在MediaTek参考设计平台上完成预先验证
解决方案的兼容性将助力生产商为中国市场生产出具有成本效率的高性能主流手机,并加快其上市速度 北京,2007年8月7日—— 全球最大的纯闪存解决方案供应商Spansion(NASDAQ:SPSN)今天宣布,其MirrorBit NOR闪存已完成在MediaTek主流手机参考设计平台上的预先验证。MediaTek总部位于台湾,是全球前十大提供无线通信和数字媒体解决方案的半导体芯片设计公司之一。在MediaTek参考设计平台上完成对Spansion闪存解决方案的预先验证,将使生产商能够将具有成本效率的高性能手机更快地推向中国及其它高速增长市场。 在未来几年内,中国将成为推动新型手机发展的全球三大主要地区之一。对于希望在新兴地区增加
[焦点新闻]
Nordic低功耗蓝牙无线解决方案支持手机游戏设备
2018年3月15日 – Nordic Semiconductor 宣布与广东一家基于增强现实(AR)技术的玩具、游戏开发商 —— 深圳极贝科技有限公司 —— 建立合作。极贝科技选择了使用 Nordic 的低功耗蓝牙 (Bluetooth® Low Energy /Bluetooth LE) nRF52832系统级芯片(SoC)作为其便携式AR游戏设备Geek Unit的无线连接解决方案。 将Geek Unit硬件与其配套的app通过蓝牙配对,即可进入 app 选择游戏,实现组队、建立战场并虚拟地射击现实生活中的玩家,打造刺激的游戏竞技场。 通过Nordic SoC对中央和外设低功耗蓝牙角色的支持,每个 Geek Uni
[网络通信]
<font color='red'>Nor</font>dic低功耗蓝牙无线解决方案支持手机游戏设备
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved