raspberry pi 3上使用jffs2

从jffs2读出文件系统 假设:手上有一份JFFS2的镜像文件,要修改其中的文件,或者添加自己的文件,然后做成一个新的镜像文件.做法如下:1,加载jffs2模块驱动modprobe jffs2.ko 2.加载mtdblock内核模块modprobe mtdblock 3.加载mtdram内核模块,将该设备的大小指定为jffs2根文件系统映像的大小,块擦除大小(即flash的块大小)指定为制作 阅读详情

raspberry pi 3上使用jffs2

最近准备学习linux mtd以及nand flash驱动,无奈手上的mini6410无法使用,而另一块板子—raspberry pi 3上没有nand flash,顿时感觉很囧……。偶然发现kernel可以将内存模拟成mtd,那么就用内存模拟的mtd玩玩好了。

配置kernel

raspberry pi 3的默认配置貌似没有配置mtd,自己需要选上配置,保证mtd.ko,mtdblock.ko,及nandsim.ko能够被编译出来。jffs2.ko也需要编译出来。具体自己通过make menuconfig选上。

生成mtd设备

modprobe mtd

之后就会生成/proc/mtd文件,表示mtd.ko已经插入到kernel

接着,插入nandsim模块,这个模块用于将系统中一部分内存模拟成nand flash。插入之后,在/dev/下就有了mtd0相关的设备节点了。这个nandsim模块在插入的过程中可以接参数,模拟不同型号的nand flash。摘自官网的一段说明:

NAND simulator (nandsim) is an extremely useful debugging and development tool which simulates NAND flashes in RAM or a file. To select the simulated flash type one should specify ID bytes of your flash - the ones which are returned by the “Read ID” command (0x90) - consult the flash manual. The following are examples of input parameters:

modprobe nandsim first_id_byte=0x20 second_id_byte=0x33 - 16MiB, 512 bytes page;
modprobe nandsim first_id_byte=0x20 second_id_byte=0x35 - 32MiB, 512 bytes page;
modprobe nandsim first_id_byte=0x20 second_id_byte=0x36 - 64MiB, 512 bytes page;
modprobe nandsim first_id_byte=0x20 second_id_byte=0x78 - 128MiB, 512 bytes page;
modprobe nandsim first_id_byte=0x20 second_id_byte=0x71 - 256MiB, 512 bytes page;
modprobe nandsim first_id_byte=0x20 second_id_byte=0xa2 third_id_byte=0x00 fourth_id_byte=0x15 - 64MiB, 2048 bytes page;
modprobe nandsim first_id_byte=0xec second_id_byte=0xa1 third_id_byte=0x00 fourth_id_byte=0x15 - 128MiB, 2048 bytes page;
modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15 - 256MiB, 2048 bytes page;
modprobe nandsim first_id_byte=0x20 second_id_byte=0xac third_id_byte=0x00 fourth_id_byte=0x15 - 512MiB, 2048 bytes page;
modprobe nandsim first_id_byte=0xec second_id_byte=0xd3 third_id_byte=0x51 fourth_id_byte=0x95 - 1GiB, 2048 bytes page;
If you do not have enough RAM, you can make nandsim emulate the flash on top of a file. Please, use the cache_file nandsim module parameter.

nandsim can emulate various errors and report wear statistics, which is extremely useful when testing how flash software handles errors (e.g., what does JFFS2 do in case of bit-flips or write errors).

Note, theoretically nandsim can emulate 16-bit bus width devices, but it may not work.

下面我们随意设置一个nand flash的参数

modprobe nandsim first_id_byte=0x20 second_id_byte=0x33

这样在/dev/下就生成了mtd0及mtd0ro 。然后将mtdblock模块插入,才会生成mtdblock设备节点。

modprobe mtdblock

生成jffs2镜像文件

首先肯定是需要安装mtd-utls的,然后通过mkfs.jffs2生成相应的镜像文件

mkfs.jffs2 -s 0x800 -e 0x20000 -p 0x800000 -d mm -o test.img

说明:
页大小0x800,也就是2K
block大小 0x20000 128K
镜像大小 8M
mm是需要打包的目录名,这个可以随意指定
test.img就是最终的镜像文件了

格式化并且挂载jffs2

dd if=test.img of=/dev/mtdblock0
mount -t jffs2 /dev/mtdblock0 /mnt/usb/

挂载完成。

嵌入式Linux设备忘记root密码的三种应急恢复方法详解 在嵌入式Linux系统运维中,忘记root密码是常见的紧急故障场景。Linux系统启动流程遵循Bootloader加载内核、挂载根文件系统、启动init进程的经典路径。理解这一流程是进行系统级调试和恢复的基础。其技术价值在于,通过合法介入启动环节,可以在不破坏系统完整性的前提下恢复访问权限,这对于保障工业控制、网络设备等嵌入式系统的连续运行至关重要。应用场景广泛覆盖无显示器的工控机、智能网关、定制硬件盒子等设备。本文聚焦于通过U-Boot串口终端修改内核参数、从外部存储介质启动临时系统以及利用Initram 阅读详情

相关推荐

嵌入式Linux开发实战:从内核定制到驱动与应用开发

操作系统是计算机系统的核心软件,它管理硬件资源并为应用程序提供运行环境。Linux作为开源操作系统的代表,其模块化设计允许开发者根据需求进行深度定制,这一特性在嵌入式领域尤为关键。通过交叉编译工具链,开发者能够在x86主机上为ARM等架构生成可执行代码,实现了开发效率与运行性能的平衡。其技术价值在于将复杂的硬件差异封装,提供统一稳定的软件平台,使开发者能聚焦业务逻辑而非底层硬件。在应用场景上,这广泛适用于智能家居网关、工业控制面板及自动驾驶域控制器等需要复杂网络功能、丰富人机交互和强大数据处理能力的设备。本

weixin_34194087的博客 820

ubuntu文件系统制作和解包

:make_ext4fs制作文件系统命令 ./make_ext4fs -l 96M -s rootfs.ext4 ./rootfs_glibc -l文件系统大小 -s文件系统压缩 ext4文件系统解压: make_ext4fs制作的文件系统非压缩方式生成的可以直接mount mount -t ext4 -o loop 被挂文件 挂载文件夹 压缩过的ext4文件系统: ./simg2img system.img.ext4 system.img #我的理解为解压缩 mount -t ext4

gpio_01的博客 3197

最新版 Akamai 逆向 风控破解

经过测试,捷星 jetstar.com,德州仪器 ti.com,w6 wizzair.com,还有一些航空公司的都是可以实现一个并发的有需要的可以。

m0_72605044的博客 6618

嵌入式JFFS2固件解包&打包

2.在Ubuntu上挂载MTD设备 1).创建MTD设备 2).擦除mtd0 3).将jffs2固件写入mtd0 3.将MTD设备挂载到本地目录 1). 新建目录&挂载目录 2). 将目录内容拷贝出来 3). 修改rootfs_mtd目录内的内容 按照你的需要来替换/新增/删除内容 4). 解除挂载 4.重新打包 1). 打包jffs2固件 2). 打包squashfs固件 注意-b 64k -comp xz参数,具体的这里不详细解释,网上有很多...

cc88ke的博客 3075

vfsglobal预约系统登录问题全解析(by quqi99)

本文全面解析VFS Global预约系统登录常见问题,包括IP限制、验证码验证失败及账号自动删除等。提供详细的解决方案,如DNS配置、浏览器设置及邮箱选择建议,帮助用户顺利完成签证预约。特别针对中国用户遇到的IP限制问题,给出了实用技巧。

gamma的博客 1340

【HCIP-AI 进阶之路(一)】零成本白嫖算力,7天速通华为人工智能资深开发者认证

《HCIP-AIEIDeveloper认证备考指南》摘要:本文深度解析华为HCIP-AI(H13-331)认证考试要点,涵盖考试大纲、评分标准及备考策略。重点剖析昇腾AI全栈架构,包括达芬奇架构核心计算单元(Cube/Vector/Scalar Unit)和四大层级关系(芯片-CANN-框架-应用)。针对无硬件资源的开发者,提供MindSpore CPU版、ModelArts免费算力和沙箱实验室三种零成本实践方案。文章强调该认证对国企/华为生态企业求职者的价值,并指出多选题是主要失分点。下篇将聚焦计算机视觉

2301_82049134的博客 1183

jffs2 cramfs squashfs在ubuntu上面解包

jffs2 cramfs squashfs在ubuntu上面解包 假如已经打包的嵌入式rootfs或者app等想重新解包获取里面的文件,可以尝试在ubuntu下解包。 jffs2 sudo modprobe mtdblock sudo modprobe mtdram total_size=10240 erase_size=64 sudo dd if=rootfs_uclibc-D17050501.jffs2 of=/dev/mtdblock0 sudo mount -t jffs2 /dev/mtdbl

eyhxh的博客 1222

ISP 基础知识储备

ISP(image signal processing),图像信号处理芯片,在手机摄像头和车载摄像头等领域有着广泛应用,是图像信号处理的核心芯片。 ISP pipeline 流程图如下: 光线经过lens镜头,投射到sensor上,经过光电转换成模拟电信号,再由A/D转换成数字信号,交给ISP芯片进行一系列的处理,在LENS部分也需要进行镜头校正、颜色矫正等一些操作。 然后,得到的bayer ...

qq_39444290的博客 778

ubi 数据结构简单分析

测试ubi镜像的方法: sudo modprobe mtd sudo modprobe mtdblock sudo modprobe nandsim first_id_byte=0xec second_id_byte=0xa1 third_id_byte=0x00 fourth_id_byte=0x15 #其中fourth_id_byte,含义如下 sudo chmod 660 /dev/mtd0* ls -lah /dev/mtd* cat /proc/mtd mtdinfo /dev/mtd0 s

Golden_Chen的专栏 3751

RK3588上跑通Zipformer语音识别的3个坑与填坑实录(附完整编译命令)

本文详细记录了在RK3588开发板上部署Zipformer语音识别模型时遇到的三个典型问题及其解决方案,包括静态库版本冲突、编译脚本配置错误以及模型转换精度调优。文章提供了完整的编译命令和实战步骤,帮助开发者快速在边缘设备上实现高效的语音识别应用。

l6m7n8的博客 715

综述性论文别再堆砌文献!用GPT-5.1 Thinking轻松攻克四大关键难点,真正实现高效高质撰写(附AI提示词)

逻辑构建上以往都是先梳理一篇文献的领域研究脉络,明确其发展阶段、核心议题等,再搭建初步的大纲,借助思维导图或者别的方式将筛选后的文献观点按主题归类到对应章节,理清楚每个章节间的递进或并列关系,最后再逐个章节进行补充过渡表述,那么做的目的其实就是摆脱文献堆砌问题。人工做法往往是对比不同文献的研究方法、数据来源与核心结论,再清晰标注每类成果的优缺点,找到文献中存在的争议焦点,找到之后再梳理争议产生的核心原因,最后在基于现有研究,推出还未被探索的研究方向,从而提炼出创新切入点。2)文献之间的相同点与不同点;

智能AI让学术科研更容易 173

【xboot】xboot环境搭建

XBoot是一个为嵌入式系统设计的高效、灵活的启动加载器(bootloader),它支持多种处理器架构,如ARM和MIPS,并具有广泛的设备树支持。它由Alex Forencich开发和维护,目的是提供一种简单、轻量级的方式来引导嵌入式系统。XBoot的主要特点包括:1.支持多种处理器架构,包括ARM和MIPS。2.提供了对多种SoC和开发板的设备树支持。3.高度可配置,以满足特定需求和限制。4.支持多种文件系统类型,例如FAT、EXT2/EXT3/EXT4、JFFS2等。

qq_38089448的博客 1161

基于 ESP32+IMU+BLE HID 的低延迟无线体感游戏控制器设计与实现

本文设计的基于 ESP32 的低延迟无线体感游戏控制器,通过合理的硬件选型与软件优化,实现了体感姿态感知与无线低延迟传输的核心功能。硬件上采用 ESP32+MPU6050+TP4056 的低成本方案,接线简单、便携性强;软件上通过轻量化库、互补滤波算法与非阻塞 BLE 传输,有效降低了系统延迟,满足体感游戏的使用需求。

weixin_42300449的博客 400

3天搞定嵌入式Linux构建:Buildroot与Yocto实战指南

你还在为嵌入式系统构建耗时一周而烦恼?本文将通过Buildroot与Yocto两大主流工具,带你实现从源码到可烧录镜像的全流程自动化,3天内掌握嵌入式Linux定制技能。读完本文你将获得: - 两种构建工具的选型决策指南 - 最小系统镜像的裁剪优化技巧 - 驱动与应用程序的集成方法 - 常见构建错误的排查方案 ## 嵌入式Linux构建工具对比 嵌入式Linux构建工具主要分为两类:轻量级的B

gitblog_00575的博客 938

FreeRTOS深入教程(任务创建的深入和任务调度机制分析)

本篇文章将带大家深入学习任务的创建和分析任务调度的机制。本篇文章深入的讲解了任务创建的内部实现和任务调度的源代码分析和实现,学习这篇文章有助于更深入的学习FreeRTOS的源码。

m0_49476241的博客 6391

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Chandra在嵌入式Linux开发中的应用:交叉编译与调试助手

本文介绍了如何在星图GPU平台自动化部署🤖 Chandra - AI 聊天助手镜像,以辅助嵌入式Linux开发。该AI助手能提供交叉编译环境配置、内核参数调优及远程调试指导,显著提升开发效率,适用于嵌入式系统优化与调试等典型场景。

weixin_29092787的博客 359

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

如何快速入门RTEMS:10步搭建你的第一个实时嵌入式应用

RTEMS是一款高性能的实时操作系统内核,专为嵌入式系统设计,支持多种处理器架构和开发板。本文将通过10个简单步骤,帮助新手快速搭建基于RTEMS的实时嵌入式应用开发环境,从环境准备到运行第一个程序,轻松掌握RTEMS开发的核心流程。 ### 1. 准备开发环境 首先需要安装RTEMS开发工具链。通过以下命令克隆RTEMS源代码仓库: ```bash git clone https://gitc

gitblog_00438的博客 308

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

嵌入式Linux系统构建:从内核裁剪到应用开发全流程解析

嵌入式系统开发是计算机工程领域的重要分支,它涉及在资源受限的硬件平台上构建高效、可靠的软件系统。其核心原理在于通过系统裁剪和定制化,将通用操作系统适配到特定硬件环境,实现功能、性能和成本的平衡。这一技术在现代物联网、工业控制和智能设备中具有极高价值,能够满足对功耗、实时性和成本敏感的应用需求。嵌入式Linux作为主流解决方案,通过Bootloader引导、内核定制、根文件系统构建等关键环节,为开发者提供了完整的软件栈支持。本文聚焦嵌入式Linux开发实践,深入解析U-Boot配置、内核裁剪策略和Buildr

weixin_30878501的博客 345

嵌入式系统启动学习树:从BL1 到RootFS 全链路指南

嵌入式启动是一条自底向上、逐环解扣硬件决定入口 → ROM 建立信任与加载 → SPL 点亮 DDR → ATF 守卫生态 → U-Boot 组装内核 → Linux 解析 DTB 驱动世界 → RootFS 交付用户空间每个阶段都有独立的知识体系,但彼此通过地址约定、镜像格式、寄存器协议、设备树紧密耦合。建议学习时以日志为线、以文档为据、以动手为证:每攻克一个阶段,就要求自己能用一句话向同事解释"这一阶段输入是什么、输出是什么、失败了怎么查"。掌握这条链路,是从"会用开发板"到"能定制平台"的分水岭。

qq_35223473的博客 1035

利用nandsim挂载ubi文件系统

开发环境:Fedora15开发工具:mtd-utils-1.4.6注意:在linux2.6.28后才加入对ubifs的支持,开发环境主机要求至少是在linux2.6.28后的内核,且已经有nandsim,ubi等相关模块。步骤:1.虚拟出NANDFLASH#modprobe mtd#modprobe mtdblock#modprobe nandsim first_id_byte=0xec seco...

yedushu的博客 3513

UBI文件系统详解

 UBIFS是nokia工程师在the university of Szeged大学帮助下开发的新的Flash filesystem。UBIFS可以认为是JFFS2文件系统的下一代。 UBIFS文件系统是专门为大容量FLASH嵌入式移动设备设计的,挂载UBIFS文件系统必须有mtd接口,而普通的PC机通常都不用mtd管理磁盘,所以这里需要用到nandsim模拟器,用一片RAM空间模拟出mtd设备。...

yedushu的博客 7482

jffs2文件系统的制作以及移植

对根文件系统无需修改,只需要添加内核对jffs2文件系统的支持。 [lingyun@localhostlinux-3.0]$ vt100 [lingyun@localhostlinux-3.0]$ make menuconfig Filesystems  ---> [*]Miscellaneous filesystems  --->    Journalling Flash File

杨正的专栏 3724

ubifs 提取

ubifs 提取  nandsim挂载  mkfs.ubifs  create_ubifs.sh http://blog.csdn.net/hjd03132301/article/details/16804369 制作ubifs文件系统,挂载ubifs  http://blog.chinaunix.net/uid-28410803-id-3892468.html

mengxp的博客 2759

解压jffs2文件——mount jffs2文件到一个文件夹内

http://www.rosoo.net/a/201012/10595.html 可以先把镜像文件挂载到一个目录上, 再把里边的文件拷贝出来. 不过直接用 `mount -t jffs2 -o loop' 挂载 JFFS2 镜像是不行的, 因为 `/dev/loop#' 不是一个 MTD 设备. 这儿就要用到 block2mtd 这个内核模块了. 版权声明:转载时请以超链接形式标明

倔强的晓奇 8784

NAND

Table of contents Can I boot from NAND flash? Is there support for 32-bit wide NAND flash ? How do I erase my MTD partition on NAND flash? Can I copy a JFFS2 image to NAND via /dev/mtdX? Can I use seek/read/write on /dev/mtdX? Must my boot-loader be

一个嵌入式软件工程师的博客 1171
上一篇: I_DIRTY_SYNC与I_DIRTY_DATASYNC
下一篇: OK6410安装Debian
NewbieRock
博客等级 码龄11年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值