控制系统的软件组织编辑软件平台是基于移植到S3C44B0X的实时多任务操作系统UC/OS II。它是基于优先级、抢占式的实时内核,主要提供了任务管理、进程调度、任务间通信及内存管理等功能,具有源代码公开、可移植性好等特点,采用全占先多任务机制,可支持56 个用户任务,其中断管理功能提供了深达255层的中断嵌套。通过uC/ OS II 进行多任务的管理,任务处于休眠、等待(挂起) 、就绪、运行、中断5种状态之一[5]。它避免了传统的前后台方式下实时性差、任务混乱及多任务调试困难等缺点[1,7]。此系统中有如下4个用户任务,Task1:接收上位机命令;Task2:轨迹规划;Task3:系统状态监视,Task4系统状态发送和显示。任务的优先级是依次降低的。任务之间通过邮箱完成信息的交换与资源的共享。主控制器通过Task1接收上位机的位置和速度指令。由于上位机发送指令是随机的,而下位机除了接受上位机的指令外还要处理其它的事情,为了保证运动过程中命令的不丢失,采取了两种措施:首先将该任务设置为优先级最高的用户任务,另外主处理器允许UART1的接收中断,并根据指令的长度将接收缓冲区的触发深度设置为12字节。(根据需要,此处上位机发送给下位机的指令每帧长度为12字节,S3C44B0X的UART接收触发深度可以软件编程设置为4、8、12、16字节)。当上位机不发送指令时,该任务处于挂起状态,当上位机发送12字节命令时,将激发UART中断。在该中断服务程序中唤醒Task1进入就绪态。由于它具有最高的优先级,所以可以马上执行,从接收缓冲区中接收上位机的指令。这样避免了单个字节就激发中断而导致主处理器频繁的响应中断的情况和没有实时操作系统的前后台调度方式中命令丢失的情况。Task2根据传感器提供的机器人的当前位置信息和障碍物信息以及接收到的上位机指令进行世界坐标系中的总体任务规划、机器人运动学逆解,生成下一个节拍每个关节应该转动的角位移、转动的角速度,然后通过总线写到相应的LM629的寄存器中,这个任务的优先级仅低于Task1,运行周期100毫秒。Task3主要处理传感器的信息,运行周期100毫秒。包括通过LM629的状态寄存器获得当前编码器的信息,再经过运动学计算得到机器人当前位置信息,通过超声传感器获得当前机器人周围障碍物的信息,通过LMD18200获得的功率放大器的过热过流信息。另外下位机的一些运行状态,如当前位置、障碍物信息等也需要发送给上位机同时送液晶模块显示,这个由Task4来完成,这个任务具有最低的优先级,运行周期300毫秒。
系统的软件在ADS1.2下调试通过。由于ARM7TDMI中没有MMU(内存管理单元),所以其操作系统和用户程序要编译在一起,最后生成一个文件。在这一点上不同于在DOS或Windows下的概念,它的操作系统和用户程序是分开的,而且可以由多个应用程序同时存在于主机中。另外在ADS1.2下可以使用c语言进行软件开发,并且可以使用数学库,缩短了软件开发周期。