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是非常方便的裸机开发组合。

相关推荐
zhangrelay5 小时前
新版|-|单片机原理与接口技术-2026持续改进优化-从MEGA2560-ESP32与Wokwi到ROS2-Lyrical与具身智能栈
笔记·单片机·嵌入式硬件·学习
Industio_触觉智能5 小时前
把NPU检测直接嵌进采集终端|RK3576 AI采集终端全链路拆解教程-下
嵌入式硬件·ai·硬件架构·npu·ai视觉·rk3576·采集终端
en.en..6 小时前
STM32 GPIO ODR 与 BSRR 寄存器完整对比详解
单片机·嵌入式硬件
HQB20269 小时前
EG1182|屹晶微电子 60V 内置高压管异步降压 DC‑DC
嵌入式硬件·硬件工程
LCG米10 小时前
STM32硬件SPI驱动SSD1306 OLED实测:上电黑屏排查、页寻址模式与取模扫描方向陷阱
stm32·单片机·嵌入式硬件·嵌入式
硅基造物主11 小时前
STM32 从 0 到 1 做智能家居(八):PWM 控制风扇、加热片与 SG90 窗帘
stm32·嵌入式硬件·智能家居·hal库·pwm
HQB202612 小时前
EG1163 (S)|屹晶微电子 600V 高压同步降压半桥控制器
嵌入式硬件·硬件工程
木由里予12 小时前
UFS 4.1 HID(Host Initiated Defragmentation)功能详解
嵌入式硬件
意法半导体STM3212 小时前
【官方原创】如何在STM32CubeMX2中使用UART
stm32·单片机·嵌入式硬件
辛迪聊物业数字化14 小时前
物业费收缴率从68%提升到97%落地复盘:中小物业收费系统选型避坑指南
人工智能·嵌入式硬件·物联网·网络协议·系统架构