
imx6ull
monkea123
这个作者很懒,什么都没留下…
展开
-
Linux 内核启动流程
链接脚本 vmlinux.lds要分析 Linux 启动流程,同样需要先编译一下 Linux 源码,因为有很多文件是需要编译才会生成的。首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的。 vmlinux.lds 中有如下代码: vmlinux.lds 链接脚本492 OUTPUT...原创 2019-12-07 17:30:57 · 787 阅读 · 1 评论 -
linux 顶层makefile源码剖析三 make 过程
125 PHONY := _all126 _all:......192 PHONY += all193 ifeq ($(KBUILD_EXTMOD),)194 _all: all195 else196 _all: modules197 endif......608 all: vmlinux第 126 行, _all 是默认目标,如果使用命令“make”编译 Linux 的话...原创 2019-12-06 20:04:39 · 396 阅读 · 0 评论 -
linux make xxx_defconfig 过程 Makefile.build 脚本分析
config-targets := 0mixed-targets := 0dot-config := 1ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) dot-config ...原创 2019-12-05 20:54:06 · 730 阅读 · 0 评论 -
linux编译后文件夹
arch 架构相关目录。Linux 自带block 块设备相关目录。crypto 加密相关目录。Documentation 文档相关目录。drivers 驱动相关目录。firmeare 固件相关目录。fs 文件系统相关目录。include 头文件相关目录。init 初始化相关目录。ipc 进程间通信相关目录。kernel 内核相关目录。lib 库相关目录。mm 内存管理相...原创 2019-12-05 19:41:31 · 1417 阅读 · 0 评论 -
linux源码 编译脚本
#!/bin/shmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distcleanmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfigmake ...原创 2019-12-05 19:08:55 · 401 阅读 · 0 评论 -
I.MX6U MMDC 控制器简介
MMDC 控制器STM32 的 FMC 或 FSMC 外设用于连接 SRAM 或 SDRAM,对于 I.MX6U 来说也有 DDR 内存控制器,否则的话它怎么连接 DDR 呢? MMDC 就是 I.MX6U的内存控制器, MMDC 是一个多模的 DDR 控制器,可以连接 16 位宽的 DDR3/DDR3L、 16 位宽的 LPDDR2, MMDC 是一个可配置、高性能的 DDR 控制器。 MM...原创 2019-11-27 19:23:33 · 2204 阅读 · 0 评论 -
I.MX6U芯片的UART
I.MX6U 一共有 8 个 UART,其主要特性如下:1、兼容 TIA/EIA-232F 标准,速度最高可到 5Mbit/S。2、支持串行 IR 接口,兼容 IrDA,最高可到 115.2Kbit/s。3、支持 9 位或者多节点模式(RS-485)。4、 1 或 2 位停止位。5、可编程的奇偶校验(奇校验和偶校验)。6、自动波特率检测(最高支持 115.2Kbit/S)。UART ...原创 2019-11-26 23:09:41 · 914 阅读 · 1 评论 -
imx6ull gpt高精度定时器
GPT 定时器是一个 32 位向上定时器(也就是从 0X00000000 开始向上递增计数), GPT 定时器也可以跟一个值进行比较,当计数器值和这个值相等的话就发生比较事件,产生比较中断。GPT 定时器有一个 12 位的分频器,可以对 GPT 定时器的时钟源进行分频, GPT 定时器特性如下:①、一个可选时钟源的 32 位向上计数器。②、两个输入捕获通道,可以设置触发方式。③、三个输出比...原创 2019-11-26 23:09:18 · 1266 阅读 · 0 评论 -
imx6ull bootcmd 和 bootargs 环境变量
uboot 中有两个非常重要的环境变量 bootcmd 和 bootargs,接下来看一下这两个环境变量。bootcmd 和 bootagrs 是采用类似 shell 脚本语言编写的,里面有很多的变量引用,这些变量其实都 是 环 境 变 量 , 有 很 多 是 NXP 自 己 定 义 的 。 文 件 mx6ulevk.h 中 的 宏CONFIG_EXTRA_ENV_SETTINGS 保存着这些环境...原创 2019-11-21 19:51:14 · 1872 阅读 · 0 评论 -
ARM简介 (teq指令)
接触ARM,嵌入式也有1年多的时间,期间因为各种原因有一些断断续续,但是从未放弃。今天就来对ARM处理器进行一下总结,可能会比较乱,知识的跳跃也会比较大,但都是我根据自己的总结,有的是我以前记载在笔记本上的,有的则是我写在google notebook里面的东西。因为水平有限,可能还有会错误,欢迎指正!计算机体系结构:冯.诺依曼体系结构:我们将数据和指令都存储在一个存储器中的计算机称为冯.诺依...转载 2019-11-16 18:25:22 · 4934 阅读 · 0 评论 -
uboot源码分析三 编译处理过程
make xxx_defconfig 过程$(Q)$(MAKE) $(build)=scripts/kconfig $@# To make sure we do not include .config for any of the *config targets# catch them early, and hand them over to scripts/kconfig/Makefil...原创 2019-11-15 21:31:42 · 724 阅读 · 0 评论 -
uboot源码分析一 uboot文件夹包含内容
configs 文件夹此文件夹为 uboot 配置文件, uboot 是可配置的,但是你要是自己从头开始一个一个项目的配置,那就太麻烦了,因此一般半导体或者开发板厂商都会制作好一个配置文件。我们可以在这个做好的配置文件基础上来添加自己想要的功能,这些半导体厂商或者开发板厂商制作好的配置文件统一命名为“xxx_defconfig”, xxx 表示开发板名字,这些 defconfig 文件都存...原创 2019-11-12 21:02:06 · 910 阅读 · 0 评论 -
uboot常用命令
信息查询命令常用的和信息查询有关的命令有 3 个: bdinfo、 printenv 和 version。先来看一下 bdinfo 命令,此命令用于查看板子信息,直接输入“bdinfo”即可,结果如图 所示:从图 中可以得出 DRAM 的其实地址和大小、启动参数保存起始地址、波特率、sp(堆栈指针)起始地址等信息。命令“printenv”用于输出环境变量信息, uboot 也支持 TA...原创 2019-11-12 20:06:18 · 3965 阅读 · 1 评论 -
imx6ull EPIT定时器
EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的定时器还有很多 其它的功能,比如输入捕获、 PWM输出等等。但是 I.MX6U 的 EPIT 定时器只是完成周期性中 断定时的,仅此一项功能!至于输入捕获、 PWM 输出等这些功能,I....原创 2019-11-09 21:45:05 · 1830 阅读 · 1 评论 -
imx6ull 中断时钟 向gpio中添加中断及配置
icrswitch(pin_int_mode) { case(kGPIO_IntLowLevel): *icr &= ~(3U << (2 * icrShift)); break; case(kGPIO_IntHighLevel): *icr = (*icr & (~(3U << (2 * icrShift)))) | (1U...原创 2019-11-09 16:32:50 · 1098 阅读 · 0 评论 -
imx6ull时钟 中断汇编代码初始化
先调用指令“cpsid i”关闭 IRQ,cpsid i /* 关闭全局中断 */关闭 I/D Cache、 MMU、对齐检测和分支预测。CP15 协处理器MRC: 将 CP15 协处理器中的寄存器数据读到 ARM 寄存器中。MCR: 将 ARM 寄存器的数据写入到 CP15协处理器寄存器中。mrc p15, 0, r0, c1, c0, 0 /* 读取...原创 2019-11-07 20:25:20 · 1143 阅读 · 0 评论 -
imx6ull中断系统 GIC逻辑分块
GIC 逻辑分块GIC 架构分为了两个逻辑块: Distributor 和 CPU Interface,也就是分发器端和 CPU 接口端。这两个逻辑块的含义如下:Distributor(分发器端)示例代码 17.1.3.2 GIC 控制器结构体/** GIC 寄存器描述结构体,* GIC 分为分发器端和 CPU 接口端*/1 typedef struct2 {3 /* 分发...原创 2019-11-07 19:59:13 · 965 阅读 · 0 评论 -
汇编常用函数
一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH &nb...原创 2019-11-06 19:58:42 · 1840 阅读 · 0 评论 -
imx6ull中断系统 一
Cortex-A7 中断系统简介IRQ中断复位中断(Rest), CPU 复位以后就会进入复位中断,我们可以在复位中断服务函数里面做一些初始化工作,比如初始化 SP 指针、 DDR 等等。未定义指令中断(Undefined Instruction),如果指令不能识别的话就会产生此中断。软中断(Software Interrupt,SWI),由 SWI 指令引起的中断, Linux 的...原创 2019-11-06 19:56:38 · 1690 阅读 · 0 评论 -
I.MX6U 的时钟系统 -3(AHB、 IPG 和 PERCLK 根时钟设置)
7 路 PLL 和 8 路 PFD 设置完成以后最后还需要设置 AHB_CLK_ROOT 和 IPG_CLK_ROOT的时钟。AHB、 IPG时钟设置简化后①、此选择器用来选择 pre_periph_clk 的时钟源,可以选择 PLL2、 PLL2_PFD2、 PLL2_PFD0和 PLL2_PFD2/2。寄存器 CCM_CBCMR 的 PRE_PERIPH_CLK_SEL 位决定选...原创 2019-11-05 22:47:43 · 2324 阅读 · 0 评论 -
I.MX6U 的时钟系统 和 主频设置-2 (设置PFD时钟)
PLL2、 PLL3 和 PLL7 固定为 528MHz、 480MHz 和 480MHz, PLL4~PLL6 都是针对特殊外设的,用到的时候再设置。因此,接下来重点就是设置 PLL2 和 PLL3 的各自 4 路 PFD1.PFD 时钟设置先设置 PLL2 的 4 路 PFD 频率,用到寄存器是 CCM_ANALOG_PFD_528n。从图 16.1.5.1 可以看出,寄存器 C...原创 2019-11-05 21:56:36 · 1288 阅读 · 0 评论 -
I.MX6U 的时钟系统 和 主频设置
一。7 路 PLL 时钟源ARM_PLL(PLL1)此路 PLL 是供 ARM 内核使用的, ARM 内核时钟就是由此 PLL 生成的,此 PLL 通过编程的方式最高可倍频到 1.3GHz。528_PLL(PLL2),此路 PLL 也叫做 System_PLL,此路 PLL 是固定的 22 倍频,不可编程修改。因此,此路 PLL 时钟=24MHz * 22 = 528MHz,这也是为...原创 2019-11-05 19:49:29 · 1955 阅读 · 2 评论