UBoot中CFI Nor Flash驱动详解与使用示例
4星 · 超过85%的资源 需积分: 9 38 浏览量
更新于2024-07-22
收藏 1.02MB PDF 举报
"uboot下Nor Flash驱动及使用的详细介绍,包括驱动初始化、擦除和烧录操作,适用于遵循CFI规范的Nor Flash芯片。"
在嵌入式系统中,Nor Flash是一种常见的非易失性存储器,用于存储固件和引导加载程序。本文主要关注在uboot环境下对Nor Flash的驱动程序设计和使用。uboot是一个开源的引导加载程序,它负责初始化硬件,加载操作系统内核,并提供了一些基本的设备管理功能。
标题提及的"uboot下Nor flash的驱动"是指uboot中处理Nor Flash的软件模块,这部分代码通常位于`drivers/mtd/cfi_flash.c`中。Nor Flash驱动的核心任务是识别和初始化Nor Flash芯片,以及提供读写擦除等操作。在uboot中,Nor Flash的初始化过程始于`arch/mips/cpu/octeon/start.S`中的`board_init_r`函数,该函数会调用`flash_init()`来初始化所有Flash银行。
`flash_init()`函数遍历配置的最大Flash银行数(由`CONFIG_SYS_MAX_FLASH_BANKS`定义),并尝试检测和配置每个银行。对于遵循CFI(Common Flash Interface)规范的芯片,uboot会调用`flash_detect_legacy()`,如果芯片不是旧式的CFI芯片,该函数会返回0。接着,`flash_get_size()`被用来确定每个银行的大小,这很重要,因为后续的读写操作需要知道可用的存储空间。
`flash_get_size()`函数接收物理地址和银行编号,通过查询`flash_info`结构体来获取闪存的信息。这个结构体包含了关于每个Flash银行的重要信息,如ID、大小和特性。在识别和配置完所有的Flash银行后,uboot就能够正确地与Nor Flash进行交互了。
对于Nor Flash的使用,有几点需要注意:
1. **读操作**:Nor Flash允许直接按地址读取数据,类似于RAM。
2. **写操作**:在写入之前,必须先进行擦除操作。擦除操作通常是按扇区进行的,且一旦开始,必须擦除整个扇区,不能部分擦除。
3. **擦除操作**:新型Nor Flash芯片支持3V电压下的全扇区擦除和写入,比老式芯片更高效。
uboot提供的示例代码展示了如何进行基本的擦除和烧录操作,这些操作同样适用于Linux系统,只是Linux中还需要处理分区信息。通过阅读芯片的手册和uboot的源码,开发者可以深入了解Nor Flash的使用逻辑。
uboot的Nor Flash驱动设计简洁且通用,特别是对于符合CFI规范的芯片,其驱动的可移植性和兼容性较强。了解这些基础知识对于开发和维护嵌入式系统的固件至关重要。
2017-10-20 上传
2011-10-28 上传
2023-05-19 上传
2023-04-21 上传
2023-05-12 上传
2023-05-13 上传
2023-05-24 上传
2023-05-12 上传
2023-07-28 上传
韩大卫
- 粉丝: 120
- 资源: 21
最新资源
- C语言快速排序算法的实现与应用
- KityFormula 编辑器压缩包功能解析
- 离线搭建Kubernetes 1.17.0集群教程与资源包分享
- Java毕业设计教学平台完整教程与源码
- 综合数据集汇总:浏览记录与市场研究分析
- STM32智能家居控制系统:创新设计与无线通讯
- 深入浅出C++20标准:四大新特性解析
- Real-ESRGAN: 开源项目提升图像超分辨率技术
- 植物大战僵尸杂交版v2.0.88:新元素新挑战
- 掌握数据分析核心模型,预测未来不是梦
- Android平台蓝牙HC-06/08模块数据交互技巧
- Python源码分享:计算100至200之间的所有素数
- 免费视频修复利器:Digital Video Repair
- Chrome浏览器新版本Adblock Plus插件发布
- GifSplitter:Linux下GIF转BMP的核心工具
- Vue.js开发教程:全面学习资源指南