ARM裸机开发Day03|IMX6ULL汇编点亮LED,寄存器、内存、中断梳理

一、基础概念回顾

1.1 异常向量表 & SVC软中断

  • SVC指令:SVC<c ><imm24>,用于触发软中断,后面跟中断号,示例:svc 7。

  • 硬中断:IMX6ULL外设产生的硬件触发中断。

1.2 IMX6ULL GPIO分组

IMX6ULL的GPIO一共分为5组:GPIO1、GPIO2、GPIO3、GPIO4、GPIO5。

二、开发环境:Windows VSCode 连接Ubuntu

采用Windows端VSCode,Ubuntu作为编译服务器,配合FTP实现文件传输。

2.1 VSCode必备插件

|----------------------|-----------------|
| 插件名称 | 作用 |
| C/C++ | C 语言基础编译调试支持 |
| C/C++ Extension Pack | C/C++ 全套扩展包 |
| ARM Assembly | ARM 汇编语法高亮 |
| Makefile Tools | Makefile 工程编译管理 |

2.2 文件传输 FileZilla

  • Windows:FileZilla FTP Client

  • Ubuntu:搭建FTP Server

实现Windows写代码,Ubuntu进行交叉编译。

三、DDR3内存布局

IMX6ULL DDR3起始地址:0x80000000,总大小512MB。

内存范围:0x80000000 ~ 0xA0000000

内存栈划分:

  1. sp_system(系统模式栈):0x84000000起始

  2. sp_irq(中断模式栈):占用32MB空间,起始地址0x86000000

小知识点:32MB 换算字节:0x2000000

四、LED点灯的三种实现方式

IMX6ULL裸机点灯一共有3种方式:

  1. 汇编语言直接操作寄存器点灯

  2. C语言操作寄存器点灯

  3. 使用NXP官方固件库点灯

点灯开发需要操作三大模块:IOMUXC引脚复用、GPIO寄存器、CCM时钟控制器

4.1 模块1:IOMUXC 引脚复用与电气属性

IOMUXC负责配置引脚复用功能、引脚电气特性。

两个核心寄存器(以GPIO1_IO03为例):

  1. IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03:引脚复用功能寄存器,配置这个引脚复用为GPIO功能或者其他外设功能。

  2. IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03:引脚电气属性寄存器

  • 高压摆率:波形陡峭,适合高速设备

  • 低压摆率:波形平缓,适合低速场景

4.2 模块2:GPIO寄存器组(参考手册第28章)

GPIO模块负责引脚方向设置、输出电平、读取引脚状态、GPIO中断配置。

|----------------|---------------------------|
| 寄存器名 | 功能说明 |
| GPIOx_DR | 输出寄存器,写 0 输出低电平,写 1 输出高电平 |
| GPIOx_GDIR | 方向寄存器:0 = 输入,1 = 输出 |
| GPIOx_PSR | 只读,读取引脚外部输入电平状态 |
| GPIOx_ICR | 中断触发方式:高 / 低电平、上升沿、下降沿 |
| GPIOx_IMR | 中断屏蔽寄存器:开启 / 关闭该引脚中断 |
| GPIOx_ISR | 中断状态查询,判断引脚是否产生中断 |
| GPIOx_EDGE_SEL | 双边沿中断选择,上升下降沿都触发中断 |

4.3 模块3:CCM时钟控制器

外设寄存器如果没有时钟供给,寄存器无法读写。

寄存器CCM_CCGR0 ~ CCM_CCGR6,全部置0xFFFFFFFF,打开全部外设时钟门控。

注意:裸机开发必须先打开外设时钟,否则GPIO、IOMUXC寄存器读写全部无效!

五 、Day03学习总结

  1. SVC软中断指令格式svc 中断号,区分软中断、硬件中断;

  2. IMX6ULL GPIO分为5组,点灯必须操作IOMUXC、GPIO、CCM时钟三大模块;

  3. DDR内存从0x80000000开始,需要划分不同模式下的栈空间;

  4. 裸机点灯三种方式:汇编、C语言、NXP库;

  5. VSCode+Ubuntu+FileZilla是非常方便的裸机开发组合。

相关推荐
恒锐丰科技林技术员1 小时前
EG2122 半桥栅极驱动芯片原理与工程应用解析
经验分享·嵌入式硬件·硬件工程
fly_sunnn3 小时前
STM32-GPIO输出以及按键控制LED&光敏传感器控制蜂鸣器
stm32·单片机·嵌入式硬件
数字新视界4 小时前
U位资产管理系统发布全面数字化监控解决方案
嵌入式硬件·物联网·系统架构·机房管理·动力与环境监控系统
qq_401700416 小时前
FreeRtos:SysTick的功能分析
单片机·嵌入式硬件
zbyyd6 小时前
i.MX6ULL 裸机开发|GT9147 触控 + SPI 与 ADXL345 加速度传感器驱动
单片机·嵌入式硬件
fly_sunnn7 小时前
STM32-LED闪烁·LED流水灯·蜂鸣器
stm32·单片机·嵌入式硬件
殷忆枫8 小时前
基于STM32的独居老人语音/一键双模紧急呼救系统设计与实现
stm32·嵌入式硬件·xcode
袁章根8 小时前
基于瑞昱RTL8367S交换机电路设计(一)
网络·嵌入式硬件·硬件架构·硬件工程
深圳市恒锐丰科技杨生9 小时前
EG44273 20V 低压单通道低侧栅极驱动芯片|屹晶 EGmicro
嵌入式硬件·硬件工程
搁浅小泽9 小时前
通用二极管选型设计规范
单片机·嵌入式硬件·设计规范