ARM学习笔记(三)

第三天的内容主要是IMX6ULL的GPIO点灯,从寄存器配置到开发环境走了一遍,整理下核心知识点。

一、硬件基础

IMX6ULL的GPIO一共分为5组:GPIO1~GPIO5。

DDR3起始地址为 0x80000000 ,总大小512MB,地址范围到 0xA0000000 。系统栈指针sp_system位于 0x80000000 ,中断栈sp_irq位于 0x84000000 。

二、GPIO配置三大核心模块

要点亮一个LED,本质是依次配置三个模块的寄存器:引脚复用、GPIO功能、外设时钟。

  1. 引脚复用与电气属性(IOMUXC)

每个GPIO引脚对应两个控制寄存器:

IOMUXC_SW_MUX_CTL_PAD_xxx :配置引脚复用功能,选择是GPIO还是其他外设模式

IOMUXC_SW_PAD_CTL_PAD_xxx :配置引脚电气属性

高压摆率:曲线陡,适配高速设备

低压摆率:曲线平缓,适配低速场景

  1. GPIO模块寄存器

每组GPIO都有独立的寄存器组,常用功能如下:

寄存器 作用

GPIOx_GDIR 设置引脚方向,0为输入,1为输出

GPIOx_DR 输出高低电平,写0为低,写1为高

GPIOx_PSR 只读,读取引脚当前状态

GPIOx_ICR 设置中断触发方式(高低电平/上下沿)

GPIOx_IMR 中断屏蔽开关,打开/关闭对应引脚中断

GPIOx_ISR 查询中断标志位,判断是否产生中断

GPIOx_EDGE_SEL 配置为双边沿触发中断

  1. 时钟模块(CCM)

外设默认时钟关闭,必须先开时钟才能工作。

CCM_CCGR0 ~ CCM_CCGR6 控制所有外设的时钟门,写入 0xFFFFFFFF 即可打开全部外设时钟。

三、中断基础

ARM通过异常向量表管理所有异常和中断:

软中断(SVC):由指令主动触发,格式为 SVC<c> #<imm24> ,比如 svc #7 ,常用于实现系统调用

硬中断:由外设硬件触发,通过GPIO的中断寄存器配置触发方式

四、点灯的三种实现方式

  1. 纯汇编点灯:直接用汇编指令操作寄存器,适合入门理解时序

  2. C语言点灯:用C封装寄存器操作,逻辑更清晰,易维护

  3. 官方固件库点灯:调用NXP提供的固件库函数,不用手动计算寄存器地址

附一段汇编点灯的核心逻辑示例:

asm

  1. 打开外设时钟

ldr r0, =CCM_CCGR1

ldr r1, =0xFFFFFFFF

str r1, r0

  1. 引脚复用为GPIO

ldr r0, =IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03

mov r1, #0x05

str r1, r0

  1. 设置为输出模式

ldr r0, =GPIO1_GDIR

mov r1, #(1 << 3)

str r1, r0

  1. 输出低电平点亮LED

ldr r0, =GPIO1_DR

mov r1, #0

str r1, r0

五、开发环境

Windows端用VSCode编写代码,需要安装插件:

C/C++

C/C++ Extension Pack

ARM Assembly

Makefile Tools

编译在Ubuntu环境下完成,先解压ARM GCC编译链:

bash

sudo tar -xvf gcc

Windows和Ubuntu之间的文件传输用FileZilla通过FTP完成。

相关推荐
邪修king1 小时前
Re:Linux 系统篇(三十一):库的制作与原理Chapter2:静态链接与程序加载 —— 从磁盘 ELF 到运行中进程的完整旅程
android·linux·运维·开发语言
传奇开心果编程1 小时前
【ArkUI 练中学】第4课:高级布局与列表性能优化
学习·华为·前端框架
dtq04241 小时前
数据结构 - 栈
c语言·数据结构·学习
蒸蒸yyyyzwd1 小时前
cpp 选手秋招学习笔记 day38
笔记·八股
云计算练习生1 小时前
什么是内核?操作系统内核到底管哪些事
linux·windows·操作系统·内核·shell
可涵不会debug1 小时前
公司外怎么连接管家婆?从 SQL Server 安装到 cpolar 固定 TCP 远程登录
linux·运维·ubuntu
wuyk5551 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 12 章 Linux 系统 WiFi 常用命令全集:iw/iwlist/ip/wpa_cli 实战
linux·网络·stm32·物联网·tcp/ip
wuminyu1 小时前
纯轻量级锁体系下C2编译器锁粗化和消除机制剖析
java·linux·c语言·jvm·c++
威嵌神州1 小时前
天脉 3 开发环境与 BSP 适配:IDE license、驱动开发、飞腾平台
ide·驱动开发·嵌入式硬件·fpga开发