Linux
Linux相关操作
雲烟
可以卑微如尘土,不可扭曲如蛆虫。
展开
-
linux i2c-mux 使用
linux中如何使用i2c-mux原创 2023-05-08 15:36:47 · 509 阅读 · 1 评论 -
Linux-Arm GDB调试(本地和远程)
Linux本机调试使用GDB非常方便,但嵌入式Linux设备资源有限,通常并没有交叉编译工具,那嵌入式设备上的应用发生问题如何查找问题?通常IDE有远程DEBUG功能,这种能快速定位固定且容易复现的错误。随机性问题,问题一旦发生,保存现场十分重要,不知道何时才会复现,要基于当前的设备状态,尽可能的去追溯本次的问题,这样才能有效的解决问题。个别情况下,并没有发生crash,但是程序卡死或者无响应,这个时候并不会生成coredump文件,那么就需要进行远程在线调试。最终定位到问题所在。原创 2024-04-03 14:54:58 · 664 阅读 · 0 评论 -
imx7开机自动执行任务(点灯)
设置已正确配置设备树,能在用户空间控制GPIO。原创 2024-01-09 10:33:24 · 390 阅读 · 0 评论 -
Virtual-box虚拟机拖拽失效
Virtual-box拖放失效及不能自适应屏幕。升级后同时出现的问题:虚拟机不能自适应调整显示大小,若出现此状况,弹出原来加载的VBoxGuestAdditions.iso,虚拟机菜单点安装增强型工具即可。原创 2022-06-08 17:01:55 · 12173 阅读 · 2 评论 -
Qt程序Linux异常退出时查找问题
背景:Qt程序偶发性crash,偶发性原因不好查找,可以配合GDB查看coredump文件进行调试,找出发生异常的地方,但是Qt自带库有时无法查找。程序运行前的准备,设置几个步骤,在程序crash时生成对应的coredump文件:shell中执行“echo 0 > /proc/sys/kernel/core_uses_pid”,用以控制生成的coredump文件名后缀格式,echo 1表示添加pid作为后缀,echo 0表示不添加pid作为后缀,保持coredump文件名。 shell中执行原创 2022-03-30 14:42:27 · 2560 阅读 · 0 评论 -
sudo apt install ttf-mscorefonts-installe error
背景:想要安装arial字体。操作:sudo apt install ttf-mscorefonts-installe报错:E: Unable to locate package ttf-mscorefonts-installe更新源再试:sudo apt-get update后再次sudo apt install ttf-mscorefonts-installe,仍然失败。安装aptitude:sudo apt-get install aptitude安装后再试:sudo aptitu原创 2021-11-26 11:33:19 · 476 阅读 · 0 评论 -
Linux 通过dtb得到相应的dts
背景:生成dtb文件后,想看此dtb文件中到底有没有包含自己的修改。准备:下载安装dtc工具。 sudo apt-get install device-tree-compiler -y原创 2021-06-09 17:08:18 · 511 阅读 · 0 评论 -
Linux 网络状态监控
头文件:#include <linux/rtnetlink.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <sys/ioctl.h>#include <linux/if.h>#include <string.h>#include <QDebug>#define BUFLEN 20480#define N原创 2021-03-13 15:24:26 · 374 阅读 · 0 评论 -
Linux定时任务
背景:需要在服务器上定时更新程序,并编译出最新版本。cron可以执行linux中的定时任务,或者周期性运行某个指令或脚本。首先执行crontab -e第一次执行会选择编辑器进入界面添加定时任务即可最后一行注明了用法:分 小时 日 月 星期 命令* * * * * /home/dan/bin/script.sh: 每分钟运行。0 * * * * /home/dan/bin/script.sh: 每小时运行。0 0 * * * /home/dan/bin/script.sh:原创 2020-09-22 15:44:02 · 254 阅读 · 0 评论 -
linux底层i2c读写
首先包含头文件:linux/i2c.h此头文件有一个重要的结构体:struct i2c_msg{ __u16 addr; 从机地址 __u16 flags; 读写标志 __u16 len; 消息长度 __u8 *buf; 消息指针}; 标志 值 说明 I2C_M_RD 0X0001 读数据 I2C_M_TEN 0X0010 使用10位I2C地址 I2C_M_RECV_LEN 0X04原创 2020-07-15 14:49:01 · 793 阅读 · 1 评论 -
Linux移植wifi驱动
背景:需要更换wifi厂家提供的驱动程序,此驱动不是insmod测试程序,而是需要编译进内核,开机自动挂载的。insmod挂载驱动通常是将驱动源码,使用对应的交叉编译工具链编为xx.ko的文件,手动insmod xx.ko进行使用。1:将驱动源码放入内核目录下的/drivers/net/wireless/realtek目录。2:查看驱动源码目录下的Kconfig和Makefile是否齐全,...原创 2020-04-03 17:19:17 · 1659 阅读 · 0 评论 -
参考文档
https://01.org/connman/documentationhttps://wiki.archlinux.org/index.php/ConnMan#Error_.2Fnet.2Fconnman.2Ftechnology.2Fwifi:_Not_supportedhttps://git.kernel.org/pub/scm/network/connman/connman.git...原创 2020-03-27 12:28:23 · 249 阅读 · 0 评论 -
Linux中proc/cmdline
Linux终端中使用命令:cat /proc/cmdline可以看到内核启动时U-boot传入参数。root@colibri:~# cat /proc/cmdlineclk_ignore_unused ip=off root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait vt.global_cursor_default=0 console=...原创 2020-03-16 20:12:06 · 5682 阅读 · 0 评论 -
简单驱动程序
字符设备驱动(点灯)驱动程序leddrv.c#include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/init.h> #include <linux/delay.h> #include <li...原创 2020-02-27 17:55:48 · 196 阅读 · 0 评论 -
设备树dts用法
目录基本数据格式.dts简单树基本概念:第一步:构建框架结构。第二步:CPU进行详细描述。补充:节点名称第三步:设备进行描述。compatible属性详解寻址方式CPU寻址内存映射的设备非内存映射设备地址范围中断如何使用设备特定数据特殊节点aliases节点chosen节点基本数据格式设备树组成:节点和属性。属...原创 2020-02-27 17:46:53 · 1551 阅读 · 0 评论 -
Linux中Shell截取某行某列信息
背景:执行shell命令,抓取shell返回信息中的所需信息,已udhcpc为例获取DNS的地址。暂不作处理,执行udhcpc。使用grep过滤掉无用信息,执行 udhcpc | grep "DNS"使用sed抓取第二行,-n '2p'代表第二行,-n '1,3p'代表第一到三行,以回车换行符区分。执行 udhcpc | grep "DNS" | sed -n '2p'...原创 2020-02-19 16:03:34 · 2169 阅读 · 0 评论 -
Linux使用动态库.so
背景:gcc的编译过程包括预处理、编译、汇编、连接才可以成为可执行的应用程序。例子hello.c:经过gcc -E -o hello.i hello.c进行预处理生成hello.i文件。 经过gcc -S -o hello.s hello.i进行编译生成hello.s文件。 经过gcc -C -o hello.o hello.s进行汇编生成hello.o文件。 经过gcc -o he...原创 2020-01-20 17:46:06 · 439 阅读 · 0 评论 -
Linux查找文件
Linux系统中,find命令查找文件需要三个条件:在哪个目录中找。 找什么文件。 以什么方式找。find命令格式:find 目录名 选项 查找内容示例:find /home/cc/code/ -name "test.cpp"在/home/cc/code/目录中找。 找test.cpp这个文件。 -name按名字查找的方式。 找文件夹的方式和文件相同,对应...原创 2020-01-19 09:45:08 · 279 阅读 · 0 评论 -
Linux复制目录文件夹
使用命令:cp -rfd dir_1 dir_2-r:recursive,递归的意思,即复制此文件内的所有子目录及子目录下的文件。 -f:force,强制覆盖已有文件。 -d:此选项尤为重要,否则如果复制的文件夹内有软连接等链接文件,会出错。此选项保持复制源连接文件的链接属性,而不是复制所链接的实际文件。...原创 2020-01-19 09:44:29 · 403 阅读 · 0 评论 -
更改Linux时区
背景:设置了正确的时间,但是设备联网后时间自动变回去,而且总是相差8个小时,原因是设备联网自动使用了UTC时间。此时的timerdatectl是这样的:shell命令行中使用以下命令,建立东八区时间的软连接即可。mv /etc/localtime /etc/localtime_bakln -s /usr/share/zoneinfo/Asia/Hong_Kong /etc...原创 2020-01-07 20:56:33 · 192 阅读 · 0 评论 -
Qt中英文切换(国际化)
Qt提供了Qt Linguist工具来进行程序整体的翻译抽取,前提是程序中待翻译的文字都使用了tr()函数,而不是直接的字符串文本输入。并且要在工程配置文件.pro中加入一句TRANSLATIONS += gui_en.ts(名字任意,只要是.ts结尾就好),过程分为四步:在软件安装文件夹中Qt/5.9.6/gcc_64/bin/中找到lupdate工具,使用./lupdate /...原创 2020-01-07 20:30:04 · 885 阅读 · 0 评论 -
追踪栈溢出的错误代码
Linux环境下安装binutils工具,下载地址https://www.gnu.org/software/binutils/,点击对应的包即可。将压缩包放置home目录的~目录下。进入解压完的目录binutils-2.33.1,使用./configure命令生成对应的makefile。使用sudomake命令进行安装,用时略长,完成后入下图。查看Crash文件,...原创 2019-12-26 21:03:37 · 304 阅读 · 0 评论 -
Windows文件在Linux中使用问题
使用背景: 同样的文本文件,从Windows拷贝到Linux中,出现错误,无法使用。原因: 在windows下的文件,换行是使用:\r\n,在Linux中换行使用的是:\n。直接拖拽的文件就会出现错误。解决办法: 在Linux环境中安装自动转换工具,此工具可以将文件自动换为符合Linux系统的格式:sudo apt-get ins...原创 2019-12-20 10:29:31 · 270 阅读 · 0 评论 -
linux开发板安装软件
使用命令opkg,软件来源是本地仓库或者物联网上仓库,例如:opkg install pstree用法:opkg must have one sub-command argumentusage: opkg [options...] sub-command [arguments...]where sub-command is one of:Package Manipulation:...原创 2019-10-10 15:11:27 · 774 阅读 · 0 评论 -
linux系统管理systemd
声明:本文非原创,部分自己理解上修改,查看原创请移步http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html。目录systemd是什么:systemd的资源UnitUnit 的状态Unit 管理Unit 依赖Unit配置文件Unit配置文件的状态Unit配置文件的格式配置文件...转载 2019-10-10 17:30:33 · 149 阅读 · 0 评论 -
imx7更换kernel开机图片
设置u-boot的环境变量,选择对应的开发板显示屏的分辨率,否则会出现花屏或者条纹。u-boot控制台输入: setenv vidargs 'video=mxsfb:1024x600M-16@60' saveenvubuntu虚拟机操作: 备好的bmp图片通过以下命令转换成内核启动图片文件格式 $bm...原创 2019-07-12 12:32:25 · 453 阅读 · 0 评论 -
ubuntu源更新问题
ubuntu无法更新,几乎把网上所有方法试了一遍,都不行,包括删除/var/cache/apt/archiver/目录下的缓存文件,修改源的配置,比如加上机型或old字样等,始终显示waiting for headers,报一大堆ERROR。最终发现是公司网络过滤问题,手机开热点,选择默认源,完成更新。...原创 2018-09-06 19:53:42 · 196 阅读 · 0 评论 -
hcitool
hcitoolhcitool - HCI Tool ver 5.46Usage: hcitool [options] <command> [command parameters]Options: --help Display help -i dev HCI deviceCommands: dev 显...原创 2019-08-29 12:54:13 · 760 阅读 · 1 评论 -
connman康恩曼wifi连接
ConnMan是一个命令行网络管理器,专为嵌入式设备和快速解决时间而设计。它使用插件的形式是架构模块化,但是要有DHCP和NTP的支持。 命令总体概述:connmanctl [state | technologies | enable technology|offline | disable technology|offline | tether technolog...原创 2020-03-27 12:27:07 · 2614 阅读 · 0 评论 -
socket/tcp协议
协议: 计算机网络中实现通信必须有一定的约定,速率、传输代码、代码结构、传输控制步骤和出错控制等约定,约定称为通信协议。 在两个节点之间要成功的通信,两个节点之间必须约定使用共同的语言,这些被通信各方共同遵守的约定、语言、规则被称为协议。 在internet中,最为通用的网络协议是TCP/IP协议。 OSI七层模型:...原创 2018-10-21 22:32:59 · 434 阅读 · 0 评论 -
标准库中的管道操作
使用pipe操作太繁琐,系统库提供了一个管道的封装函数,使popen()创建的管道必须使用pclose()关闭,与标准文件输入\输出中的fopen\fclose非常相似。 #include<stdio.h> FILE * popen(const char * cmdstring,const ch...原创 2018-10-09 22:58:21 · 150 阅读 · 0 评论 -
管道的读写特性
1.通过打开两个管道来创建一个双向的管道。 2.管道是阻塞性的,当进程从管道中读取数据,若没有数据进程会阻塞。 3.当一个进程往管道中不断地写入数据但是没有进程去读取数据,此时只要管道没有满是可以的,但若管道放满数据则会报错。 不完整管道: 当读一个写端已经被关...原创 2018-10-09 22:13:55 · 1060 阅读 · 0 评论 -
协同进程
目标:创建两个进程进行通信,简单使用父进程fork子进程的方式。方式:使用两个管道实现双工通信。步骤:父进程写入管道A中数据,子进程读取后调用add函数进行相加,将结果写入管道B中,父进程从管道B中读取相加结果值。/************************************************************************* > Fi...原创 2018-09-27 22:46:04 · 688 阅读 · 0 评论 -
无名管道使用
有名管道使用范围仅限父子进程之间或者兄弟进程,特别注意的是,父进程fork()出子进程,同样继承了之前父进程创建的管道描述符fd,鉴于单工通信,必须关闭其中一个方可通信,也就是父写子读,或者子写父读。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h&g...原创 2018-09-07 17:41:16 · 245 阅读 · 0 评论 -
信号量示例
本质上就是共享资源的数目,用来控制对共享资源的访问。 用于进程间的互斥和同步。 每种共享资源对应一个信号量,为了便于大量共享资源的操作引入了信号量集,可对所有信号量一次性操作。对信号量集中所有操作可以要求全部成功,也可以部分成功。 二元信号量的值为0和1。 对信号量做PV操作。 in...原创 2018-09-12 22:37:44 · 857 阅读 · 0 评论 -
共享内存示例
a.共享内存区域是被多个进程共享的一部分物理内存。 b.多个进程都可把该共享内存映射到自己的虚拟内存空间。所有用户空间的进程若要操作共享内存,都要将其映射到自己的虚拟空间中,通过映射的虚拟空间地址去操作共享内存,从而达到进程间的数据通信。 c.共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内...原创 2018-09-09 14:17:53 · 521 阅读 · 0 评论 -
消息队列示例
消息队列是内核中的一个链表。使用方法类似有名管道。消息队列使用完毕后,不释放永久存在内核中,除非重启。发送消息:/************************************************************************* > File Name: msg_snd.c > Author: CC > Mai...原创 2018-09-09 12:57:19 · 1006 阅读 · 0 评论 -
有名管道FIFO示例
shell中本身存在mkfifo的命令,但是本质也是调用mkfifo()函数实现。与无名管道相比,无非是多了一个管道文件用以操作。先在shell中通过mkfifo创建一个管道文件mkfifo s.pipe,执行read s.pipe和write s.pipe。读端:/*********************************************************...原创 2018-09-08 23:30:15 · 276 阅读 · 0 评论 -
标准库中的管道
FILE* popen(const char *cmdstring,const char * type);cmdstring:传入的命令字符串。type:传入的读写方式,“r”,"w"。返回值:成功返回文件指针,出错返回NULL。int pclose(FILE *fp)返回值:cmdstring的终止状态,出错返回-1。pclose必须与popen配合使用,类似fop...原创 2018-09-08 22:23:34 · 133 阅读 · 0 评论 -
不完整管道
读取一个写段已经关闭的管道。所有数据被读取后,read返回0,表示达到了文件尾部。/************************************************************************* > File Name: broken_pipe.c > Author: CC > Mail: 6828620@16...原创 2018-09-08 18:44:28 · 195 阅读 · 0 评论