![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 71
禾仔仔
那些不记得过去的⼈, 注定要重复过去。
展开
-
Linux系统调用之二——调用机制
无论是GUI(用户图形接口)、应用程序,还是命令行接口最终都需要使用系统调用来实现。当我们要打开文件(open)然后进行写入(write)或者分配内存(malloc)时,此时将会切换到内核态,虽然我们并察觉不到;之后内核对调用进行检查,如果通过,则按照指令执行相应的操作,分配相应的资源。原创 2022-01-09 15:47:34 · 1598 阅读 · 0 评论 -
多线程并发时原子操作的简单探究
所谓**原子操作**,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位。原创 2021-12-15 23:00:03 · 567 阅读 · 0 评论 -
Linux系统查看内存使用情况
常用命令查看内存使用情况:free显示进程信息(包括CPU、内存使用等信息):top、ps查看驱动占用内存:lsmod原创 2021-10-13 16:31:15 · 133263 阅读 · 0 评论 -
内核dma_cache_maint介绍
外设和主芯片数据传输时,经常要手动刷新cache,要用到dma_cache_maint,这个内核函数到底在干什么呢?原创 2021-08-10 11:46:26 · 444 阅读 · 0 评论 -
platform_bus、device及driver 注册及介绍
在目前常用的bus, driver, device 框架中,这三者的关系及注册是怎么样的呢?让我们一探究竟原创 2021-08-06 16:21:17 · 879 阅读 · 0 评论 -
内核态do_gettimeofday()、用户态gettimeofday()获取指令执行时间
获取通过do_gettimeofday()或者gettimeofday()获取系统时间,进一步得到指令执行时间原创 2021-07-29 11:53:59 · 2276 阅读 · 1 评论 -
大小端介绍、查看及转换
Big-Endian(大端字节序):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端(符合人们日常阅读习惯);Little-Endian(小端字节序):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。原创 2021-04-26 08:24:37 · 2110 阅读 · 4 评论 -
Debugfs文件系统的简介及简单使用
我还在读取一个又一个寄存器查gpio配置的时候,大佬,一下清晰明了的搞定了。会的就是多呀。学习了。原创 2021-04-02 16:48:40 · 4678 阅读 · 0 评论 -
代码分析栈(stack)的生长方向
通过探索下堆栈的生长方向。原创 2021-04-01 23:15:18 · 3307 阅读 · 5 评论 -
打补丁(patch)的方式解决多分支合入问题
之前讲过一次通过git cherry-pick 合入其他分支提交节点,具体见另一篇博客:https://blog.csdn.net/weixin_43083491/article/details/110203543但有时一些痛点仍难以解决,譬如今天,代码大量移植,修改了很多文件,持续了一周的代码修改,中间已经有很多同事的提交节点,git pull拉不到最新,因为有冲突,这时怎么办呢?当然可以通过1、回退自己修改,更新再修改,可是这样太费时间了,大量的修改不知道要多久;2、当然也可以通过比对工具,保存修原创 2021-03-29 10:58:29 · 879 阅读 · 0 评论 -
make menuconfig内核配置加载过程
Linux内核编译是驱动开发的日常工作,但你知道内核编译的来龙去脉吗?这里以arm架构为例看下内核编译过程。原创 2021-03-24 11:23:32 · 1287 阅读 · 1 评论 -
空指针引用,导致linux内核panic(重启)
空指针引用,导致linux内核panic(重启)Kernel panic - not syncing: Fatal exceptionerror: Oops - bad mode: 0原创 2021-03-18 20:28:57 · 2381 阅读 · 0 评论 -
浅析wake_up_interruptible及wait_event_interruptible
从函数名字上,就可以看出来这两个函数是唤醒有关的函数。实际上他们的功能:**唤醒注册到等待队列上的进程**原创 2021-03-04 20:11:43 · 2357 阅读 · 1 评论 -
sed删除代码空行和删去行尾空白
删除空行的方法有很多种,这里只是为了比较sed命令删除空行及行尾空白原创 2021-02-26 16:35:38 · 7855 阅读 · 0 评论 -
代码文件格式化/美化命令
针对代码文件里tab空格混用,缩进混乱,编码格式混乱等问题原创 2021-02-23 15:26:10 · 567 阅读 · 0 评论 -
warning: implicit declaration of function ‘ioctl‘ [-Wimplicit-function-declaration]
授人以鱼不如授人以渔,解决这类warning告警问题。原创 2021-01-26 09:34:00 · 4688 阅读 · 0 评论 -
Makefile中($(KERNELRELEASE),)执行分析
($(KERNELRELEASE),)是什么意思,又是怎么样影响执行的?看了一些人的解析,洋洋洒洒一大段,结果也说的不清不楚,通过查阅弄懂了这个问题,分享一下我的理解。原创 2021-01-11 17:39:19 · 2021 阅读 · 2 评论 -
insmod: ERROR: could not insert module helloworld.ko: Operation not permitted
前面有说过如何创建字符设备的文章,原创 2021-01-08 11:40:09 · 2822 阅读 · 0 评论 -
“黑客帝国”装B特效,不分linux版本
看过黑客帝国的小伙伴,是不是很希望搞个一样的特效,来一起搞一下,学习下源码。淦...原创 2020-12-16 17:51:31 · 488 阅读 · 0 评论 -
goto的理解与使用
Goto记得学C语言时,老师就有讲过:"不要使用goto, 这是一个坏习惯,而且很危险!"各类书籍上也是这么说,所以之前写的代码几乎从来没有使用过goto。现在工作在搞Linux硬件驱动,内核源码里却有大量goto,看了些论坛大神的讨论,确实goto不应该多用,不然逻辑会搞得混乱。但是自己也得会,不然内核代码也是看的稀里糊涂。功能:goto语句可以使程序在没有任何条件的情况下跳转到指定的位置#include <stdio.h>int main(void){ char a;原创 2020-11-26 19:06:32 · 2538 阅读 · 0 评论 -
内核空间和用户空间简介以及两者之间的数据拷贝
1、内核空间和用户空间的概念简介在Linux中,操作系统和驱动程序运行在内核空间,应用程序运行在用户空间。两者不能简单的使用指针传递数据,因为Linux使用的虚拟内核机制,当内核空间使用用户空间指针时,对应的数据可能不在内存中(数据已被换出)。用户空间的内存采用段页式,内核空间也有自己的规则。32位的Linux内核虚拟地址空间,一般低3G的地址(0-3G)划分为用户空间,高1G的地址(3~4G)划为内核空间,也就是说内核空间可以使用的线性地址只有1G。另外也可以自行配置内核空间和用户空间的界限(大小原创 2020-10-11 22:29:53 · 3494 阅读 · 0 评论 -
字符设备驱动代码添加到内核源码树(环境Centos7)
1、 准备1、Linux内核文件(我用的4.19)阿里镜像:https://mirrors.aliyun.com/linux-kernel/v4.x/2、字符设备驱动源文件我自己简单的写了一个见我的另外的帖子:https://blog.csdn.net/weixin_43083491/article/details/108961701 helloword.c2、配置Kconfig1、准备将helloworld.c放入linux-4.19驱动下的字符设备目录。路径:linux-4.19/dr原创 2020-10-10 23:28:38 · 405 阅读 · 0 评论 -
Linux字符设备驱动从helloworld认识内核
字符设备是内核的接口的一种,用户空间和内核空间的交互的方式之一,这里侧重讲下字符设备,对模块知识略微提及,后面会单独发相关的帖。1、模块化Linux 内核整体结构很庞大,包含了很多的组件,目前最多的也是最好的处理方式:将需要的功能编译成模块,在需要的时候动态地加载,包含进内核当中。这也就是所谓的模块化。常用操作:insmod 将模块添加进内核rmmod 将模块从内核卸载lsmod 查看已安装到内核的模块modprobe 载入指定的个别模块,或是载入一组相依赖的 模块。 modprobe原创 2020-10-08 22:35:23 · 571 阅读 · 0 评论 -
Linux系统开机流程简介
前端时间跟着团队在搞Linux系统的内核移植,涉及到很多模块的加载顺序问题,就学习了些Linux系统开机的基本流程,就算给刚刚入手的小伙伴些学习参考吧。大致流程:原创 2020-08-29 19:22:53 · 422 阅读 · 0 评论 -
Linux常见文件种类和扩展名简介
使用Linux经常会听到这样一句话:Linux下一切皆文件。也就是说我们的任何设备在Linux下都是文件,Linux中文件种类很多,就连数据间沟通的接口也有相应的文件来负责,我们可以通过ls -l来查看文件是哪类文件。1文件种类1.1常规文件(regular file)**‘-’**就是我们可以读写的类型文件,形式如[-rwxrwxrwx]中第一个字符’-’来表示1.1.1纯文本文件(ASCII)由各种字符、数字等组成,由权限的情况下,可以通过vim打开,或者cat、head等命令查看1.1原创 2020-08-13 15:51:25 · 1156 阅读 · 0 评论 -
Linux编程中C语言头文件位置
Linux下引用的头文件位置...原创 2020-08-07 20:47:02 · 5829 阅读 · 0 评论