当前位置: 首页 > news >正文

ARM汇编 beep及bsp工程管理

1.beep

查阅手册知,蜂鸣器对应的网络编号为 SNVS_TAMPER1,故需要设置其相关的配置

  1. iomuxc引脚复用功能配置
  2. iomuxc引脚电器特性配置
  3. GPIO引脚方向配置
void beep_init(void)
{//IOMUXC引脚复用功能配置IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01, 0);//IOMUXC引脚电器特性配置IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01, 0x10B0);//GPIO引脚输出方向GPIO5->GDIR |= (1<<1);
}

可用sdk(NXP提供的I.MX6ULL头文件)的头文件,使用IOMUXCC_SetPinMux,设置IO复用功能的配置,后面的宏,前面写引脚本身的功能后面写要变成的功能

IOMUXC_SetPinConfig,设置IOMUXC引脚电器特性的配置

经查SNVS_TAMPER1的IOMUXC复用为GPIO5_IO01,故后面需要配置GPIO5_IO01

后设置蜂鸣器相关的亮灭都是控制GPIO5_IO01

void beep_on(void)
{GPIO5->DR &= ~(1<<1);
}void beep_off(void)
{GPIO5->DR |= (1<<1);
}

2.CCR

Clock Control Module(时钟控制模块),这是嵌入式系统中与时钟管理相关的硬件模块

在 ARM 架构嵌入式处理器的时钟控制模块(CCM) 中,CCGR(Clock Gating Register,时钟门控寄存器) 是负责控制外设或模块时钟使能 / 关闭的关键寄存器,其核心作用是通过 “时钟门控” 机制实现精细化的功耗管理

一个CCM包含多个CCGR因此,先将所有外设的时钟门打开,

一个 CCGR 通常为 32 位寄存器;

void clock_init(void)
{CCM->CCGR0 = 0xFFFFFFFF;CCM->CCGR1 = 0xFFFFFFFF;CCM->CCGR2 = 0xFFFFFFFF;CCM->CCGR3 = 0xFFFFFFFF;CCM->CCGR4 = 0xFFFFFFFF;CCM->CCGR5 = 0xFFFFFFFF;CCM->CCGR6 = 0xFFFFFFFF;
}

3.链接脚本

1.定义

链接脚本(Linker Script)是编译器工具链(如 GCC 中的ld)使用的一种配置文件,用于控制链接器(Linker)如何将多个目标文件合并为最终的可执行文件或库文件。它的核心作用是定义程序在内存中的布局 —— 包括代码、数据、变量等在内存中的存储位置、地址分配和段(Section)组织方式。

2.段

程序的目标文件中包含多种 “段”(如代码段、数据段),链接脚本需指定这些段映射到哪个内存区域:

  • .text:存放程序代码(函数指令);
  • .data:存放已初始化的全局变量;
  • .bss:存放未初始化的全局变量(运行时自动清零);
  • .rodata:存放只读数据(如字符串常量);

3.示例

SECTIONS
{. = 0x87800000;.text :{obj/start.o*(.text)}.rodata ALIGN(4) : {*(.rodata*)}.data ALIGN(4): {*(.data)}__bss_start = .;.bss ALIGN(4) : {*(.bss) *(COMMON)}__bss_end = .;
}

“.”在链接脚本里面叫做定位计数器,默认的定位计数器为 0,我们要求链接的开始地址为0x87800000,.text文本段,设置引导c语言启动的汇编代码start.o在这里开始,*代表通配符的意思

接下来.rodata段 ALGIN(4)代表此段4字节对齐

注意.bss段是未初始化的全局变量段,c语言规定.bss段的全局变量默认为0,故需要手动清0,因此需要记录.bss段的起始位置和终点位置,然后再start.S中进行手动清0

如图为start.S的清0示例:

_bss_init:ldr r0, =__bss_startldr r1, =__bss_endmov r2, #0
loop:str r2, [r0]add r0, r0, #4cmp r0, r1blt loopbx lr

先将起始位置和终点位置用r0和r1记录,随后给r2赋值0,将r2的0赋值给r0,将r0不断加4(即4字节)比较r0和r1,若开始位置大于或等于结束位置,则代表.bss段初始化结束

4.编译过程工具

arm-linux-gnueabihf-gcc ARM 架构的交叉编译工具链

arm-linux-gnueabihf-ld     链接文件

arm-linux-gnueabihf-objcopy 格式转换

5.bsp工程管理

在嵌入式开发中,BSP(Board Support Package,板级支持包)工程管理是指对 “支持特定硬件板卡运行所需的底层软件集合” 进行系统化组织、维护和优化的过程。它是连接硬件板卡与上层软件(如操作系统、应用程序)的桥梁,核心目标是让上层软件无需关注硬件细节即可在目标板上运行。

1.project :存放必要程序
main.c start.S
2.imx6ull :存放NXP提供的i.mx6ull头文件
cc.h  core_ca7.h fsl_common.h fsl_iomuxc.h MCIMX6Y2.h
3.bsp :存放硬件外设相关功能模块
led.c led.h beep.c beep.h
4.Makefile: 需要遍目录


文章转载自:

http://eFHh4KOI.fyxtn.cn
http://60qHSm4R.fyxtn.cn
http://GxZyOBaw.fyxtn.cn
http://wiYW01M1.fyxtn.cn
http://0h8gWKA4.fyxtn.cn
http://a2bqXajO.fyxtn.cn
http://5Zr0phom.fyxtn.cn
http://7P9ZiNWZ.fyxtn.cn
http://YghEoDJ2.fyxtn.cn
http://JxarBGtr.fyxtn.cn
http://ghifMUL4.fyxtn.cn
http://hEptMQXR.fyxtn.cn
http://tNX5Eqoy.fyxtn.cn
http://VfXhJVsQ.fyxtn.cn
http://0wA1EAS1.fyxtn.cn
http://MZBq1tOX.fyxtn.cn
http://xsEI9wgU.fyxtn.cn
http://36K3xBAH.fyxtn.cn
http://VU36XOxa.fyxtn.cn
http://gE3BIk9v.fyxtn.cn
http://mA73IoTo.fyxtn.cn
http://e3bLk18v.fyxtn.cn
http://lvtl8QU1.fyxtn.cn
http://c81gI3Hu.fyxtn.cn
http://tqew44oO.fyxtn.cn
http://3K8qidLs.fyxtn.cn
http://PKp3YcIi.fyxtn.cn
http://BEIQ4TJP.fyxtn.cn
http://JjGz4REa.fyxtn.cn
http://OIunKJ65.fyxtn.cn
http://www.dtcms.com/a/379161.html

相关文章:

  • 深入理解 Vue3 Router:三种路由模式的工作原理与实战应用
  • 2025 ICPC Gran Premio de Mexico 3ra Fecha
  • ZLMediaKit性能测试
  • 使用PyQt5和NumPy从TXT文件读取平面点集数据
  • nacos1.3.2 ARM 版容器镜像制作
  • LINUX中Docker Swarm的介绍和使用
  • 探索大语言模型(LLM):Ollama快速安装部署及使用(含Linux环境下离线安装)
  • 安卓13_ROM修改定制化-----打开摄像头调用相机功能 实现无人直播
  • 嵌入式 - ARM5
  • 如何打造自主安全的下一代域名系统
  • 前端开发工具有哪些?常用前端开发工具、前端调试工具、前端构建工具与效率提升工具对比与最佳实践
  • 机器学习1.Anaconda安装+环境配置
  • GrapeCity Documents V8.0 Update2 重磅发布:性能飞跃、AI 赋能与文档处理全流程升级
  • 【软考架构-案例分析】质量属性场景描述6要素
  • IBMS智能化集成系统:构建建筑全场景协同管控中枢
  • 【高级】系统架构师 | 2025年上半年综合真题DAY4
  • 系统接口故障排查
  • MyBatis框架(编写代码部分1)
  • mes之工序管理
  • P4053 [JSOI2007] 建筑抢修
  • Unity Embedded Browser文档翻译
  • 阻容感专题学习笔记
  • ARM指令集(Instruction Set)细节
  • 28.线程互斥与同步(二)
  • 批量修改图片尺寸大小的免费工具
  • 【vscode】如何离线下载vsxi插件,且在无网环境下离线安装插件-2026最新实验教程
  • 基于浏览器运行的本地大模型语音助手
  • 动态热机械分析测试(DMA):解析材料的粘弹性能
  • 【龙智Atlassian插件】Confluence周报插件上线AI智能总结,一键生成专业报告
  • 因表并行引发的血案【故障处理案例】