- 博客(54)
- 资源 (1)
- 收藏
- 关注
原创 Linux I2C概览
I2C相关文件相关文件作用举例提供的函数,结构include/linux/i2c.h定义主要结构体:struct i2c_driverstruct i2c_clientstruct i2c_algorithmdrivers/i2c/i2c-core-base.cdrivers/i2c/i2c-core-of.cdrivers/acpi/bus.cI2C相关结构体1. device_id & msgstruct i2c_device_
2021-08-23 11:05:19
725
原创 Linux pinctrl 概览
pinctrl相关文件相关文件作用举例提供的函数,结构include/linux/pinctrl.h定义基本结构体:struct pinctrl_pin_desc;struct pin_gpio_range;struct pinctrl_ops;struct pinctrl_desc;声明相关函数;struct pinctrl_pin_desc{unsigned number;const char *name; void *drv_data}drivers/pinctrl/
2021-08-18 14:54:32
512
原创 Linux input 概览
input相关文件相关文件作用举例提供的函数,结构include/linux/input.h定义struct input_dev;struct input_handler;struct input_handle;struct ff_deviceint input_register_handle(struct input_handle *);int __must_check input_register_device(struct input_dev *);include/l
2021-08-17 11:54:28
613
原创 Linux Platform概览
Platform 相关文件相关文件作用举例提供的函数,结构include/linux/platform_device.h定义struct platform_device;struct platform_device_info;struct platform_driver;声明注册,卸载等函数。int platform_device_register ( struct platform_device * );void platform_device_unregister (
2021-07-25 02:12:35
343
1
原创 了解设备树API(2)
1 常用的OF API作用函数返回值类型参数作用寻找节点struct device_node *of_find_compatible_node();struct device_node *struct device_node *from, const char *type, const char *compatible根据兼容属性,获取设备节点;在大多数情况下,from,type 为NULL, 则表示遍历了所有节点。读取属性int of_property_read
2021-07-21 23:11:22
1000
原创 了解设备树配置(1)
1文件类型后缀作用dtsi一个类型芯片的统一资源,相当于头文件dts具体的硬件信息,每一款板卡都可以定义自己的dtsdtc编译dts的工具,可以通过apt命令安装,内核源码scripts/dtc路径下也已包含dtc工具dtbdts编译后的二进制文件,可以通过bootloader引导程序加载进内核辅助信息单独编译设备树命令: make dtbsbinding文档所在内核位置: Documentation/devicetree/bingdings及子设
2021-07-16 11:26:17
1450
原创 2021-3-24 ubuntu 16.04 安装 ros环境记录
1 ls 2 cd .. 3 sudo mv VMware\ Tools/ ~ 4 cp -r mv VMware\ Tools/ ~ 5 sudo passwd 6 1 7 ls 8 su 9 ping youtube.com 10 https://github.com/rst-tu-dortmund/teb_local_planner_tutorials.git 11 sudo apt-key...
2021-03-24 17:30:59
340
1
原创 arm汇编之ldr,str执行方向,msr和mrs简介
ldr 加载指令/ 伪指令指令相当于C中的指针,方向是从右到左ldr r0, =lable 是让r0指到label地址,存储的是label地址(加载指令)。 ldr r0, lable,相当于r0 = *(lable) 存储的是lable地址总的值(伪指令)。记住和mov的区别, mov一般操作寄存器和立即数,可以把寄存器的值和立即数传向目的寄存器。ldr则可以把地址传到目的寄存器,包括函数的地址,是寄存器间接寻址也是绝对寻址,与当前位置无关。mov则用于寄存器寻址和立即寻址。...
2020-09-06 10:49:59
2464
原创 stm32之定时器比较,通用定时器功能差别,高级定时器有的功能
花了一天的时间,做了个图,方便以后查看和复习。手册是F4xx,有17个定时器,2个基本定时器,2个高级定时器,10个通用定时器(Tim2---Tim5, Tim9--Tim14)分别不同,Tim2---Tim5算中级定时器吧,功能比Tim9---Tim14多,比高级定时器少。这是14个以TIM命名的定时器,还有3个例外:滴答定时器,独立看门狗定时器,窗口看门狗定时器。差别从时基单元,到功能模式都有不同,比如都是通用定时器,Tim2---Tim5是支持递增,递减,递增/递减模式,而Tim9---Ti.
2020-08-15 23:27:04
2635
原创 关于交叉编译gdb失败的解决办法
安装gdb-7.4时,进行交叉编译, --target=arm-linux以后make时出错coffgen.c:2029:8: error: this statement may fall through [-Werror=implicit-fallthrough=] if (combined->u.syment.n_t等等一大堆打印信息。解决办法:http://ftp.gnu.org/gnu/gdb/ 下载8.2版本的gdb然后重复过去的操作,妥活儿!m...
2020-07-13 16:15:23
3470
1
原创 linux设置常用命令
1,设置网关:route add default gw 192.168.1.x2,挂载nfs命令mount -t nfs -o nolock 192.168.1.x:/home/work/NFS /usr/nfsroot3,grepgrep "string" -rn ./ 在当前目录及子目录下搜索字符串可以用管道, ps -aux | grep "gpiotest"grep -n '[^g]oo' 1.txt [^]反向选择^$行首与行尾字节'\.$'匹配...
2020-07-02 15:25:40
230
原创 linux阻塞/非阻塞,同步/异步
作为记录,汇总了一些参考的博文,方便今后查看一 概念:阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。线程依然有可能处于激活状态。非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。同步:就是我调用一个功能...
2020-04-01 23:14:14
514
原创 烧写内核的方式备忘
1,板卡厂商 根据给的基于windows的软件,直接按照步骤,擦除flash,选择文件,输入地址,然后烧写。 必备方式2,nfs 这个要确定uboot是否配了nfs的功能 File systems ---> Network File Systems下配置。 nfs 30008000 192.168.1.100:/home/work/...
2020-03-30 17:28:43
390
原创 字符设备需要的函数
字符设备记录open -> swi val 汇编 引发中断 sys call interface ->根据传入的val 值来调用 sys_open,VFS: sys_open led_open从 open ---> sys_open 依赖于驱动程序框架 怎么告诉内核?file_operations...
2020-03-26 23:28:59
301
原创 移植内核时nand write 30008000这个地址的原因。
在s3c2440里,烧写内核镜像uImage时,通过tftp 或者 nand write烧写的地址都是0x30008000。当时我有个疑问,为什么是这个地址?如果换成别的地址是否可行?1,为什么是0x30008000这个地址?在 arch/arm/kernel/head.S中有解释此处说明在虚拟地址的前16k的空间存放着页表,建议内核ram的起始地址设置到0x8000的位置,也...
2020-03-14 00:03:33
1304
转载 linux内核裁剪的具体过程和选择
转载原文:http://blog.chinaunix.net/uid-20531959-id-1931955.html进程间通信函数和系统调用。Linux内核的五大组成部分之一,一定要选。BSD Process Accounting(CONFIG_BSD_PROCESS_ACCT)[N/y/?]用于启动由内核将进程信息写入文件的用户级系统调用。就看您想不想用它了。Sysct...
2020-03-04 16:06:33
764
1
转载 linux pthread线程API功能简介
Pthread API函数名 说明 pthread_atfork fork前后的处理函数,一般不建议多线程下进行fork,见http://blog.youkuaiyun.com/anxuegang/article/details/66584722 pthread_attr_getguardsize pthread_attr_setguardsize 堆栈保护区大小 PT...
2020-01-10 17:18:31
463
转载 linux有名管道
有名管道是一个FIFO文件。目录特点:API:例子:扩展:特点:无名管道只能在父子/兄弟间进行通信,有名管道可以在无关进程之间交换数据。 有路径名与之关联,它以一种特殊设备文件形式存在于文件系统中。无名管道不存在任何文件系统,而是存在内存中。API:0)头文件 sys/stat.h1)mkfifo()int mkfifo(const char *path...
2020-01-10 16:38:05
328
转载 linux管道
pipe为无名管道,最古老的方法。目录特点:API:注意:程序:特点:1,一个管道建立时,会创建两个文件描述符,fd[0]为读而打开,fd[1]为写而打开。 2,只能用于具有亲缘关系的进程间通信(父子,兄弟)。 3,半双工。 4,可以用read,write函数进行操作,但它不属于任何文件系统,只存在于内存中。API:1)pipe()函数用于建立管道。...
2020-01-10 16:14:57
222
原创 linux消息队列
消息队列的本质是消息的链表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。接收进程可以独立地接收含有不同类型的数据结构。目录几个宏:特点:API:例子:执行:几个宏:MSGMAX 可发送是最长消息的长度 2048MSGMNB 特定队列的最大字节长度(亦即队列中所有消息之和)...
2020-01-10 15:53:28
487
原创 linux信号量
信号量(semaphore)本质是一个计数器,具有原子性,用于实现进程间的互斥与同步,不用于存储进程间数据。目录特点:API:调用顺序:信号量集合的例子:特点:1,用于进程间同步,若要在进程间传递数据需要结合共享内存。2,信号量基于PV操作。 ====》什么是PV操作?3,每次对信号量的PV操作不仅限于对信号量值+1或-1,而且可以加减任意正整数。...
2020-01-10 11:58:18
603
原创 linux共享内存
共享内存,指两个或多个进程共享一个给定的存储区。可以从指针间接赋值思考。比如:malloc一段物理内存,然后有几个指针同时指向它,进行间接赋值。目录特点:API:shmdt()和shmctl()的区别:调用顺序:扩展:特点:1,共享内存是最快的一种IPC,直接操作内存。2,多个进程可以同时操作,所以需要进行同步。(这算是缺点) 共享内存没...
2020-01-10 10:17:40
266
原创 从inode到kobject
写的很乱,还需要整理思路。 这几天看的文件系统,先从底下的内核对象kobject,kset看起的,这是所有device对应的linux文件。了解到这是sysfs文件系统的东西,而sysfs文件系统不会一开始就挂上,在系统调用开始最先经过的是vfs,所以看到了vfsmount部分,那里讲述了vfs文件系统以及其他系统的挂载,而这一切都有一个inode的结构做桥梁,所有文件都离不开inode,在ino...
2019-12-04 00:17:34
486
原创 inode数据结构_系统分析(2)
从文件系统上来看,挂载一个文件系统也是挂载一个文件,文件系统是一个super_block,它和inode什么关系。从mount挂载命令开始,需要先注册,然后再装载系统。分为如下步骤:1,注册文件系统int register_filesystem(struct file_system_type * fs){ int res = 0; struct file_system_type...
2019-12-01 18:49:36
512
原创 inode数据结构_task分析(1)
inode可以说是整个linux最核心的文件节点,所有东西都由inode连接起来。每个文件(和目录)都有且只有一个对应的inode,其中包含元数据(如访问权限、上次修改的日期,等等)和指向文件数据的指针。看一下数据结构:kernel3.4.y/include/linux/fs.hstruct inode { umode_t i_mode; //文件访问权限...
2019-11-29 13:35:33
977
原创 linux-kernel, bus总线数据结构分析
设备模型中的三大组件是:总线,驱动,设备。bus, driver, device。数据结构总览。总线除了一些物理总线的抽象,还代表一些虚拟的总线,如platform,所以在理解platform之前,了解bus就显得还有必要了。在/sys/目录下可以看到 cpu总线下的文件cpu/├── devices│ └── cpu0 -> ../....
2019-11-28 17:59:59
689
原创 kobject,kset的结构分析
kobject 是设备对象kobject是将整个设备模型连接在一起的基础,类型如下:struct kobject { const char *name; struct list_head entry; struct kobject *parent; struct kset *kset; struct kobj_type *ktype; struct sysfs_dire...
2019-11-20 14:50:07
738
原创 va_start,va_list函数的分析及使用
首先,看宏定义typedef char *va_list;//va_list ap;#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) //类型检查, 大小//T 为 type, 数据类型#define va_arg(ap, T) (*(T *)(((ap) += (_...
2019-11-19 14:41:43
1991
原创 Makefile: ***missing separator. stop 问题原因及解决
报错如下:原因:vimrc中有set expandtab,是把tab转换冲了space空格。而在makefile中报错的地方需要的是正常的缩进,转换成空格后就错了。解决办法:删除 set expandtab这一条语句。OK...
2019-09-10 15:37:43
17227
7
转载 数据结构和算法_思维导图
原文地址:https://blog.youkuaiyun.com/qq_38646470/article/details/79616465
2019-08-23 15:28:52
314
原创 解决turmex安装kali报错问题
在手机上安装好turmex后,都喜欢安装一个Linux系统,我当时安装的时kali,但是安装过程中,报错不断。2019.8.24更新1,出现问题首先看下载kali源文件是否完整安装步骤中,会显示[解压中.....] ,可以看到解压的大小。如图所示,完整源文件不小于81M。如果源文件过小,则说明下载错误,而且在remove kali这个命令下,是不会删除源文件的,下一次安装只...
2019-08-20 20:53:33
11527
31
原创 python学习笔记_day2_数据
py_day2_数据读《python语言及其应用》做的笔记目的:了解unicode, utf-8的不同,编码,解码方法。 正则表达式部分感觉介绍的过于简略了,所以没有记录,以后专门看正则表达式的时候再写。1,文本字符串 文本 ASCII使用7位 128种取值。 Unicode 使用若干个8bit的集合,称之为平面(pl...
2019-07-19 18:01:02
219
原创 python学习笔记_day1_类和对象
读《python语言及其应用》做的笔记目的:了解python中对象,类,对象,继承,覆盖,self,如何在子类中添加新方法,子类从父类中获得的帮助super(),属性property,私有特性的命名规范,方法的类型(3种,实例方法,静态方法,类方法),鸭子类型(多态),特殊方法->魔术方法,使用类和模块的选择问题,命名元组的概念。 概念:把对象比作盒子,类则...
2019-07-19 10:18:18
203
原创 python学习笔记_day1_模块
读《python语言及其应用》做的笔记目的:了解模块的概念和构成方式,模块的导入,包,标准模块,以及几个常用的模块。模块 关键字 import 导入模块 1)import report, 运行report.get_descripation() 2)from random import choice, 运行choice...
2019-07-19 10:13:32
248
原创 python学习笔记_day0_外壳
python用缩进来区分代码段。目的:了解python中的代码结构,[判断if, 循环while, 迭代(for, zip)],4种推导式,3种参数,*,**收集参数(收集位置参数,关键字参数),生成器,装饰器,闭包,异常等概念。
2019-07-17 17:10:16
303
原创 python学习笔记_day0_类型
读《python语言及其应用》做的笔记第三章前提:py一切皆对象。目的:了解python中基本元素和数据结构的概念。一:1,数字,字符串,变量 整形,优先级,基数,类型转换, 浮点数, 数学函数 字符串 : str, \, +拼接, *复制, []提取字符, 分片:, 获取长度, 合并, 分割, 大小写与对齐方式, replac...
2019-07-17 16:57:57
192
原创 uboot启动至引导kernel流程分析图
几个重要的文件:u-boot.lds链接脚本,可以知道整个程序的各个段是怎么存放的。顶层config.mk,和板级config.mk,顶层里定义了LDFAGS变量,这是_start的值。而这个变量的真正定义是在板级的config.mk中的TEXT_BASE。如smdk2410是0x33f8000,Hi3516a是0x80800000。编译好后,System.map可以看各个变量的值和...
2019-07-10 22:16:20
5146
原创 Linux内核中的C与汇编
《linux情景分析 上》摘录目录AT&T汇编和386汇编的语言格式差别:嵌入C代码中的386汇编语言程序段C中定义函数,汇编中实现GNU汇编语言的32位寻址方式以小写的.s文件是纯汇编语言。以大写的.S文件是吸收了C语言预处理的汇编文件,其中可以使用#include,#ifdef等成分,而数据结构也一样可以在.h文件中定义。AT&T汇编和386汇...
2019-05-09 22:50:48
724
原创 tolower()与ctype.c的表驱动法,strnicmp
都知道用strcpy, strncpy, strcat等函数,这次就是想看看string.c源码怎么写的。先看一部分#include <linux/types.h>#include <linux/string.h>#include <linux/ctype.h>#include <linux/kernel.h>#include ...
2019-05-09 15:02:57
363
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人