四、模块划分
模块划分的一条原则是尽量降低软件模块间的祸合度,高祸合度的系统是很难维护的一处的修改引起另一处甚至更多处的变动二藕合度低的软件可以很容易被重用、维护和扩充。另一条原则是提高软件的内聚性,如果一个软件的模块只实现一个功能,那么该模块具有高内聚性。高内聚性的软件更容易维护和改进。判断一个模块是否有高的内聚性,是看能否用一个简单的句子描述它的功能。如果用了一段话或者需要使用类似“和”,“或”等连词,则说明需要将该模块细化。只有高内聚性的模块才可能被重用遵循上述原则,将系统软件划分为如图1所示的子模块。
嵌入式操作系统是嵌入式系统的灵魂,它的出现大大提高了嵌入式系统开发的效率,减少了系统开发的总工作量,而且提高了嵌入式应用软件的可移植性。
本系统采用了嵌入式操作系统:Linux,系统各模块在Linux的统一控制管理下有效的协调的工作。由图1可知,本系统软件主要由以下几个功能。
设备驱动模块、译码模块、图形界面模块等。这些模块在操作系统的管理调度下协调一致的运行。
五、软件初始化及总程序流程
本系统采用s3c2410 (ARM 9核)作为控制核心,在用户的应用程序之前,需要有一些专门的代码完成对系统的初始化。由于这类代码直接面对A RM。处理器内核和硬件控制器,一般都使用汇编语言完成。系统上电或复位后程序从位于地址0*0的Reset Exception Vector处开始执行这里放置Boutloader的第一条指令:bResetHandler).跳转到标号为Resetll and ler处进行第一阶段的硬件初始化,主要内容为:关看门狗定时器,关中断甲初始化PLL和时钟初始化存储器系统;执行完以上程序后,系统进行堆栈和存储器的初始化二系统堆栈初始化取决于用户使用了哪些中断,以及系统需要处理哪些错误类型。一般情况下,管理者堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈也必须设置如果系统使用了外设则需要设置相关的寄存器,以确定其刷新频率、总线宽度等信息。然后是初始化有特殊要求的端口和设备,初始化应用程序的运行环境最后是调用主应用程序:
MPORTCT_Entry
......
B C_Entry
数控系统的应用程序初始化流程如图2所示。
系统初始化以后,程序的大体流程为:首先加载G/M代码解释器、初始化参数然后创建人机界面G/M代码经解释后,再调用响应的例程完成I/O控制、插补、位置控制等.最后调用底层硬件的控制例程,完成对电机的控制。