您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

基于PXA255的PDA交通管理系统在Linux环境下的实现

时间:2007-1-20栏目:电子通信论文

boLinux得到。Linux核心源代码执行GPL版权协议,任何人都可在遵循GPL版权协议条件下对Linux核心进行修改和补充,并可根据自身应用系统的需求,进行裁减定制,形成针对应用的嵌入式Linux内核。本方案采用RedhatLinux6.0,内核版本2.2.5,在保留TCP/IP网络支持、STAR902以太网卡驱动的情况下,定制后的内核大小为360KB,足以满足本系统中嵌入式硬件及软件的需求。
  
  Linux核心源程序通常都安装在/usr/src/linux下,核心源程序文件按树形结构进行组织。在这里,对Linux内核进行分析:
  
  (1)系统的引导和初始化:Linux系统的引导有Lilo、Loadin引导和Linux的自举引导三种。而Linux的自举引导所对应源程序为arch/i386/boot/bootsect.S,它为实模式汇编程序。无论哪种引导方式,最后都要跳转到arch/i386/Kernel/setup.S。setup.S主要进行实模式下的初始化,为系统进入保护模式做准备。此后,系统执行arch/i386/kernel/head.S。head.S中定义的一段汇编程序setup_idt,负责建立一张256项idt表,此表保存着所有自陷和中断的入口地址,其中包括系统调用总控程序system_call人口地址。除此之外,head.S违要做一些其他初始化工作。
  
  (2)系统初始化后,运行第一个内核程序asmlinkagevoid_initstart_kernel(void),它定义在/usr/src/linux/init/main.c中。它通过调用u
  
  
  
  sr/src/linux/arch/i386/kemel/traps.c中的函数void-inittrapinit(void),把各个自陷和中断服务程序的入口地址设置到idt表中。其中系统调用的总控程序system_call就是中断服务程序之一。void_inittrap_init(void)函数则通过调用一个宏set_system_gate,把系统调用的总控程序入口挂在中断0x80上。其中SYSCALL_VECTOR是定义在/usr/src/linux/arch/i386/kernel/irq·h中的一个常量0x80,而systern_call为中断总控程序的入口地址。中断总控程序是用汇编语言在/usr/src/linux/arch/i386/kernel/entry.S中定义。
  
  图3
  
  (3)中断总控程序主要负责保存处理机执行系统调用前的状态,检验当前调用是否合法,并根据系统调用向量,使处理机跳转到保存在sys_call_table表中的相应系统服务例程的入口。从系统服务例程返回后退回用户程序状态,而系统调用向量则在/usr/src/linux/include/asm-386/unistd.h中定义,sys_call_table表是在/usr/src/linux/arch/i386/kernel/entry.S中定义,系统调用的用户编程接口在/usr/src/linux/include/asm-386/unistd.h中定义。
  
  (4)由此可见,Linux的系统调用也象DOS系统的int21h中断服务,把0x80中断作为总的入口,然后转到保存在sys_call_table表中的各种中断服务例程的入口地址,形成各种不同的中断服务。由以上源代码分析可知,要增加一个系统调用就必须在sys_call_table表中增加一项,并在其中保存好系统服务例程的入口地址,然后重新编译内核。当然,系统服务例程是必不可少的。
  
  5GPRS通信
  
  该系统采用GPRS通信方法。GPRS(通用分组无线业务)是GSM标准化组织制定的一套标准,以实现移动分组数据业务。GPRS网是一个传输承载平台,提供端到端分组传输模式下数据发送和接收。GPRS具有五大特点:传输速率快;可灵活支持多种数据应用;网络接入速度快;可长时间在线连接;计费更加合理。所以,采用GPRS通信可实现远距离、传输速度高的通信。
  
  PDA中应用PXA255处理器,运行速度快,系统性能得到极大提高。嵌入式Linux作为PDA操作系统,可根据需要定制内核大小,简单方便。Linux源代码公开,可充分利用已有资源,节约开发人员工作量。Linux不存在"黑箱",操作系统安全性得到了保障。采用该系统,提高了交通管理质量。该系统提高了数据传输

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页