云南省建设厅专家注册网站,爱站网是什么平台,龙之向导免费网站,主流网站设计软件一. IMX6ULL开发板
IMX6ULL开发板即正点原子的阿尔法(ALPHA)开发板#xff0c;采用恩智浦芯片#xff0c;cortex-A7架构的。 二. IM6ULL开发板说明
1. IO说明
对于IMX6ULL芯片#xff0c;一个IO对应两个寄存器#xff0c;第一个寄存器负责配置其复用功能#xff0c;…一. IMX6ULL开发板
IMX6ULL开发板即正点原子的阿尔法(ALPHA)开发板采用恩智浦芯片cortex-A7架构的。 二. IM6ULL开发板说明
1. IO说明
对于IMX6ULL芯片一个IO对应两个寄存器第一个寄存器负责配置其复用功能第二个寄存器负责配置其电器特性。
如下命名方式 IOMUXC_SNVS_SW_MUX_CTL_PAD_BOOT_MODE0 //配置其复用功能 IOMUXC_SNVS_SW_PAD_CTL_PAD_BOOT_MODE0 //配置电器特性 查找IO 复用功能的方法
(1) 打开IMX6ULL芯片的参数手册。
(2) 第32章IO复用章节。
(3) 查找对应的管脚。 2. cortex 汇编存在的作用
为什么要学习Cortex-A汇编
(1) 需要用汇编初始化一些SOC外设。
(2) 使用汇编初始化DDRI.MX6U不需要。
(3) 设置 sp 指针一般指向 DDR配置好 C 语言运行环境。 3. IMUX6ULL的 IO 初始化
(1) 使能时钟。
CCGR0~CCGR6这7个寄存器控制着6ULL所有外设时钟的使能。
为了简单设置CCGR0~CCGR6这7个寄存器全部为0XFFFFFFFF相当于使能所有外设时钟。
(2) 设置GPIO复用 。
将寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的bit3~0设置为0101这样GPIO1_IO03就复用为GPIO。
(3) 设置GPIO的电器属性。
寄存器IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03是设置GPIO1_IO03的电气属性。包括压摆率、速度、驱动能力、开漏、上下拉等。
(4) 配置GPIO功能设置输入输出。
设置GPIO1_GDR寄存器bit3为1也就是设置为输出模式。设置GPIO1_DR寄存器的bit3为 1 表示输出高电平为 0 表示输出低电平由电路原理图可知。 三. 编译链接 编译
(1) 使用 arm-linux-gnueabihf-gcc将.c 文件或 .s 文件变为 .o文件。
(2) 将所有的.o文件链接为elf格式的可执行文件。
(3) 将elf 文件转为 bin 文件。 链接
链接就是将所有.o文件链接在一起并且链接到指定的地方。本实验链接的时候要指定链接起始地址。链接起始地址就是代码运行的起始地址。
对于IMX6ULL来说链接起始地址应该指向RAM地址。RAM分为内部RAM和外部RAM也就是 DDR。IMX6ULL内部RAM地址范围0X900000~0X91FFFF。也可以放到外部DDR中。
对于I.MX6U-ALPHA开发板512MB字节DDR版本的核心板DDR范围就是0X80000000~0X9FFFFFFF。对于256MB的DDR来说那就是0X80000000~0X8FFFFFFF。 这里我们选择外部 DDR 地址作为 .bin 文件的运行地址。对于 I.MX 来说bin 文件不能直接运行需要添加一个头部这个头部信息包含了 DDR 的初始化参数I.MX 系列 SOC 内部 boot rom 会从 SD 卡EMMC 等外置存储中读取头部信息然后初始化 DDR并且将 bin 文件拷贝到指定的地方。 编译 .s 文件命令如下arm-linux-gnueabihf -g -c leds.s -o led.o 确定了链接地址以后就可以使用 arm-linux-gnueabihf-ld 来将前面编译出来的 led.o 文件链 接到 0X87800000 这个地址使用如下命令 arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf 上述命令中 -Ttext 就是指定链接地址-o 选项指定链接生成的 elf 文件名这里我们命名 为 led.elf。上述命令执行完以后就会在工程目录下多一个 led.elf 文件。 注意Bin 的运行地址一定要和链接起始地址一致。位置无关代码除外。 格式转换 我们需要用它将 led.elf 文件转换为 led.bin 文件需要使用 arm-linux-gnueabihf-objcopy 工具。命令如下 arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin