(2) Linux 在S3C2440 上的移植
嵌入式 Linux 管理整个导航系统的硬件设备并对所有程序进行调度,是软件系统的核心。由于Linux 是面向PC 机的操作系统,将其用于嵌入式领域,需要进行移植,它一般包括启动加载代码(Bootloader)的移植、内核移植、驱动程序的编写、文件系统的构建等。将 U-boot 源代码在ADS 环境下进行编译,将编译成功的二进制代码烧写到开发板所带Flash 上,然后在上电启动。Bootloader 首先完成硬件设备的初始化,然后设置Linux 内核的启动参数,最后调用Liuux 内核,直接跳转到Linux 内核的第一条指令处。从 Linux 的方式看待设备可区分为3 种基本设备类型:字符设备,块设备,或者网络设备。车载导航系统设备驱动程序由以下三个部分组成:
(1)自动配置和初始化子程序。初始化子程序首先运行,负责检测硬件设备是否存在和能否正常运行;
(2)中断服务子程序。由嵌入式Liuux 系统来接收硬件中断,再通过系统来调用中断服务子程序;
(3)服务于I/O 请求的子程序。对I/O 设备进行存取。将编写好的设备驱动编译到内核中,在系统启动时和内核一起启动。
文件系统构成了 Linux 系统上所有数据的基础。经过比较,系统设计时决定使用Cramfs文件系统,当访问文件时,Cramfs 文件系统自动的将要访问的文件解压到RAM 中,会尽可能给实际执行的应用程序保留RAM 空间,而且可以为运行时解压缩挪出额外的CPU 周期。使用mkcramfs 命令生成cramfs 镜像文件,再将其下载到系统中去,Linux 启动时自动加载根文件系统,完成系统的启动。
(3)多线程技术在Qt 中的应用<