IMX6ULL
一个编程的小渣渣
一个自学编程的小白
展开
-
u-boot使用指令之EMMC 和 SD 卡操作命令
u-boot使用指令之EMMC 和 SD 卡操作命令1、 mmc info 命令2、 mmc rescan 命令3、 mmc list 命令4、 mmc dev 命令5、 mmc part 命令6、 mmc read 命令7、 mmc write 命令uboot 支持 EMMC 和 SD 卡,因此也要提供 EMMC 和 SD 卡的操作命令。一般认为 EMMC和 SD 卡是同一个东西,所以没有特殊说明,本教程统一使用 MMC 来代指 EMMC 和 SD 卡。uboot 中常用于操作 MMC 设备的命令为“m原创 2020-10-30 15:05:58 · 1586 阅读 · 0 评论 -
u-boot操作指令之其他常用命令
u-boot操作指令之其他常用命令其他常用命令1、 reset 命令2、 go 命令3、 run 命令4、 mtest 命令其他常用命令uboot 中还有其他一些常用的命令,比如 reset、 go、 run 和 mtest 等。1、 reset 命令reset 命令顾名思义就是复位的,输入“reset”即可复位重启,如图所示:2、 go 命令go 命令用于跳到指定的地址处执行应用,命令格式如下:go addr [arg ...]addr 是应用在 DRAM 中的首地址,我们可以编译一下原创 2020-10-30 14:55:36 · 402 阅读 · 0 评论 -
u-boot操作指令之 BOOT 操作命令
u-boot操作指令之 BOOT 操作命令BOOT 操作命令1、 bootz 命令2、 bootm 命令3、 boot 命令BOOT 操作命令uboot 的本质工作是引导 Linux,所以 uboot 肯定有相关的 boot(引导)命令来启动 Linux。常用的跟 boot 有关的命令有: bootz、 bootm 和 boot。1、 bootz 命令要启动 Linux,需要先将 Linux 镜像文件拷贝到 DRAM 中,如果使用到设备树的话也需要将设备树拷贝到 DRAM 中。可以从 EMMC原创 2020-10-30 14:43:29 · 859 阅读 · 0 评论 -
u-boot操作指令之EXT 格式文件系统操作命令
u-boot操作指令之EXT 格式文件系统操作命令EXT 格式文件系统操作命令EXT 格式文件系统操作命令uboot 有 ext2 和 ext4 这两种格式的文件系统的操作命令,常用的就四个命令,分别为:ext2load、 ext2ls、 ext4load、 ext4ls 和 ext4write。这些命令的含义和使用与 fatload、 fatls 和 fatwrit一样,只是 ext2 和 ext4 都是针对 ext 文件系统的。命令描述ext2ls用于查询 ext2 格式设原创 2020-10-30 14:13:01 · 1443 阅读 · 0 评论 -
u-boot操作指令之FAT 格式文件系统操作命令
u-boot操作指令之FAT 格式文件系统操作命令FAT 格式文件系统操作命令1、 fatinfo 命令2、 fatls 命令3、 fstype 命令4、 fatload 命令5、 fatwrite 命令FAT 格式文件系统操作命令有时候需要在 uboot 中对 SD 卡或者 EMMC 中存储的文件进行操作,这时候就要用到文件操作命令,跟文件操作相关的命令有: fatinfo、 fatls、 fstype、 fatload 和 fatwrite,但是这些文件操作命令只支持 FAT 格式的文件系统!!原创 2020-10-30 14:07:31 · 6294 阅读 · 0 评论 -
u-boot操作指令之网络操作命令
u-boot操作指令之网络操作命令网络操作命令1、 ping 命令2、 dhcp 命令3、 nfs 命令4、 tftp 命令网络操作命令uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linuxkernel 的时候需要使用到 uboot 的网络功能做调试。uboot 支持大量的网络相关命令,比如 dhcp、ping、 nfs 和 tftpboot,在使用 uboot 的网络功能之前先用网线将开发板的 ENET2 接口和电脑或者路由器连接起来,建议开发板和主机原创 2020-10-30 13:49:44 · 3586 阅读 · 0 评论 -
u-boot使用命令之内存操作命令
u-boot使用命令之内存操作命令1.md命令内存操作命令就是用于直接对 DRAM 进行读写操作的,常用的内存操作命令有 md、 nm、mm、 mw、 cp 和 cmp。我们依次来看一下这些命令都是做什么的。1.md命令md 命令用于显示内存值,格式如下:md[.b, .w, .l] address [# of objects]命令中的[.b .w .l]对应 byte、 word 和 long,也就是分别以 1 个字节、 2 个字节、 4 个字节来显示内存值。 address 就是要查看的内存原创 2020-10-29 14:38:36 · 3211 阅读 · 0 评论 -
u-boot命令之环境变量操作命令
@[TOC]u-boot命令之环境变量操作命令)修改环境变量环境变量的操作涉及到两个命令: setenv 和 saveenv,命令 setenv 用于设置或者修改环境变量的值。命令 saveenv 用于保存修改后的环境变量,一般环境变量是存放在外部 flash 中的,uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到 flash 中,否则的话uboot 下一次重原创 2020-10-29 14:04:19 · 4826 阅读 · 0 评论 -
u-boot的介绍与下载
u-boot的介绍与下载系统的启动过程:U-boot简介u-boot源码下载:系统的启动过程:Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了, bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核, boo原创 2020-10-29 10:20:57 · 499 阅读 · 0 评论 -
U-Boot 使用命令之信息查询命令
U-Boot 使用命令之信息查询命令U-Boot 命令使用信息查询命令bdinfo命令printenv命令version 命令U-Boot 命令使用进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令,如图所示:信息查询命令常用的和信息查询有关的命令有 3 个: bdinfo、 printenv 和 version。bdinfo命令bdinfo 命令,此命令用于查看板子信息,直接输入“bdinfo”即可,结果如图所示:从图中可以原创 2020-10-29 10:37:34 · 1311 阅读 · 0 评论 -
Linux之ARM (I.MX6ULL)UART串口通信原理
Linux之ARM (I.MX6ULL)UART串口通信原理UART串口简介1、 UART 通信格式2、 UART 电平标准不管是单片机开发还是嵌入式 Linux 开发,串口都是最常用到的外设。可以通过串口将开发板与电脑相连,然后在电脑上通过串口调试助手来调试程序。还有很多的模块,比如蓝牙、GPS、 GPRS 等都使用的串口来与主控进行通信的,在嵌入式 Linux 中一般使用串口作为控制台,所以掌握串口是必备的技能。UART串口简介1、 UART 通信格式串口全称叫做串行接口,通常也叫做 COM 接原创 2020-10-04 17:05:06 · 1386 阅读 · 0 评论 -
Linux之ARM (I.MX6ULL)GPT高度延时实验
Linux之ARM (I.MX6ULL)GPT高度延时实验GPT高精度延时简介1.GPT 定时器简介2.GPT 定时器的可选时钟源如图所示:3.GPT 定时器结构如图所示:3.1.GPT 定时器结构各部分的意义如下:4.GPT定时器的两种工作模式5.GPT定时器几种重要寄存器的介绍5.1GPT 的配置寄存器 GPTx_CR结构特性5.2GPT 的配置寄存器 GPTx_PR结构特性5.3GPT 的配置寄存器 GPTx_SR结构特性6.GPT定时器实现高精度延时原理GPT高精度延时简介1.GPT 定时器简介原创 2020-09-29 22:35:59 · 448 阅读 · 0 评论 -
Linux 驱动按键消抖原理
Linux 驱动里面按键消抖原理1.为什么要使用按键消抖?2. 定时器按键消抖简介1.为什么要使用按键消抖?因为机械结构带来的按键抖动问题,也就是按键消抖。前面的实验中都是直接使用了延时函数来实现消抖,因为简单, 但是直接用延时函数来实现消抖会浪费 CPU 性能,因为在延时函数里面 CPU 什么都做不了。如果按键使用中断的话更不能在中断里面使用延时函数,因为中断服务函数要快进快出。2. 定时器按键消抖简介按键消抖的原理在在此之前已经详细的讲解了,其实就是在按键按下以后延时一段时间再 去读取按键值,如原创 2020-09-28 22:16:20 · 434 阅读 · 0 评论 -
Linux之ARM (I.MX6ULL)EPIT定时器实验
Linux之ARM (I.MX6ULL)EPIT定时器实验1.EPIT 定时器简介1.1步骤如下:定时器是最常用的外设,常常需要使用定时器来完成精准的定时功能, I.MX6U 提供了多种硬件定时器,有些定时器功能非常强大。在定时器中断里面我们可以做其它的处理,比如翻转 LED 灯。1.EPIT 定时器简介EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32原创 2020-09-28 21:52:10 · 400 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之主频和时钟配置实验
Linux之ARM(MX6U)裸机之主频和时钟配置实验1. I.MX6U 时钟系统详解1.1系统时钟来源1.2 7 路 PLL 时钟源1.3 时钟树简介1.4 内核时钟设置1.5 PFD 时钟设置1.6 AHB、 IPG 和 PERCLK 根时钟设置2.实验程序编写2.1bsp_clk.h2.2 bsp_clk.c2.3 main.c 修改3.编译下载验证在前几篇 写的实验中我们都没有涉及到 I.MX6U 的时钟和主频配置操作,全使用的默认配置,默认配置下 I.MX6U 工作频率为 396MHz。但是原创 2020-08-28 16:51:11 · 282 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之按键输入实验(GPIO的输入、输出)
Linux之ARM(MX6U)裸机之按键输入实验(GPIO的输入、输出)1.按键输入简介2. 硬件原理分析3.实验程序编写3.1编写bsp_gpio.h3.2编写bsp_gpio.c3.3编写bsp_key.h3.4编写bsp_key.c3.5修改main.c4. 编译下载验证4.1编写 Makefile4.2链接脚本编写4.3 编译下载前面几章试验都是讲解如何使用 I.MX6U 的 GPIO 输出控制功能,I.MX6U 的 IO 不仅能作 为输出,而且也可以作为输入。I.MX6U-ALPHA 开发板上原创 2020-08-25 16:32:20 · 595 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之c语言蜂鸣器实验--驱动编写、编译
Linux之ARM(MX6U)裸机之c语言蜂鸣器实验--编写、编译1.有源蜂鸣器简介2. 硬件原理分析3.编译下载验证3.1在写驱动之前要找到对应的寄存器设置好属性3.1.1初始化SNVS_TAMPER1这个IO复用为GPIO5_IO013.1.2设置SNVS_TAMPER1这个IO的电气属性。3.1.3修改.vscode文件把beep文件夹路径加入到.vscode3.2 修改main.c文件4 编写和验证4.1编写Makefile4.2编写脚本链接4.3编译下载Linux之ARM(MX6U)裸机之c语言原创 2020-08-19 16:06:56 · 580 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之BSP工程管理实验
Linux之ARM(MX6U)裸机之BSP工程管理实验1.工程管理简介2.实验程序编写2.1创建 imx6ul.h 文件2.2创建个.vscode文件修改includePath2.3 编写 led 驱动代码2.4 编写时钟驱动代码2.5 编写延时驱动代码2.6 修改 main.c 文件3.编译下载验证3.1编写 Makefile3.2 编写脚本链接3.3 编译下载1.工程管理简介打开我们上一章的工程根目录,如图所示:在图中我们将所有的源码文件都放到工程根目录下,即使这个工程只是完成了一个 简单的流水原创 2020-08-18 10:58:10 · 518 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之使用官方SDK移植实验
Linux之ARM(MX6U)裸机之使用官方 SDK 移植实验1. I.MX6ULL 官方 SDK 包简介2.硬件原理图分析3.试验程序编写3.1SDK 文件移植3.2创建 cc.h 文件3.3 编写实验代码4.编译下载验证4.1 编写 Makefile 和链接脚本4.2 编译下载1. I.MX6ULL 官方 SDK 包简介NXP 针对 I.MX6ULL 编写了一个 SDK 包,这个 SDK 包就类似于 STM32 的 STD 库或者 HAL 库,这个 SDK 包提供了 Windows 和 Linux原创 2020-08-17 21:05:04 · 731 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机模仿 STM32 驱动开发格式实验 --驱动编写、编译
Linux之ARM(MX6U)裸机模仿 STM32 驱动开发格式实验 --驱动编写、编译一、模仿 STM32 寄存器定义①STM32 寄存器定义简介为了开发方便,ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件,在这个文件 里面定义了 STM32F103 所有外设寄存器,我们可以使用其定义的寄存器来进行开发,比如我 们可以用如下代码来初始化一个 GPIO:GPIOE->CRL&=0XFF0FFFFF; GPIOE->CRL|=0X00300000原创 2020-08-16 20:29:20 · 478 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机C语言版LED灯实验--驱动编写、编译
Linux之ARM(MX6U)裸机C语言版 LED灯实验–驱动编写、编译一、C语言运行环境构建汇编文件只是用来完成 C 语言环境搭建。设置处理器模式设置6ULL处于SVC模式 下。设置CPSR寄存器的bit4-0,也就是M[4:0]为10011=0X13。读写状态寄存器需要用到MRS和MSR指令。MRS将CPSR寄存器数据读出到通用寄存器里面,MSR指令将通用寄存器的值写入到CPSR寄存器里面去。以前的 ARM 处理器有 7 种运行模型:User、FIQ、IRQ、Supervisor(SVC)、A原创 2020-08-16 19:41:21 · 617 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之 MX6ULL 启动方式详解
Linux之ARM(MX6ULL)裸机之 MX6ULL 启动方式详解一、启动方式选择BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据BOOT_MODE[1:0]的设置 来选择 BOOT 方式。BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔 丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就不能 再修改了,所以我们不使用。我们使用的是通过修改 BOOT_MODE[1:0]对应的 GPIO 高低电平 来选择原创 2020-08-15 11:08:42 · 1534 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机汇编LED驱动实验--烧写bin文件到sd卡并运行
Linux之ARM(MX6ULL)裸机汇编LED驱动实验–烧写bin文件到sd卡并运行一、代码烧写编译完代码以后可以直接通过 MDK 或者 IAR 下载到内部的 flash 中。但是 I.MX6U 虽然内部有 96K 的 ROM,但是这 96K 的 ROM 是 NXP 自己用的,不向用户开放。所以相当于说 I.MX6U 是没有内部 flash 的,但是我们的代码得有地 方存放啊,为此,I.MX6U 支持从外置的 NOR Flash、NAND Flash、SD/EMMC、SPI NOR Flash 和 Q原创 2020-08-14 20:47:57 · 1017 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机汇编LED驱动实验-编译驱动代码
Linux之ARM(MX6ULL)裸机汇编LED驱动实验-编译驱动代码汇编驱动代码(leds.s): .global _start @全局标号 _start:/* 使能外设时钟*CCGR0~CCGR6这7个寄存器全部使能,设置CCGR0~CCGR6这7个寄存器地址全部为 0XFFFFFFFF*/ldr r0, =0x020c4068 @CCGR0ldr r1, =0xffffffff @向CCGR0写入的数据str r1, [r0] @将oxfff原创 2020-08-13 22:04:04 · 444 阅读 · 1 评论 -
Cortex-A7 MPCore 架构的介绍
Cortex-A7 MPCore 架构的介绍参考了《Cortex-A7 Technical ReferenceManua.pdf》和《ARM Cortex-A(armV7)编程手 册 V4.0.pdf》这俩份文档,这两份文档都是 ARM 官方的文档,详细的介绍了 Cortex-A7 架构和 ARMv7-A 指令集。一、 Cortex-A7 MPCore 简介Cortex-A7 MPcore 处理器支持 1~4 核,通常是和 Cortex-A15 组成 big.LITTLE 架构的, Cortex-A1原创 2020-08-12 12:09:37 · 1034 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机汇编LED驱动实验-编写驱动代码
I.MX6ULL IO初始化一、使能时钟使能时钟,CCGR0~ CCGR6这7个寄存器控制着6ULL所有外设时钟的使能。为了简单,设置CCGR0~CCGR6这7个寄存器全部为0XFFFFFFFF,相当于使能所有外设时钟。CCGR0:CCGR1:CCGR2:CCGR3:CCGR4:CCGR5:CCGR6:汇编使能所有的外设时钟:二、IO复用将寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的bit3~0设置为0101=5,这样GPIO1_IO03就原创 2020-08-13 21:30:54 · 361 阅读 · 0 评论