IMX6ULL
一只青木呀
life,just smile
展开
-
U-Boot顶层目录链接脚本文件(u-boot.lds)介绍
这里写目录标题链接脚本 u-boot.lds 介绍1、u-boot.lds文件2、arch/arm/lib/vectors.S 文件3、u-boot.map(地址映射文件)4、链接文件分析链接脚本 u-boot.lds 介绍要分析 uboot 的启动流程,首先要找到“入口”,找到第一行程序在哪里。程序的链接是由链接脚本来决定的,所以通过链接脚本可以找到程序的入口。如果没有编译过 uboot 的话链接脚本为 arch/arm/cpu/u-boot.lds。但是这个不是最终使用的链接脚本,最终的链接脚原创 2020-10-23 13:52:23 · 1850 阅读 · 2 评论 -
U-Boot顶层Makefile介绍
U-Boot顶层Makefile介绍1、准备好uboot源码2、分析顶层Makefile2.1、版本号2.2、MAKEFLAGS 变量2.3、命令输出2.4、静默输出2.5、设置编译结果输出目录2.6、代码检查2.7、模块编译2.8、获取主机架构和系统2.9 、设置目标架构、交叉编译器和配置文件2.10、调用 scripts/Kbuild.include2.11、交叉编译工具变量设置3.12、导出其他变量1、准备好uboot源码这里分析的是2016.版本的uboot。uboot源码下载:https:/原创 2020-10-22 16:22:17 · 1015 阅读 · 1 评论 -
U-Boot工程目录介绍
U-Boot工程目录介绍1、准备工作2、重要文件2.1、arch文件2.2、 board 文件夹2.3、 configs 文件夹2.4、 .u-boot.xxx_cmd 文件2.5、 Makefile 文件2.6、 u-boot.xxx 文件2.7、 .config 文件2.8、 README1、准备工作首先得下载好uboot文件,并进行编译。uboot下载:https://blog.csdn.net/weixin_45309916/article/details/109176510进行编译后在进行原创 2020-10-21 14:47:30 · 2363 阅读 · 2 评论 -
U-Boot命令之常用命令
常用命令常用命令1、 reset 命令2、 go 命令3、 run 命令4、 mtest 命令常用命令uboot 中还有其他一些常用的命令,比如 reset、 go、 run 和 mtest 等。命令描述reset输入“reset”即可复位重启go用于跳到指定的地址处执行应用run用于运行环境变量中定义的命令mtest内存读写测试命令常用信息查询命令:https://blog.csdn.net/weixin_45309916/article/deta原创 2020-10-20 22:16:23 · 859 阅读 · 0 评论 -
U-Boot命令之BOOT操作命令
BOOT操作命令BOOT操作命令1、 bootz 命令2、 bootm 命令3、 boot 命令BOOT操作命令uboot 的本质工作是引导 Linux,所以 uboot 肯定有相关的 boot(引导)命令来启动 Linux。常用的跟 boot 有关的命令有: bootz、 bootm 和 boot。命令描述bootz用于启动 zImage 镜像文件bootm用于启动 uImage 镜像文件boot用来启动 Linux 系统的1、 bootz 命令要启动原创 2020-10-20 21:26:57 · 4340 阅读 · 0 评论 -
U-Boot命令之EXT 格式文件系统操作命令
EXT 格式文件系统操作命令EXT 格式文件系统操作命令EXT 格式文件系统操作命令uboot 有 ext2 和 ext4 这两种格式的文件系统的操作命令,常用的就四个命令,分别为:ext2load、 ext2ls、 ext4load、 ext4ls 和 ext4write。这些命令的含义和使用与 fatload、 fatls 和 fatwrit一样,只是 ext2 和 ext4 都是针对 ext 文件系统的。命令描述ext2ls用于查询 ext2 格式设备的目录和文件信息原创 2020-10-20 17:49:42 · 1287 阅读 · 0 评论 -
U-Boot命令之FAT 格式文件系统操作命令
FAT 格式文件系统操作命令FAT 格式文件系统操作命令1、 fatinfo 命令2、 fatls 命令3、 fstype 命令4、 fatload 命令5、 fatwrite 命令FAT 格式文件系统操作命令有时候需要在 uboot 中对 SD 卡或者 EMMC 中存储的文件进行操作,这时候就要用到文件操作命令,跟文件操作相关的命令有: fatinfo、 fatls、 fstype、 fatload 和 fatwrite,但是这些文件操作命令只支持 FAT 格式的文件系统!!命令描述原创 2020-10-20 17:42:33 · 3132 阅读 · 0 评论 -
U-Boot命令之EMMC和SD卡操作命令
EMMC和SD卡操作命令EMMC和SD卡操作命令1、 mmc info 命令2、 mmc rescan 命令3、 mmc list 命令4、 mmc dev 命令5、 mmc part 命令6、 mmc read 命令7、 mmc write 命令8、 mmc erase 命令EMMC和SD卡操作命令uboot 支持 EMMC 和 SD 卡,因此也要提供 EMMC 和 SD 卡的操作命令。一般认为 EMMC和 SD 卡是同一个东西,所以没有特殊说明,统一使用 MMC 来代指 EMMC 和 SD 卡。u原创 2020-10-20 15:02:16 · 15317 阅读 · 1 评论 -
U-Boot命令之网络操作命令
网络操作命令网络操作命令1、 ping 命令2、 dhcp 命令3、 nfs 命令4、 tftp 命令网络操作命令uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linuxkernel 的时候需要使用到 uboot 的网络功能做调试。uboot 支持大量的网络相关命令,比如 dhcp、ping、 nfs 和 tftpboot在使用 uboot 的网络功能之前先用网线将开发板的 ENET 接口和电脑或者路由器连接起来建议开发板和主机 PC 都连接到同一个路由原创 2020-10-20 12:57:59 · 4185 阅读 · 0 评论 -
U-Boot命令之内存操作命令
内存操作命令内存操作命令1、 md 命令2、 nm 命令3、 mm 命令4、 mw 命令5、 cp 命令6、 cmp 命令内存操作命令内存操作命令就是用于直接对 DRAM 进行读写操作的,常用的内存操作命令有 md、 nm、mm、 mw、 cp 和 cmp。命令描述md用于显示内存值nm用于修改指定地址的内存值mm用于修改指定地址的内存值mw用于使用一个指定的数据填充一段内存cp用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 Nor原创 2020-10-20 12:20:19 · 3061 阅读 · 2 评论 -
U-Boot命令之环境变量操作命令
环境变量操作命令1、修改环境变量2、新建环境变量3、删除环境变量1、修改环境变量环境变量的操作涉及到两个命令: setenv 和 saveenv命令描述setenv用于设置或者修改环境变量的值saveenv用于保存修改后的环境变量一般环境变量是存放在外部 flash 中的,uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到原创 2020-10-20 11:55:00 · 3592 阅读 · 4 评论 -
U-Boot命令之信息查询命令
U-Boot命令U-Boot信息查询命令bdinfo 命令printenv命令version命令U-Boot信息查询命令命令描述bdinfo用于查看板子信息printenv用于输出环境变量信息version用于查看 uboot 的版本号bdinfo 命令此命令用于查看板子信息,直接输入“bdinfo”即可,结果如下图所示:从上图中可以得出 DRAM 的起始地址和大小、启动参数保存起始地址、波特率、sp(堆栈指针)起始地址等信息。printenv命令命原创 2020-10-20 11:21:16 · 2403 阅读 · 0 评论 -
什么是U-Boot以及如何下载U-Boot源码?
系统的启动过程:Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了, bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核, bootloader 和 Linux 内核的关系就跟 PC 上的 BIOS 和 Win原创 2020-10-20 11:05:59 · 2125 阅读 · 0 评论 -
PWM 简介
PWM 简介1、概念2、PWM信号图3、频率4、占空比1、概念PWM 全称是 Pulse WidthModulation,也就是脉冲宽度调制2、PWM信号图3、频率频率就是开关速度,把一次开关算作一个周期,那么频率就是 1 秒内进行了多少次开关4、占空比占空比就是一个周期内高电平时间和低电平时间的比例,一个周期内高电平时间越长占空比就越大,反之占空比就越小。占空比用百分之表示,如果一个周期内全是低电平那么占空比就是 0%,如果一个周期内全是高电平那么占空比就是100%。...原创 2020-10-10 17:23:19 · 8211 阅读 · 0 评论 -
NXP I.MX6ULL芯片介绍以及资料的获取
I.MX6ULL芯片介绍以及资料的获取位置I.MX6ULL芯片是NXP官方的一款芯片。官方网址:https://www.nxp.com/I.MX6ULL芯片是ARM 和I.MX6U系列原创 2020-09-26 10:54:26 · 7916 阅读 · 2 评论 -
Linux NXP (I.MX6uLL) UART串口通信原理
UART串口通信1、UART简介1.1、UART串口通讯格式1.2、UART 的通信格式:1.3、UART 电平标准2、I.MX6U UART 简介2.1、UART的时钟源选择3、UART 几个重要的寄存器3.1、UART 的控制寄存器 1,即UARTx_UCR1(x=1~8)3.2、UART 的控制寄存器 2,即: UARTx_UCR23.3、UARTx_UCR3 寄存器3.4、寄存器 UARTx_USR23.5、寄 存 器 UARTx_UFCR 、 UARTx_UBIR 和 UARTx_UBMR3.5.原创 2020-09-20 16:48:33 · 1874 阅读 · 0 评论 -
Linux NXP (I.MX6ULL) GPT高精度延时定时器
高精度延时GPT 定时器简介1、GPT 定时器特性如下:2、GPT 定时器的可选时钟源如下图所示:3、GPT 定时器结构如下图所示:3.1、GPT 定时器结构中各部分意义如下:4、GPT 定时器有两种工作模式5、 GPT 定时器几个重要的寄存器5.1、GPT 的配置寄存器 GPTx_CR5.2、GPT 定时器的分频寄存器 GPTx_PR5.3、GPT 定时器的状态寄存器 GPTx_SR6、定时器实现高精度延时原理GPT 定时器简介GPT 定时器全称为 General Purpose Timer,GPT原创 2020-09-20 11:50:14 · 912 阅读 · 0 评论 -
Linux之ARM (I.MX6ULL) EPIT定时器详解
EPIT定时器详解1、EPIT定时器简介1.1、总结定时器是最常用的外设,常常需要使用定时器来完成精准的定时功能, I.MX6U 提供了多种硬件定时器,有些定时器功能非常强大。我们从最基本的 EPIT 定时器开始,学习如何配置 EPIT 定时器,使其按照给定的时间,周期性的产生定时器中断,在定时器中断里面我们可以做其它的处理,比如翻转 LED 灯。1、EPIT定时器简介EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完原创 2020-09-20 10:03:37 · 841 阅读 · 0 评论 -
Linux之ARM Cortex-A7 中断系统详解
GPIO中断1、中断是什么?2、STM32中断系统和 Cortex-M(STM32)中断系统的异同2.1、中断向量表2.2、NVIC(内嵌向量中断控制器)2.3、中断使能2.4、中断服务函数3、Cortex-A7 中断系统详解3.1、Cortex-A7 中断系统简介1、中断是什么?中断系统是一个处理器重要的组成部分,中断系统极大的提高了 CPU 的执行效率2、STM32中断系统和 Cortex-M(STM32)中断系统的异同STM32 的中断系统主要有以下几个关键点:①、 中断向量表。②、 NV原创 2020-09-16 16:07:22 · 5101 阅读 · 7 评论 -
Linux之ARM(IMX6U)裸机主频和时钟配置
Linux之ARM(MX6U)裸机主频和时钟配置1、I.MX6U 时钟系统详解1.1、系统时钟来源I.MX6U 系列标准的工作频率为 528MHz,有些型号甚至可以工作到 696MHz,但是默认的工作频率为396MHz,这就造成了浪费了,本次我们来配置主频时钟使其工作在528MHz,以及其他的外设时钟源都工作在NXP推荐的工作频率。1、I.MX6U 时钟系统详解I.MX6U 的系统主频为 528MHz,有些型号可以跑到 696MHz,但是默认情况下内部 boot rom 会将 I.MX6U 的主频设置原创 2020-08-28 10:39:17 · 1992 阅读 · 0 评论 -
Linux之ARM(IMX6U)裸机按键输入实验(GPIO的输出与输入)
Linux之ARM(MX6U)裸机按键输入实验(GPIO读取)1、按键输入简介2、硬件原理图分析3、实验程序的编写3.1、bsp_gpio.h3.2、bsp_gpio.c3.3、gpio_key.h3.4、gpio_key.c3.5、main.c4、编译下载验证4.1、连接脚本的编写4.2、Makefile的编写4.3、编译下载前面几篇文章试验都是讲解如何使用 I.MX6U 的 GPIO 输出控制功能, I.MX6U 的 IO 不仅能作为输出,而且也可以作为输入。 I.MX6U-ALPHA 开发板上有一个原创 2020-08-17 21:43:37 · 1512 阅读 · 0 评论 -
Linux之ARM(IMX6U)裸机C语言蜂鸣器驱动实验--驱动编写,编译
Linux之ARM(MX6U)裸机C语言蜂鸣器驱动实验--驱动编写,编译1、有源蜂鸣器简介2、硬件原理分析3、实验程序的编写3.1、在写驱动之前要找到对应的寄存器设置好属性3.11、复用为GPIO3.12、找到其设置电器属性并配置电器属性3.2、beep.h3.3、beep.c3.4、把头文件包含进main.h中3.4.1、修改.vscode文件把beep文件夹路径加入到.vscode3.4.2、修改main.h3.5、调用驱动和蜂鸣器执行函数4、编译下载和验证4.1、修改Makefile文件4.2、编译下原创 2020-08-16 14:47:23 · 1643 阅读 · 0 评论 -
Linux之ARM(IMX6U)BSP工程管理实验
Linux之ARM(MX6U)BSP工程管理实验1、工程管理简介1.1、创建bsp、imx6ul、obj和project这四个文件夹1.2、文件分类2、实验程序编写2.1、创建 imx6ul.h 文件2.2、创建个.vscode文件修改includePath2.2.1、修改includePath2.3、编写led驱动文件2.2.1、 bsp_led.h2.2.1、 bsp_led.c2.4、编写时钟驱动代码2.4.1、bsp_clk.h2.4.2、bsp_clk.c2.5、编写延时驱动代码2.5.1、bsp原创 2020-08-15 23:41:37 · 980 阅读 · 0 评论 -
Linux之ARM(IMX6U)裸机官方SDK移植
Linux之ARM(MX6U)裸机官方SDK移植1、I.MX6ULL 官方 SDK 包简介2、实验程序的编写2.1、SDK文件的移植2.2、创建cc.h文件2.3、编写实验代码2.3.1、main.c2.3.2、start.s2.3.3、编写链接脚本2.3.4、编写Makefile3.编译下载1、I.MX6ULL 官方 SDK 包简介NXP 针对 I.MX6ULL 编写了一个 SDK 包,这个 SDK 包就类似于 STM32 的 STD 库或者HAL 库,这个 SDK 包提供了 Windows 和 Li原创 2020-08-15 16:08:12 · 1976 阅读 · 0 评论 -
Linux之ARM(IMX6U)裸机模仿STM32驱动开发格式
Linux之ARM(MX6U)裸机模仿STM32驱动开发格式模仿 STM32 驱动开发格式实验1.模仿STM32寄存器的定义1.1、STM32寄存器定义简介1.2、I.MX6U寄存器定义1.编写外设结构体2.定义 IO 复用寄存器组的基地址3.定义访问指针2.硬件原理分析,和之前的硬件资源一样3.实验程序编写1. imx6ul.h2.main.c3.start.s4.编译下载验证1.编写连接脚本2.编写Makefile脚本3.编译下载模仿 STM32 驱动开发格式实验C 语言编写 LED 灯驱动的时候,原创 2020-08-15 12:11:56 · 755 阅读 · 2 评论 -
Linux之ARM(IMX6U)裸机C语言LED驱动实验--驱动编写,编译
Linux之ARM(MX6U)裸机C语言LED驱动实验--驱动编写简介①、汇编文件②、C 语言文件1.汇编文件初始化C语言运行环境设置处理器进入 SVC 模式2.设置SP指针3.跳转到C语言4.汇编实现2. C 语言部分实验程序编写3.编译1.编写 Makefile4.烧写到SD卡并验证简介在开始部分用汇编来初始化一下 C 语言环境,比如初始化 DDR、设置堆栈指针 SP 等等,当这些工作都做完以后就可以进入 C 语言环境,也就是运行 C 语言代码,一般都是进入 main 函数。所以我们有两部分文件要做原创 2020-08-11 11:20:17 · 734 阅读 · 0 评论 -
Linux之ARM(IMX6U)裸机之I.MX6ULL镜像烧写以及启动头文件的详解
镜像烧写1.IVT 和 Boot Data 数据2.DCD数据前面我们设置好 BOOT 以后就能从指定的设备启动了,但是你的设备里面得有代码啊,在LED灯实验中我们使用 imxdownload 这个软件将 led.bin 烧写到了 SD 卡中。imxdownload 会在 led.bin前面添加一些头信息,重新生成一个叫做 load.imx 的文件,最终实际烧写的是 laod.imx。那么imxdownload 究竟做了什么? load.imx 和 led.bin 究竟是什么关系?①、 Image ve原创 2020-08-09 17:10:00 · 1654 阅读 · 0 评论 -
Linux之ARM(IMX6U)裸机之I.MX6ULL启动方式详解
Linux之ARM(MX6U)裸机之I.MX6ULL启动方式--启动设备的选择1.启动方式选择①.串行下载②.内部BOOT模式2.BOOT ROM得初始化内容3.选择启动设备1.启动方式选择BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置来选择 BOOT 方式。 BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就不能再修改原创 2020-08-09 16:32:07 · 1953 阅读 · 0 评论 -
Linux之ARM(IMX6U)裸机汇编LED驱动实验--烧写bin文件到SD卡中并运行
Linux之ARM(MX6U)裸机汇编LED驱动实验--烧写bin文件到SD卡中并运行代码烧写2.烧写的工具2.把生成的将 imxdownload 放在工程目录下(led.bin同一个文件夹下)3. 、 imxdownload 可执行权限4 、确定要烧写的 SD 卡。5 、向 SD 卡烧写 bin 文件6. 代码验证代码烧写I.MX6U 虽然内部有 96K 的 ROM,但是这 96K 的 ROM 是 NXP自己用的,不向用户开放。所以相当于说 I.MX6U 是没有内部 flash 的,但是我们的代码得有原创 2020-08-08 18:29:16 · 1879 阅读 · 1 评论 -
Linux之ARM(IMX6U)裸机汇编LED驱动实验--编译驱动
Linux之ARM(MX6U)裸机汇编LED驱动实验--编译驱动前言编译代码1.把 .s 文件编译成 .o文件2.把 .o文件编译成连接文件 .elf3.arm-linux-gnueabihf-objcopy 格式转换生成bin文件前言我们是要编译出在 ARM 开发板上运行的可执行文件,所以要使用交叉编译器 arm-linux-gnueabihf-gcc 来编译。交叉编译链的安装参考另外一篇博文:交叉编译链的安装编译代码本试验就一个 leds.s 源文件,所以编译比较简单。源文件代码(leds.原创 2020-08-07 10:26:44 · 1900 阅读 · 1 评论 -
Linux之ARM(IMX6U)裸机汇编LED驱动实验--驱动编写
Linux之ARM(MX6U)裸机汇编LED驱动实验1. I.MX6ULL的初始化①、使能时钟②、配置 GPIO_I003 PIN的复用为GPIO③、配置 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的电器属性④、配置GPIO功能,设置输入输出1. I.MX6ULL的初始化①、使能时钟使能时钟。CCGR0–CCGR6这七个寄存器控制着I.MX6ULL所有外设时钟的使能,为了简单,设置CCGR0–CCGR6这七个寄存器全部为0xFFFFFFFF,相当于使能所有的外设时钟CCGR0原创 2020-08-07 09:13:48 · 574 阅读 · 1 评论