IMX6ULL学习手册
Pintitus
这个作者很懒,什么都没留下…
展开
-
20.U-boot顶层Makefile简要分析
二、顶层Makefile前面部分分析1.递归调用make(20-29) 在源码内有许许多多的目录,顶层Makefile也要调用子目录(subdir)中的makefile。$(MAKE) -C subdir export :用于给子makefile传入变量 unexport :用于不给子makefile导入变量 SHELL / MAKEFLAGS :无论用不用export , 都会将变量直接传给子makefile的。MAKEFLAGS += -rR --include-dir原创 2020-06-07 22:52:43 · 445 阅读 · 0 评论 -
19.uboot源码目录简要说明
一、U-boot目录主要分析1.目录 Uboot编译以后会生成一些文件, 1.arch存放相关架构有关的东西,存放镜像源文件,设备树文件。相应编译出架构的文件夹的boot有zImage/uImage,boot/dtb/下有设备树文件存放。arm/cpu/中有uboot.lds的链接脚本 2.board存放开发版相关的东西,存放有freescale公司的,我的开发版是nxp,原freescale的。所以在board/freescale/mx6ullevk/。我们需要查看这个目录下的配置文件原创 2020-06-07 22:51:04 · 282 阅读 · 0 评论 -
18.Uboot命令使用
一、uboot启动1.烧写 为了便于u-boot的调试,使用SD卡烧写u-boot程序。使用裸机程序的方法。将SD卡插入虚拟机读到SD卡后,对SD卡进行分区。sudo fdisk /dev/sdb #进入了分区模式p #查看分区d #删除分区n #进行分区建立两个分区 默认,主分区,1分区,default默认,主分区,2分区,default 分区好以后,烧录u-boot.imxsudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2原创 2020-06-07 22:49:40 · 342 阅读 · 0 评论 -
17.Uboot编译原理
一、什么是UBoot 是一个复杂的综合的裸机程序,支持各种。UBoot就是一个Bootloader,用于启动linux系统的程序,它是上电以后的第一个程序。 它最重要的就是初始化DDR,linux在DDR中运行的,由于Linux内存比较大,放到内部的ROM中是远远不够的。Linux镜像一开始存在EMMC,NAND FLASH , 等外置存储中。那么我们需要将linux镜像从外置存储拷贝到DDR中,就需要Uboot程序来做。主要为系统启动做准备。Uboot获取 1.https://ftp.原创 2020-05-30 11:27:12 · 871 阅读 · 0 评论 -
16.系统镜像烧写
一、Windows下OTG烧写 在Windows下使用NXP提供的mfgtools烧写系统。使用开发版的OTG模式下,将拨码开关的1,2bit分别是Off , ON。MFGTools工具会向开发版下载一个LInux系统,然后再来完成烧写工作。mfgtools工具 工具文件夹内部的vbs就是烧写脚本。将系统烧到EMMC中去。 在/mfgtools/profile/linux/OS Firmware/firmware中存放设备树文件。给DDR中下载firmware镜像文件 在/mfg原创 2020-05-30 11:24:29 · 650 阅读 · 0 评论 -
15.eLcdIF驱动
一、LCD液晶屏 由玻璃板夹液晶盒,外加偏光片,滤光片等组成。液晶本是不会发光的,所以还要加一个背光灯,通过层层材料处理最后得到图像。 RGB888液晶屏,每个像素点是三个小灯,红绿蓝三原色可以组合很多颜色。其像素格式是8bit,那么三个灯就是24bit。2^24=1677w种颜色。现在还有10bit的HDR10的屏幕。二、eLCDIF 时钟信号,RGB信号线,水平同步信号,垂直同步信号,数据线。 VSYNC是垂直同步信号,当HSYNC信号出现时表示一帧像素点信号传输结束。原创 2020-05-30 11:11:33 · 418 阅读 · 0 评论 -
14.DDR3初始化
一、DDR内存SRAM:内部随机存储器,速度高,可以与CPU同频,通常作为内部RAM或者是Cache使用。但是内存小,成本高。SDRAM:同步动态随机存储器,第四代的SDRAM发展了好几代到了DDR4,开发版使用的是DDR3。DRAM:动态随机存储器,内部存储单元的以电容电荷表示数据,1代表有电荷,0代表无数据。DRAM结构简答,所以成本低,集成度高。但是存取速度不如SRAM。 2.DDR 常见频率100MHZ,133MHZ,166M,200MHz。 计算容量:行地址位row=原创 2020-05-30 11:00:25 · 2974 阅读 · 0 评论 -
13.UART串口驱动
一、串口UART 串口看手册介绍具有异步收发功能…一大串不说了。可以将数据显示在终端打印出来,我们主要作用用于调试工具。 对于编程,只需要驱动TXD与RXD寄存器。它们分别是对于数据的收发存储的register。 对于串口内部结构,而言一个收一个发。编程而言设置时钟源以及设置各类寄存器,对于收发数据挂靠DCE/DTE接口中,我们需要使用TX_DATA,RX_DATA.。二、串口寄存器 UART_URxD寄存器保存串口接收的数据 UART_UT XD寄存器用于发送数据。原创 2020-05-21 18:24:49 · 795 阅读 · 1 评论 -
12.GPT定时器
一、GPT定时器 以前的延时,通过空指令进行延时,不准确。当修改时钟频率后,才用延时就会有很大的变动。而6ULL的GPT是一个高精度定时器装置。 GPT是一个32bit的向上计数器,有两个输入捕获通道,三个输出比较通道。有一个12分频器。 GPT有两种模式restart和free-run模式。restart模式:定时器的值与寄存器的某个值比较相等就会重新开始计时。它是捕获专有的。free-run模式适用于比较输出的模式。二、寄存器 CR寄存:bit[0]:模块使能bit[1]原创 2020-05-21 18:23:12 · 1185 阅读 · 0 评论 -
11.EPIT定时器
一、原理介绍EPIT 1.是一个计数器,他没有其他花里胡哨的功能,仅仅是一个向下计数器。 2.时钟源选择。 3.选择完时钟源以后进行分频,是一个12bit的分频器。 4.分频以后获得计数器。load会向下加载,compare会与counter比较。 5.进入cmp比较器中。要设置CR寄存器的模式,有两种模式,set-and-forget模式是当counter减到0以后会停止重新装载计数器的值;free-running模式是counter减到0以后就不再运行了。二、寄存器设置原创 2020-05-21 18:18:34 · 678 阅读 · 0 评论 -
10.IMX6ULL外部中断
一、STM32的中断系统 代码从0x00000000运行。32设置连接首地址0x8000000的地方存放了中断向量表,因此要从0x8000000的地方开始运行。需要告诉soc内核,要设置中断向量偏移。设置SCB的VTOC寄存器为新的中断向量表起始地址,内部指向各种中断的函数名。 但是Cotex-A的中断向量表只有几个,我们主要使用的是IRQ。二、6ULL中断系统1.GIC控制器 GIC提供了开关中断,设置中断优先级等等。6ULL有1020个中断号,用于向CPU interface发送信原创 2020-05-21 18:16:37 · 1167 阅读 · 0 评论 -
9.I.MX6ULL时钟树
1.硬件原理图 1.32.768Khz的晶振,供给RTC使用 2.在6U中T16与T17IO口中接了一个24MHz的晶振2.I.MX系统时钟分析1.7路PLL 为了方便升成时钟,从24MHz晶振中声称7路PLL,每一路又升成PFD_PLL。 配置详见时钟树。还要学会看RM手册进行配置频率,具体看下面。2.配置主频 我们想要配置内核主频528MHz。 我们的目标是配置ARM内核主频,首先第一步就是配置CLOCK SWITCHER的PLL1,之后进行CACRR寄存器的配置原创 2020-05-17 22:35:50 · 734 阅读 · 0 评论 -
8.按键输入
1.按键输入 GPIO可以输出,也可以输入。按钮就是通过输入驱动的,通过按下按键,导致电路联通,引脚收到信号,告诉CPU。2.电平分析: 开发版一共四个按键,SW1,SW2,SW3,SW4。其中SW1,3,4有特殊功能,因此我们对SW2进行配置。由于3端3.3V,因此只需要配置SNVS_TAMPER1为高电平即可触发SW2; 根据电路我们需要知道,正常情况下我们KEY的SNVS_TAMPER1口需要时低电平的。当SW2按下后,就能采集到高电平,因此我们只需要获取寄存器的值就可以读取是否原创 2020-05-17 22:30:41 · 1131 阅读 · 0 评论 -
7.有源蜂鸣器驱动
1.有源蜂鸣器 以前也接触过蜂鸣器,不过对有源无源的区别还真是不大清楚。只是知道有源是带电源的意思。而蜂鸣器中的源指代“震荡源”,当想要驱动有震荡源的蜂鸣器只需要通电就可以驱动了。而无源蜂鸣器想要驱动只通直流电是不可以驱动的,需要通2K-5K的方波才可叫。蜂鸣器驱动无非就是将GPIO的输入。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传分析电路,若想驱动BEEER,那么就需要2端是低电平。而SS8050是NPN三极管,其电气特性是给1端通高电平,那么NPN导通,则BUZZ原创 2020-05-17 22:26:51 · 5977 阅读 · 1 评论 -
6.模块化工程创建
一、模块化工程管理 即模块化编程,将同属性文件分存管理机制。使得杂乱无章的工程变得有条有序,干净整洁的目录界面,分工有序。不同的目录下存放同一类 创建project , bsp , include, obj目录。bsp下设各个外设的子目录。 将project目录下存放main.c 与start.s等主要文件;bsp目录存放外设程序;include目录下存放芯片寄存器的头文件;obj存放编译后升成的.o文件。 整理好工程以后,需要配置头文件。利用vscode的c/c++:ed插件,可原创 2020-05-17 22:24:38 · 299 阅读 · 0 评论 -
5.IMX6ULL点灯
一、C语言环境运行构建1.设置处理器模式 设置6ULL处于SVC模式,设置CPSR的[4:0],也就是10011=0x13.读写状态的寄存器需要用到MRS与MSR指令,分别是“获取当前系统运行状态”与“设置当前运行状态”。见下图2.设置SP指针 SP可以指向iRAM,也可以指向DDR,我们要将其指向DDR。由于开发版是512M的。范围在0x80000000-0x9FFFFFFF。栈内存大小0x200000=2M。因此将sp指向0x80200000的地址。3.跳转到C语言的汇编程序.g原创 2020-05-17 22:21:52 · 799 阅读 · 0 评论 -
IMX6ULL学习手册之内核编译
Uboot何为Uboot? 1.Uboot是一个复杂的裸机程序。 2.Uboot是一个bootloader,用于启动Linux系统,主要是用来初始化DDR的,引导linux内核的启动,因为Linux是运行在DDR中的。但是IMX是个例外。 Uboot是通用的,支持多种架构。Uboot的源码获取 1.Uboot有一个源码官网,但是你的芯片是由不同的生产商设计的,但是那么多版本的芯...原创 2020-05-07 09:34:32 · 1051 阅读 · 0 评论 -
4.I.MX6ULL启动方式
1.硬件启动方式选择①.启动方式选择 支持SD卡,SMMC,nand flash ,Nor flash。 6ULL是怎么支持多种外置flash的启动方式。手册的第八章SYSTEM BOOT详细介绍。②.启动方式的选择 BOOT_MODE0与BOOT_MODE1,两个IO进行控制的。选择从USB启动还是BOOT启动,如果要烧写系统到开发版中可以选择USB下载,下载到SD,EMMC,...原创 2020-05-06 22:46:18 · 619 阅读 · 0 评论 -
2.IMX6ULL手册管脚上手
IO表示形式 IOMUXC_SNVS_SW_MUX_CTL_PAD_BOOT_MODE0 管脚名字:PAD_BOOT_MODE0 管脚的复用功能:MUX对于6ULL查看管脚复用的步骤: 1.参考手册 2.找到32章(IOMUXC),IO复用章节Note: 所有的管脚有两个寄存器IOMUXC_SNVS_SW_ MUX _CTL_PAD_BOOT_MODE0作为复用的...原创 2020-05-06 13:53:03 · 1957 阅读 · 0 评论 -
1.IMX6ULL开发环境搭建
裸机开发环境搭建1.共享文件夹设置Ubuntusudo apt-get install vsftpdsudo vi /etc/vsftpd.conf local_enable=Yes write_enable=Yes #找到并保存即可sudo /etc/init.d/vsftpd restartWindows#下载ftp客户端#https://filezilla-proje...原创 2020-05-06 13:50:32 · 667 阅读 · 0 评论 -
3.裸机汇编LED驱动实验
汇编驱动实验1.汇编LED原理分析ARM中汇编的作用 Cotex-A系列需要自己写汇编。但是指令不是很多,只需要初始化一些外设。只需要1-2个重要的外设,看门狗,紧接着初始化DDR。设置好指针就能运行C语言了。 STM32的芯片不需要写汇编,是因为ST昌吉已经帮你写好了,就是那个.s文件。/*为什么要学习Cortex-A汇编1.需要用汇编初始化一些SOC外设2.使用汇编初始...原创 2020-05-06 13:46:47 · 572 阅读 · 2 评论