wordpress网站搬家vps,八大营销方式有哪几种,公司门户网站建设,wordpress 页面 跳转第九章我们使用汇编编写了 LED 灯的实验#xff0c;在实际开发过程中大部分还是使用 C 语言#xff0c;汇编只是用来完成 C 语言环境的初始化#xff0c;本章我么就来实现用汇编完成 C 语言环境的初始化#xff0c;然后用 C 语言实现 LED 的例程。10.1 C 程序版LED例程简介…第九章我们使用汇编编写了 LED 灯的实验在实际开发过程中大部分还是使用 C 语言汇编只是用来完成 C 语言环境的初始化本章我么就来实现用汇编完成 C 语言环境的初始化然后用 C 语言实现 LED 的例程。10.1 C 程序版LED例程简介汇编完成 C 语言环境的初始化主要包括内存初始化设置堆栈指针等等当这些工作完成以后就可以跳转到 C 语言执行 C 程序了所以我们有两部分事情要做1.汇编文件用来完成 C 语言的环境初始化2.C 语言文件主要实现我们的业务功能比武我们本章的点亮 LED。10.2 原理图分析 原理图分析本章用到的硬件资源和第 6 章的一样可以参照第六章的硬件原理分析。10.3 程序编写本实验对应的例程在光盘资料的i.MX6UL 终结者光盘资料\04_裸机例程源码\2_led_C program 目录下我们在 Ubuntu 系统建立“1_Led_C program”文件夹然后在“Led_C program”文件夹下建立文件start.S、main.c、main.h。其中 start.S 是汇编文件main.c 和 main.h 是 C 语言文件。我们在前面新建的“srart.S”文件中输入下面的代码1. global _start /* 全局标号 */2. /*3. * 描述 _start 函数程序从此函数开始执行此函数主要功能是设置 C4. * 运行环境。5. */6. _start:7. /* 进入 SVC 模式 */8. mrs r0, cpsr9. bic r0, r0, #0x1f /* 将 r0 寄存器中的低 5 位清零也就是 cpsr 的 M0~M4 */10. orr r0, r0, #0x13 /* r0 或上 0x13,表示使用 SVC 模式 */11. msr cpsr, r0 /* 将 r0 的数据写入到 cpsr_c 中 */12. ldr sp, 0X80200000 /* 设置栈指针 */13. b main /* 跳转到 main 函数 */第 1 行定义了一个全局标号_start第 6 行是程序的入口、第 8 行到第 11 行是设置处理器进入 SVC 模式第 12 行通过 ldr 指令设置 SVC 模式下的 sp 指针(0x80200000)i.MX6 ULL 终结者开发板上的内存地址范围是 0X80000000~0XA0000000(512MB)或 0X80000000~0X90000000(256MB)所以不论是 512MB 版本还是256MB 版本的其内存起始地址都是 0X80000000由于 i.MX6ULL 的堆栈是向下正常的所以 SP 指针设置成 0X80200000(0X80200000-0X80000000是 2MB 的栈空间足够我们使用了)。第 13 行是挑喜欢到 main 函数(C 语言的入口函数。至此汇编部分的程序我们就完成了主要用来设置处理器在 SVC 模式下运行然后初始化 SP 指针最后跳转到 C 程序的 main 入口函数。如果大家有接触过三星的 S3C2440