linux学习
文章平均质量分 62
倔强的土坷垃
这个作者很懒,什么都没留下…
展开
-
QT中配置显示长宽
QT的显示配置文件是/etc/formfactor/machconfig文件,在这个文件中是有显示的长宽设置参数的,如下:但是默认是被注释掉了Formfactor是形状相关的文件夹,在这个文件夹下查找其他文件。同级还有一个config文件,如下:这部分判断了刚才上面文件中的长宽宏定义,默认没有设置,所以执行下面的命令:执行fbset后使用grep读取了geometry项用awk命令获取行像素点参数是800翻转之后的长宽参数没有问题...原创 2022-05-31 09:21:46 · 452 阅读 · 0 评论 -
Linux内核中的互斥锁和自旋锁的区别
很多人搞不清自旋锁和互斥锁的区别,这两种锁都是最底层的锁实现。是很多高级锁的基础。为什么需要锁?共享资源是有限的,且同一时间只能有一方占用。就像我们常见的共享单车,它是多人共用的,但是在某个时刻,只能有一个人使用,当我们扫码的时候,它只属于我们,其他人不能占用。这就是加锁的意义。为了保证系统中的共享资源在一个时刻只能有一个线程访问,避免多线程同时使用导致的数据错乱。锁是谁加的?任何操作都是由内核完成,线程向内核申请加锁,是否能锁住是由内核决定的。互斥锁假设我们目前有两个进程,进程A和进程B。当A原创 2022-05-09 13:46:48 · 2983 阅读 · 0 评论 -
6Q4.1.15系统上移植mysql
参考链接如下:https://blog.csdn.net/weixin_42150360/article/details/113948214?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1.pc_relevant_default&spm=1001.2101.3001.4242.2&utm_relevant_index=4https://www.cnblo原创 2022-05-09 11:07:20 · 334 阅读 · 0 评论 -
git命令应用——blame命令
当我们使用git的时候,我们都会用git log去查看一下历史提交。commit 5a73eb9eaabbb9ebcabd9138eccb8897325a81ba (HEAD -> master)Author: mx <1015442941@qq.com>Date: Thu Mar 31 13:42:38 2022 +0800 support docker commit 1764eec8df073f01a9a11521bd50821410c6b2edAu原创 2022-05-06 13:37:40 · 4955 阅读 · 0 评论 -
关于FIFO的一点理解。
FIFO,是First Input First Output的缩写,就是先进先出的意思。首先来说FIFO存储器,其目的是为了增加数据传输率,处理大量的数据流,以及匹配不同传输速率的系统。FIFO存储器是先进先出的双口缓冲器,一个输入口,一个输出口,第一个由输入口进入的数据第一个从输出口移出。单片FIFO主要有两种结构:触发导向结构和零导向结构。触发导向传输结构的FIFO是通过寄存器阵列构成的,零导向传输结构是由具有读和写地址指针的双口RAM构成。其只要作用是作为系统的缓:1、 对连续的数据流进行缓存,防原创 2022-05-05 15:42:03 · 1471 阅读 · 0 评论 -
linux平台触摸配置流程
触摸板的两种实现方式:电阻触摸和电容触摸。我们的电阻触摸是通过cpu自带的四路ADC来采集。还有一些平台CPU没有ADC或者ADC不够用,就使用了tsc2007这个adc芯片来实现,然后通过iic和cpu通信。这次我们主要说电容触摸的驱动如何配置重点说一下iic接口的:说到配置还要分两类:有设备树和没设备树有设备树的情况下,就进行两步操作,一是添加驱动和将驱动编译进内核。kernel/drivers/input/touchscreen一般触摸的驱动都在这个路径下,以gt911为例,我们可以在这个原创 2022-04-15 15:45:58 · 1239 阅读 · 0 评论 -
解决imx6q上操作GPIO在终端看不到变化的问题
我们对于GPIO的操作有两个方法,一是通过一个gpio驱动,生成GPIO节点,然后在根目录的/dev下对相应节点进行操作。另一个是通过文件系统的/sys/class/gpio接口对相应的GPIO进行导出然后操作。在第二种方法的操作过程中,暴露出一个问题,在我们导出gpio之后设置方向为输出,然后设置了其输出值,再cat其value值的时候发现没有变化。后用万用表测量确实电平是修改了的。这个问题是由于读取output的value值是从PSR中读取的,而写入的output值是写入到DR中的,不是同一个寄存原创 2022-04-15 15:00:37 · 536 阅读 · 0 评论 -
make的相关命令详解和区别
makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是–“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nm转载 2022-04-15 10:55:56 · 944 阅读 · 0 评论 -
RK3399调试MIPI屏幕的一些知识延伸
MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。名词解释• DCS (DisplayCommandSet):DCS是一个标准化的命令集,用于命令模式的显示模组。• DSI, CSI (DisplaySerialInterface, CameraSerialInterface• DSI 定义了一个位于处理器和显示模组之间的高速串行接口。• CSI 定义了一个原创 2022-04-12 16:03:14 · 3297 阅读 · 0 评论 -
关于shell脚本的一些理解和基础
shell脚本基本语法我们都知道,在编写shell脚本的时候第一行必然是#!/bin/bash因为linux中不只有bash一个解析器,不同解析器中的语法不相同,这个是通知系统使用bash解析器一、shell脚本中的变量shell中一样可以对变量进行赋值、运算但是需要注意几个点:1、shell脚本相比C语言有一个优势是变量不需要定义,在使用的时候直接a=1,第一次使用就默认会定义。2、shell中的变量只有两种类型,整型和字符串。3、shell中使用变量不能加空格,否则会被识别成命令。shel原创 2022-04-12 15:53:00 · 1009 阅读 · 0 评论 -
IIC通信详解及数据读取过程分析
IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。特点:主要适用于小数据量,距离短,的情况。属于同步、半双工串行通信。可以实现一个主机和多个从机之间通信,并且通信均由主机发起,从机不能主动发起数据。器件发送数据到总线上,则定义为发送器,器件从总线上读取数据,则定义为接收器(主器件和从器件都可以是发送器也可以是接收器)谁接收谁应答原创 2022-04-12 10:49:11 · 9499 阅读 · 1 评论 -
imx6q修改LVDS接口数据格式
LVDS数据格式有两种:VESA标准和JEIDA标准,飞凌支持的10.1寸lvds屏,默认的数据格式是VESA,所以源码中默认也是VESA格式,如果替换的一些屏是JIEDA格式,则需要修改。由于需要显示logo,所以显示是分成两部分,UBOOT阶段的显示和内核阶段的显示UBOOT:修改board/freescale/mx6sabresd/mx6sabresd.c文件。默认是VESA格式,需要添加JEIDA格式的相关配置:static void enable_lvds(struct display_i原创 2022-04-08 11:57:38 · 1004 阅读 · 0 评论 -
linux中的sleep函数和delay函数
对于做过单片机程序的朋友来说,delay是很常见的函数,通常就是while或者for循环,进行空指令的执行,由于单片机的晶振固定,一个机器周期的时间是固定的,执行多少个空指令, 就可以完成多少个机器周期时长的延时。其实在linux中的delay函数,道理是一样的,都是通过cpu执行空指令来达到延时的目的,但是对于操作系统这种多线程进行的方式来说,在需要延时的时候,可以通过将进程挂起的方式来实现延时。这就是sleep函数。sleep和delay的区别最明显也最重要的区别就是,在执行delay的时候,是执行原创 2022-03-30 09:14:40 · 3380 阅读 · 0 评论 -
在IMX6Q的linux4.1.15版本上默认支持docker
关于docker:Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器),也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。所以很多应用由于其环境特殊,是需要运行在docker里的。但6q默认没有支持d原创 2022-03-29 16:58:12 · 1351 阅读 · 0 评论 -
RTC保存年份不正确的问题排查及解决
在imx 6q的4.1.15版本linux系统上适配hym8563这款rtc芯片,配置上驱动后产生了如上面的问题,设置时间没有问题,设置年份会比减六年存储。但是如果设置的是15年及以下就不会有这个问题。这是时间的读取程序,使用了bcd2bin函数,将存入的bcd格式数据转成bin格式。关于bcd格式和bin的区别:Bcd格式有的也叫8421格式,或者叫8421bcd,学过数电肯定有印象。Bin格式就是直接转成二进制数。例如一个十进制15,转成二进制是1111转成bcd格式是,0001 010.原创 2022-03-14 11:13:43 · 1025 阅读 · 0 评论 -
老版本ubuntu使用apt-get命令更新错误
使用的ubuntu环境:12.04 LTS执行sudo apt-get update的时候报错:W: Failed to fetch http://mirrors.163.com/ubuntu/dists/precise/main/source/Sources 404 Not Found [IP: 219.148.147.103 80]看起来是源的问题,于是修改源,改成阿里源。sudo gedit /etc/apt/sources.list阿里源deb http://mirrors.aliy原创 2022-03-14 11:01:58 · 3730 阅读 · 0 评论 -
关于看门狗应用的分析及拓展
以下为看门狗测试应用的代码/** Watchdog Driver Test Program*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <sys/ioctl.h>#include <linux/types.h>#include <linu原创 2022-03-14 10:05:21 · 295 阅读 · 0 评论 -
LTC2943电量计芯片数据读取
最近调试了一款电量计芯片,LTC2943。关于其数据读取过程,进行如下分析,这部分不太了解的朋友可以参考,都是个人的一些理解,有不到位的地方欢迎指出。首先看到,芯片手册中关于寄存器的定义和描述如下:本文主要用到的是02h和08h这两个寄存器,02寄存器中存储的是电荷量,08寄存器中存储的是电压值。电量支持应该是使用给这两个寄存器,手册中所说的C、D寄存器。但是在手册中没有看出这两个寄存器有什么区别,驱动中也是只使用了MSB这个。获取寄存器数据的函数返回值就是读取到的数据。这个是驱动中获取原创 2022-03-09 16:04:19 · 3254 阅读 · 1 评论 -
U-BOOT启动流程的一点分析
都说start.S是整个系统启动的第一个文件,但是是从哪里决定的呢,这要看连接文件u-boot.lds,来确定程序入口点:所以看到入口是_start,在这个start有一个image copy start是镜像复制的开始,_start函数也在这个vectors.s中定义。查看arch/arm/lib/vector.s在这个start函数中,直接跳转到一个叫ARM_VECTORS的宏定义下面:第一条就是跳转到reset函数,这个函数是在start.S中定义的。查看arch/arm/cpu/arm原创 2022-01-10 14:43:31 · 339 阅读 · 0 评论 -
OK3399设置GPIO默认低电平
设置GPIO默认低电平。这个方式比较简单粗暴,适合应急使用,不太符合代码标准,仅供参考需求:在3399开机启动阶段,要求gpio拉低。但是在uboot阶段,并没有找到相关的函数。所以想到直接用writel函数写寄存器。关于writel、readl等的具体使用,可以百度。Writel是一个一次写入32位的函数。格式为Write(0xffffffff,0x00000000);其中ffffffff指的是写入的内容,00000000指的是要写入的地址。查看3399CPU手册part1。3399的g原创 2022-01-10 10:31:04 · 1632 阅读 · 1 评论 -
3399ubuntu系统配置开机自启脚本
如果是使用过6UL 6Q或其他平台的朋友可能知道,一般开机自启脚本都在/etc/init.d/rc.local这个呢是用的init.d工具管理的开机启动。但在ubuntu系统上,是使用的systemd管理的。实际上实现的内容都是一样的,开机之后的一些配置。所以,开机自启脚本也是这样实现。、systemd 默认读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。执行 ls /lib/systemd/system 你可以看到有很原创 2021-10-14 11:32:08 · 290 阅读 · 0 评论