第二期ARM(IMX6U)裸机篇 LED驱动实验

第8讲 C语言版本LED驱动实验

一、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函数。

二、软件编写

三、链接脚本

链接脚本描述了要连接的文件,以及链接顺序,和链接首地址

第9讲 模仿STM32驱动开发实验

第10讲 NXP官方SDK使用实验

一、官方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

, , , ,

第11讲 BSP工程管理实验

一、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目录下去。

你可能感兴趣的:(单片机,嵌入式硬件,linux)