制作JFFS2时的erase_block与SPI FLASH中的erase_sector的关系?

该昵称已被占用了了了 该昵称已被占用了了了 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如题, 在制作JFFS2时 需要用到-e 参数(./mkfs.jffs2 -b --pad=524288 -s 256 -e 65536 -d userfs/ -o usrjffs2.img)help命令中,对其的解释为: -e, --eraseblock=SIZE Use erase block size SIZE (default: 64KiB)。

在SPI FLASH(winbond 8M)的datasheet中写到:其erase_sector只能为4KB,erase_block可为32/64kB,

目前在SPI的驱动中,设置block_size为 64KB, erase_sector为 4KB。


问题来了!

将制作好的512K FLASH挂载到系统上后,会报如下错误:
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00022034: 0x5771 instead
Further such events for this erase block will not be printed
Node at 0x00022f60 with length 0x000000f6 would run over the end of the erase block
Perhaps the file system was created with the wrong erase size?
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023000: 0x69c2 instead
进入系统后,发现jffs2中的文件有缺失。


根据报错提示以及网上资料, 原因应该为: 制作JFFS2时的erase_block 与系统的不符~.

但系统这块的block_size(这个应该也就是erase_block的大小吧?)已经是设置成64KB的了。

更改SPI驱动中,erase_sector的大小为64KB,则JFFS2报错问题解决, 但由于该SPI FLASH的
erase_sector是固定死的4K,贸然使用64KB(32KB同样)会造成再擦写FLASH时,极大概率出现某
一erase_secotr大小的块中数据为空的情况,即系统不能启动。


另,在制作JFFS2时,将-e参数设置为4096,以配合FLASH的erase_sector, 但悲催的是mkfs.jffs2
所支持-e 最小为8KB。


请问现在这个报错问题应该如何解决???


一点细节: 尝试添加了 -s 参数,其大小为FLASH page的大小256B,但问题依旧。

当JFFS2中文件较少时,不知为何就不会出现上方的报错。




...全文

相关推荐

嵌入式Linux中Qt与Flash存储架构设计与实践

在嵌入式系统开发中,界面卡顿、配置丢失和升级失败等问题的根因往往隐藏在存储介质与软件架构的交互之中。Flash作为非易失存储的核心,包含NOR、NAND等不同类型,各有其读写特性和适用场景。理解Flash介质原理,是构建可靠嵌入式Linux应用的基础。通过将Qt界面、业务逻辑与存储访问进行分层解耦,并合理选型JFFS2或UBIFS文件系统,能够有效提升系统稳定性。同时,掉电保护、A/B分区升级等策略进一步保障数据安全与系统可用性。这些技术最终都服务于基于Qt的嵌入式Linux软件架构,为解决实际工程中的存储

weixin_34302798

NOR Flash 与 NAND Flash 存储原理对比及嵌入式选型指南

在嵌入式系统设计中,非易失性存储器是数据可靠性的基石,其中 Flash 技术因断电不丢数据、高密度集成等优势,被广泛应用于固件启动、参数存储和海量数据缓存等场景。与传统的 EEPROM 相比,Flash 通过浮栅晶体管或电荷俘获结构大幅降低了单位比特成本,但 NOR 与 NAND 在内部架构上截然不同:NOR 支持随机字节读取和 XIP 就地执行,适合存放启动代码;NAND 按页读写、按块擦除,容量大且成本低,却必须处理坏块管理和 ECC 纠错。理解它们的擦写寿命、扇区结构及接口时序,是进行正确存储选型的前

王瑞恩

基于MPC+二自由度动力学的车辆轨迹跟踪+横向控制Carsim和Simulink联合仿真(Matlab代码、Simulink仿真实现)

内容概要:本文系统阐述了基于模型预测控制(MPC)与二自由度车辆动力学模型的轨迹跟踪与横向控制方法,通过Carsim与Simulink联合仿真平台实现了Matlab代码与Simulink模型的协同验证。该方法结合MPC算法的滚动时域优化特性与车辆二自由度动力学模型的运动学精度,构建了高精度的路径跟踪控制系统,能够有效提升自动驾驶车辆在复杂工况下的行驶稳定性与轨迹跟随精度。文中详细介绍了控制策略设计、车辆动力学建模、仿真参数配置、联合仿真接口搭建及结果分析全过程,涵盖了状态预测、代价函数构建、约束处理与优化求解等核心环节,适用于智能驾驶中路径规划与跟踪控制系统的研发与验证。; 适合人群:具备车辆动力学、现代控制理论(如最优控制、预测控制)基础知识,熟练掌握Matlab/Simulink与Carsim仿真工具,从事自动驾驶、智能车辆控制算法开发的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于智能网联汽车与无人驾驶系统中横向控制算法的设计与性能验证;②作为MPC在车辆运动控制中应用的教学案例,辅助高校课程实践与科研训练;③支撑高水平学术论文复现、课题申报与工程原型开发。; 阅读建议:建议读者在Carsim与Simulink联合仿真环境下动手复现,重点掌握MPC控制器中预测模型的建立、权重系数调节、约束设定及实时性优化等关键技术,并尝试在不同道路曲率、车速及路面附着条件下进行鲁棒性测试,进一步拓展至非线性MPC或自适应MPC等先进控制策略的研究。

荔枝科研社

基于线性时变模型预测控制的车辆轨迹跟踪系统研究(Matlab代码、Simulink仿真实现)

内容概要:本文系统研究了基于线性时变模型预测控制(LTV-MPC)的车辆轨迹跟踪系统,利用Matlab与Simulink工具搭建完整的控制系统仿真模型。研究首先建立车辆动力学模型,并通过局部线性化方法将非线性系统转化为时变状态空间模型,进而构建包含状态预测、滚动优化与反馈校正的MPC控制框架。文中详细阐述了目标函数设计、约束条件处理(如输入饱和、状态边界)、预测时域与控制时域设定等关键技术环节,重点分析LTV-MPC在不同行驶工况下对参考轨迹的跟踪精度、稳定性和实时性表现。通过与传统线性MPC的对比仿真,验证了LTV-MPC在应对系统非线性、提升轨迹跟踪性能方面的显著优势,充分展现了其在自动驾驶路径跟踪中的工程应用价值。; 适合人群:具备自动控制理论、车辆动力学及优化算法基础,熟练掌握Matlab/Simulink编程环境,从事智能驾驶决策控制、路径规划、先进驾驶辅助系统(ADAS)研发的科研人员、工程技术人员及研究生。; 使用场景及目标:①掌握车辆轨迹跟踪中MPC控制器的设计与实现方法;②学习如何将非线性车辆模型在线线性化并集成到预测控制框架中;③深入理解LTV-MPC相较于固定参数MPC的性能优势与适用边界;④通过仿真调试优化权重矩阵、预测时域等关键参数,提升实际控制效果;⑤为自动驾驶系统的控制模块开发、学术论文撰写或毕业课题提供可复现的技术方案与仿真平台。; 阅读建议:建议读者结合所提供的Matlab代码与Simulink模型,逐步运行并剖析各功能模块,重点关注车辆模型线性化过程、状态预测模块构建、QP求解器配置及约束处理机制,通过调整工况和控制参数进行对比实验,深入掌握LTV-MPC的调控机理与性能优化方法。

程序猿鑫

基于扩展卡尔曼滤波(EKF)的激光雷达与雷达异构传感器融合算法研究(Matlab代码实现)

内容概要:本文系统性解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,聚焦于优先级规划算法的工程实现,提出将求解过程划分为几何解析、拓扑建模、调度优化与可视化呈现四个解耦层次的模块化框架。文章深入阐述了动态边权膨胀、节点预留历史、几何惩罚驱动的局部同步机制、Petri网双阶段优化以及双坐标系统可视化等核心技术设计,实现了空间路径规划与时间冲突消解的有效分离,在保障多项式时间复杂度的前提下显著提升了路径规划的成功率与计算效率。该框架不仅具备良好的可复现性和工程扩展性,还为MAPF领域的算法研究、性能评估与教学实践提供了系统化的参考范例。; 适合人群:具备一定MATLAB编程基础,从事机器人路径规划、智能交通、自动化控制、多智能体系统等相关领域的科研人员、工程技术人员及研究生。; 使用场景及目标:① 深入理解并复现多智能体路径规划中优先级规划与冲突消解的核心机制;② 学习如何将复杂的MAPF问题分解为几何、拓扑、调度与呈现的模块化工程实现方法;③ 借鉴动态边权惩罚、Petri网建模、局部同步优化等创新设计思路,以提升自身路径规划算法的鲁棒性与效率。; 阅读建议:建议读者结合文中提供的MATLAB代码与MovingAI标准地图数据集,严格按照章节顺序逐步实现各模块功能,并通过内置的动画演示工具直观观察算法执行过程,重点关注各模块间的接口设计、关键参数(如惩罚权重、同步阈值)的调优策略及其对整体性能的影响。

稷下科研社
评论 7
收藏 已收藏
分享
返回顶部