1、C 语言编写 LED 灯驱动的时候,每个寄存器的地址我们都需要写宏定义,
使用起来非常的不方便。我们在学习
STM32
的时候,可以使用“
GPIOB->ODR
”这种方式来给
GPIOB
的寄存器
ODR
赋值,因为在
STM32
中同属于一个
外设的所有寄存器地址基本是相邻的
(有些会有保留寄存器)。
因此我们可以借助
C
语言里面的结构体成员地址递增的特点来将某个
外设的所有寄存器写入到一个结构体里面,然后定义一个结构体指针指向这个外设的寄存器基
地址,这样我们就可以通过这个
结构体指针
来访问
这个外设的所有寄存器。
2、NXP 提供了 一个类似 STM32 的 STD库 或者 HAL 库
这个 SDK 包提供了 Windows 和 Linux 两个版本
再者,不是所有的半导体厂商都 会为 Cortex-A
架构的芯片编写裸机
SDK
包,我使用过那么多的
Cotex-A
系列芯片,也就发现 了
NXP 给 I.MX6ULL 编写了裸机 SDK 包
。
使用
Cortex-A 内核芯片的时候不要想着有类似 STM32 库一样的 东西
,I.MX6ULL
是一个特例,基本
所有的 Cortex-A 内核的芯片都不会提供裸机 SDK 包
。因 此在使用 STM32
的时候那些用起来很顺手的库文件,在
Cotex-A 芯片下基本都需要我们自行 编写,比如.s 启动文件、寄存器定义等等。
fsl_common.h: 位置为 SDK_2.2_MCIM6ULL\devices\MCIMX6Y2\drivers\fsl_common.h 。
fsl_iomuxc.h: 位置为 SDK_2.2_MCIM6ULL\devices\MCIMX6Y2\drivers\fsl_iomuxc.h 。
MCIMX6Y2.h: 位置为 SDK_2.2_MCIM6ULL\devices\MCIMX6Y2\MCIMX6YH2.h 。
整个
SDK 包
我们就需要上面这
三个文件
, 把这
三个文件
准备好,我们
后面移植要用
。