嵌入式 - 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.hI.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 未初始化数据段,放置未初始化全局变量

相关推荐
Stone.Wu6 天前
快速理解ARM Cortex-M流水线:指令执行过程通俗解释
arm
我在人间贩卖青春6 天前
汇编之分支跳转指令
汇编·arm·分支跳转
我在人间贩卖青春7 天前
汇编之加载存储指令
汇编·arm·寄存器加载存储
我在人间贩卖青春7 天前
汇编之状态寄存器访问指令
汇编·arm·状态寄存器
我在人间贩卖青春7 天前
汇编之软中断指令和协处理指令
汇编·arm·软中断·协处理
我在人间贩卖青春7 天前
汇编之数据处理指令
汇编·arm·数据处理指令
fly的fly10 天前
浅析 QT远程部署及debug方案
qt·物联网·arm
切糕师学AI12 天前
ARM标准汇编(armasm)中的标号(Label)
汇编·arm
CHENG-JustDoIt13 天前
嵌入式开发 | ARM Cortex-M 系列中M3、M4、M23 和 M33四款处理器的深度对比分析
arm开发·单片机·嵌入式硬件·arm
toradexsh20 天前
在NXP iMX8QM上使用 Jailhouse
arm·nxp·toradex·imx8mp·jailhouse