文章目录 一.准备环境 二.获取内核源码 三.交叉编译工具链的配置 1.博友们常用安装方法链接 2.公司常用的交叉工具链使用方法 四.内核解压以及如何打补丁 五.内核基本配置 1.编译前的配置 2.uImage的编译命令 一.准备环境 编译内核之前有一些基本的条件: 有一台可以联网的机器(或者虚拟机) 安装有linux系统(作者安装的查看linux内核版本号如下) 学习一些基本的命令操作除此之外对linux系统还要求一些软件包的安装(可能不全,在编译过程中遇到提示可以度娘或者使用google搜索是缺了哪个包,基本上你能遇到的坑前面的人都有踩过)。 二.获取内核...

  arzjoav93H4m   2023年11月01日   112   0   0 嵌入式

文章目录 一.目标all或者空 二.目标vmlinux 三.目标modules 四.目标Image/zImage/uImage 1.Image和zImage的区别 2.uImage 五.目标M=drivers/xxx 六.目标xxx.o 七.目标xxx.s 八.目标help 一.目标all或者空 当在内核源码顶层目录下执行make的时候,编译的默认目标就是all。代码中的注释有对应的解释。 Theall:targetisthedefaultwhennotargetisgivenonthe commandline. Thisallowausertoissueonly'ma...

  arzjoav93H4m   2023年11月01日   138   0   0 嵌入式

当你学完help目标后你会发现它与我们的代码基本没有什么直接的关系,仅仅是用来生成kbuild的简短使用说明,但是用它来作为学习掌握kbuild编译系统的开篇,不管是从难度还是学习感受上真的是再适合不过。 如何使用help命令?在linux内核源码最顶层目录下执行如下命令。 makehelp 可以看到如下或者类似的打印(由于打印内容太长,只截取了部分内容) help目标定义在哪里?help命令定义在顶层Makefile中,部分代码如下: help: @echo'Cleaningtargets:' @echo'cleanRemovemostgeneratedfilesbutkeept...

  arzjoav93H4m   2023年11月01日   127   0   0 嵌入式

前言  内核版本:linux4.9.x。在linux内核中,经常可以看见if(likely(x))或if(unlikely(x))的语句,本文将基于likely和unlikely的定义和作用进行一些简单的描述。  @ 目录 1.__builtin_expect说明 1.1__builtin_expect函数的声明 1.2__builtin_expect函数引入的背景 1.3RATIONALE(原理) 2.likely和unlikely的说明 2.1likely和unlikely函数的定义 2.2likely和unlikely的高频使用方式 3.汇编层理解 3.1likel...

  arzjoav93H4m   2023年11月01日   156   0   0 嵌入式

<svgxmlns="http://www.w3.org/2000/svg"style="display:none;"> <pathstroke-linecap="round"d="M5,00,2.55,5z"id="raphael-marker-block"style="-webkit-tap-highlight-color:rgba(0,0,0,0);"></path> </svg> <blockquote>  最近在调试一款Phy的驱动,从没有任何头绪到略有了解经历了太多的痛苦,于是决定写这个系列篇记录一下。特别感谢无数优秀的...

  arzjoav93H4m   2023年11月01日   154   0   0 嵌入式

1.前言  内核版本:linux4.9.225,以freescale为例。 2.概述 PHY芯片为OSI的最底层-物理层(PhysicalLayer),通过MII/GMII/RMII/SGMII/XGMII等多种媒体独立接口(介质无关接口)与数据链路层的MAC芯片相连,并通过MDIO接口实现对PHY状态的监控、配置和管理。 PHY与MAC整体的大致连接框架如下(图片来源于网络): PHY的整个硬件系统组成比较复杂,PHY与MAC相连(也可以通过一个中间设备相连),MAC与CPU相连(有集成在内部的,也有外接的方式),PHY与MAC通过MII和MDIO/MDC相连,MII是走网络数据的,MD...

  arzjoav93H4m   2023年11月01日   128   0   0 嵌入式

1.前言  内核版本:linux4.9.225,以freescale为例。(部分内容待修改和补充,不一定准确) 2.概述 上一篇文章讲了控制器的驱动使用的是platform总线的连接方式,本节要讲的PHY设备驱动是基于device、driver、bus的连接方式。 其驱动涉及如下几个重要部分: 总线sturctmii_bus(miistandformediaindependentinterface) 设备structphy_device 驱动structphy_driver 关于PHY设备的创建和注册已经在上一篇控制器的probe函数中有过详细的描述(需要注意的是:phy设备不像i2c...

  arzjoav93H4m   2023年11月01日   151   0   0 嵌入式

1.前言  内核版本:linux4.9.225。内核版本:linux4.9.225。对于内核常用的might_sleep函数,如果没有调试的需要(没有定义CONFIG_DEBUG_ATOMIC_SLEEP),这个宏/函数什么事情都不,might_sleep就是一个空函数,所以平常看code的时候可以忽略。内核只是用它来提醒开发人员,调用该函数的函数可能会sleep。 2.might_sleep的定义 include/linux/kernel. ifdefCONFIG_PREEMPT_VOLUNTARY externint_cond_resched(void); definemight_re...

  arzjoav93H4m   2023年11月01日   130   0   0 嵌入式

<svgxmlns="http://www.w3.org/2000/svg"style="display:none;"> <pathstroke-linecap="round"d="M5,00,2.55,5z"id="raphael-marker-block"style="-webkit-tap-highlight-color:rgba(0,0,0,0);"></path> </svg> <blockquote>  为了便于与英文原文对照学习与理解(部分翻译可能不准确),本文中的每个子章节标题和引用使用的都是官方手册英文原称。命令及...

  arzjoav93H4m   2023年11月01日   164   0   0 嵌入式

本文主要为了记录在学习armv8的过程中的一些感悟。由于原文部分章节晦涩难懂,作者参考了网上很多优秀博主的部分章节(可能是直接摘录)并结合自己的理解重新整理了当前这个版本。文中不免有部分章节讲解很浅,后续有新的理解会再来修改补充。更新于2020.02.28 1.内存类型及属性 Armv8提供了以下互斥的内存类型: 类型 说明 Normal 这通常用于大容量内存操作,包括读/写和只读操作。系统中大部分内存都是这种类型 Device 对该种类型的内存进行读写可能具有连带效应(side-effects,指对一个内存位置的读写操作会影响其它内存位置)或者从该种内存中的一个位置装载...

  arzjoav93H4m   2023年11月01日   89   0   0 嵌入式

1.cache背景知识 为什么的CPU内部需要cache单元?  主要的原因是CPU的速度和内存的速度之间严重不匹配,Cpu处理速度极快,而访问内存慢,cache在这个背景下就诞生了。设计人员通过在CPU和内存之间建立一个缓冲区,提高访问的速度。   建立cache的好处在于:假设CPU和内存之间没有cache,那么CPU每次访问内存,都要从访问速度较慢的内存中读取,这无疑是很浪费cpu的性能的;但是如果在CPU和内存之间设立一个高速的cache,虽然第一次读,都要从内存中读取,但是第一次读完成之后,可以把数据放到这个高速cache里;那么第二次读,我就直接从高速cache里取数据就行,这个高...

  arzjoav93H4m   2023年11月01日   117   0   0 嵌入式

最近在学习整理ARMv8的memory相关知识,对memory的各种概念搞的头痛,太难读了!!有幸看看窝窝大神整理了部分知识,关键是讲解的地道,透彻。因此在这里学习并转载一下,也希望能够和大家一起探讨,共同进步。 1.memorymodel 1.1memorymodel的概念   想要理解ARMv8的memorymodel,首先需要知道什么是memorymodel,或者说memoryconsistencymodel(内存一致性模型)。   当cpu从memory中的某个位置发起一次读操作的时候,该操作的返回值应该是什么样子的呢?对于程序员,直觉就是当然返回上次写入的数值了。不过,怎么定义“...

  arzjoav93H4m   2023年11月01日   135   0   0 嵌入式

1.内存系统架构 1.1系统级存储系统体系结构的形式   Armv8的a-profile体系结构包括一个虚拟内存系统体系结构(VirtualMemorySystemArchitectureVMSA),参见----。 1.2系统级可见内存属性 类型 说明 Normal 这通常用于大容量内存操作,包括读/写和只读操作。系统中大部分内存都是这种类型 Device 对该种类型的内存进行读写可能具有连带效应(side-effects,指对一个内存位置的读写操作会影响其它内存位置)或者从该种内存中的一个位置装载的值可能随着装载的次数而变化。通常内存映射外设(指使用访问内存的方法来访问的外...

  arzjoav93H4m   2023年11月01日   106   0   0 嵌入式

@ 目录 1.典型的ExceptionLevel使用模型 2.异常相关术语 3.ExecutionState 3.1两种ExecutionState 3.2决定ExecutionState的寄存器 4.Securestate 4.1EL3对securestate的影响 4.2EL3使用AArch64orAArch32的影响 5.executionstate与securestate组合 5.1EL3使用AArch64时(注意两个图的差别和脚注) 5.2EL3使用AArch32时 5.2.1Armv8-ASecuritymodelwhenEL3isusingAArch32 5....

  arzjoav93H4m   2023年11月01日   94   0   0 嵌入式

本文内容主要来源于网络,综合了网上的多篇文章,也加入了一些自己的理解,重新组织了文章结构使其便于理解。主要参考的文章包括: 一篇了解TrustZone TrustZone领域先行者 TrustZone技术简介 trustzone之我见 简谈高通Trustzone的实现 Arm开发网站 ARMSecurityTechnologyBuildingaSecureSystemusingTrustZoneTechnology Learnthearchitecture:TrustZoneforAArch64 1.TrustZone介绍 1.1安全背景 在介绍TrustZone前有必要简单回顾下目前...

  arzjoav93H4m   2023年11月01日   94   0   0 嵌入式

@ 目录 1.常用部分 2.安全相关 2.1签名 2.2加密 2.3哈希 2.4中断 3.GICv3驱动程序选项 4.调试选项 1.常用部分 编译选项 解释 BL2 指定生成fip文件的BL2镜像的路径。在这种情况下,将不会构建TF-A中的BL2 BL31 指定生成fip文件的BL31图像的路径。在这种情况下,将不会构建TF-A中的BL31 BL32 指定生成fip文件的BL32图像的路径。在这种情况下,将不会构建TF-A中的BL32 BL33 主机文件系统中BL33映像的路径。如果使用TF-ABL2,这对于fip文件是强制性的 BL2_AT_E...

  arzjoav93H4m   2023年11月01日   123   0   0 嵌入式

1.前言  UBOOT版本:uboot2018.03,开发板myimx8mmek240。 2.背景 在编译构建目标时(如makexxx),顶层Makefile的dot-config变量值设置为1。如下: note:顶层Makefile dot-config:=1 ifneq($(filter$(no-dot-config-targets),$(MAKECMDGOALS)),) ifeq($(filter-out$(no-dot-config-targets),$(MAKECMDGOALS)),) dot-config:=0 endif endi 在顶层Makefile中: n...

  arzjoav93H4m   2023年11月01日   67   0   0 嵌入式

1.前言  UBOOT版本:uboot2018.03,开发板myimx8mmek240。 2.概述 本节主要接上一节解析:include/config.h、include/autoconf.mk、include/autoconf.mk.dep、spl/include/autoconf.mk、u-boot.cfg、spl/u-boot.cfg。 3语句$(Q)$(MAKE)-f$(srctree)/scripts/Makefile.autoconf 由于未指定目标,采用默认目标__all note:scripts/Makefile.autoconf __all:include/autocon...

  arzjoav93H4m   2023年11月01日   89   0   0 嵌入式

@ 目录 1.前言 2.概述 3.老版本UBOOT(背景) 4.新版本UBOOT 5.参考 1.前言  UBOOT版本:uboot2018.03,开发板myimx8mmek240。 2.概述 当我们执行的命令是make命令时,由于后面没有带参数,因此makefile会编译默认遇到的第一个目标。 3.老版本UBOOT(背景) 顶层Makefile ...... dependencytargetinautoconf.mk.depfrombeingthedefault. all:(1)//空命令 sinclude$(obj)include/autoconf.mk.dep sinc...

  arzjoav93H4m   2023年11月01日   110   0   0 嵌入式

1.前言  UBOOT版本:uboot2018.03,开发板myimx8mmek240。 2.概述 在编译uboot的过程中,有两个特别的依赖version_h和timestamp_h,它们定义在顶层Makefile中(这里只讲解编译直接在源目录的情况,即srctree为空),如下: 顶层Makefile version_h:=include/generated/version_autogenerated.h timestamp_h:=include/generated/timestamp_autogenerated.h ...... $(version_h):include/con...

  arzjoav93H4m   2023年11月01日   123   0   0 嵌入式
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~