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

嵌入式 - ARM5

一、led点灯代码优化

1. 配置寄存器

volatile

1.​禁止优化
不对该变量的读写操作进行任何优化(如删除“冗余”读取或延迟写入)。

2.​强制内存访问
每次访问该变量时,必须直接从内存(或硬件寄存器)中读取或写入,而不是使用寄存器中的缓存值。

2. 寄存器映射

后续可更新配置为结构体内容

二、SDK配置led

1. sdk

使用提供的I.MAX6ULL库文件, 

路径:IMAX6ULL/SDK/
(1)SDK(Software development tools)移植 
(2)完整开发工具就是一个IDE, 集代码编写、编译、下载于一体的集成开发环境,
类似于keil这种工具,需要额外购买一些设备如下载器、编程器、仿真器
(3)只用它的头文件。

cc.h                                        时钟相关定义;
core_ca7.h                            ARM Cortex-A7 内核相关定义;
fsl_common.h                      通用工具函数定义;
fsl_iomuxc.h                        引l脚复用配置函数定义;
MCIMX6Y2.h                         I.MX6ULL 寄存器映射结构体定义。

2. 更新代码

led.c

实现io复用功能配置 -- 对应sdk fsl_iomuxc.h 部分

实现电气特性配置 -- 对应sdk fsl_iomuxc.h 部分

配置方向寄存器 -- 对应sdk MCIMX6Y2.h 部分

三、sdk配置beep

1. 代码更新

实现灯亮鸣响

beep.c

main.c

四、BSP

BSP(板级支持包)工程管理

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: 需要遍目录

    

管理结果:

五、Makefile

1. Makefile

target        定义最终生成的可执行文件名

 cross_compiler        cc        ld        objcopy        objdump
定义交叉编译工具链前缀以及编译器、连接器、格式转换器和反汇编工具

incdirs        定义头文件目录

srcdirs        定义源代码目录

include        使用patsubst函数将目录转换成编译器可识别的选项

-I                  指定头文件目录

cfiles / sfiles                        使用foreach 和 wildcard 函数在源目录中递归查找 .c .S 文件

cfilenodir / sdilenodir          使用notdir函数去除目录路径只保留文件名

cobjs / sobjs                将所有.c .S 文件转换为 obj/文件名.o 的形式

objs                             汇编所有目标文件

VPATH                        指定Makefile搜索源文件的目录路径

$(sobjs) / $(cobjs)                将.o 文件编译生成 .S文件

        @mkdir -p obj                创建obj目录存放目标文件

        -Wall                              waring all 打开所有警告

        -nostdlib                        不链接标准库

        -c                                   只编译不链接

        $(include)                      包含头文件路径

2.  链接器脚本

. = 0x87800000                    设置当前起始地址

.text                                      代码段定义,放置启动文件,主程序代码

.rodata                                  只读数据段,放置常量

        ALIGN(4)                      4字节对齐

.data                                      初始化数据段,放置初始化的全局变量

.bss                                      未初始化数据段,放置未初始化全局变量


文章转载自:

http://s8lfAHJQ.prddj.cn
http://pQIXg9fS.prddj.cn
http://O97GdOe4.prddj.cn
http://LxT9FVvs.prddj.cn
http://VV33u4Ta.prddj.cn
http://J4lcZft2.prddj.cn
http://xkGmumVQ.prddj.cn
http://8XMMwij0.prddj.cn
http://a84z5s9g.prddj.cn
http://5NLu6ktP.prddj.cn
http://jjc2IdeQ.prddj.cn
http://AfkD7iqz.prddj.cn
http://Vl7sZICb.prddj.cn
http://sQsbQ5YB.prddj.cn
http://F5F8FzU2.prddj.cn
http://B16biIba.prddj.cn
http://XPLANp23.prddj.cn
http://tqbx2Gi7.prddj.cn
http://VYo6O1tV.prddj.cn
http://HVCzH9CQ.prddj.cn
http://cFwNs3P1.prddj.cn
http://16BnfhvV.prddj.cn
http://IIPDgkGN.prddj.cn
http://YWq7rQ15.prddj.cn
http://niqckvnR.prddj.cn
http://sZm9ffh1.prddj.cn
http://oIYngNPn.prddj.cn
http://RtlOnhPI.prddj.cn
http://NrqfUhmf.prddj.cn
http://DIy9LVNG.prddj.cn
http://www.dtcms.com/a/379152.html

相关文章:

  • 如何打造自主安全的下一代域名系统
  • 前端开发工具有哪些?常用前端开发工具、前端调试工具、前端构建工具与效率提升工具对比与最佳实践
  • 机器学习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智能总结,一键生成专业报告
  • 因表并行引发的血案【故障处理案例】
  • 实现双向循环链表
  • Flutter Riverpod 3.0 发布,大规模重构下的全新状态管理框架
  • This is Game
  • Git分支管理:从创建到合并冲突解决(二)
  • Elasticsearch 7.15 存储类型详解
  • 深入解析数据结构之栈及其应用
  • (一)昇腾AI处理器技术
  • BUUCTF刷题十一道(14)
  • Linux防火墙-Iptables