
笔记
文章平均质量分 80
hjg__
这个作者很懒,什么都没留下…
展开
-
busybox启动流程简单解析:从init到shell login
由于遇到一系列定制,从init开始加载不同服务,对服务异常等需要特殊处理。如何在恰当的时机加载恰当的服务?如何对不同异常进行特殊处理?这就有必要分析内核是如何加载init进程的?init进程是按照何种顺序启动各种服务的?init是如何管理这些服务的?系统开机后各种进程都是在哪里创立的?带着这些问题来分析一下kernel->init、init进程本身、inittab配置文件、rcS、/etc/profile等等。1. 从kernel到init在内核启动的最后阶段start_kerne转载 2022-01-15 11:42:43 · 1838 阅读 · 0 评论 -
i2c spi 读写
Linux下SPI Flash-W25Q64驱动调试_heat.huang的博客-优快云博客_linux spi调试工具转载 2022-01-10 22:52:43 · 260 阅读 · 0 评论 -
linux uevent 机制中的udev 和mdev
一、Uevent机制1.前提摘要(1)Sysfs文件系统 内核设备模型主要的模块和用户之间能看到的相关部分就是sysfs文件系统了。内核在启动的时候会注册sysfs文件系统,并且在启动系统的初期。通过mount命令挂载sysfs文件系统到/sys挂载点。 Mount-tsysfssysfs/sys 那么sysfs文件系统的作用是什么呢。概括的说有三点: 1)、建立系统中总线、驱动、设备三...转载 2022-01-04 22:41:23 · 853 阅读 · 0 评论 -
linux设备驱动 device add详解
《Linux设备节点创建》内核kobject上报uevent过滤规则_程序改变生活-优快云博客_netlink_kobject_uevent转载 2022-01-04 20:13:20 · 3474 阅读 · 0 评论 -
Linux设备树解析
1. Device Tree简介Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a fucking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platfor转载 2021-12-20 23:30:51 · 2646 阅读 · 1 评论 -
Linux Command Line 解析
0处理模型Linux kernel的启动包括很多组件的初始化和相关配置,这些配置参数一般是通过command line进行配置的。在进行后续分析之前,先来理解一下command line的处理模型:要处理的对象是一个字符串,其中包含了各种配置信息,通常各个配置之间通过空格进行分离,每个配置的表达形式是如:param=value1,value2或者很简单就是一个rw。那么kernel就需要提供对这些参数进行处理的处理函数列表。根据参数的作用以及执行期的先后不同,这些处理函数被定义到不同的段中。..转载 2021-12-16 23:50:40 · 909 阅读 · 0 评论 -
linux内核:copy_to_user和copy_from_user
copy_to_user和copy_from_user在linux内核中,我们将用户态数据拷贝到内核或者将用户态数据拷贝到内核,使用的是copy_from_user和copy_to_user。但是在有些情况下,我们直接使用memcpy也不会出现错误,可以正常的将数据从内核态拷贝到用户态以及将数据从用户态拷贝到内核态,memcpy都不会发生错误。没发生错误是不是就不存在错误的情况呢?如果存在错误,那么什么时候使用memcpy会发生错误呢?memcpy和copy_{to/from}_user的区别又是什转载 2021-12-15 23:33:22 · 2775 阅读 · 0 评论 -
Linux内存管理(二):ARMv8 地址转换
Linux内存管理(二):ARMv8 地址转换_Hober-优快云博客转载 2021-12-15 23:12:51 · 175 阅读 · 0 评论 -
两个进程访问同样的逻辑地址物理地址为何不同
1.Linux 段表In uniprocessor systems there is only one GDT, while in multiprocessor systems there is one GDT for every CPU in the system.2.Linux页表each process has its own Page Global Directory and its own set of Page Tables. When a process switch o.转载 2021-12-15 22:06:27 · 564 阅读 · 0 评论 -
DTS 杂谈
首先推荐elinux.org上一篇关于Device Tree的文章:Device Tree Usage - eLinux.org这是一篇关于Device Tree的入门文章。对英文犯怵的童鞋也不要紧,我在csdn上找到了翻译稿:ARM Linux 3.x的设备树(Device Tree)_宋宝华-优快云博客_device tree译文重新组织了部分语言,开头还写了一段关于DT的轶事,不过基本上还是忠于英文原文的。但还是要提个醒,这篇翻译稿比较早了,而英文版在后来又经过几次更新,所以中文翻译转载 2021-12-10 23:47:23 · 503 阅读 · 0 评论 -
[console] earlycon实现流程
本文以samsung s5pv210(ARM)为例一、功能说明&使用方法1、功能说明printk的log输出是由console实现(会在其他文章中说明)。由于在kernel刚启动的过程中,还没有为串口等设备等注册console(在device probe阶段实现),此时无法通过正常的console来输出log。为此,linux提供了early console机制,用于实现为设备注册console之前的早期log的输出,对应console也称为boot console,简称bcon。这个co转载 2021-06-24 15:53:50 · 1804 阅读 · 0 评论 -
[console] early printk实现流程
本文以ARM为例一、功能说明printk的log输出是由console实现(会在其他文章中说明)。由于在kernel刚启动的过程中,还没有为串口等设备等注册console(在device probe阶段实现),此时无法通过正常的console来输出log。为此,linux提供了early console机制,用于实现为设备注册console之前的早期log的输出,对应console也称为boot console,简称bcon。这个console在kernel启动的早期阶段就会被注册,主要通过输出设备转载 2021-06-24 15:51:09 · 482 阅读 · 0 评论 -
[kernel 启动流程] (第六章)第一阶段之——打开MMU
1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)第一阶段要做的事情,也就是stext的实现内容设置为SVC模式,关闭所有中断获取CPU ID,提取相应的proc info验证tags或者dtb创建临时内核页表的页表项配置r13寄存器,也就是设置打开MMU之后要跳转到的函数。使能MMU跳转到start_kernel,也就是跳转到第二阶段本文要介绍的是“使能MMU”的部分。2、疑问主要转载 2021-06-24 14:57:04 · 1021 阅读 · 0 评论 -
[kernel 启动流程] (第五章)第一阶段之——临时内核页表的创建
1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)第一阶段要做的事情,也就是stext的实现内容设置为SVC模式,关闭所有中断获取CPU ID,提取相应的proc info验证tags或者dtb创建临时内核页表的页表项配置r13寄存器,也就是设置打开MMU之后要跳转到的函数。使能MMU跳转到start_kernel,也就是跳转到第二阶段本文要介绍的是“创建临时内核页表的页表项”的部分。转载 2021-06-24 14:54:42 · 527 阅读 · 0 评论 -
[kernel 启动流程] (第四章)第一阶段之——dtb的验证
1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)第一阶段要做的事情,也就是stext的实现内容设置为SVC模式,关闭所有中断获取CPU ID,提取相应的proc info验证tags或者dtb创建页表项配置r13寄存器,也就是设置打开MMU之后要跳转到的函数。使能MMU跳转到start_kernel,也就是跳转到第二阶段本文要介绍的是“验证tags或者dtb的合法性”的部分。因为现在基本转载 2021-06-24 14:50:16 · 546 阅读 · 0 评论 -
[kernel 启动流程] (第三章)第一阶段之——proc info的获取
1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)第一阶段要做的事情,也就是stext的实现内容设置为SVC模式,关闭所有中断获取CPU ID,提取相应的proc info验证tags或者dtb创建页表项配置r13寄存器,也就是设置打开MMU之后要跳转到的函数。使能MMU跳转到start_kernel,也就是跳转到第二阶段本文要介绍的是“获取CPU ID,提取相应的proc info”的部转载 2021-06-24 14:41:16 · 496 阅读 · 0 评论 -
[kernel 启动流程] (第二章)第一阶段之——设置SVC、关闭中断
1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)1第一阶段要做的事情,也就是stext的实现内容设置为SVC模式,关闭所有中断获取CPU ID,提取相应的proc info验证tags或者dtb创建页表项配置r13寄存器,也就是设置打开MMU之后要跳转到的函数。使能MMU跳转到start_kernel,也就是跳转到第二阶段本文要介绍的是“设置为SVC模式,关闭所有中断”的部分。分成两部转载 2021-06-24 14:34:33 · 1005 阅读 · 0 评论 -
[kernel 启动流程] (第一章)概述
一、kernel启动之前的准备动作在kernel启动之前的准备都是由bootloader来完成。所以不管是什么bootloader,例如uboot、LK、superboot等等,都需要实现以下准备动作。这里指说明概念,不涉及代码。我们在project X项目中使用的bootloader是uboot,具体代码参考第四节“kernel准备动作在uboot中的实现”1、kernel镜像加载到ddr的相应位置kernel镜像一般会存在于存储设备上,比如FLASH\EMMC\SDCARD.因此,需要先.转载 2021-06-24 14:30:01 · 1341 阅读 · 0 评论 -
[kernel 启动流程] 前篇——vmlinux.lds分析
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例一、基础部分1、段说明text段代码段,通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定。data段数据段,通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。bss段通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。BSS段属于静态内存分配。init段linux定义的一种初始化过程中才会用到的段,一旦初始化完成,那么这些转载 2021-06-24 14:07:51 · 1293 阅读 · 0 评论 -
用uboot 烧写uboot linux内核 文件系统到nandflash的 过程以及bootm go命令启动与区别
文章结构结构顺序有变化-1:烧写uboot0: bootargs bootcmd 命令参数的设置1:制作yaffs2的过程2:烧写yaffs2的过程3:制作uimage 的过程4: 烧写uiamge的过程5:uimage zimage vmlinux 的区别6: uboot传递给内核的参数结构 tag7:bootm go 的 启动过程 以及区别8:加载地址 入口地址 等///通过uboot烧写uboot到nandflash///nand erase 0 50000/转载 2021-06-18 11:02:30 · 1265 阅读 · 0 评论 -
从0移植uboot启动流程分析
经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够,首先,此时的uboot并不符合三星芯片对bootloader的格式要求,其次,此时的uboot.bin也没有结合我们的开发板进行配置,还无法使用。而要进行这样的个性化配置,前提条件就是对uboot开机流程和编译系统有所了解,本文主要讨论前者。uboot是一个两阶段bootloader,第一阶段主要做硬件直接相关的初始化,使用汇编编写;第二阶段主要为操作系统的运行准备环境,主要用C编写,这里以ARM平台为例分析其启动流程。转载 2021-06-17 11:19:22 · 282 阅读 · 0 评论 -
nandflash 启动
S3C2440和S5PV210是很多 嵌入式爱好者入门的arm处理器,网上的资料也很多。今天我们就来聊聊S3C2440和S5PV210的启动流程,上一篇博客我介绍了uboot在norflah上的启动流程(重要!这是基础)。今天,我们来聊聊uboot在nandflash上的启动流程。一. nandflash 与 norflash 同样,你现在肯定心里有疑问 何为norflash?何为nandflash? 他们之间有什么异同? norflash我上篇博客已经介绍了(再重复一下吧)转载 2021-06-17 11:11:10 · 1820 阅读 · 0 评论 -
norflash启动uboot
转载:https://blog.youkuaiyun.com/kernel_yx/article/details/53045424最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移植到单位设计的ARMv7的处理器上。正好元旦放假三天闲来无事,有段完整的时间来整理下最近的工作成果。之前在学习uboot时,在网上看了很多文章,很多都是基于老版本的的uboot,并且很多都是直接从代码开始分析,并没有将uboot与ARM处理器体系结构结合起来。毕竟很多时候做一件事情,你知道怎么去做这件事和你知道这转载 2021-06-17 11:04:52 · 1333 阅读 · 0 评论