一、C语言运行环境构建
1、设置处理器模式
设置6ULL处于SVC模式 下。设置CPSR寄存器的bit4-0,也就是M[4:0]为10011=0X13。读写状态寄存器需要用到MRS和MSR指令。MRS将CPSR寄存器数据读出到通用寄存器里面,MSR指令将通用寄存器的值写入到CPSR寄存器里面去。
2、设置sp指针
Sp可以指向内部RAM,也可以指向DDR,我们将其指向DDR。Sp设置到哪里?512MB的范围0x80000000~0x9FFFFFFF。栈大小,0x200000=2MB。处理器栈增长方式,对于A7而言是向下增长的。设置sp指向0x80200000。
3、跳转到C语言
使用b指令,跳转到C语言函数,比如main函数。
二、软件编写
三、链接脚本
链接脚本描述了要连接的文件,以及链接顺序,和链接首地址
一、官方SDK移植
1、新建cc.h文件
SDK包里面会用到很多数据类型,所以我们需要在cc.h里面定义一些常用的数据类型。
2、移植文件
需要移植的文件fsl_common.h、fsl_iomuxc.h、MCIMX6Y2.h。
设备为MCIMX6Y2,
二、编写驱动
三、IO函数
IOMUXC_SetPinMux(uint32_t muxRegister, 0x020E0068U
uint32_t muxMode, 0x5U
uint32_t inputRegister, 0x00000000U
uint32_t inputDaisy, 0x0U
uint32_t configRegister, 0x020E02F4U
uint32_t inputOnfield) 0
IOMUXC_SetPinConfig(uint32_t muxRegister,
uint32_t muxMode,
uint32_t inputRegister,
uint32_t inputDaisy,
uint32_t configRegister, 0x020E02F4U
uint32_t configValue) 0x10B0
, , , ,
一、BSP工程管理原理
BSP工程管理的目的就是为了模块化整理代码,同一个属性的文件存放在同一个目录里面。
1、新建所需的文件夹,将同一属性的文件放到相应的文件夹中。
2、修改clk、led、delay驱动,创建对应的驱动文件,然后放置到对应的目录中。
3、根据编写的新驱动文件,修改main.c文件内容。
设置VSCODE头文件路径。先创建.vscode目录,然后打开c/c++配置器,会在.vscode目录下生成一个叫做c_cpp_properties.json的文件
二、Makefile编写
Makefile指定头文件路径,需要-I。我们编译源码的时候需要指定头文件路径。比如
bsp/clk/bsp_clk.h 变为-I bsp/clk/bsp_clk.h
通过一堆的变量,将要编译的原材料准备好了。
Makefile静态模式
$(OBJS): obj/%.o : %.S 表示将所有的.S文件编译为.o并且存放到obj目录下去。