Linux之ARM(MX6U)裸机篇

Linux之ARM(MX6U)裸机篇

  • 1.开发环境搭建

  • 2.交叉编译器的安装

  • 3.vscode软件的安装与使用

  • 4.I.MX6U-ALPHA开发板简介

  • 5.I.MX6U芯片简介

  • 6.汇编LED驱动实验-原理分析

  • 7.汇编LED驱动实验-汇编基本语法

  • 8.汇编LED驱动实验-驱动编写

  • 9.汇编LED驱动实验-编译程序

  • 10.汇编LED驱动实验-烧写bin文件到SD卡中并运行

  • 11.IMX启动方式-启动设备的选择

  • 12. IMX启动方式-IVT表和BootData详解

  • 13. IMX启动方式-DCD数据详解

  • 14.C语言版本LED驱动实验-实验原理分析

  • 15.C语言版本LED驱动实验-程序编写与验证

  • 16.模仿STM32驱动开发实验-实验程序编写

  • 17.模仿STM32驱动开发实验-主函数编写与下载验证

  • 18. NXP官方SDK使用实验-SDK移植

  • 19.NXP官方SDK使用实验-程序编写验证

  • 20.BSP工程管理实验-工程整理与程序编写

  • 21.BSP工程管理实验-编写测试通用Makefile

  • 22.蜂鸣器实验

  • 23.按键输入实验-实验程序编写

  • 24.按键输入实验-驱动验证与调试

  • 25.按键输入实验-通用GPIO驱动编写与验证

  • 26.主频和时钟配置实验-时钟树详解

  • 27.主频和时钟配置实验-主频修改

  • 28.主频和时钟配置实验-8路PLL和8路PFD时钟设置

  • 29.主频和时钟配置实验-其他时钟源设置

  • 30.GPIO中断实验-Cortex-A中断原理

  • 31.GPIO中断实验-6U中断向量表的编写

  • 32.GPIO中断实验-6U复位中断服务函数的编写

  • 33.GPIO中断实验-IRQ中断服务函数详解

  • 34.GPIO中断实验-通用中断驱动编写

  • 35.GPIO中断实验-向GPIO驱动添加中断处理函数

  • 36.GPIO中断实验-编写按键中断驱动

  • 37.EPIT定时器实验-EPIT原理详解

  • 38.EPIT定时器实验-实验程序编写与验证

  • 39.定时器按键消抖实验

  • 40. 高精度延时实验-GPT定时器原理

  • 41.高精度延时实验-实验代码编写与测试

  • 42.串口实验-串口原理详解

  • 43.串口实验-串口驱动实验编写与验证1

  • 44.串口实验-串口驱动实验编写与验证2

  • 45.串口实验-printf格式化函数移植与测试

  • 46.DDR3实验-RAM发展历史简介

  • 47.DDR3实验-DDR3重要时间参数、时钟配置与原理图简析

  • 48.DDR3实验-DDR3初始化、校准、超频测试

  • 49.RGBLCD实验-LCD显示原理详解

  • 50.RGBLCD实验-LCD时序与时间参数

  • 51.RGBLCD实验-6ULL LCDIF接口寄存器详解

  • 52.RGBLCD实验-6ULL像素时钟配置详解

  • 53.RGBLCD实验-LCDID读取以及IO初始化程序编写

  • 54.RGBLCD实验-LCD时间参数和像素时钟设置程序编写

  • 55.RGBLCD实验-LCDIF控制器接口初始化程序编写

  • 56.RGBLCD实验-LCDIF驱动以及API函数测试

  • 57.RTC实验-6U内部RTC详解

  • 58.RTC实验-驱动编写与测试

  • 59. RTC实验-时间错误问题调试

  • 60.I2C实验-I2C协议和6U的I2C控制器详解

  • 61.I2C实验-AP3216C简介与程序编写

  • 62.I2C实验-I2C主机控制器驱动程序编写1

  • 63.I2C实验-I2C主机控制器驱动程序编写2

  • 64.I2C实验-AP3216C程序编写

  • 65.I2C实验-AP3216C程序调试及bug解决

  • 66.SPI实验-SPI以及ICM20608详解

  • 67.SPI实验-6ULL SPI控制器寄存器详解

  • 68.SPI实验-6ULL SPI控制器驱动程序编写

  • 69.SPI实验-ICM20608驱动程序编写

  • 70.SPI实验-ICM20608实际测量值计算与6ULL硬件浮点的开启

  • 71.多点电容触摸屏实验-电容触摸屏与FT系列触摸芯片详解

  • 72.多点电容触摸屏实验-电容触摸屏幕驱动编写1

  • 73.多点电容触摸屏实验-电容触摸屏幕驱动编写2

  • 74.多点电容触摸屏实验-电容触摸驱动测试

  • 75.PWM背光实验-6ULL PWM详解

  • 76.PWM背光实验-PWM背光驱动程序编写

开发环境搭建

Linux之ARM(MX6U)裸机篇_第1张图片
Linux之ARM(MX6U)裸机篇_第2张图片

Linux之ARM(MX6U)裸机篇_第3张图片

交叉编译器的安装

Linux之ARM(MX6U)裸机篇_第4张图片

vscode软件的安装与使用

Linux之ARM(MX6U)裸机篇_第5张图片

Linux之ARM(MX6U)裸机篇_第6张图片

I.MX6U-ALPHA开发板简介

I.MX6U芯片简介

Linux之ARM(MX6U)裸机篇_第7张图片

汇编LED驱动实验-原理分析

Linux之ARM(MX6U)裸机篇_第8张图片

Linux之ARM(MX6U)裸机篇_第9张图片

Linux之ARM(MX6U)裸机篇_第10张图片

汇编LED驱动实验-汇编基本语法

Linux之ARM(MX6U)裸机篇_第11张图片

Linux之ARM(MX6U)裸机篇_第12张图片

Linux之ARM(MX6U)裸机篇_第13张图片

Linux之ARM(MX6U)裸机篇_第14张图片

Linux之ARM(MX6U)裸机篇_第15张图片

Linux之ARM(MX6U)裸机篇_第16张图片

Linux之ARM(MX6U)裸机篇_第17张图片

Linux之ARM(MX6U)裸机篇_第18张图片

Linux之ARM(MX6U)裸机篇_第19张图片

Linux之ARM(MX6U)裸机篇_第20张图片

Linux之ARM(MX6U)裸机篇_第21张图片

Linux之ARM(MX6U)裸机篇_第22张图片
Linux之ARM(MX6U)裸机篇_第23张图片

Linux之ARM(MX6U)裸机篇_第24张图片

汇编LED驱动实验-驱动编写

Linux之ARM(MX6U)裸机篇_第25张图片

Linux之ARM(MX6U)裸机篇_第26张图片

Linux之ARM(MX6U)裸机篇_第27张图片
Linux之ARM(MX6U)裸机篇_第28张图片
Linux之ARM(MX6U)裸机篇_第29张图片

汇编LED驱动实验-编译程序

汇编LED驱动实验-烧写bin文件到SD卡中并运行

Linux之ARM(MX6U)裸机篇_第30张图片
Linux之ARM(MX6U)裸机篇_第31张图片

Linux之ARM(MX6U)裸机篇_第32张图片

Linux之ARM(MX6U)裸机篇_第33张图片

IMX启动方式-启动设备的选择

Linux之ARM(MX6U)裸机篇_第34张图片

IMX启动方式-IVT表和BootData详解

IMX启动方式-DCD数据详解

Linux之ARM(MX6U)裸机篇_第35张图片

C语言版本LED驱动实验-实验原理分析

Linux之ARM(MX6U)裸机篇_第36张图片
Linux之ARM(MX6U)裸机篇_第37张图片
start.s

.global _start
   /* 设置处理器进入SVC模式*/
   mrs r0,cpsr     /* 读取cpsr到r0*/
   bic r0,r0,#0x1f /* 清除cpsr的bit4-0*/
   orr r0,r0,#0x13 /* 使用SVC模式*/
   msr cpsr,r0    /*将r0写入到cpsr*/

   /* 设置SP指针*/
   ldr sp,=0x80200000
   b main          /*跳转到c语言main函数*/

main.h




main.c

#include "main.h"
/*使能外设时钟*/
void clk_enabel(void){

    CCM_CCGR1 = 0xFFFFFFFF;
    CCM_CCGR2 = 0xFFFFFFFF;
    CCM_CCGR3 = 0xFFFFFFFF;
    CCM_CCGR4 = 0xFFFFFFFF;
    CCM_CCGR5 = 0xFFFFFFFF;
    CCM_CCGR6 = 0xFFFFFFFF;

}
/* 初始化LED */
void led_init(void){
    SW_MUX_GPIO1_IO03 = ox5; /* 复用为GPIO01-IO03*/
    SW_PAD_GPIO1_IO03 = 0X10B0;  /* 设置GPIO1_IO03电气属性*/
    /* GPIO初始化 */
    GPIO1_GDIR = 0x8;  /* 设置为输出*/
    GPIO1_DR = 0X0;  /* 打开LED灯 */
}



int main(void){
   clk_enable();  /*使能外设时钟*/
  /*  初始化LED */
   led_init();

  /* 设置LED闪烁 */
  while(1);
  return 0;
}

Makefile

ogjs = start.o  main.o 

ledc.bin:$(objs)
    arm-linux-gnueabihf-ld -Ttext 0X87800000 $^ -o ledc.elf
    arm-linux-gnueabihf-objcopy -O binary -S ledc.elf $@
    arm-linux-gnueabihf-objdump -D -m arm ledc.elf > ledc.dis
    
%.o :%.c
    arm-linux-gnueabihf-gcc -Wall nostdlib -c  -o $@ $<
%.o :%.S
    arm-linux-gnueabihf-gcc -Wall nostdlib -c  -o $@ $< 
       
clean:
    rm -rf *.o ledc.in ledc.elf ledc.dis



C语言版本LED驱动实验-程序编写与验证

模仿STM32驱动开发实验-实验程序编写

模仿STM32驱动开发实验-主函数编写与下载验证

NXP官方SDK使用实验-SDK移植

cc.h

#define __I volatile
#define __O volatile
#define __IO volatile

typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;

typedef signed char s8;
typedef signed short s16;
typedef signed int s32;
typedef signed long long s64;
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
typedef unsigned long long u64;


Linux之ARM(MX6U)裸机篇_第38张图片

NXP官方SDK使用实验-程序编写验证

BSP工程管理实验-工程整理与程序编写

BSP工程管理实验-编写测试通用Makefile

蜂鸣器实验

按键输入实验-实验程序编写

按键输入实验-驱动验证与调试

按键输入实验-通用GPIO驱动编写与验证

主频和时钟配置实验-时钟树详解

主频和时钟配置实验-主频修改

主频和时钟配置实验-8路PLL和8路PFD时钟设置

主频和时钟配置实验-其他时钟源设置

GPIO中断实验-Cortex-A中断原理

GPIO中断实验-6U中断向量表的编写

GPIO中断实验-6U复位中断服务函数的编写

GPIO中断实验-IRQ中断服务函数详解

GPIO中断实验-通用中断驱动编写

GPIO中断实验-向GPIO驱动添加中断处理函数

GPIO中断实验-编写按键中断驱动

EPIT定时器实验-EPIT原理详解

EPIT定时器实验-实验程序编写与验证

定时器按键消抖实验

高精度延时实验-GPT定时器原理

高精度延时实验-实验代码编写与测试

串口实验-串口原理详解

Linux之ARM(MX6U)裸机篇_第39张图片

Linux之ARM(MX6U)裸机篇_第40张图片

串口实验-串口驱动实验编写与验证1

串口实验-串口驱动实验编写与验证2

串口实验-printf格式化函数移植与测试

DDR3实验-RAM发展历史简介

DDR3实验-DDR3重要时间参数、时钟配置与原理图简析

DDR3实验-DDR3初始化、校准、超频测试

RGBLCD实验-LCD显示原理详解

RGBLCD实验-LCD时序与时间参数

RGBLCD实验-6ULL LCDIF接口寄存器详解

RGBLCD实验-6ULL像素时钟配置详解

RGBLCD实验-LCDID读取以及IO初始化程序编写

RGBLCD实验-LCD时间参数和像素时钟设置程序编写

RGBLCD实验-LCDIF控制器接口初始化程序编写

RGBLCD实验-LCDIF驱动以及API函数测试

RTC实验-6U内部RTC详解

RTC实验-驱动编写与测试

RTC实验-时间错误问题调试

I2C实验-I2C协议和6U的I2C控制器详解

I2C实验-AP3216C简介与程序编写

I2C实验-I2C主机控制器驱动程序编写1

I2C实验-I2C主机控制器驱动程序编写2

I2C实验-AP3216C程序编写

I2C实验-AP3216C程序调试及bug解决

SPI实验-SPI以及ICM20608详解

SPI实验-6ULL SPI控制器寄存器详解

SPI实验-6ULL SPI控制器驱动程序编写

SPI实验-ICM20608驱动程序编写

SPI实验-ICM20608实际测量值计算与6ULL硬件浮点的开启

多点电容触摸屏实验-电容触摸屏与FT系列触摸芯片详解

多点电容触摸屏实验-电容触摸屏幕驱动编写1

多点电容触摸屏实验-电容触摸屏幕驱动编写2

多点电容触摸屏实验-电容触摸驱动测试

PWM背光实验-6ULL PWM详解

PWM背光实验-PWM背光驱动程序编写

你可能感兴趣的:(Linux之ARM(MX6U)裸机篇)