毕业设计论文-基于arm的gps定位信息显示器的软件设计内容摘要:

R1, [R0]。 LDR R0, =BCFG1 LDR R1, =((128)+(0x411)+(110)+(0x45)+(0x01))。 STR R1, [R0]。 LDR R0, =BCFG2。 LDR R1, =((028)+(0x611)+(110)+(0x65)+(0x01))。 STR R1, [R0] LDR R0, =BCFG3。 设置 BCFG3 寄存器 LDR R1,= ((128)+(0x511)+(110)+(0x55)+(0x01))。 STR R1, [R0] 本设计分别把 IS61LV25616AL、 SST39VF1601 分配到 BANK0、 BANK1,IS61LV25616AL、 SST39VF1601 都是 16 位的外部存储器 ,因此 MW(29~28)设为1,IS61LV25616AL 高速访问时间分别为 10ns、 90ns,以上的程序把对这两个外部存储器的读写配置成最快速度。 堆栈初始化 每个异常模式都有自身堆栈空间 ,异常处理程序通常将其它要使用的寄存器保存到这个堆栈。 以下为初始化堆栈的代码。 InitStack MOV R0, LR。 设置中断模式堆栈 MSR CPSR_c, 0xd2 LDR SP, StackIrq。 设置快速中断模式堆栈 MSR CPSR_c, 0xd1 LDR SP, StackFiq。 设置中止模式堆栈 MSR CPSR_c, 0xd7 LDR SP, StackAbt 广西工学院 2020 届毕业设计 基于 ARM 的 GPS 定位信息显示器的软件设计 9。 设置未定义模式堆栈 MSR CPSR_c, 0xdb LDR SP, StackUnd。 设置系统模式堆栈 MSR CPSR_c, 0xdf LDR SP, =StackUsr MOV PC, R0 StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH 1)* 4 StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH 1)* 4 StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH 1)* 4 StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH 1)* 4 AREA MyStacks, DATA, NOINIT, ALIGN=2 IrqStackSpace SPACE IRQ_STACK_LEGTH * 4。 中断模式堆栈空间 FiqStackSpace SPACE FIQ_STACK_LEGTH * 4。 快速中断模式堆栈空间 AbtStackSpace SPACE ABT_STACK_LEGTH * 4。 中止义模式堆栈空间 UndtStackSpace SPACE UND_STACK_LEGTH * 4。 未定义模式堆栈 MSR 为写状态寄存器指令 ,该指令可以直接设置状态寄存器 CPSR 或 SPSR,上述代码的 MSR 指令都是设置 CPSR 的 控制域 psr[7:0],接着指令 LDR 是设置各个模式的专用的堆栈指针 SP的地址。 用伪操作 AREA 声明名为 MyStatus 的数据段 ,数据伪操作 SPACE为各个堆栈分配内存单元 ,并用 0初始化内存单元 ,从程序中可以看出中止模式、未定义模式堆栈空间都被初始化为 0,是因为在这些异常模式下都是执行一个死循环不需要保存数据。 由于 CPU 要进行模式切换即由管理模式切换到系统模式 ,不能由系统模式的 LR 正确返回子程序 ,所以在初始化堆栈程序的入口处保存链接寄存器 LR(模式自身的 LR(R14)用于保存子程序返回地址 )到R0,同时用 R0 返回子程序。 目标板初始化 根据目标板的外围电路设置存储器映射控制寄存器 MEMMAP、分频器寄存器VPB、 PLL 倍频值寄存器 PLLCFG[4:0]、 MAM 定时寄存器。 以下为初始化目标板代码。 ifdef __DEBUG MEMMAP = 0x3。 //remap endif 广西工学院 2020 届毕业设计 基于 ARM 的 GPS 定位信息显示器的软件设计 10 ifdef __OUT_CHIP MEMMAP = 0x3。 //remap endif ifdef __IN_CHIP MEMMAP = 0x1。 //remap endif /* 设置系统各部分时钟 */ PLLCON = 1。 if (Fpclk / (Fcclk / 4)) == 1 //fcclk==4 倍的 Fpclk VPBDIV = 0。 endif if (Fpclk / (Fcclk / 4)) == 2//fcclk==2 倍的 Fpclk VPBDIV = 2。 endif if (Fpclk / (Fcclk / 4)) == 4//fcclk==1 倍的 Fpclk VPBDIV = 1。 endif if (Fcco / Fcclk) == 2 PLLCFG = ((Fcclk / Fosc) 1) | (0 5)。 endif if (Fcco / Fcclk) == 4 PLLCFG = ((Fcclk / Fosc) 1) | (1 5)。 endif if (Fcco / Fcclk) == 8 PLLCFG = ((Fcclk / Fosc) 1) | (2 5)。 endif if (Fcco / Fcclk) == 16 PLLCFG = ((Fcclk / Fosc) 1) | (3 5)。 endif PLLFEED = 0xaa。 PLLFEED = 0x55。 while((PLLSTAT amp。 (1 10)) == 0)。 PLLCON = 3。 PLLFEED = 0xaa。 PLLFEED = 0x55。 广西工学院 2020 届毕业设计 基于 ARM 的 GPS 定位信息显示器的软件设计 11 MAMCR = 0。 if Fcclk 20200000 MAMTIM = 1。 else if Fcclk 40000000 MAMTIM = 2。 else MAMTIM = 3。 endif endif MAMCR = 2。 存储器映射控制寄存器的配置是根据用户使用何种方式启动 ARM,在调试前若选择 RelOutChip 则编译器会执行 ifdef __OUT_CHIP MEMMAP = 0x3。 //remap endif 把 MEMAP 设置为 0x3,即选择用户外部存储器模式 ,从 0x80000000 处开始执行程序, 这样 0x800000000x8000003C 异常向量表便映射 0x00000000 0x00 00003C。 同样的 ,若选择 RelInChip 则编译器会执行 ifdef __IN_CHIP MEMMAP = 0x1。 //remap endif 选择用户 Flash 模式 ,ARM 直接从 0x00000000 执行程序。 在本设计中使用 ,倍增器 值 M=4,所以处理器时钟( Fcclk)为。 为了使电流控制振荡器频率( Fcco)满足 156320MHz, 选 择 分频器的值 P=2,使得 Fcco=Fcclk2P= MHz。 取 VPB分频器的分频值为 1/4,所以外设时钟( Fpclk) = Fcclk/4=,为了使 PLLCON和 PLLCFG寄存器的更改生效 ,必须将正确的馈送序列写入 PLLFEED寄存器。 馈送序列是将值 0xAA 写入 PLLFEED, 接着将值 0x55写入 PLLFEED。 while((PLLSTAT amp。 (1 10)) == 0)。 是等待 PLL处于锁定状态 , MAM定时寄存器决定使用多少个 cclk周期访问 Flash存储器。 这样可调整 MAM时序使其匹配处理器操作频率 ,在本设置所使用的处理器时钟较快 ,把 MAMTIM配置为 3,即使用 3个处理器时钟访问外部 FLASH。 经过 了初始化中断向量表、配置外部总线、初始化各模式堆栈、设置系统各部分时钟、设置存储加速模块 ARM 后 , ARM 将进入用户主程序,执行用户代码。 广西工学院 2020 届毕业设计 基于 ARM 的 GPS 定位信息显示器的软件设计 12 移殖μ COSⅡ到 LPC2292 嵌入实时操作系统μ COSⅡ是一种占先式多任务操作系统。 可固化、可裁减、移植性好,具有良好的可靠性和稳定性。 它支持 64 个任务,具有信号量、消息邮箱、消息队列等多种任务间通信机制 ,图 说明了 181。 C/OSⅡ的结构以及它与硬件的关系。 图 C/OSⅡ的结构以及 它与硬件的关系 μ COSII 中要移植的部分见表 所示。 移植μ COSII 到一个新的体系机构上一般需要 3个文件: ( C 语言头文件)、 (C 程序源文件 )及 (汇编程序源文件 )。 由表 可以看出,移植μ COSII 需要在 包含几个类型的定义和几个常数的定义;在 和 中包含几个函数的定义和时钟节拍中断服务程序的代码。 实际上, Applition SoftWare μCOSⅡ (Processer Indentent Code) μCOSⅡ Configuration (Apptication Sepcific) μCOSⅡ Port (Processer Specific Code) 、 、 CPU Timer SoftWare HardWare HardWare 广西工学院 2020 届毕业设计 基于 ARM 的 GPS 定位信息显示器的软件设计 13 还有一个 文件需要关注,因为每一个应用都包含独特的 文件。 表 μ COSII中要移植的部分 移殖内容 类型 所属文件 描述 BOOLEAN、 INT8U INT8S、INT16U INT16S、 INT32U INT32S 、 FP32 、 FP64 数据类型 与编译器无关的数据类型 OS_STK 数据类型 堆栈数据类型 OS_ENTER_CRITICAL() 、OS_EXIT_CRITICAL() 宏 开关中断的代码 OS_STK_GROWTH 常量 定义堆栈增长方 向 OS_TASK_SW 函数 任务切换时执行的代码 OSTaskStkInit 函数 任务堆栈初始化函数 OSTaskStkInit() OSTaskCreateHook() OSTaskDelHook() OSTaskSwHook()。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。