前面学习imx6ull开发板时汇编语言在keil软件上编程后面学习使用Vscode软件编程。一、imx6ull1.存储容量RAM --- DDR3 ---512MBEMMC --- nand flash ---8GB2.LED灯板子上可供用户操作的LED灯只有一个。连接B47 --- GPIO 3LED0网络编号LED1器件名3V3电源接3.3V3.控制方式开发板上有5组GPIO每组引脚数量不一致20~30B00T拨码开关选择启动方式二、异常处理1. 异常处理流程当异常产生时, ARM 拷贝 CPSR 到 SPSR设置适当的 CPSR 位改变处理器状态进入ARM态默认状态不用改变改变处理器模式进入相应的异常模式保存返回地址到 LR设置 PC 为相应的异常向量返回时, 异常处理需要:从 SPSR恢复CPSR从LR恢复PCNote:这些操作只能在 ARM 态执行中断向量表存放中断服务函数的入口地址的数组。异常向量表存放跳转到对应异常服务函数的指令的数组。2. ARM的七种异常指令在使用前需将异常向量表创建出来向量表的顺序是固定的。ldr pc,_reset_handler ldr pc,_undefined_handler ldr pc,_software_handler ldr pc,_prefetch_handler ldr pc,_data_handler ldr pc, _reserved_handler ldr pc,_irq_handler ldr pc,_fiq_handler1. reset 复位异常汇编程序一开始就会进入复位异常代码未正常启动将一直处于复位异常。RAM起始地址0x80000000内存大小512MB512*2^200x20000000。每个栈区分配 32MB32*2^20 0x2000000。正常启动流程切换工作模式为IRQ。分配IRQ的栈起始地址。切换工作模式为System。分配System的栈起始地址。_reset_handler: //irq mode mrs r0,cpsr bic r0,r0,#0x1F orr r0,r0,#0x12 msr cpsr,r0 //irq stack ldr sp,0x86000000 //system mode mrs r0,cpsr bic r0,r0,#0x1F orr r0,r0,#0x1F msr cpsr,r0 //system stack ldr sp,0x840000002.software interrupt 软中断异常汇编指令 svcc #imm12功能产生一次软件中断。工作模式自动切换为SVC模式异常向量表指向0x08。汇编指令ldmfd sp!,{r0-r12,pc}^^在恢复栈区时可恢复工作模式。三、LED灯led灯点亮需要设置几个模块。1. CCM 时钟控制器模块CCGR0~CCRG6控制所有外设时钟门的开关0关时钟1开时钟。CCGR0地址0x020C4068后面每个偏移4个字节置0xFFFFFFFF。2. IOMUX Controller 引脚复用寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03配置为GPIO功能。地址0x020E0068置0x05IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03电器属性配置上拉/下拉电阻。地址0x0x2E02F4置0x10B03.GPIO 寄存器GPIO1_GPID配置引脚方向0为输入1为输出。地址0x0209C003引脚置1。GPIO1_DR控制led状态0点亮1熄灭地址0x0209C0003引脚清零。