MEMORY | INTERRUPT | TIMER | 并发与同步 | 进程管理 | 调度 | uboot | DTB | ARMV8 | ATF | Kernel Data Structure | PHY | LINUX2.6 | 驱动合集 | UART子系统 | USB专题 |

2022年11月2日

linux内核编译体验篇(一)

摘要: 文章目录 一. 准备环境二. 获取内核源码三. 交叉编译工具链的配置1. 博友们常用安装方法链接2. 公司常用的交叉工具链使用方法 四. 内核解压以及如何打补丁五. 内核基本配置1. 编译前的配置2. uImage的编译命令 一. 准备环境 编译内核之前有一些基本的条件: 有一台可以联网的机器(或者 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(430) 评论(0) 推荐(0) 编辑

linux内核编译中常用的目标(二)

摘要: 文章目录 一. 目标 all 或者 空二. 目标 vmlinux三. 目标 modules四. 目标 Image/zImage/uImage1.Image和zImage的区别2.uImage 五. 目标 M=drivers/xxx六. 目标 xxx.o七. 目标 xxx.s八. 目标 help 一. 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(308) 评论(0) 推荐(0) 编辑

kbuild系统中最简单的目标 -- help(三)

摘要: 当你学完help目标后你会发现它与我们的代码基本没有什么直接的关系,仅仅是用来生成kbuild的简短使用说明,但是用它来作为学习掌握kbuild编译系统的开篇,不管是从难度还是学习感受上真的是再适合不过。 如何使用help命令? 在linux内核源码最顶层目录下执行如下命令。 make help 可 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(143) 评论(0) 推荐(0) 编辑

linux内核编译基础知识储备 --- 过渡篇(四)

摘要: 文章目录 一. 一种makefile中定义函数的方式二. makefile之if函数三. MAKE变量四. $(quiet)4.1 quiet = 空 与 quiet=quiet_ 的区别4.1 有无@的区别 五. echo-cmd 变量六. $(call echo-cmd,checksrc)七. 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(240) 评论(0) 推荐(0) 编辑

linux内核Makefile中的变量build--- 过渡篇(五)

摘要: 一. kbuild系统主要涉及的几个文件 文件名作用Makefile内核源代码顶层目录的Makefile文件scripts/Makefile.build通常在进行递归make时会用到的Makefile文件scripts/Makefile.host如果需要生成可执行文件时会用到的文件。例如:在编译内核 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(424) 评论(0) 推荐(0) 编辑

内核源码中单个.o文件的编译过程(六)

摘要: 通过对过渡篇的学习,相信你已经具有了相当的知识储备,接下来就来继续学习单个.o文件的编译过程 以/drivers/char/mem.c的编译为例 make /drivers/char/mem.o 一. 找到目标及其构建规则* 在顶层目录的Makefile中: %.o: %.c prepare scr 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(393) 评论(0) 推荐(0) 编辑

linux内核vmlinux的编译过程(七)

摘要: 一. vmlinux目标及其构建规则 定义在顶层Makefile中,如下: # The all: target is the default when no target is given on the # command line. # This allow a user to issue onl 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(409) 评论(0) 推荐(0) 编辑

linux内核vmlinux的编译过程之 --- vmlinux.o详解(八)

摘要: 内核构建系统之所以要在链接 vmlinux 之前,去链接出vmlinux.o。其原因并不是要将 vmlinux.o 链接进 vmlinux,而是要在链接 vmlinux.o 的过程中做完两个动作: elf section 是否 mis-match 的检查;生成内核导出符号文件 Module.symv 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(1098) 评论(0) 推荐(0) 编辑

linux内核vmlinux的编译过程之 --- $(kallsyms.o)详解(九)

摘要: 在编译完依赖 vmlinux.o 后,链接 vmlinux 之前,构建系统还要编译依赖目标 $(kallsyms.o)。接下来就对 kallsyms 进行一个简单的解释。 一. 引言 1.符号的概念 Linux内核是一个整体结构,而模块是插入到内核中的插件。尽管内核不是一个可安装模块,但为了方便起见 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(892) 评论(0) 推荐(0) 编辑

linux内核$(kallsyms.o)详解续篇 --- 内核符号表的生成和查找过程(十)

摘要: 在内核中维护者一张符号表,记录了内核中所有的符号(函数、全局变量等)的地址以及名字(非栈变量),这个符号表(.tmp_vmlinux2.o)被嵌入到内核镜像中,使得内核可以在运行过程中随时获得一个符号地址对应的符号名。而内核代码中可以通过调用 __print_symbol(const char *f 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(1246) 评论(0) 推荐(0) 编辑

linux内核链接脚本vmlinux.lds分析(十一)

摘要: vmlinux.lds.S主要是用来组织内核的每个函数存放在内核镜像文件的位置。编译内核源码生成内核文件的过程分两步,一个是“编译”,另一个是“链接”的过程,vmlinux.lds.S要做的就是告诉编译器如何链接编译好的各个内核.o文件。未经编译的内核源码是不存在vmlinux.lds链接脚本的,在 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(1143) 评论(0) 推荐(1) 编辑

linux内核链接脚本vmlinux.lds分析续篇之---* (.proc.info.init)、* (.arch.info.init)、*(.taglist.init)段的分析(十二)

摘要: 序言 为什么这里又单独写一篇关于内核连接脚本中各种段的分析。因为在内核启动中有如下三个比较重要的步骤: 校验处理器ID,检验内核是否支持该处理器;若不支持,则停止启动内核。 - - -> *(.proc.info.init)段校验机器码,检验内核是否支持该机器;若不支持,则停止启动内核 - - -> 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(199) 评论(0) 推荐(0) 编辑

linux内核链接脚本vmlinux.lds分析续篇之 --- initcall机制(十三)

摘要: 文章目录 一. initcall机制的由来二. initcall的源码三. xxx_initcall修饰函数的调用 说明: 此篇initcall机制讲解对应的内核版本是4.20.13:这时可能有人会提出疑问,为什么前面的都是用老的内核2.6.38来讲,这个机制用新的内核来讲?主要是因为这里有一定的改 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(243) 评论(0) 推荐(0) 编辑

linux内核Image/zImage/uImage的编译过程(十四)

摘要: 文章目录 一. 基础知识1.1 Image uImage与zImage的区别 二. uImage目标及其构建规则三. uImage的依赖zImage3.1 首先分析依赖$(obj)/compressed/vmlinux3.2 arch/arm/boot/zImage的构建 四. arch/arm/b 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(2443) 评论(0) 推荐(0) 编辑

内核启动流程 --- 自解压(一)

摘要: 文章目录 一. 前言二. bootloder准备阶段三. 内核自解压阶段3.1 保存机器ID和启动参数地址到r7和r8寄存器3.2 切换到SVC模式并关闭FIQ/IRQ3.3 把指定标号的链接地址加载到对应的寄存器中3.3.1 获取标号LC0的物理地址并保存到r0中3.3.2 把r0指向的内存地址中 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(277) 评论(0) 推荐(0) 编辑

链接脚本(Linker Scripts)语法和规则解析(自官方手册)

摘要: <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-web 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(24414) 评论(4) 推荐(8) 编辑

PHY驱动调试之 --- MDIO/MDC接口22号和45号条款(一)

摘要: <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-web 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(912) 评论(0) 推荐(0) 编辑

PHY驱动调试之 --- PHY控制器驱动(二)

摘要: #1. 前言 内核版本:linux 4.9.225,以freescale为例。 #2. 概述 PHY芯片为OSI的最底层-物理层(Physical Layer),通过MII/GMII/RMII/SGMII/XGMII等多种媒体独立接口(介质无关接口)与数据链路层的MAC芯片相连,并通过MDIO接口实 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(1595) 评论(0) 推荐(0) 编辑

PHY驱动调试之 ---PHY设备驱动(三)

摘要: 1. 前言 内核版本:linux 4.9.225,以freescale为例。(部分内容待修改和补充,不一定准确) # 2. 概述 上一篇文章讲了控制器的驱动使用的是**platform总线的连接方式**,本节要讲的PHY设备驱动是基于**device、driver、bus的连接方式**。 其驱动涉及 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(3974) 评论(0) 推荐(1) 编辑

UBOOT编译--- make xxx_deconfig过程详解(一)

摘要: 1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 概述 Ubootb编译第一步通常是执行make xxx_config,在编译指定顶层目录生成.config文件,**这种方式要求厂商提供一个基础的xxx_config文件**(通常来说开发者不会通过执 阅读全文

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(1863) 评论(4) 推荐(0) 编辑

导航