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

随笔分类 -  Linux2.6

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

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(448) 评论(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-路人甲 阅读(326) 评论(0) 推荐(0) 编辑

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

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(145) 评论(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-路人甲 阅读(249) 评论(0) 推荐(0) 编辑

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

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(460) 评论(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-路人甲 阅读(421) 评论(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-路人甲 阅读(446) 评论(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-路人甲 阅读(1171) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

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

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

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

posted @ 2022-11-02 22:23 BSP-路人甲 阅读(250) 评论(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-路人甲 阅读(2583) 评论(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-路人甲 阅读(287) 评论(0) 推荐(0) 编辑

导航