ARM架构—— IMX6ULL芯片

一、LED点灯相关寄存器配置

IMX6ULL 的 GPIO 属于 IOMUXC(输入输出复用控制器)和 GPIO 模块共同管理,点灯本质是将指定引脚配置为 GPIO 输出模式,并控制其高低电平。核心分为两大步骤:引脚复用配置GPIO 功能配置

1.IOMUXC 模块寄存器(引脚复用 / 电气属性配置)

寄存器类型 作用
IOMUXC_SW_MUX_CTL_PAD_XXX 引脚复用选择(MUX 寄存器):设置引脚功能为 GPIO
IOMUXC_SW_PAD_CTL_PAD_XXX 引脚电气属性配置(PAD 寄存器):设置上下拉、驱动能力、速率、摆率等

2.GPIO模块寄存器

寄存器名称 地址偏移 作用
GPIOx_GDIR 0x00 方向寄存器:配置 GPIO 为输入(0)或输出(1)
GPIOx_DR 0x04 数据寄存器:写 1/0 控制输出高 / 低电平;读可获取输入电平

3.CCM时钟寄存器

寄存器名称 地址偏移 核心作用
CCM_CCGR0 ~ CCM_CCGR6 0x60 ~ 0x78 时钟门控寄存器(最核心):控制各外设时钟的开启 / 关闭

二、.ELF文件格式

段名 中文名称 权限 存储数据类型
.text 代码段 只读、可执行 程序的可执行指令(函数、main、汇编指令、分支 / 跳转指令等)
.data 数据段 可读、可写 已初始化的全局 / 静态变量(非 0 值)
.bss 未初始化数据段 可读、可写 未初始化/初始化为0的全局/静态变量
.rodata 只读数据段 只读 常量数据(字符串常量、const 修饰的全局变量、宏定义常量等)
.stack 栈段 可读、可写 函数调用栈(局部变量、函数参数、返回地址、栈帧指针等)
.heap 堆栈 可读、可写 动态内存分配区域(malloc/free、kmalloc/kfree 申请的内存)

三、链接脚本的作用

编译器编译出的目标文件(.o)只是零散的段,不知道自己该放在内存 / Flash 的哪个地址。链接脚本,解决两个核心问题:

1.地址映射:把 ELF 的逻辑段(.text/.data 等)绑定到物理存储地址;

2.内存布局:定义程序在存储介质(Flash/RAM)中的分布规则。

相关推荐
cft56200_ln4 小时前
TDA4时间同步3 网卡添加虚拟时间戳
c语言·开发语言·arm开发·驱动开发·嵌入式硬件·网络协议
振南的单片机世界1 天前
启动流程:上电先取栈顶和复位向量,再进main
arm开发·stm32·嵌入式硬件
振南的单片机世界3 天前
HAL_Delay(1000)真准吗?SysTick的1ms基准从哪来
arm开发·stm32·单片机·嵌入式硬件
带土13 天前
3. ARM寄存器组织
arm开发
xiangw@GZ4 天前
ARM TCM 紧耦合内存与 Cache 架构区别
arm开发·架构
XINVRY-FPGA4 天前
XCKU035-2FBVA676I AMD Xilinx Kintex UltraScale FPGA
arm开发·嵌入式硬件·网络安全·fpga开发·硬件工程·信号处理·fpga
少年、潜行4 天前
IAR FOR ARM 历史版本安装包、安装、注册流程【百度网盘资源】
arm开发·iar·iar历史版本·iar安装
Aaron15885 天前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理
m0_747124535 天前
ARM架构基础知识扫盲
arm开发·架构
海绵宝宝de派小星5 天前
MCP与A2A协议深度解析:Agent时代的“TCP/IP“如何诞生
arm开发·网络协议·tcp/ip·ai