该文章介绍了Nor Flash的基本原理、基本操作以及驱动程序的基本使用。它还提供了在用户空间中驱动Nor Flash设备的示例代码。文章还讨论了如何使用MTD设备来模拟Nor Flash,并展示了如何编写简单的用户空间应用程序来与Nor Flash进行通信。
1.本节使用的nand flash型号为K9F2G08U0M,它的命令如下: 1.1我们以上图的read id(读ID)为例,它的时序图如下: 首先需要使能CE片选 1)使能CLE 2)发送0X90命
介绍TinaLinux Flash,分区,文件系统等存储相关信息,指导方案的开发定制。
廖威雄,就职于珠海全志科技股份有限公司,负责Linux IO全栈研发、性能优化、开源社区开发交流、Linux 内核开源社区pstore/blk,mtdpstore模块的作者、大客户存储技术支持、全志首个UBI存储方案主导人、全志首个RTOS NFTL主导人
pstore文件系统(是的,这是个文件系统)是Persistent Storage的缩写,最早在2010年由 Tony Luck 设计并合入Linux主分支,设计的初衷是在内核Panic/Oops时能自动转存内核日志(log_buf),在Panic重启后,把转存的日志以文件形式呈现到用户空间以分析内核崩溃问题。
Windows 开发环境: Windows 7 64bit 、Windows 10 64bit
因为在做系统升级,AOSP的recovery下有一个flash_image工具,这个工具可以在开机状态下刷写系统分区。源码位置在/bootable/recovery/mtdutils/flash_image.c。
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构; 即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区
下面是小米路由器折腾记录,包括开启 SSH,然后安装 MT 工具箱,主要是为了其中的两个插件,一个是去广告,一个是 SS 代理,不过附带竟然发现了 frp 插件,开心啊。下面就是具体的记录。
内核启动并初始化后,最终目的是像Windows一样能启动应用程序,在windows中每个应用程序都存在C盘、D盘等,而linux中每个应用程序是存放在根文件系统里面,那么挂载根文件系统在哪里,怎么实现
查看分区格式 # df -hT // ext4 文件格式 Filesystem Type Size Used Available Use% Mounted on /dev/system ext4 2.0G 112.4M 1.8G 6% / devtmpfs devtmpfs 107.2M 0 107.2M 0% /dev tmpf
NAND FLASH版本和eMMC版本核心板使用方法基本一致。本文主要描述U-Boot编译、基础设备树文件编译、固化Linux系统NAND FLASH分区说明和NAND FLASH启动系统、固化Linux系统、AND FLASH读写测试等,NAND FLASH版本与eMMC版本核心板在使用方面的不同之处,相同之处将不重复描述。
在系统设计时,在PetaLinux工程里,为boot.bin预留多个启动分区。使用命令cat /proc/mtd或者ls /dev/mtd*,看得到多个分区。
Linux支持多种文件系统类型,包括ext2、ext3、vfat、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的应用编程接口。
在si里搜索上图出现的”S3C2410 flash partition”字段,找到位于common-smdk.c中,里面有个数组smdk_default_nand_part[],内容如下所示:
SPI NOR Framework:这层主要是处理不同厂家的NOR 物理特色差异,初始化SPINOR的工作状态,如工作线宽(1 线、2 线、4 线、8 线)、有效地址位(16M 以上的NOR 需要使用4 地址模式),为上层MTD 提供读写擦接口。
本地用户空间层在 Android 操作系统的安全配置中起到重要作用。 不理解在该层上发生了什么,就不可能理解在系统中如何实施安全架构决策。 在本章中,我们的主题是 Android 引导过程和文件系统特性的,并且描述了如何在本地用户空间层上保证安全性。
基于测试板卡:创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
本篇继续安全系列之介绍,继续学习用户空间安全!本系列内容比较多,需要一步步的跟进。上期学习了android Linux安全介绍,下篇继续介绍android framwork层安全。
SVN英文全称software version number,直译软件版本号,通常为两位数字,取值也必须是0~9的数字,而且99这个值是被保留的。高通平台的SVN号通常存储在Modem镜像中,X12项目也不例外,一般是modem在初始化时读取预编译就已经定义好的SVN号,并且同时从nv中读取到svn号,进行对比,若不一致,则将新svn号写入nv,这样就可以确保svn号能够一直随版本更新,且能够与imei号组成16位的IMEISV,在注网时通过空口上报给网络侧。 通常各通信模组厂商有一套自己定义的规则,用于定义软件版本号和SVN之间的对应关系,如取软件全版本号末两位作为SVN号,后续将以此为例;但通信模组通常会被用于MIFI、CPE、工业网关、工业路由器等场景,由于通信模组本身就是多核,CPU处理性能较强,尤其是高速通信模组,如高通SDX12、SDX55、SDX62、SDX65等平台,其处理能力优越,完全可以作为独立的处理器使用,无需再借助于host设备,这就催生了OpenCPU的方案,很多MIFI、CPE等厂商会直接基于上述平台进行二次开发,并且重新制定自己的版本号、SVN号规则。 但通常SDK仅会给第三方厂商开放boot、system、user等分区,boot分区存储kernel镜像,客户可以集成外设驱动和应用,如wifi、phy等;system是文件系统,客户可以增加自己的应用,删除一些不必要的应用,如网络管理相关、webui、网关配置等;user是客户存储客制化数据的分区,如客户的wifi配置、lan侧管理参数、客制化信息等。客户可以对这三个镜像或分区进行二次开发。
(1) jffs2 JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux, uCLinux中。 Jffs2: 日志闪存文件系统版本2 (Journalling Flash FileSystem v2)主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压
NAND FLASH 原理以及操作详见:https://blog.csdn.net/qq_16933601/article/details/100001443
如上图,问题都是出在fs/yaffs2/下,很多error都讲述:调用的成员名,在struct mtd_info结构体里没有定义.
文件系统是os用来明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 文件系统由三部分组成:文件系统的接口,对对象操作和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
默认的 OTA 方案是基于 recovery 系统完成的。某个产品考虑产品形态和 flash 容量之后,计划去掉 recovery 系统(不考虑掉电安全),这就需要 OTA 方案能支持在只有单个系统的情况下完成升级动作。
linux中有一个让很多初学者都不是特别清楚的概念,叫做“根文件系统”。我接触linux前前后后也好几年了,但是对这个问题,至今也不是特别的清楚,至少没法给出一个很全面很到位的解释。于是,今天我们就来理一理这个话题。
NOR FLASH硬件原理参考:https://blog.csdn.net/qq_16933601/article/details/102653367
在板子上观察到56M的ubi卷,挂载上ubifs之后,df -h显示可用空间约为50M。 如此计算开销超过了10%,那么这个开销随容量如何变化呢,是固定为10%吗还是有其他规律?
类似于Windows下的C、D、E等各个盘,Linux系统也可以将磁盘、Flash等存储设备划分为若干个分区,在不同分区存放不同类别的文件。与Windows的C盘类似,Linux一样要在一个分区上存放系统启动所必需的文件,比如内核映象文件(在嵌入式系统中,内核一般单独存放在一个分区中)、内核启动后运行的第一个程序(init)、给用户提供操作界面的shell程序、应用程序所依赖的库等。这些必需的、基本的文件,合称为根文件系统,它们存放在一个分区中。Linux系统启动后首先挂接这个分区──称为挂接(mount)根文件系统。其他分区上所有目录、文件的集合,也称为文件系统,比如我们常说:“挂接硬盘第二个分区”、“挂接硬盘第二个分区上的文件系统”。
在购买开发板的时候,板子上已经烧写好了bootloader、内核和文件系统。但是在具体使用时,发现板子上划分的内核分区只有2M,但是我编译出来的内核大于2M,于是将内核烧写到nandflash上面时会启动不成功。怎么办呢?查找资料后,找到了解决办法。 步骤如下 1,修改文件uboot-1.1.6/include/configs/100ask2440.h 如果是非jz2440开发板,找不到这个文件。不过大致路径没错,可以先使用以下命令搜索:
SDK切换存储介质需要修改board.dts、sys_config.fex、内核配置、TINA系统配置。另外,在spinor 存储介质下,通过 u-boot-sun8iw21p1.bin 进行烧录,u-boot-spinor-sun8iw21p1.bin 启动,使用sys_partition_nor.fex作为分区表。在非spinor介质(spinand、emmc、sdnand),通过u-boot-sun8iw21p1.bin进行烧录和启动,使用sys_partition.fex作为分区表。下文将介绍spinor切换spinand、spinand切换spinor、spinor切换emmc、spinor切换sdnand四种切换方式。
之前系列的文章介绍了如何编译Uboot、Kernel以及使用默认的ramdisk根文件系统来构建一个完整的嵌入式Linux系统,本篇文章介绍如何从头制作一个放在NAND Flash上的根文件系统。经过我这段时间的总结,rootfs相关的编译、配置等工作还是比较麻烦的。所以你可能会看到一般做核心板的第三方厂家会建议初学者直接使用现成提供的文件系统,比如一个做NUC972核心板的厂家,其文档里这么描述:
sys_partition.fex 文件中的各个分区大小会按照LEB 大小对齐,sunxi_mbr 分区概念与UBI卷(volume)概念相同 需要修改原镜像文件:物理区TOC0 合逻辑区sunxi_mbr.fex 需要动态生成文件:逻辑区ubi layout volume 注意:
在早期的嵌入式系统中,需要存储的数据比较少,数据类型也比较单一,往往使用直接在存储设备中的指定地址写入数据的方法来存储数据。然而随着嵌入式设备功能的发展,需要存储的数据越来越多,也越来越复杂,这时仍使用旧方法来存储并管理数据就变得非常繁琐困难。因此我们需要新的数据管理方式来简化存储数据的组织形式,这就是文件系统的由来。
在我们深入取证以及从设备提取数据之前,我们应该清楚地了解文件系统类型和它们之间的差异。正如我们前面讨论的,在 Android 中进行物理采集有点棘手,一个主要原因是文件系统不同。
OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,可以让路由器变得更智能,简单的说,路由器刷了OpenWrt就相当于一个Linux系统带无线带多网卡的电脑。
1.安装mkyaffsimage, mkyaffs2image命令(用来制作yaffs文件系统)
2. ROM的提取 这一节介绍如何从ROM中提取文件。最常用的就是提取apk文件。在论坛中经常看到求救帖子:“大侠,救命哇,我把XXXX.apk给删掉了,手机出错。。。”。我说,你完全可以自救,不必在论坛里跪求他人或在线等。出路很简单:就是自己先做备份或有手段去提取文件。另外,如果你掌握了文件的提取方法,你就可以从其它ROM中方便地移植你喜欢的应用程序和功能了。例如,移植输入法,更换主题或桌面,等等。 所谓ROM的提取或从ROM中“提取”文件,实际上就是要对factoryfs.rfs文件进行解包,把里面要用的文件复制出来。factoryfs.rfs是镜像文件,用了三星自定义的格式。RFS是Robust File System的缩写。在刷机包里还有cache.rfs和dbdata.rfs,都是同类镜像文件。对它们的解包打包方法是相同的。下面来介绍几种常用解包方法。 1) 直接从卡刷ROM包提取 如果你的ROM是“卡刷”包,直接提取就好啦,不需要解包。卡刷包是zip格式的压缩文件。用WinRAR或WinZip直接解压ROM文件就得到所有的原文件。一个典型的ROM打开后有三个文件夹: META-INF 签名文件和刷机脚本文件 system 这就是factoryfs.rfs内的所有内容 updates 存放内核和基带 进入/system/app目录,一切apk程序都在这里,对应于factoryfs.rfs内的内容和手机的/system目录。刷机就是把/system下的内容复制到规定的分区 2) 用RE管理器从手机里提取,复制到SD卡 还有一种ROM的提取方法,不需要其它软件。用RE管理器,利用它的“多选”-“全选”-“复制”功能,一次把多个文件复制到手机的SD卡上。然后,进入“大容量存储”把文件拷贝到计算机里。这也是做备份的一种常用方法。 3) 利用91手机助手从手机提取 还有一种不需要对ROM解包就可以提取到文件的途径。如果你是91手机助手的使用者,你一定熟悉它。打开91手机助手的文件管理,想提取那个就提取那个。把文件直接拖出来放到你的计算机里就行了。 4) MagicISO/UltraISO/WinImage软件 由于factoryfs.rfs是镜像文件,你可以用某些镜像解包软件来打开刷机文件factoryfs.rfs。常用的软件有MagicISO和UltraISO。论坛里有介绍和下载链接。我在上一节的例子中就是用到MagicISO。类似的软件有很多,你们可能各有利器。最近,也用过WinImage,结果相同。 注意:这些软件只能用于解包提取文件之用,不能进行RFS打包操作。 5) 在Linux下通过对factoryfs.rfs的解包 在Linux环境下,通过对factoryfs.rfs进行解包操作是提取ROM的高级手段。在下一节详细叙述。 3. RFS的解包和打包 先强调一下,我们这一节讲的RFS文件的解包和打包不是为了提取文件之用。我们的目的并不仅仅停留在提取ROM文件上的层面上。更重要的是,我们不但要对factoryfs.rfs能解包,我们需要对包内的内容进行修改后还要能够再打包成RFS文件格式。其最终目的是为了定制自己的ROM刷机包。从技术上讲,RFS文件的打包只能在Linux系统下进行。我们在这一节就介绍如何在Linux系统下对RFS文件的解包和打包。 1) 在计算机的Linux系统下 计算机已经安装了Linux操作系统和配置了java环境。下面是对factoryfs.rfs的解包和RFS打包过程。在Linux下主要使用mount和umount两个命令,要求具有超级用户权限。操作步骤如下: a)先创建一个子目录:/home/sunny/Work b)把factoryfs.rfs复制到/home/sunny/Work这个子目录 c)再在Work之下创建一个子目录System d)在用户终端/home/sunny/Work输入 $ su Password:XXXXXXXX(你的Root口令) 输入“Password”后,获得超级用户权限,提示符变成 root@ubuntu:/home/sunny/Work# e)在超级用户终端/home/sunny/Work# 输入下列命令,挂载 RFS文件factoryfs.rfs 为一个磁盘: # mount –o loop factoryfs.rfs System 进入“磁盘”System目录,你就可以看到factoryfs.rfs解包后的所有内容。像对待正常文件夹一样,你可以用“文件夹”浏览器查看 System文件夹里面的内容,但是不能删除
本文打造一个迷你的LINUX系统,讲述了arm嵌入式设备的常用方法和过程。适合新手入门,当然最好还是知道什么是交叉编译,和懂得linux的基本命令。
在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤。移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序。移植的步骤如下:
因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值)
1、下载官方指定版本固件:https://share.qust.me/redmi-ax6000-1.2.8.bin
首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量,无效则用默认的环境变量. 而我们移植的uboot,由于一直没有使用save,所以没有读不出CRC校验,使用的默认环境变量,如下图所示:
项目过程中使用的是Amlogic A113x芯片, 配置emmc dts 时候,有些参数解释比较模糊,这里着重解释下
更新包含了开发环境搭建、系统编译与烧写和pmon基础知识、启动流程分析、网络加载系统、烧写系统到nand以及新增pmon 移植教程、新增pmon下操作GPIO章节和pmon下Ejtag使用章节等。
小米路由器 AX9000 开发版固件直接获取 SSH - 南浦月 (nanpuyue.com)
UBI全称是Unsorted Block Images,上图为UBI在系统中的层次结构,最下面是flash层(包括flash控制器,各个flash驱动代码,spi-mem层等);MTD层是对flash层的抽象,一个flash可能被划分成不同的分区,每一个分区都会对应一个MTD设备;UBI层是基于MTD层之上的更高层,UBI层抽象出一个个逻辑擦写块,每个逻辑擦写块都有一个物理擦写块与之前对应,有了这个映射,我们就可以加一些软件算法,达到擦写均衡的目的,从而提高flash的使用寿命;再往上是基于UBI层实现和各种文件系统,比如UBIFS。
领取专属 10元无门槛券
手把手带您无忧上云