嵌入式linux开发 (二十六) Flash管理(1) 芯片对Flash的管理

2024-05-27 16:18

本文主要是介绍嵌入式linux开发 (二十六) Flash管理(1) 芯片对Flash的管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 总述
根据加载方式,加载源有几种1.映射 // 硬件主动搬运 也可算在其中stm32的主flash // 完全映射s3c2440的nand // 4KB搬运2.bootrom 加载 进 sram dramexynos4412 的 sd卡 搬运到sram // 256KB搬运 i.mx6ull  的 sd卡  搬运到 dram // 几乎不限制大小(打下根据sd卡和dram最小值定) 3.XIP on nors3c2440的nor
芯片对flash的驱动
只要是操作了flash,那么肯定有时序出来,而这种时序如果不是类ram接口
那么肯定是要驱动的.
  • stm32的映射是什么原理
stm32 主Flash支持 XIP ,且在执行时就是 XIP
stm32内部的主Flash 是 类ram接口?
  • 为什么有的rom在 memory map 里面,且可以用地址来直接访问
例如bootrom就被映射到了 memory map 里面
srom 是不是也是因为类ram接口,是不是也是XIP.
  • s3c2440 的搬运是什么原理(无代码,怎么实现搬运)
1. 类ram接口的norflash的搬运是不是就是映射2. nand 的 搬运是怎么回事?
  • XIP on Nor 是什么原理
https://blog.csdn.net/ffdia/article/details/87437872
https://blog.csdn.net/segments/article/details/7623613
https://www.docin.com/p-731715109.htmlNand 也可以 XIP ,请查看https://wenku.baidu.com/view/c1229a22a32d7375a4178012.html
NorFlash 有自己的数据和地址总线,因此可采用类似RAM的随机访问。
NorFlash的特点是芯片内执行(XIP: eXecute In Place),
这样应用程序应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。
如果uboot中的ro段就可以直接在 NorFlash上运行,只需要把rw段和zi段拷贝到RAM中运行即可。
  • bootrom 中集成了哪些flash的驱动
这要看bootrom 支持哪些 二级启动 设备.
一般有
USB
eMMC
SD
NAND
SPI Nor Flash
总结
  • 分类
1. 在memory map 里的flash 可以通过地址访问,这些flash有类ram接口,一般这种flash 被 用作 存储  boot代码编译生成的二进制文件
2. 不在memory map 里的flash需要通过驱动访问一般需要考虑1.硬件接口及驱动// 在之前的 嵌入式linux开发  FLASH(3) 系列中,已经讲述了接口及驱动// stm32的主flash 存在于soc芯片内,应该是类ram接口,用户存储boot代码.// s3c2440 的 nor flash 存在于soc芯片外,也是类ram接口,用户存储boot代码2.是否需要文件系统管理.// 类sram接口的flash 一般是用于存储boot代码的,所以不需要文件系统管理// s3c2440 的 nand// i.mx6ull 可以 sd nand emmc 不用来存储boot代码,而且空间较大,可以用文件系统管理// 为什么要用文件系统管理,因为方便.封装 flash空间的访问 为 对 文件的访问,省掉上层代码对flash空间布局的考虑.// 用文件系统管理的本质是, 封装flash操作接口,提供文件操作接口.

这篇关于嵌入式linux开发 (二十六) Flash管理(1) 芯片对Flash的管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007969

相关文章

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Linux升级或者切换python版本实现方式

《Linux升级或者切换python版本实现方式》本文介绍在Ubuntu/Debian系统升级Python至3.11或更高版本的方法,通过查看版本列表并选择新版本进行全局修改,需注意自动与手动模式的选... 目录升级系统python版本 (适用于全局修改)对于Ubuntu/Debian系统安装后,验证Pyt

Linux从文件中提取特定内容的实用技巧分享

《Linux从文件中提取特定内容的实用技巧分享》在日常数据处理和配置文件管理中,我们经常需要从大型文件中提取特定内容,本文介绍的提取特定行技术正是这些高级操作的基础,以提取含有1的简单需求为例,我们可... 目录引言1、方法一:使用 grep 命令1.1 grep 命令基础1.2 命令详解1.3 高级用法2

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底