- 博客(7)
- 资源 (3)
- 收藏
- 关注
原创 【Linux】platform设备驱动
代表一个物理硬件or虚拟出来的硬件,他可以是连接到SoC上的具体硬件,如鼠标、键盘等;也可以是一个抽象出来的硬件,例如CLK PIN_CTL这些,SoC内部提供的功能,板级找不到对应的物理实体,通常会被归纳到platform bus下: 用来控制和管理特定硬件一系列方法,例如初始化probe、移除remove、低功耗: 物理层面上,总线是CPU和各个组件数据交换的通道,例如APB总线,AXI总线;或者SoC和外设之间数据交换的通道,IIC总线、SPI总线。Linux内部,总线被抽象成一个软件实体。
2025-06-08 22:53:39
568
原创 【Linux】kobject-内核设备驱动模型的基石
kobject是内核中一个通用的对象管理框架,通常会嵌入到High Level的数据结构中kobject和kset实现了树形结构,是内核对象层次管理的基础kobject以引用计数的方式为内核对象实现了生命周期管理kobject实现了uevent内核通知机制,当对象状态发生改变时,内核空间可以发送通知到设备空间kobject的出现,促进了设备驱动模型的一致性,kobject确保所有内核对象有统一的操作接口,提升了内核的可扩展性以及代码可重用性。可以说kobject是Linux设备驱动模型的基石。
2025-06-04 00:03:17
904
原创 【uboot】booti指令详解
在上一篇,我们使用了booti指令启动Kernel,那么到底是怎么启动内核的呢?当然,修改defconfig文件最为直接,也省的每次启动都需要人工敲一遍命令了。之后按照原来的方法加载uImage,即可成功进入内核的命令行。哈哈哈,没想到吧,直接br指令跳到ep执行就可以了。比较两者二进制也可得知:前面的0x40字节就是工具补上去的。在uboot/tools文件夹下可以找到,也可直接安装。直接使用 bootm命令启动Image,报了如下错误。镜像,也仅仅是前面增加了。直接启动的,需要使用。
2025-06-02 14:02:10
1186
原创 【uboot】设备树基础语法分析
上面就是一个IIC设备节点的定义,一个controller节点,也需要作为父节点,父节点有三个子节点,三个子节点分别对应Slave设备,reg属性表示的是三个Slave的设备地址。对于label和@unit-address都是可选的,一般@unit-address写设备的基地址,但是没有什么实际含义。对于USB、PCIE、或者MIPI这种复杂设备,除了controller寄存器外,还有PHY寄存器,如何定义设备树节点呢。对于SPI或者IIC这类设备,一个控制器外挂多个Slave,设备树节点如何定义。
2025-05-10 00:51:01
316
原创 [u-boot] uboot启动过程中的代码重定位
直到我在找到了这一句,段的链接地址是定义的地址加载地址(Load Address)和运行地址(Running Address)早期的启动阶段、uboot还没打开MMU,即使后面MMU Enable的情况下,也是做的一一映射(虚拟地址 = 物理地址),在这个前提下,加载地址就是运行地址uboot是被前级Bootloader加载到RAM上的,通常情况下,前级BL也是把镜像搬移到运行地址上去uboot中的第一次重定位和,这段地址空间是如何生成的?保存的是什么数据?如何进行的重定位?重定位的目的
2025-05-05 20:44:01
1035
uboot2018.01 for itop4412_elite_scp_1g.tar.bz2
2019-08-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人