基于ARM的2M测试系统
3系统软件设计
本文引用地址:http://www.amcfsurvey.com/article/82975.htm软件部分主要由启动代码的设计和应用程序的设计,基于ARM是复杂的片上系统(SOC),这种复杂系统里的多数硬件模块都是可配置的,需要由软件来设置其需要的工作状态。因此在用户的应用程序启动之前,需要有专门的一段启动代码来完成对系统的初始化。由于这类代码直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言写的。启动代码就是完成各种初始化工作,并引导进入C程序。
3.1 bootloader设计
启动代码[5]的主要实现功能包括以下部分:
(1)设置程序入口指针;
(2)设置中断向量表;
(3)初始化存储器系统;
(4)初始化CPU各种模式的堆栈和寄存器;
(5)初始化目标系统中要使用的各种片内外设;
(6)初始化用户程序执行环境;
(7)引导主应用程
具体实现的部分代码如下:
AERA Init, CODE,READONLY
ENTRY ;定义入口点
B SYS_RST_HANDLER ;系统上电复位操作
B UDF_INS_HANDLER ;处理未定义中断模式
B SWI_SVC_HANDLER ;处理软件中断
B INS_ABT_HANDLER
B DAT_ABT_HANDLER ;处理中止异常
B .
B IRQ_SVC_HANDLER ;处理IRQ 中断
B FIQ_SVC_HANDLER ;处理FIQ中断
SYS_RST_HANDLER
MSR R0, CPSR ;禁止中断
ORR R0,R0,#0XC0
MSR CPSR_C,R0
BL initcpu ;调整PLL和时钟
BL initmem ;初始化存储器
BL initstack ;设置堆栈
… …
… …
… …
B main ; 跳转到主应用程序
3.2应用程序的设计
应用程序采用C语言编写,由其实现本系统中所需的各种功能。根据系统功能需求,软件划分为以下模块:液晶显示模块、测试设置模块、测试指标计算模块等部分。软件设计思想是利用S3C2410的中断控制整个软件的流程。共使用4个硬件中断来完成系统的功能:一个内部硬件定时中断,3个外部硬件中断(键盘中断、串口中断、E1测试中断)。主程序流程图如图2所示。
评论