![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核
文章平均质量分 95
zhang_heaven
这个作者很懒,什么都没留下…
展开
-
基于QEMU的vexpress-a9的初始化代码运行(二)
这个part是想详细走读一下用qemu运行kernel的最初始代码,也就是使用qemu运行kernel代码的详细逻辑,从qemu加载根目录下vmlinux镜像的逻辑,也就是运行arch/arm/kernel/head.S的整个过程,直到跳转到start_kernel,使用的kernel版本还是3.18。指令(add pc, r10, #PROCINFO_INITFUNC)执行后,PC跳转到__v7_ca9mp_setup,于是就来跑到__v7_setup相关的代码,这部分主要是初始化CP15寄存器。原创 2024-02-18 10:06:59 · 851 阅读 · 0 评论 -
基于QEMU的vexpress-a9的初始化代码运行(一)
这个part是想详细走读一下用qemu运行kernel的最初始代码,也就是使用qemu运行kernel代码的详细逻辑,从qemu加载根目录下vmlinux镜像的逻辑,也就是运行arch/arm/kernel/head.S的整个过程,直到跳转到start_kernel,使用的kernel版本还是3.18。原创 2024-01-24 09:57:34 · 997 阅读 · 0 评论 -
基于QEMU的vexpress-a9开发调试环境搭建
具体方法是,在之前我们编译过kernel镜像是,内核帮我们生成过一个arch/arm/boot/compressed/vmlinux.lds,我们改写一下其中的TEXT_OFFSET从0改成0x60010000即可,再重新编译一下kernel镜像(make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm zImage)即可将arch/arm/boot/compressed/vmlinux的链接地址从0修改到0x60010000上。原创 2023-09-04 20:59:53 · 334 阅读 · 0 评论 -
Linux环境下最简单内核模块的实践
1. 最简单驱动源文件#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT" Hello World enter\n"); return 0;}static void hello_exit(void){ printk(KERN_ALER原创 2011-11-17 20:49:02 · 495 阅读 · 0 评论 -
i2c- sda挂死分析
i2c- sda挂死分析I2C是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA)。I2C是总线结构,1个Master,1个或多个Slave,各Slave设备以7位地址区分,地址后面再跟1位读写位,表示读(=1)或者写(=0),所以我们有时也可看到8位形式的设备地址,此时每个设备有读、写两个转载 2012-01-06 21:08:14 · 1822 阅读 · 0 评论 -
I2C总线协议学习笔记
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datash转载 2011-12-29 20:57:25 · 737 阅读 · 0 评论 -
kernel 动态修改dtb方案
DTB是在uboot进kernel时,被load到内存中, 然后在linux中 start_kernel ->setup_arch->unflatten_device_tree 中,从内存中读取,展开成树型的数据结构,供内核驱动查找。一般来说,linux中,不会对dtb做什么改动。但如果有特殊需求,想统一几个类似产品的不同配置,修改一些驱动参数,而又不想动uboot的话(一般OTA升级...原创 2018-03-25 19:35:38 · 11964 阅读 · 0 评论