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

11 2022 档案

ARM64启物理内存初始化 --- (五)
该文被密码保护。

posted @ 2022-11-22 00:16 BSP-路人甲 阅读(25) 评论(0) 推荐(0) 编辑

ARM64启动汇编和内存初始化(中) --- (二)
摘要:接上文。 ## 2.5 初始化cpu状态(__cpu_setup) 虽然在异常初始化流程中已经设置了sctlr_el1等系统控制寄存器,但在打开mmu前还需要其它一些准备工作。 ```c ...... # arch/arm64/mm/proc.S /* * __cpu_setup * * Initi 阅读全文

posted @ 2022-11-21 22:19 BSP-路人甲 阅读(798) 评论(0) 推荐(0) 编辑

ARM64启动汇编和内存初始化(下) --- (三)
摘要:文章代码分析基于linux-5.19.13,架构基于aarch64(ARM64),平台qmenu,物理内存起始地址0x40000000 上文讲了汇编代码__create_page_tables的两个映射(未使能mmu): (1)idmap_text段的恒等映射; (2)内核镜像的线性映射; #1. 阅读全文

posted @ 2022-11-21 22:19 BSP-路人甲 阅读(202) 评论(0) 推荐(0) 编辑

FIXMAP内存管理器 --- (四)
该文被密码保护。

posted @ 2022-11-21 10:26 BSP-路人甲 阅读(31) 评论(0) 推荐(0) 编辑

UBOOT编译--- UBOOT编译过程目标依赖分析(八)
摘要:1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 概述 本文采用**自顶向下**的方法,从顶层目标开始到最原始的依赖。 # 3. u-boot编译 uboot的编译分为两步:配置、编译。 配置,执行make pmyimx8mmek240-8mm-2g 阅读全文

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

内核常用的might_sleep函数
摘要:1. 前言 内核版本:linux 4.9.225。内核版本:linux 4.9.225。对于内核常用的might_sleep函数,如果没有调试的需要(没有定义CONFIG_DEBUG_ATOMIC_SLEEP),这个宏/函数什么事情都不,might_sleep就是一个空函数,所以平常看code的时候 阅读全文

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

linux内核中的likely与unlikely
摘要:前言 内核版本:linux 4.9.x。在linux内核中,经常可以看见if( likely(x))或if( unlikely(x))的语句,本文将基于likely和unlikely的定义和作用进行一些简单的描述。 @ # 1. __builtin_expect 说明 ## 1.1 __builti 阅读全文

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

Armv8之Execution State 和 Exception Level(一)
摘要:@ ARMV8系统级编程模型主要包括异常级别、运行状态、安全状态、同步异常、异步异常、DEBUG等。本文主要对系统级编程模型做一个概要介绍。 # 1. 典型的Exception Level使用模型 | 异常级别 |运行的软件 | |--|--| | EL0 | Secure or Non-secur 阅读全文

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

AArch32/AArch64系统级内存模型(三)
摘要:1. 内存系统架构 1.1 系统级存储系统体系结构的形式 Armv8的a -profile体系结构包括一个虚拟内存系统体系结构(Virtual Memory System Architecture - VMSA),参见 。 1.2 系统级可见 内存属性 |类型 | 说明 | |--|--| | No 阅读全文

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

AArch32/AArch64应用程序级内存模型(五)
摘要:本文主要为了记录在学习armv8的过程中的一些感悟。由于原文部分章节晦涩难懂,作者参考了网上很多优秀博主的部分章节(可能是直接摘录)并结合自己的理解重新整理了当前这个版本。文中不免有部分章节讲解很浅,后续有新的理解会再来修改补充。更新于2020.02.28 # 1. 内存类型及属性 Armv8提供了 阅读全文

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

TrustZone——(一)
摘要:本文内容主要来源于网络,综合了网上的多篇文章,也加入了一些自己的理解,重新组织了文章结构使其便于理解。 主要参考的文章包括: 一篇了解TrustZone TrustZone领域先行者 TrustZone技术简介 trust zone之我见 简谈高通Trustzone的实现 Arm开发网站 ARM S 阅读全文

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

ARM Trusted Firmware——编译选项(二)
摘要:@ 1. 常用部分 |编译选项| 解释 | |--|:--| | BL2 |指定生成fip文件的BL2镜像的路径。在这种情况下,将不会构建TF-A中的BL2 | | BL31|指定生成fip文件的BL31图像的路径。在这种情况下,将不会构建TF-A中的BL31 | | BL32| 指定生成fip文件 阅读全文

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

ARMv8之memory model和Observability(四)
摘要:最近在学习整理ARMv8的memory 相关知识,对memory的各种概念搞的头痛,太难读了!!有幸看看窝窝大神整理了部分知识,关键是讲解的地道,透彻。因此在这里学习并转载一下,也希望能够和大家一起探讨,共同进步。 1. memory model 1.1 memory model的概念 想要理解AR 阅读全文

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

AArch32/AArch64虚拟内存系统架构(六)
摘要:@ 1. 前言 最近在学习并整理ATF的BL1、BL2阶段,其中ls_setup_page_tables用到了虚拟地址的概念。因此就先整理一下。全文根据ARMV8手册《Arm® Architecture Reference Manual Armv8, for Armv8-A architecture 阅读全文

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

UBOOT编译--- UBOOT全部目标的编译过程详解(九)
摘要:1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 概述 本文**接续**上篇文章,采用**自下而上**的方法,先从最原始的依赖开始,一步一步,执行命令生成目标。这里先把上节所有依赖关系再次列在这里: ```c | | arch/arm/cpu \ $ 阅读全文

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

链接脚本(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-路人甲 阅读(27302) 评论(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-路人甲 阅读(1139) 评论(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-路人甲 阅读(1843) 评论(0) 推荐(0) 编辑

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

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

UBOOT编译--- include/config/auto.conf、 include/config/auto.conf.cmd、 include/generated/autoconf.h (二)
摘要:1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 背景 在编译构建目标时(如 make xxx),顶层 Makefile 的 dot-config 变量值设置为 1 。 如下: ```c #note: 顶层Makefile dot-config := 阅读全文

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

UBOOT编译--- include/config.h、 include/autoconf.mk、include/autoconf.mk.dep、u-boot.cfg(三)
摘要:1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 概述 本节主要接上一节解析 :include/config.h、 include/autoconf.mk、include/autoconf.mk.dep、spl/include/autoconf.mk 阅读全文

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

UBOOT编译--- UBOOT顶层Makefile中目标_all和all的关系及背景(四)
摘要:@(UBOOT顶层Makefile中目标_all和all的关系及背景) 1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 概述 **当我们执行的命令是make命令时** ,由于后面没有带参数,因此makefile会编译默认遇到的第一个目标。 # 3. 阅读全文

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

UBOOT编译--- UBOOT的顶层config.mk(五)
摘要:1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 概述 此文件包含在 ./Makefile 和 spl/Makefile 中。 清理状态以避免添加两次相同的标志。有些平台需要不同的 SPL 标志,这就是为什么这个文件也必须包含在 spl/Makefi 阅读全文

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

Cache的相关知识(二)
摘要:1. cache背景知识 为什么的CPU内部需要cache单元? 主要的原因是CPU的速度和内存的速度之间严重不匹配,Cpu处理速度极快,而访问内存慢,cache在这个背景下就诞生了。设计人员通过在CPU和内存之间建立一个缓冲区,提高访问的速度。 建立cache的好处在于:假设CPU和内存之间没有c 阅读全文

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

UBOOT编译--- UBOOT的编译和链接选项详解(六)
摘要:1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 函数 cc-option 编译选项变量cc-option 定义在 scripts/Kbuild.include中: ```c # scripts/Kbuild.include # output dir 阅读全文

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

UBOOT编译--- UBOOT的$(version_h) $(timestamp_h)(七)
摘要:1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240。 # 2. 概述 在编译uboot的过程中,有两个特别的依赖version_h 和 timestamp_h,它们定义在顶层Makefile中(这里只讲解编译直接在源目录的情况,即srctree 为空),如下: ` 阅读全文

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

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

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

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

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

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

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

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-路人甲 阅读(1284) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

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

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

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

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

内核启动流程 --- 启动准备阶段(二)
摘要:文章目录 一. 前言二. 内核启动准备阶段流程总述三. 内核启动准备阶段代码详解3.1 关闭IRQ、FIQ中断,进入SVC模式3.... 阅读全文

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

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示