(1)在目标机上安装某种嵌入式操作系统。
随着嵌入式系统的发展,应用程序变得越来越复杂,例如应用程序与 Internet 的结合、多线程、复杂的数据处理、高分辨率图形图案显示等,如果没有操作系统支持,应用程序的编写将变得非常困难。因此人们在目标机上嵌入某种功能较强且占用内存较少的操作系统,用户程序在该操作系统支持下运行。这种操作系统称为嵌入式操作系统,嵌入式操作系统有 多种,如比较著名的 Linux、Windows CE、μC/OS-Ⅱ等。Linux 操作系统由于代码简练、功 能强大、内核公开等优点,获得广泛应用。
采用 Linux 操作系统来开发嵌入式系统,首先在“宿主机”上建立 Linux 开发环境,有 两种方法,一种是“宿主机”安装 Linux 操作系统,另一种是在 Windows 操作系统上安装一 个虚拟机,在该虚拟机中安装 Linux 操作系统。
接着我们要根据应用程序的需要编写一个驱动程序,把该驱动程序和 Linux 操作系统一 起编译,形成一个包含此驱动程序的 Linux 内核可执行文件 image,将此文件下载到“目标 机”。今后,实现应用程序的功能,只需对内核中相应函数进行调用即可。 由于“宿主机”和“目标机”之间文件的下载和上传是以文件形式进行的,所以在两个 机器上都要有相应文件管理系统,在“宿主机”上,可以使用 TFTP Server for Windows,在 “目标机”上则还要下载 Cramfs 文件管理系统。
为了实现上电时系统能自动按一定顺序起动,如系统硬件初始化,包括时钟的设置、存储区的映射、设置堆栈指针、应用程序入口等,还必需有一个系统引导程序,即 Boot Loader, 常用的 Boot Loader 是由韩国 Mizi 公司开发的 VIVI 软件,该软件特别适合 ARM 9 处理器, 我们还要将 VIVI 下载到“目标机”上。 此外,我们还要对每一个项目的驱动程序和应用调试程序各编写一个工程管理文件 Makefile。 在Linux 操作系统下,对应用程序和驱动程序的编辑和调试还需要一个交叉编译工具,要 在busybox 工具集中选择自己需要的部分进行编辑,形成可执行文件,下载到“目标机”上。
(2)目标机上不安装操作系统。
在这种情况下,我们把 ARM 9 只当成是 32 位
单片机。使用 ADS1.2 Code Warror IDE 对 其进行开发,整个开发过程和开发 MCS-51 单片机一样,非常简单。
ADS 使用并口通过 JTAG
仿真器与“目标机”相连,实现在线调试和仿真。 (3)两种设计方法的特点。
带操作系统的嵌入式系统,在编写较复杂和高端应用程序时,用户程序就会比较简单, 但整个工程研制的时间开销不会少,因为我们要把很多时间放在对 Linux 操作系统的安装和 熟悉上,虽说 Linux 操作系统是免费的,其内核可以根据用户需要进行剪裁,但要达到随意 剪裁的水平,需要我们花费很多时间去熟悉和研究。此外,我们还要学会驱动程序和 Makefile 文件的编写,特别是驱动程序,每一个设备都要有一个,它要和内核结合到一起,形成操作 系统的一部分。我们在开发嵌入式控制系统时,还要完成一部分操作系统内核工作,难度较 大,会花费很多时间。 上述系统在调试程序时,占用“宿主机”较多资源,如使用并口连接 JTAG 仿真器、使 用串口与“宿主机”
通信、使用网口来传输文件。
如果我们在目标机上不安装操作系统,把 ARM 9 只当成是 32 位单片机来开发,那么, 整个开发过程和开发 MCS-51 单片机一样,特别简单。这样我们就可以把主要精力放在对 ARM 9 单片机软件和硬件的熟悉上,充分发挥 32 位单片机本身资源优势;把主要精力放在控制系统 的稳定性和可靠性上,在较短时间开发出高品质嵌入式产品。
嵌入式控制系统大多具有小、巧、轻、灵、薄的特点,需要与 Internet 的结合、多线程 的系统等“高端应用”只占非常少的一部分,因此不采用嵌入式操作系统也可以满足绝大多 部分系统的需要。
如果系统需要网络连接(基本是局域网),可以采用串行通信代替。点对点且距离不长, 可采用 232 标准;多点通信或距离较长,可采用 485 标准。
如遇到多线程序问题,可以采用多微处理机分级分布控制。
0