代码编织梦想

一次Config结果保存不成功的修复

背景

(Zynq)Arm,QT界面实现,测试人员发现,UI界面配置修改后,马上关机后重启,UI设置值不正确;启动过程中有一定概率出现卡顿。【(别人定制的系统和程序实现)配置显示使用QSetting实现】

Invetigation&Debug

1.文件系统只读问题

第一印象,这个问题简单,应该是保存完没有同步。 自动保存完QSetting.sync() , 修改完不起作用
接上串口,看看输出,马上发现文件系统变成只读了;

串口输出如下

FAT-fs (mmcblk0p1): error, fat_free_clusters: deleting FAT entry beyond EOF
FAT-fs (mmcblk0p1): Filesystem has been set read-only

mount 命令检测,发现FAT文件系统变成只读了/dev/mmcblk0p1 on /mnt/sd type vfat (ro

mount

/dev/mmcblk0p1 on /mnt/sd type vfat (ro,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

知道问题所在,那就简单了,数据单独分区,并设置error=continue

mount -t vfat /dev/mmcblk0p2 /mnt/sd/application -o errors=continue

这下应该好了吧,可以分区设置不生效,why? 新设置的分区选项依然errors=remount-ro,操作几次读写依然变成ro; 什么问题?
反复查阅log,发现问题,从uImage继承了mount特性,该设备被mount了两次

mount 
...
/dev/mmcblk0p2 on /run/media/mmcblk0p2 type vfat (ro,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
....
/dev/mmcblk0p2 on /mnt/sd/application type vfat (<font color=red>ro</font>,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,<font color=red>errors=remount-ro</font>)

怎么办? 修改uImage? 但是第一个分区依然像保持 remount-ro-on-error. 所以方法是在启动脚本里把该分区umount一次

umount /run/media/mmcblk0p2 1>2& /dev/null
mount -t vfat /dev/mmcblk0p2 /mnt/sd/application -o errors=continue

这些应该大功告成了吧! 😃 😃 😃

QSetting Fallback Mechanism

现在文件系统没有再变成只读;问题略有好转,但依然会出现卡顿和保存不正常。经过/proc/xxx/ 定位分析,发现与QSetting的 fallback[1]机制有关。关闭fallback, getValue by failure-with-dafault value. 同时每次设置完value调用系统sync。经过测试,问题解决

If a key cannot be found in the first location, the search goes on in the second location, and so on. This enables you to store system-wide or organization-wide settings and to override them on a per-user or per-application basis. To turn off this mechanism, call setFallbacksEnabled(false). 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/alone4together/article/details/111059246

win10和ubuntu18.04双系统解决罗技k380用一个频道无缝连接-爱代码爱编程

win10和ubuntu18.04双系统解决罗技k380用一个频道无缝连接 ubuntu18.04中设置win10系统下设置 不知道你是因为什么采用了linux和win10双系统,但是如果你恰好也有一个罗技k380无线键盘的话,那你一定被这个问题困扰过,在win10系统连接的好好的,一换成ubuntu系统就又得重新连接,对于我来说,ubuntu

chrony源码编译-爱代码爱编程

一、简介 Chrony是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器(NTP)同步,因此让你的时间保持精确。它由两个程序组成,分别是chronyd和chronyc。chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。chronyc提供了一个用户界面,用于监控性能并进行

设置mysql数据库默认支持中文-爱代码爱编程

1. yum安装mysql数据库 [root@localhost ~]# yum -y install mariadb mariadb-server 2.修改mysql数据库的配置文件 配置文件的位置 /etc/my.cnf [root@localhost ~]# vim /etc/my.cnf 设置服务器端 在 [mysqld] 下添加

fio测试硬盘性能-爱代码爱编程

FIO 是测试磁盘性能的工具,用来对硬件进行压力测试和验证。 使用 FIO 时,建议配合使用 libaio 的 I/O 引擎进行测试。 软件安装 编译安装 fio各版本下载地址如下: https://github.com/axboe/fio/releases 以“fio-2.1.10”版本为例,下载源码,并编译安装。 #安装依赖 yum in

linux 基础——远程管理命令-爱代码爱编程

linux 基础——远程管理命令 主要内容 linux 基础——远程管理命令关机和重启shutdown网卡和IP地址ifconfigpingssh (Windows --》Ubuntu)scp单词 关机和重启 shutdown shutdown:关机或重启。shutdown 选项 时间,-r重启,不指定选项和参数:表示1分钟之后关闭电脑。

ptpd2源码编译-爱代码爱编程

github:https://github.com/ptpd/ptpd step1:下载 git clone https://github.com/ptpd/ptpd.git cd ptpd autoreconf -vi step4:编译配置 (1)主机编译配置 ./configure (2)交叉编译配置1 ./configure CC=

QT 5.15 QSslSocket::connectToHostEncrypted: TLS initialization failed 问题-爱代码爱编程

在QT5.12版本时候碰到这个问题复制对应文件夹下的libeay32.dll和ssleay32.dll即可, 升级到5.15时候发现这样还不够,需要再复制libcrypto-1_1.dll和libssl-1_1.dll文件。QT5.15安装只能用在线安装器,安装时吧OPENSSL也选上就会有后面两个文件了。另外5.15的文件目录结构也有所变化,例如我的工程

QT入门学习中最基础的那些事儿-爱代码爱编程

QT 编译流程 qmake -project ->.pro qmake ->makefile 从而实现平台无关性 make ->可执行程序 执行qmake 构建 运行 程序发布: 选择 release 生成exe文件 ​ 3.新建窗口Qwidget QApplication a(argc, argv); 创建了一个QApplicat

内部相机通用接口类的使用说明-爱代码爱编程

内部相机通用接口类的使用说明 文中内容涉及到了Qt回调函数的使用,DLL库中函数的提取、使用,内部通用动态库的工作原理,和回调函数使用过程中出现的问题 /************************************************************************/ /*获取采集对象导出函数: CGrabber* Ge

8.QML Qt Quick Controls 2中常用的界面形式——堆叠式界面(StackView)-爱代码爱编程

堆叠式界面的实现的核心组件就是StackView。StackView是一个基于栈的导航浏览模型,可以与一组关联的页面一起使用。当用户浏览深层页面时,深层页面被推到栈顶,当用户选择返回时,之前浏览的页面会再次弹出。 堆叠式界面的效果 上述演示中,界面一共有四个:分别是home、profile、about和editprofile 上述四个界面中使用的

Qt进阶-事件过滤器eventFilter的使用-爱代码爱编程

事件过滤器eventFilter的使用 如果不提升控件,可以在控件的父对象中为控件安装事件过滤器,从而在父对象中处理子控件的事件; 在父对象源文件中: //为控件安装事件过滤器 ui.pushButton->installEventFilter(this); ui.pushButton_2->installEventFilter

Qt实现一个支持QSS的Switch Button(开关按钮)-爱代码爱编程

目录 Qt实现一个支持QSS的Switch Button(开关按钮)问题解决思路实现方式其他不同的 Switch Button总结 Qt实现一个支持QSS的Switch Button(开关按钮) 本文会比较长,目的是为了提供一种实现自定义复杂控件的方式,对于使用 QSS 应用样式的项目可能会有帮助。 实现的过程会相对比较复杂和难理解,仅作为