![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux kernel
九月天-深圳专业软硬件开发
Hello CSDN.
展开
-
Linux 寄存器操作log打印
在调试Linux内核的时候,driver会操作寄存器,比如音频调试通路的时候,各种route下发寄存器值,可以打开如下打印.+++ b/rk3288_mid_7.1/kernel/drivers/base/regmap/regmap.c@@ -32,6 +32,7 @@register I/O on a specific device.*/#undef LOG_DEVICE+#define LOG_DEVICE “2-001c”static int _regmap_update_bits原创 2021-04-14 16:53:27 · 471 阅读 · 0 评论 -
Linux LCD驱动
典型字符设备驱动:register(主设备好,name,file_ops)struct file_operation file_ops={.open = file-open.write/read = file_write/read.}.LCD驱动也遵循相同的驱动架构上层App通过open,read,ioctl等调用fbmem.c种定义的file_operation结构体open("/dev/fb0")fb_open(){int fbidx = iminor(inod.原创 2021-04-01 09:18:11 · 122 阅读 · 0 评论 -
Linux 内核OOPS 代码定位
几个常识概念:1.程序计数器PC (R15),可以作为一般的通用寄存器使用,但有一些指令在使用R15时有一些限制。由于ARM采用了流水线处理器机制,当正确读取了PC的值时,该值为当前指令地址值加上8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第一位总为 0。2.寄存器R13(SP),通常用作堆栈指针,每一种模式都有自己的物理R13,程序初始化R13。当进入该模式时,可以将要使用的寄存器保存在R13所指的栈中,当退出时,将弹原创 2021-03-30 17:49:28 · 241 阅读 · 1 评论 -
Linux内核编译,移植以及启动流程
参考韦东山视频:https://www.bilibili.com/video/BV1pW411L7UX?p=3Linux移植步骤1.下载源码.2.打补丁,patch -p0 <file.patch3.配置,make xxx_defconfig/cp xxx_defconfig .config;make menuconfig ,修改配置,保存后,会生成.config4.make uImage 或者类型命令的时候,.config会同时生成include/config/auto...原创 2021-03-22 21:06:22 · 135 阅读 · 0 评论 -
Linux用户态与内核态通讯的几种方式
http://www.javashuo.com/article/p-fxcascgn-ma.htmlhttps://blog.csdn.net/ShawnWang1994/article/details/1000963761.系统调用 open read write ioctl2.proc虚拟文件系统3.sysfs 虚拟文件系统4.netlink (基于socket,使用比较广泛)5.mmap(数据量大)6.signal 异步通知(driver中通过kill_fasync发送信.原创 2021-03-22 19:47:58 · 332 阅读 · 0 评论 -
Linux设备驱动模型理解
https://blog.csdn.net/qq_40732350/article/details/82992904转载 2021-03-22 18:16:28 · 62 阅读 · 0 评论 -
Makefile的使用摘记
https://blog.csdn.net/gzxb1995/article/details/102615262原创 2021-03-15 16:14:40 · 71 阅读 · 0 评论 -
echo /sbin/mdev > /proc/sys/kernel/hotplug 作用解析 Linux mdev使用
参见:https://zhidao.baidu.com/question/1606465593857998667.htmllinux系统对于热插拔事件的产生默认都是调用/sbin/hotplug,该程序通过加载驱动程序,创建设备节点,挂载分区等。如果系统中不是/sbin/hotplug来执行,而是mdev,那么用户应当在早期启动的时候将该执行档(包含绝对位置)设置进去,于是有了上面的echo /sbin/mdev> /proc/sys/kernel/hotplug。我们可以在脚本中注释掉该命令行,重原创 2021-03-09 09:21:11 · 574 阅读 · 1 评论 -
udev实现原理以及步骤
https://blog.csdn.net/qingzhuyuxian/article/details/79704525转载 2021-03-06 14:17:11 · 121 阅读 · 0 评论 -
DTS设备树学习(二)
一、前言简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Compiler),可以将这些适合人类阅读的Device Tree source file变成适合机器处理的Device Tree binary file(有一个更好听的名字,DTB,device tree blob)。在系统启动的时候,boot program(例如:firmware、bootloader)可转载 2020-06-23 15:21:38 · 1376 阅读 · 0 评论 -
Linux kernel OOPS解析:
=============================================================================原文地址:http://blog.micro-studios.com/?p=615#comment-1069看后感想:這点比 ldd3上讲的都仔细2012年11月29日11:24:17:有BUG_ON就不用反汇编了。。。2012年11月30日11:14:13:回调函数跟丢了我遇到的情况:http://my.csdn.net/my/code/det原创 2020-06-23 14:59:53 · 1265 阅读 · 0 评论 -
DTS文件详解,DTS文件解析
一.什么是DTS?为什么要引入DTS?DTS即Device Tree Source 设备树源码, Device Tree是一种描述硬件的数据结构,它起源于 OpenFirmware (OF)。在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,比如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data,这些板级细节代码对内核来讲只不转载 2020-06-23 14:31:52 · 26796 阅读 · 5 评论 -
串口、COM口、TTL、RS-232,RS-485的区别详解
串口、COM口、TTL、RS-232,RS-485的区别详解 串口、com口是指物理接口形式,而TTL、RS-232、RS-485是指的电平标准 接设备的时候,一般只接GND,RX,TX,不会接VCC(5V或3.3V,聚力的板子VCC全部为3.3V)的电源线,避免与目标设备上的供电冲突。 PL2303、CP2102芯片是USB转TTL串口的芯片,用USB来扩展串口(TTL) MAX232芯原创 2017-04-12 11:03:01 · 7687 阅读 · 0 评论 -
linux下I2C驱动架构全面分析
I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。 因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中。 linux下的驱动思路 在linux系转载 2017-03-25 15:21:25 · 292 阅读 · 0 评论 -
kmalloc,vmalloc,malloc区别
简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc不保证任何东西kmalloc能分配的大小有限(128Kb),vmalloc和malloc能分配的大小相对较大内存只有在要被DMA访问的时候才需要物理上连续vmalloc比kmalloc要慢转载 2017-03-25 11:43:12 · 436 阅读 · 0 评论 -
kmalloc函数详解
kmalloc 函数详解#include Linux/slab.h> void *kmalloc(size_t size, int flags);给 kmalloc 的第一个参数是要分配的块的大小. 第 2 个参数, 分配标志, 非常有趣, 因为它以几个方式控制 kmalloc 的行为.最一般使用的标志, GFP_KERNEL, 意思是这转载 2017-03-25 11:22:17 · 716 阅读 · 0 评论 -
Linux设备驱动之——input子系统(一)
什么是INPUT Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。下面分析input输入子系统的结构,以及功能实现。Linux中input系统主设备号是13次设备号: 0-31 joysti转载 2017-03-25 18:30:17 · 302 阅读 · 0 评论