2 软件设计概述 根据硬件设计思想,将船载自动应答器的软件也分成嵌入式微处理器软件和FPGA软件两个部分。其中嵌入式微处理器的软件设计是基于嵌入式实时操作系统μCOS-II的,而FPGA主要是使用VHDL描述其逻辑功能。 2.1 μC/OS-II的内核分析与移植 要使μC/OS-II正常工作,处理器必须满足如下要求: (1)处理器的C编译器能产生可重入代码; (2)可以打开或关闭中断;在μC/OS-II中定义了两个宏(macro)来关闭或打开中断,以避开不同C编译器厂商用不同的方法来处理关中断和开中断。这两个宏分别是:OS_ENTER_CRITICAL( )和OS_EXIT_CRITICAL( )。 (3)处理器支持中断;μC/OS-II需要通过处理器产生的中断来实现多任务之间的调度。 (4)处理器支持能够容纳一定量数据的硬件堆栈; (5)处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。 S3C44B0X处理器完全满足上述要求。移植工作主要就是对μC/OS-II的三个源文件OS_CPU.H,OS_CPU_C.C和OS_CPU_A.S进行改写。 2.2 CPU的软件设计方案 在AIS中,CPU有两个最重要的功能:一是AIS信息的打包、拆包处理,二是选择适当的时隙接入信道。为实现上述功能,软件中采用了两种数据结构和三种程序类型。 2.2.1两种数据结构 在AIS系统传输的所有信息中,最重要的信息就是船的位置报告。同时,由于AIS自组织接入方式的特殊性,网络中每个节点对信道要有实时、准确的知识,才能保证较高的接入率,从而提高网络的效率。鉴于上述考虑,在软件设计中,一方面采用结构体链表存储船舶位置信息,从而方便信息的插入、删除、排序等动态操作,而且节约存储空间;另一方面采用结构体数组存储时隙信息,实现对信道的实时预测和刷新。表3和表4给出了两种结构体的结构。
表3 船表结构体组成
表4 时隙表结构体组成 |