Linux学习总结
文章平均质量分 65
stoic163
转载先进,学习验证,总结分享!
展开
-
Ubuntu14.04中使用repo时遇到无readline模块问题的总结
首先错误内之容:File "/home/lin.yuan/bin/repotcl", line 92, in <module> import readlineImportError: No module named readline原创 2021-05-31 16:09:11 · 851 阅读 · 1 评论 -
Ubuntu 18 系统中对openssl进安降级安装方法总结
1.下载openssl下载链接:https://www.openssl.org/source/snapshot/里边是当前仍支持版本的快照;同版本不同日期内容可能不同的,所以下载一般下对应版本的最新快照;安装出错则尝试另一个快照。解压后的文件夹下有INSTALL和README等文件。2.安装以root身份执行:openssl version #查看安装前openssl版本tar -zxf openssl-1.0.2-stable-SNAP-20160915.tar..原创 2021-05-08 18:04:52 · 5077 阅读 · 0 评论 -
一种基于电池电压计算电池电量的算法的分析总结
这种算法应用在低成本的无界面的移动产品上,不依于赖库伦计,纯电压计算电压的方法。首先,设置一些基本的变量:struct capacity { int capacity; int min; int max; int offset; int hysteresis;};struct battery_capacity { struct capacity *tables; i...原创 2020-03-10 17:55:14 · 11463 阅读 · 14 评论 -
关于C语言中定义static变量的解释
在C语言中static类型的变量的意思其实和它的本意差不多,表示“静态”或者“全局”的意思,用来修饰变量和函数。经static修饰过后的变量或者函数的作用域或者存储域会发生变化,而由static修饰的变量在初始值方面也会表现出static关键字的优势。C语言中程序的内存分布: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改...原创 2020-03-07 11:39:55 · 5247 阅读 · 1 评论 -
Linux中Input的设备驱动框架结构
先看框架图:再看看代码中的结构:分析一下Input_dev结构(include/linux/input.h):struct input_dev { const char *name; //设备名 const char *phys; //设备系统层的物理路径 const char *uniq; struct input_id id; //输入设备ID 总线类型;厂商编...原创 2020-03-06 16:58:55 · 353 阅读 · 0 评论 -
Shell中at命令的使用总结
at 命令允许指定Linux系统何时运行脚本。at命令会将作业提交到队列中,指定shell何时动行该作业。at的守护进程atd会以后台的模式运行,检查作业队列来运行作业。 atd 守护进程会检查系统上的一个特殊目录(通常位于/var/spool/at)来获取用at命令提交的作业。默认情况下,atd守护进程每60秒检查一下这个目录。有作业时,atd守护过程会检查作业设...原创 2020-03-05 14:55:55 · 5262 阅读 · 0 评论 -
关于零指针、NULL、空指针、vold*指针和野指针的总结
1.零指针零值指针,是值为0的指针,可以是任何一种指针类型,可以是通用变体类型void*,也可以是char*,int*等等。在C++里面,任何一个概念都要以一种语言内存公认的形式表现出来,例如std::vector会提供一个empty()子函数来返回容器是否为空,然而对于一个基本数值类型(或者说只是一个类似整数类型的类型)我们不可能将其抽象成一个类(当然除了auto_ptr等只能指针)来...原创 2019-12-20 18:19:01 · 2334 阅读 · 0 评论 -
关于零长度数组的理解
零长度数组(柔性数组),一般用于可变结构体中,如:struct Packet{ int state; int len; char cData[0]; //这理是一个零长度数组};用途 : 长度为0的数组的主要用途是为了满足需要变长度的结构体用法 : 在一个结构体的最后, 申明一个长度为0的数组, 就可以使得这个结构体是可变长的. 对于编译器来说, 此时长度...原创 2019-12-20 18:11:47 · 706 阅读 · 0 评论 -
关于kobj与kset的总结
kobj/kset作为统一设备模型的基础,是Linux驱动中重要的部分,首先看kobj的结构体组成:struct kobject { const char *name; struct list_head entry; struct kobject *parent; struct kset *kset; struct kobj_type *ktype; struct kern...原创 2019-12-20 16:48:02 · 382 阅读 · 0 评论 -
git下载代码的相关操作总结
1.设置自己的ssh gitconfig --global user.name "your name" git config --global user.email "your_email@example.com"2.生成ssh密钥 ssh-keygen -t rsa -C "your_email@example.com"Tips:ssh-keygen命令...原创 2019-12-16 16:06:08 · 537 阅读 · 0 评论 -
container_of的函数用法总结
首先看看函数的原型:#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) )...原创 2019-12-09 17:17:46 · 778 阅读 · 0 评论 -
shell中清除编译产生的*.log或*.txt文件方法
使用脚本编译文件时,会产生一些编译的log或txt文件,在重新编译时会导致无法进行第二次编译,故在写编译脚本时,需要在编译前进行编译log文件的清除操作。一般使用如下操作:if [ -e *.log ]; thenrm *.logfi此时如果文件不存在,则不报错误。但如果有多个.log文件存在,则报错。这显然不满足要求的。在上述if[ -e *.log ]操作...原创 2019-11-25 10:53:34 · 1019 阅读 · 0 评论 -
shell中让脚体自动输入sudo密码方法
在所编写的脚本文件中,使用echo "passwd" | sudo-Scommand使用-S是:使得sudo从标准输入读取密码而非终端sudo的命令选项:Options: -A, --askpass use a helper program for password promptin...原创 2019-11-25 09:46:22 · 1389 阅读 · 0 评论 -
ubuntu中man显示中文
首先安装man工具的内容:1. sudo apt-get install manpages-posix manpages-posix-dev2. sudo apt-get install manpages-zh3. 配置中文:sudo gedit /etc/manpath.config& 把其中的/usr/share/man全部修改成/usr/share/man/zh_CN原创 2017-08-18 16:00:29 · 2802 阅读 · 0 评论 -
设备驱动模型与sysfs
1.设备驱动模型基本概念设备驱动模型主要包含:类(class)、总线(bus)、设备(device)、驱动(driver),它们的本质都是内核中的几种数据结构的“实例”类的本质是class结构体类型,各种不同的类其实就是class的各种实例总线的本质是bus_type结构体类型,各种不同的总线其实就是bus_type的各种实例设备的本质是device结构体类型,各种不同的设备其实就是device的...转载 2018-06-02 15:09:37 · 338 阅读 · 0 评论 -
Linux内核配置Kconfig语法
何为Kconfig 它的作用是什么内核源码编译过程遍历每个源码目录(或配置指定的源码目录)Makefile每个目录的Makefile 会根据Kconfig来定制要编译对象回到顶层目录的Makeifle执行编译那么我们就得出各个文件的作用:Kconfig ---> (每个源码目录下)提供选项.config ---> (源码顶层目录下)保存选择结果Makefile---> (每个...转载 2018-02-24 14:22:19 · 696 阅读 · 0 评论 -
Ubuntu 16.04添加全新硬盘操作方法
需求背景: 由于原有的电脑硬盘只有3T不够装代码,新增加1T硬盘用装android代码。操作环境: 系统:Ubuntu 16.04 硬件:硬盘 1T(全新未使用过的WD蓝盘)操作过程: 1.拆开电脑机箱,安装硬盘,具体操作省略。 2.开机查看系统硬盘分区情况: 命令:sudo fdisk -l ...原创 2018-02-28 16:30:33 · 64598 阅读 · 9 评论 -
splitimg脚本解析bootimg及打包bootimg
简介:recovery.img的构成(与bootimg原理一致),它是由boot_img_hdr + zImage + recovery-ramdisk构成。boot_img_hd是个结构体它描述了很多重要的信息。 1 struct boot_img_hdr 2 { 3 unsigned char magic[BOOT_MAGIC_SIZE];4转载 2017-12-13 11:06:16 · 1397 阅读 · 0 评论 -
从零开始写设备树DTS
从零开始写设备树DTS参考网址:1、http://blog.csdn.net/woshidahuaidan2011/article/details/529487322、http://elinux.org/Device_Tree_Usage3、http://blog.csdn.net/woshidahuaidan2011转载 2017-11-08 11:53:24 · 978 阅读 · 0 评论 -
Linux USB驱动工作流程
1. USB主机在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机通信。linu转载 2017-08-24 09:34:00 · 702 阅读 · 0 评论 -
基于platform总线的驱动分析
1.platform总线基本概念设备和驱动若基于设备驱动模型,则它们通常都需要挂接在一种总线上。总线相对于设备和驱动,可谓是“媒人”担当对于本身依附于 USB、 I2C、SPI 等的设备而言,这自然不是问题。但是很多的设备(比如led)实际并不依附于总线,没了“媒人”,设备和驱动怎么产生联系呢?于是内核为这些可怜的设备发明了一种虚拟的总线——platform(平台总线)挂接在platform上的设...转载 2018-06-02 15:11:23 · 367 阅读 · 1 评论 -
基于i2c子系统的驱动分析
和i2c有关的代码都在源码drivers/i2c目录下。内核提供了两种i2c的实现方法:第一种叫i2c_dev,对应drivers/i2c/i2c-dev.c,这种方法仅仅封装了soc的i2c控制器操作,并向应用层提供操作接口。其本质是为应用层提供了一个库,驱动功能由应用层实现,不是主流的做法第二种是驱动层实现所有驱动功能,是比较主流的做法第二种可以认为是正统的i2c驱动,其本质是:工程师任意选用...转载 2018-06-02 15:15:56 · 296 阅读 · 1 评论 -
Ubuntu系统装Virtualbox中Windows7虚拟机中U盘不识别问题
Ubuntu16.04 的系统中安装Virtualbox运行Windows7,在Windows7 中Virtualbox的增强功能已经安装完成,同时也在vbox中安装好了“Oracle VM VirtualBox Extension Pack”识别不了U盘的主要原因是当前用户无权限,没有将USB加入用户组的原因造成的。解决方法: 1)、添加usbfs 用户组(virtualbox ...原创 2018-06-09 18:03:48 · 1724 阅读 · 0 评论 -
repo的使用
1. 下载 repo 的地址: http://android.git.kernel.org/repo ,可以用 wget http://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/repo>~/bin/repo 来下载 repo , repo脚本授权:chmod a+x ~/bi原创 2017-03-23 11:40:32 · 350 阅读 · 0 评论 -
socket工作原理深入分析
本节目录一 iso七层模型 二 什么是socket 三 如何标识socket实例 四 socket接口一 iso七层模型看到这里相信大家对iso七层模型已经有所了解了,如果没有了解,赶紧去恶补一下啦~~直接上图:iso七层模型图片二 什么是socket首先我们python基础部分已经学完了,而socket是我们基础进阶的课程,也就是说,你自己...转载 2019-10-10 08:38:17 · 1076 阅读 · 1 评论 -
高通平台电池充电的JEITA温升控制策略总结
JEITA规范将锂电池分为cold,cool,good,warm,hot,一般划分如下:temp < 0 ℃ :cold0 ℃ < temp < 10 ℃ :cool10 ℃ < temp < 45 ℃ :good45 ℃ < temp < 55 ℃ :warmTemp > 55 ℃ :hotJEI...原创 2019-08-16 15:19:23 · 11802 阅读 · 4 评论 -
高通平台充电驱动文件中添加延时工作队列
一.在相关的驱动结构体中添加相关的声明,如下:二.在驱动函数的probe中进行定义和初始化:在这里使用create_singlethread_workqueue进行创建,而不是使用create_workqueue,主要是前者是单CPU的,后者是在每个CPU上都会创建工作队列。调用INIT_DELAYED_WORK是进行工作队列的任务初始化,即延时工作队列chg_delay_wo...原创 2019-08-16 14:41:20 · 724 阅读 · 3 评论 -
关于Linux内核内存申请的三种方式(kmalloc,kzalloc,vmalloc)的一点总结
最近在面试过程中,会问到Linux中申请内存的方式有哪些的问题,经过我查找书籍以及其他网络资料对其进行总结如下: 我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核...原创 2019-05-30 10:16:42 · 8514 阅读 · 2 评论 -
static关键字 与 volatile关键字的介绍
1.static关键字当一个进程的全局变量为static之后,它就变成了静态全局变量,静态全局变量和其他的全局变量的存储地点并没有区别,都在.data段(已初始化)或者.bss段(未初始化)内,但是它只在定义它的源文件内有效,其他源文件无法访问它。这样的static函数与普通函数的区别是:用static修饰的函数,限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是...原创 2018-11-02 23:12:42 · 4360 阅读 · 0 评论 -
解决Ubuntu中firefox无法显示中文界面的问题
首先火狐ftp下载对应的中文语言包(https://addons.mozilla.org/en-US/firefox/addon/chinese-simplified-zh-cn-la/reviews/?src=api),安装。 地址栏输入 about:config 右键新建一个string,name设为intl.locale.requested,值为zh-CN 重启浏览器,完成注:...原创 2018-11-03 13:38:48 · 2830 阅读 · 1 评论 -
shell学习整理笔记
1.shell脚本是一个以.sh问扩展名的文件。“#!”是一个约定的标记,是告诉系统需要什么解释器来执行,echo命令用于向窗口输出文本。如:#!/bin/bashecho "Hello world!"将代码保存为test.sh ,并cd到保存目录:chmod +x ./test.sh //是脚本拥有执行权限./test.sh //执行脚本原创 2017-07-12 19:39:11 · 5238 阅读 · 0 评论 -
vim配置及插件安装管理(超级详细)
1写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了转载 2014-12-04 10:03:19 · 608 阅读 · 0 评论 -
Ubuntu启动出现GRUB rescue 错误的解决方法
症状:开机显示:GRUB loadingerror:unknow filesystemgrub rescue>原因:由于操作者不知道grub2分为两部分,一部分(一般情况下)写在了mbr上,另一部分写在了某个分区的/boot/grub目录(如果 /boot单独分区,则直接写在对应分区的/grub目录)里面。由于上述操作,致使grub2的mbr里面的那一部分找不到/gru转载 2017-01-12 13:41:48 · 3352 阅读 · 0 评论 -
CentOS无损调整磁盘分区大小的实现方法
前几天在QQ群里,有一个朋友问到关于Linux中如何无损调整磁盘分区大小的问题,针对这个问题我在实际使用的过程中也曾探索过,所以比较关注如何无损的调整磁盘分区大小,而不丢失数据!在Windows中,我采用过BootStar的软件,通过该软件记录下硬盘分区的ID,就可以实现分区无损的调整,有兴趣的朋友可以至以下地址下载:Star-Tools BootStar v8.30英文版http转载 2017-01-12 13:45:21 · 18137 阅读 · 0 评论 -
Linux设备树详解
设备树详解在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树,其目录位于arch/arm/boot/dts1.设备树的组成1个dts文件+n个dtsi文件,它们编译而成的dtb文件就是真正的设备树so转载 2017-02-22 17:06:21 · 12686 阅读 · 1 评论 -
随机数的产生
——引用C库原文:标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:printf("Random numbers are: %i %i/n",rand(),rand());原创 2017-02-24 17:22:12 · 310 阅读 · 0 评论 -
ARM Linux 3.x的设备树(Device Tree)
1. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach转载 2017-03-10 17:47:22 · 305 阅读 · 0 评论 -
Ubuntu14.04中配置Samba服务
一. 在ubuntu中安装samba的基本软件软件,命令如下: # sudo apt-get insall samba # sudo apt-get install smbfs二. 创建共享目录,或是找已经存在的文件夹,只要权限放开就行了:# mkdir /home/username/share# sudo chmod 777 /home原创 2017-03-20 11:45:10 · 5442 阅读 · 0 评论 -
ubuntu中常用的命令
关机操作shutdown -h now 现在马上关机shutdown -r now 现在重新启动sudo poweroff 关机操作reboot 现在重新启动用户操作sudo passwd root 设置linux初始root密码su - 如果当前是普通用户,则输入这条命令切换到管理员用户(root),如果要切换到其他用户原创 2017-03-21 15:54:52 · 932 阅读 · 0 评论 -
Win7系统下利用U盘安装Ubuntu_12.04实现双系统教程
目前网上流传的关于Linux 系统的安装教程可是说是五彩缤纷,之前想采用硬盘安装方式,由于配置问题未能正确安装,现研究了下U盘安装,根据互联网上的一些资料及自己的总结,在Windows7 系统下采用U盘安装安装Ubuntu 12.04,并引导成为Windows7 和Ubuntu 12.04 双系统。Ubuntu 12.04在线体验:http://www.ubuntu.com/tour/zh-C转载 2017-04-15 20:18:45 · 563 阅读 · 0 评论