- 博客(20)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 I.MX6U学习中遇到的问题和解决方法
汇编文件编译报错:start.s:13: 错误: no such instruction: `mrs r0,cpsr//读取cpsr' 解决方法:将汇编后缀 .s 更改为大写 .S 即可解决,Linux下严格区分大小写,windows 下不区分 2021.03.27 22:07
2021-03-27 22:07:49
717
2
原创 I.MX6U 学习笔记五------NXP官方SDK使用实验
官方SDK移植1.新建cc.h文件SDK包里面会用到很多数据类型,所以我们需要在cc.h中定义一些常用的数据类型。#define __I volatile#define __O volatile#define __IO volatiletypedef signed char int8_t;typedef signed short int16_t;typedef signed int int32_t;typedef unsigned char
2022-03-28 15:20:52
493
原创 I.MX6U 学习笔记十六------Uboot启动Linux
从EMMC启动1.首先检查EMMC里面是否有系统,linux镜像zlmage和.dtb文件。先将当前设备切换为EMMC。mmc dev 1 //切换到EMMCfatls mmc 1:1 //查看emmc分区1里面的文件fatload mmc 1:1 80800000 zImage //将zImage下载到DDR的0x80800000处fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-800x480-c.dtb //将dtb读取到0x8300000
2021-10-10 23:23:56
249
原创 I.MX6U 学习笔记十五------Uboot命令
Uboot命令1.查看某个命令帮助信息,可以直接help命令查看所有帮助信息,也可以 ?+空格+命令名称2.信息查询 bdinfo 板子信息3.printenv 查看当前板子的环境变量 重要4.setenv 设置环境变量5.saveenv 保存环境变量新建环境变量用setenv直接新建,然后保存。删除环境变量:将环境变量的值设置为空,就是删除。Uboot内存操作相关的环境变量 Uboot中所有的命令数据全为16进制!1.md命令 查看内存值2.nm命令 修改指定地址
2021-06-27 16:43:42
212
原创 I.MX6U 学习笔记十四------IIC通信
一、IIC协议详解1、ALPHA开发板上有个AP3216C,这是一个IIC接口的器件,这是一个环境光传感器。AP3216C连接到了I2C1上:I2C1_SCL: 使用的是UART4_TXD这个IO,复用位ALT2I2C1_SDA: 使用的是UART4_RXD这个IO。复用为ALT22、I2C分为SCL和SDA,这两个必须要接上拉电阻到VCC,比如3.3V,一般是4.7K上拉电阻。3、I2C总线支持多从机,通过从机地址来区分访问哪个从机。二、6ULL I2C接口详解1、6UL的I2C频率标准模
2021-05-24 20:34:24
327
原创 I.MX6U 学习笔记十三------RTC实时时钟实验
一、RTC原理详解1、6U内部自带到了一个RTC外设,确切的说是SRTC。6U和6ULL的RTC内容在SNVS章节。6U的RTC分为LP和HP。LP叫做SRTC,HP是RTC,但是HP的RTC掉电以后数据就丢失了,即使用了纽扣电池也没用。所以必须要使用LP,也就是SRTC。SNVS章节有些是跟加密有关的,需要与NXP签订NDA协议才可以拿到。RTC分为SNVS_LP和SNVS_HP,如果做产品,建议使用外置RTC芯片,PCF8563。RTC很类似定时器,外接32.768KHz的晶振,然后就开始计时
2021-05-13 20:22:35
415
原创 I.MX6U 学习笔记十二------RGBLCD实验
一、RGBLCD显示原理简介1、像素点于一个“小灯“,不管是液晶屏,还是手机,平板,RGBLCD屏幕他都是有由一个个的彩色小灯构成的。彩色点阵屏每个像素点有三个小灯,红色、绿色和蓝色,也叫做RGB。RGB就是光的三原色。通过调整RGB三种颜色的比例,就可以实现姹紫千红的世界。2、分辨率要想显示文字,图片,视频等等就需要很多个像素点,分辨率说的就是像素点的个数,1080P、720P、2K、4K,8K。1080P=1920*1080,表示一行有1920个像素点,一列有1080个。显示器有尺寸!24村,2
2021-05-09 10:05:40
793
原创 I.MX6U 学习笔记十一------串口实验
6ULL串口UART原理6ULL的UART_URXD寄存器保存这串口接收到的数据。UART_UTXD寄存器为发送数据寄存器,如果需要通过串口发送数据,只需要将数据写入到UART_UTXD寄存器里面。UART_UCR1~UCR4都是串口的控制寄存器。UART_UCR1的bit0是UART的使能位,为1的时候使能UART。Bit14为自动检测波特率使能位,为1的时候使能波特率自动检测。UART_UCR2的bit0为软件复位位。为0的时候复位UART。Bit1使能UART的接收,我们要配置为1。Bit2为
2021-04-25 22:20:13
325
原创 I.MX6U 学习笔记十------GPT定时器高精度延时实验
GPT定时器简介空指令实现的延时函数修改主频以后就不准确了,需要一个不跟着主频变化的延时函数,我们通过6U的一个硬件定时器来实现精确延时,最低15-20us高精度延时。我们使用6U的GPT定时器来实现高精度延时。GPT定时器是32位向上计数器,可以通过提供的两个外部引脚来捕获外部信号。还有三路比较输出和中断功能。GPT定时器有一个12位的分频器,时钟源可以选择, 我们使用ipg_clk = 66MHz。GPT定时器有两种工作模式,restart 和 freerunrestart模式下,定时器计数值
2021-04-24 18:03:24
280
原创 I.MX6U 学习笔记九------EPIT增强型定时器
EPIT增强型定时器**简介**1.EPIT是一个32位的向下计数器2.EPIT的时钟源可以选择,我们选择ipg_clk = 66MHz。3.可以对时钟源进行分频,12位分频器,0-4095分别代表1-4096分频。4.开启定时器后,计数寄存器会每个时钟减一,如果和比较寄存器里面的值相等的话,就会触发中断。5.EPIT有两种工作模式:Set-add-forget,一个是free-runing。通过EPITx_CR寄存器bit3位控制,6.6ULL有两个EPIT定时器。**实验原理**
2021-04-19 22:36:28
176
原创 I.MX6U 学习笔记八------Cortex-A中断原理和GPIO中断实验
Cortex-A7中断系统Cortex-A7中断向量表中断向量表主要功能是描述了中断对应的中断服务函数。Cortex-A7中断向量表有8个中断,其中重点关注IRQ。需要用户自己去定义中断向量表。中断向量表偏移裸机例程都是从0x87800000开始的,因此要设置中断向量偏移。GIC中断控制器同NVIC一样,GIC用于管理Cortex-A7的中断。GIC提供了开关中断,设置优先级。IMX6U中断号为了区分不同的中断,引入了中断号。ID0-15是给SGI,16-31是给PPI,剩
2021-04-12 21:38:47
342
原创 I.MX6U 学习笔记七------主频和时钟配置
主频和时钟配置一、硬件原理图分析1.32.768Khz的晶振,供给RTC时钟。2.在6U的T16和T17这两个IO上接了一个24MHz的晶振。二、时钟树1.7路PLL为了方便生成时钟,从24MHz晶振生出来7路PLL。这7路PLL中有的又生出来PFD。PLL1:ARM PLL供给ARM内核PLL2:system PLL ,528MHz,此路分出了4路PFDPLL3:USB1PLL,480MHz,也分出来4luPFDPLL4:AudioPLL,供给音频使用PLL5:Video,供给视频
2021-04-11 19:18:52
192
原创 I.MX6U 学习笔记六------BSP工程管理
BSP工程管理BSP工程管理的目的就是为了模块化整理代码。同一个属性的文件存放在同一个目录里面。1.新建所需的文件夹,将统一属性的文件放到相应的文件夹中。2.修改clk,led,delay驱动,创建对应的驱动文件,放置到对应的目录中。3.根据编写的新驱动文件,修改mian.c文件内容。设置VScode头文件路径:先创建vscode目录,然后打开c/c++配置器,然后在文件夹下生成一个文件,这个文件里面有includePath。Makefile编写Makefile指定头文件路径需要 -I。我们编
2021-04-08 22:30:15
116
原创 I.MX6U 学习笔记四------模仿STM32开发实验
STM32的做法对于STM32来说,使用一个结构体将一个外设的所有寄存器都放到一起。先定义一个结构体包含所有的寄存器,再定义一个基地址的宏定义,然后用一个宏定义将基地址和结构体联系起来,就能通过这个结构体访问这些寄存器了。修改驱动:1.添加清除BSS段代码;2.添加结构体寄存器在结构体中添加寄存器的时候一定要注意地址的连续性,如果不连续的话要添加占位。3....
2021-03-27 22:03:21
123
原创 I.MX6U 学习笔记二------I.MX启动方式(硬件启动设备选择和软件头部信息)
硬件启动方式选择6ULL支持从SD卡,EMMC,NAND、USB等等位置启动。6ULL是怎么支持多种外置flash启动程序的?启动方式选择BOOT_MODE0和BOOT_MODE1,这两个是两个IO来控制的。选择从USB启动还是内部BOOT启动。如果要烧写系统到开发板中可以选择从USB下载,下载到SD卡、EMMC、NAND等外置存储中。烧写完成设置从内部BOOT启动,然后从相应的外置存储中启动(再选择启动设备)。选择启动设备只有当设置BOOT_MODE0和BOOT_MODE1是从内部BOOT启
2021-03-24 22:01:51
344
原创 I.MX6U 学习笔记一------汇编LED驱动实验(GPIO寄存器配置,常用汇编指令,编译链接程序)
Cortex-A 汇编语言作用:需要用汇编初始化一些SOC的外设。使用汇编初始化DDR,I.MX6U不需要,其内部96K的ROM中存放了NXP自己编写的启动代码,这些启动代码可以读取DDR的配置信息,并完成DDR的初始化。设置SP指针,一般指向DDR,设置好C语言运行环境。I.MX6U IO端口初始化IO介绍:I.MX6U 的 GPIO 一共有 5 组: GPIO1、 GPIO2、 GPIO3、 GPIO4 和 GPIO5, 其中 GPIO1 有 32 个 IO, GPIO2 有 22 个 I
2021-03-22 22:26:09
746
1
原创 按键输入实验
按键KEY0连接到了UART_CTS上。默认为高,按下KEY0后,UART1_CTS为低。 设置UART1_CTS复用为GPIO1_IO18 设置UART1_CTS电气属性 配置GPIO1_IO18为输入模式 读取按键值,GPIO1_IO18的高低电平
2021-03-13 22:28:51
71
原创 Ubuntu下交叉编译器安装
Ubuntu下交叉编译器安装先将交叉编译工具拷贝到Ubuntu下。然后打开终端利用解压命令 sudo tar -vxf 要解压的压缩包名称插入一个设置方法安装(已安装的忽略)vim编辑器 sudo apt-get install vim打开一个文件:sudo vim /etc/vim/vimrc在最后一行输入set ts=4 设置tab长度set nu 设置显示行号然后 esc :wq 保存关闭完成插入修改环境变量,使用 VI 打开/etc/profil
2021-02-27 20:54:17
434
原创 I.MX6U 学习笔记三------C语言版本LED驱动实验
C语言运行环境构建一、设置处理器模式1.设置6ull处于SVC(超级管理员)模式下,一共有9种模式。设置CPSR程序状态寄存器的bit4-0,也就是M[4:0]为10011 = 0x13。读写状态寄存器需要用到MRS和MSR指令。 MRS将CPSR寄存器数据读出到通用寄存器里面,MSR指令将通用寄存器的值写入到CPSR寄存器里面去。二、设置SP指针SP可以指向内部RAM,也可以指向DDR。,我们将其指向DDR。 要设置指向什么位置呢?512M的范围是0x80000000~0x9FFFFF
2021-01-31 16:53:08
150
原创 关于STM32F103定时器中断的问题
程序调试时发现,打开定时器4的定时中断后 就是这句话:TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);如果定时器4中断里不写清除标志位的操作,程序会卡死,猜测是一直在定时器中断里。所以猜测STM32上电可能会进一次中断。TIM_ClearITPendingBit(TIM4, TIM_IT_Update);...
2020-06-29 13:57:59
1528
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人