jffs2_scan_eraseblock(): Magic和Empty Flash at...解决办法!

EBAZ4203 ZYNQ 移植U-BOOT+Linux+JFFS2 Nand启动-记录 EBAZ4203 ZYNQ 移植U-BOOT+Linux+JFFS2 ,Nand启动 阅读详情

这段时间因为工作上的需要,一直在弄Linux下的JFFS2根文件系统,前期老是出现Empty flash at 0x0012cdff - 0x0012ffff以及jffs2_scan_eraseblock(): Magic.....这样一大堆的警告,虽然不影响linux系统的运行,但是多少对于linux系统来说,还不是很安全的啦,毕竟老是在擦除不该擦除的地址,因为这些地方对应的是linux的内核代码处,总感觉不是很完美的解决问题,因此在网络上也GOOGLE了一下,有很多人都遇到这样的问题,也看到很多人写了关于这样问题的解决办法,可是按照网路上的方法,始终无法解决这类现象,后来,没有办法,只有自己仔细看了一下MTD的详细介绍和分析了相关代码,最后修改两处地方,才将问题解决。

主要还是讲讲JFFS2文件系统的制作以及一些细节吧:mkfs.jffs2

在开发板中采用cat proc/mtd 查看erasesize大小为0x10000,而我制作JFFS文件时,也是选中0x10000的啊,因此可以知道不是这里的问题,最后,看了一下生成的JFFS2的文件大小为1.200M,心里想好奇怪的文件大小哦。最后自己算了一下:1.2x1024x1024=1258291.2=0x133333,最后重新生成JFFS2文件时,设置了一下:--pad=0x133333,再来查看JFFS2的文件大小问1.218M。不一样的哦。这就说明,很可能是将内存脏数据填充到文件系统剩余页部分。而出现了jffs2_scan_eraseblock(): Magic和Empty Flash at...问题,之后烧录到系统中,启动很快,再也看不见这两个错误了。问题完美解决了。

mkfs.jffs2 -n -s 512 -e 64KiB--pad=0x133333 -d rootfs -o myjffs2.img
参数注释:
        -s  页大小,采用默认的设置也可。
        -e  擦除块大小,需和手册相匹配,此处为128(由手册可知),1 Block = (2K + 64)B + 64 Pages=(128K + 4K)bytes
            此处如果设置过大(如 256),将出现jffs2_scan_eraseblock():Magic bitmask......问题
            如果设置过小(如 64),将出现Empth flash at .......问题 
     --pad 设置生成文件大小,其实此处也不算是设置,因为此选项是填充的意思,当生成文件比参数规定大小大时,此选项不起作用只有当生成文件小于规定大小才会进行填充,如果生成的文件大小不规范,很可能将内存脏数据填充到文件系统剩余页部分。

关于Empty flash at .......以及jffs2_scan_eraseblock(): Magic bitmask...... 针对K9F1G08U0B 256M flash正确使用mkfs.jffs2工具如下:mkfs.jffs2 -n -s 2048 -e 128KiB --pad=0x800000 -d root_fs -o kevin.jffs2参数注释:        -s页大小,试验可以不特别要求,512亦可        -n 擦除块大小,需和手册相匹配,此处为128(由手册可知),1 Block = (2K + 64)B + 64 Pages =  (128K + 4K)bytes    此处如果设置过大(如 256 阅读详情

相关推荐

嵌入式 jffs2问题“ jffs2_scan_eraseblock(): Magic和Empty Flash at”

文件系统制作:          以前的内核系统支持的是yaffs文件系统,现在使用的是yaffs2文件系统,因此需要不同的制作工具,我们在此把它称为mkyaffs2image,按照上面的命令解压后它会被安 装到/usr/sbin目录下,并产生2个文件:mkyaffs2image 和mkyaffs2image-128M。 yaffs: #mkyaffs2image root_q

skdkjxy的专栏 2597

[JFFS2文件系统问题(未解决)]Empty flash at 0x012dbffc ends at 0x012dc000

1、Empty flash at Empty flash at ......Empty flash at 0x012dbffc ends at 0x012dc000 //很多JFFS2 notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsyst, 0 of xdatum (0 unchecke

飞行员锐克的笔记 8753

jffs2文件系统制作

jffs2文件系统制作过程

fulinux的博客 9556

jffs2文件系统挂载问题

制作jffs2根文件系统时指定flash每一块要擦除的block size

B_zhang的专栏 2321

网课、网页视频倍速播放简单脚本

一个简单的网页视频倍速脚本

huazn612的博客 1万+

用户行为数据分析 User Behavior Data from Taobao for Recommendation

一、提出问题 二、理解数据 数据来源 阿里云天池数据集:(https://tianchi.aliyun.com/dataset/dataDetail?dataId=649) 本文选取的数据集为UserBehavior.csv,共有5242880条数据。数据的具体类别如下表所示: 用户行为种类有四种,如下表所示 对于数据维度的说明如下: 在本文选取的2017年11月25日到2017年12月3日的时间范围内,不重复的用户数量为10202,不重复的商品ID数为412369,不重复的商品类目ID数为5859,

cccxxxqq的博客 5206

ZYNQ MPSoC QSPI启动与JFFS2根文件系统实战指南

嵌入式Linux系统中,根文件系统的选择直接决定设备在工业现场的长期可靠性。JFFS2作为专为NOR/NAND闪存设计的日志型文件系统,凭借内置磨损均衡、掉电安全和压缩能力,成为资源受限、高可靠场景下的关键技术方案;其与ZYNQ MPSoC平台深度协同,通过QSPI接口实现确定性启动与低干扰通信,规避了eMMC/SD卡在高低温、强电磁环境下的稳定性风险。该组合广泛应用于电力终端、轨交控制、边缘网关等严苛场景,支撑断电不丢数、十年免维护等核心运维指标。本文聚焦JFFS2在ZYNQ MPSoC上的工程落地,涵盖

weixin_34413802的博客 449

从零到一:Mx_yolo本地训练与K210部署实战指南

本文详细介绍了从零开始进行Mx_yolo本地模型训练到K210部署的全流程实战指南。涵盖环境配置、数据准备、模型训练与调优、模型转换及K210部署等关键步骤,并提供了常见问题解决方案和性能优化技巧,帮助开发者高效完成AI模型在嵌入式设备的落地应用。

weixin_29081163的博客 252

jffs2 启动的常见的问题

Q:在启动过程中出现at91sam user.warn kernel: Empty flash at 0x00f0fffc ends at 0x00f10000问题 A:在mkfs.jffs2的时候,加上-e 0x20000指定擦除块的大小。-e是指定擦除块的大小,我们使用的nandflash的块大小为128K字节,因此-e后的参数为(128*1024)10=(20000)16。   Q:启

su_linux的专栏 5599

wxComboBox类的使用方法及示例代码

其中,parent表示该控件的父窗口,ID_COMBOBOX是该控件的ID,用于在事件处理函数中区分不同的控件,"默认选项"是下拉列表框的默认选项,options是wxArrayString类型的数组,用于存储下拉列表框中的选项,style可以指定wxComboBox的样式。wxComboBox是wxWidgets中的一个常用控件,它可以被用来显示一组在下拉列表框中的选项,并允许用户从中选择一个选项。上述就是wxComboBox类的基本使用方法,使用这个控件可以方便地实现下拉列表框的功能。

学习使你进步。 713

AI应用架构师:用RAG解决大模型“幻觉”问题的客服架构设计

在当今的智能客服领域,大语言模型(LLM)凭借流畅的对话能力和强大的理解能力,逐渐取代传统规则式机器人,成为客服系统的核心。但随之而来的“幻觉”问题(即模型编造不存在的信息)却成了致命伤:比如客户问“你们的产品保修期多久”,AI客服可能会自信地回答“3年”,而实际保修期只有1年——这种错误不仅会误导客户,还可能引发投诉、退货甚至法律风险。

AI天才研究院 915

jffs2_scan_eraseblock()问题解决办法

这个问题搞了我三天,尝试了网上的所有办法,均不奏效,只是偶尔能mount上jffs2系统; 尝试的

linux Qt C++ 嵌入式 1万+

【思考模型框架】采用双钻模型:发散(桌面研究/用户访谈)→收敛(需求归类/优先级排序),输出需求规格书、追踪矩阵及产品待办清单。

设计思维双钻模型是一种以用户为中心的需求管理方法,通过"发散-收敛"的双循环确保问题定位准确、方案切实可行。第一钻石(探索→定义)聚焦"找对问题",运用用户访谈、田野调查等方法挖掘真实需求;第二钻石(开发→交付)解决"做对方案",通过原型测试、A/B测试验证可行性。该模型强调低保真验证、多团队协作和真实用户测试,避免资源浪费与伪需求开发。典型应用场景包括产品功能优化、用户体验提升等需要精准落地的需求场景。核心价值在于建立从用户痛点到解决方案的可控闭

奶爸的编程之路,也就一周冷个三天 319

mkfs.jffs2 制作镜像问题整理【原创】

    在新塘开发板NUC972上用华邦 的W25Q128flash 装载程序,rootfs以romfs方式在内核中时没有问题,然后换一种方式,给rootfs 创建独立分区时,加载rootfs失败,使得我要来好好整理一下这部分。     先恢复到rootfs在内核中的方式,然后单独创建一个usr分区来存放app,肯定是失败的,下面就是解决步骤。   /home/zjf/nuc970/nuc9...

张继飞的专栏 3149

061、LQR(线性二次型调节器)控制基础

本文介绍了LQR(线性二次型调节器)控制在飞控系统中的应用。作者通过一次四旋翼炸机事故引出PID控制的局限性,详细讲解了LQR的数学原理、权重矩阵的物理意义以及实际工程实现方法。文章对比了LQR与PID的控制效果,指出LQR在鲁棒性方面的优势,同时也分析了其存在稳态误差等缺点。最后总结了LQR在飞控中的适用场景,建议将LQR与PID结合使用,并预告了下一章将讨论带积分项的LQI控制。全文包含具体案例、代码实现和调参经验,为飞控算法开发者提供了实用指导。

2401_88858637的博客 720

基于 InceptionNeXt 模块增强的 YOLOv8 模型:针对多尺度目标检测的改进与实现

modules.py。

know_F0727的博客 204

jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0000: 0x3030 instead 问题分析

嵌入式设备中,如果系统打印出很多类似这样的的消息:jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0000: 0x3030 instead 可以确认的是系统在挂载jffs文件系统的时候出错了。我有遇到出多次,总体分为两类: (1)调整分区表之后出现这样的情况,或是更换文件系统的时候出现............

Biao 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jffs2文件系统使用

参考 u-boot增加对jffs2分区的识别与加载 u-boot访问jffs2文件系统 JFFS2 文件系统及新特性介绍 Uboot对jffs2的支持 JFFS2文件系统挂载过程优化的分析报告 uboot uboot打开宏支持, #define CONFIG_CMD_JFFS2/*modify by zhuce*/ #define CONFIG_MTD_DEVICE #define CONFI...

黑客三遍猪 2500

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

廖雪峰Python教程[完整版]

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

jffs2_scan_eraseblock(): Magic bitmask 0x1985 的解决办法

于是尝试将menuconfig 中的 Device Drivers > Memory Technology Device (MTD) support > SPI-NOR device support->Use small 4096 B erase sectors 选项取消选中,将[*]改为[ ],如下图。在网上找了很多网页资料,这是由于flash 不支持4k块擦除导致的,需要在spi-nor.c中将。最近在给V3S的flash烧录jffs文件系统镜像结果出现了如下图所示这种打印。

sinat_38390607的博客 2511

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Openwrt实践过程-文件系统异常-jffs2_scan_eraseblock

openwrt系统启动过程中,文件系统异常测试环境测试目的测试过程及分析 测试环境 拓扑环境:openwrt系统+板子 测试目的 正常启动 测试过程及分析 启动过程中,板子出现以下相关打印,文件系统异常 jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00193000: 0x1831 instead 相关命令权...

香蕉一号 1457

文件系统(八):Linux JFFS2文件系统工作原理、优势与局限

在嵌入式Linux设备中,经常使用jffs2文件系统来作为参数区的文件系统格式。至于为什么要使用jffs2来作为参数区的文件系统,我猜大部分人都没有做过多的思考。jffs2在2001年被设计出来,距今已过二十多年,现在在嵌入式设备中它还在被大量使用、说明这套设计本身是没有问题。但是,你是否有思考过,你的jffs2文件系统使用是否正确、合理?如果你存储文件某天突然不见了,你要怎么分析?是flash有坏块,还是被jffs2垃圾回收处理掉了?亦或是应用程序误删除了?又要怎样才能把它恢复回来?

Biao 1365
上一篇: 对Kernel panic-not syncing:No init found...init=option to kernel错误总结!
下一篇: linux的自旋锁struct spinlock_t的使用
wang-bob
博客等级 码龄20年 356粉丝 112原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值