摘要本文介绍了建立在以32位三星的S3C44B0X微处理器为核心的嵌入式系统平台上的汽车黑匣子的设计和开发。本系统主要解决的问题是:1.关于汽车行驶状态信号数据的采集和处理。2.USB接口的设计,使黑匣子中记录的数据能够通过USB接口与PC或者PDA进行通信。最后经过系统集成,本系统可以很好的运行。另外在本系统设计中还采用了嵌入式操作系统uClinux,并对其移植过程做了一定的研究。
关键词S3C44B0X嵌入式处理器;uClinux操作系统;USB接口;汽车黑匣子
汽车黑匣子就是汽车行驶记录仪,它是用来记录汽车在行驶中的状态。随着黑匣子在飞机上的成功运用,越来越多的国家也在汽车上运用这种技术。早在1990年以前欧共体就通过了在汽车上安装黑匣子的立法,要求欧共体的15个成员国在10年内给使用中的900万辆商用车中安装这个装置。美国、日本、香港及马来西亚等国家和地区也相继广泛使用汽车黑匣子[1]。从使用的效果来看,汽车黑匣子不但可以在事故放生后准确的反映当时汽车的状态同时也在预防汽车事故方面取的了显著的效果。在2004年10月1日,我国推出了新的《机动车运行安全技术条件》(GB7428-2004),明确要求用于公路运营的载客汽车、重型载货汽车、半挂车应当安装、使用符合国家标准的汽车行驶记录仪。
目前国内生产汽车黑匣子的有60多家通过国标检测的企业,其中2/3是贴牌生产,或代理销售其它企业产品;真正有技术、有资金、有生产线的企业只有18家左右,其中比较著名的是四川大科星、北京伟航、惠州锐神等。但其汽车黑匣子多是运用8位或16位单片机作为处理器,采用汇编语言,运用程序也比较单一。虽然也有公司研制出了第二代汽车黑匣子,功能也比较多但其还是没有运用操作系统到上面,所以在扩展性和稳定性上面还是有缺陷。在国外,俄罗斯最新研制出来的汽车黑匣子可以当事故发生后,车辆空间运动物理量变化将被“黑匣子”记录得一清二楚,从而帮助人们分析事故怎样发生,汽车以后可以怎样改进。在嵌入式系统方面,欧洲的ICE已经成功的把嵌入式系统运用到了汽车黑匣子上。
1 系统的总体结构
1.1需求分析
根据国家最新出台的汽车行驶记录仪的标准:要求汽车行驶记录仪能够对实时时钟、日期及驾驶时间的采集、记录、储存,车辆行驶速度、里程的测量、记录、储存等,对于事故疑点数据,记录仪应以不大于0.2秒的时间间隔持续记录并储存停车前20秒实时时间对应的车辆行驶速度值及车辆制动状态信号[2]。
1.2系统的结构
本系统采用的主要的硬件是:32位三星的S3C44B0X处理器、信号处理电路、RS232型标准接口和USB1.1标准接口、4MFlash、8MSDRAM、4K FRAM、操作键盘和扩展接口。操作系统用的是uClinux操作系统。系统结构如图一。
1.3结构描述
1、32位三星的S3C44B0X处理器,其内置有RTC(实时时间芯片)可以实现北京时间的日期和时钟,该日期和时钟被用于为记录仪实现所有功能(记录、存储、输出等)标注日期和时钟,同时其强大的其它功能为本系统应用和以后的升级或扩展提供很好的支持。2、信号处理电路处理汽车黑匣子采集的信号,使其满足我们系统的要求。3、本系统配置了RS232型标准接口和USB1.1标准接口,采用USB接口来完成数据从汽车黑匣子到计算机间的通信,使数据间的通信更加的方便和迅速。4、主要是的存储单元是4M的Flash用来存储uClinux操作系统和记录的数据,8M的SDRAM和一块4K的FRAM。当汽车运行时记录仪以0.2s的时间间隔持续记录并储存停车前20s实时时间对应的车辆行驶速度以及包过制动的8个信号量进行记录,并且把其存储在FRAM存储器中。这些数据将作为事故疑点数据。同时记录仪将以0.5min的间隔时间从FRAM中进行采样,把采样的结果存进Flash存储器中。5、软件方面采用uClinux操作系统,可以更好的满足系统稳定性、可扩展性和运用程序的多样性。
2 关键技术
2.1信号数据的采集和处理
为了降低成本达到可实用性,本系统采用的信号都是从汽车上的各个传感器上直接采取。主要采集的信号有车速信号、制动信号和各个灯光的信号。
2.1.1 车速信号的采集和处理
本系统车速信号的采集是汽车上的ABS轮速传感器上的信号。目前ABS传感器轮速传感器广泛采用的是变磁阻式的电磁传感器,通过研究发现ABS传感器发出的信号是正弦波信号,并且信号的频率和汽车的速度成正比关系,因此我们需要把信号的频率转换成相应的电压值,然后再送入A/D转换器。但同时又由于汽车在行驶的时候对ABS传感器发出的信号有非常大的干扰,所以需要在信号进行频压转换前对信号进行处理。
信号的处理过程为(1)通过限幅电路。由于车轮的转速越快,正弦波信号的幅值越大。所以通过两个稳压二极管将信号的幅值限制到正负5幅以内。(2)通过滤波电路。由于汽车在运行的时候会产生很大的高频干扰信号,因此采用二阶带反馈的有源滤波器,去除高频干扰信号。(3)通过整形电路,把正弦波信号转换成方波信号。(4)最后通过频压转换电路。
2.1.2 制动信号和各个灯光信号的采集和处理
汽车上的制动和灯光信号的采集都是直接通过汽车上的制动电路或者灯光电路采集而得,其输出都是一个电压为12V的地跃信号,因此我们通过一个光电隔离器来实现抗干扰和稳压。
2.2 USB接口的设计
USB即通用串行总线(Universal serial bus),是一种快速、灵活的总线接口。与其它通信接口比较,USB接口最突出的特点是易于使用和传输的速率快。所以USB接口被越来越多的系统所采用。为了实现本系统本项目通过USB接口把汽车黑匣子记录存储的数据传送到计算机或者PDA上,我们把整个系统当成个U盘来考虑,这样就可以方便、快速的实现数据的传送。
USB组织按设备的不同属性,定义了一系列设备类及设备次类。将这些相同属性的设备组合在一起的优点是,可以同时发展该类以PC主机为主的驱动程序。目前USB中定义了以下类:Audio、Communication、Display、Human Interface、Mass storage、Image、Printer、Power、PC Legacy、Physical interface。因为我们这个项目需要做的是把整个系统当成一个U盘来进行数据的传输,所以需要我们遵循Mass storage协议。同时Microsoft Windows 中提供对Mass storage协议的支持,因此USB 移动设备只需要遵循Mass storage协议来组织数据和处理命令,即可以实现与PC机之间的数据交换。同时在Flash的存储单元组织形式中采用FAT16 文件系统,这样,就可以直接在Windows 的浏览器中通过可移动磁盘来交换数据。
USB 组织现在定义了Mass Storage 协议传输的两个规范,即:1. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport 2. USB Mass Storage Class Bulk-Only Transport。但是CBI不能用于高速设备,所以在我们的这个系统中选用第二种传输方式Mass Storage Class Bulk-Only。
在这种传输模式下,需要注意接口描述符中的一些值的设定。把bInterfaceClass的值设为08,代表本设备为Mass storage Class。把bInterfaceSubClass的值设为06,这样表明USB设备在传输中遵循SCSI协议。这是因为海量存储设备(General Mass Storage Device)是随机存取、基于块/扇区存储的设备。它只能存储和取回来自CPU 的数据。这种设备的接口遵循SCSI-2 标准的直接存取存储设备(Direct Access Storage Device)协议。bInterfaceProtocol的值设为50,即USB设备为Bulk-Only Transport传输模式。
当设备插入到USB 后,USB 即对设备进行搜索,并要求设备提供相应的描述符。在USB Host 得到上述描述符后,即完成了设备的配置,识别出为Bulk-Only 的Mass Storage 设备,然后即进入Bulk-Only 传输方式。在这种传输方式下,有三种类型的数据在USB 和设备之间传送,CBW、CSW 和普通数据。CBW(Command Block Wrapper,即命令块包)是从USB Host 发送到设备的命令,命令格式遵从接口中的bInterfaceSubClass 所指定的命令块,这里为SCSI 传输命令集。USB设备需要将SCSI 命令从CBW 中提取出来,执行相应的命令,完成以后,向Host 发出反映当前命令执行状态的CSW(Command Status Wrapper),Host 根据CSW 来决定是否继续发送下一个CBW 或是数据。Host 要求USB 设备执行的命令可能为发送数据,则此时需要将特定数据传送出去,完毕后发出CSW,以使Host 进行下一步的操作。
在这里需要注意的是Flash的读写特点是其可随机读,但无法随机写。Flash在写之前必须先擦除,而一擦又必须擦一个Block或者一个sector,因此在擦除某Block或sector 之前必须保存同一个Block或sector 中有关的数据。如果每收到一次数据就进行一次擦、保存、写的操作,系统任务将十分繁重,无法及时响应USB Host 端的请求,因此这个需要通过设置一定大小的缓冲区来解决。
3 uClinux操作系统
在进行嵌入式系统设计中,对操作系统的选择是至关重要的,对于系统需求不同需要运用不同的操作系统。本系统考虑的主要是稳定性和安全性,所以运用uClinux操作系统。uClinux操作系统是基本上跟Linux操作系统是一样的。(1)它是免许可证用费同时具有很高的稳定性、安全性和可裁剪性。(2)支持强大的网络功能,这个使我们的系统有更好的扩展性,比如以后在上面实现GPRS等网络功能(3)具有丰富的开放工具,提供C、C++、JAVA以及很多其它的开发工具,这个为我们的应用程序的开发提供了很大方便。(4)具有大量的文档可供我们参考。它们之间最大的不同是是uClinux是了为了满足没有MMU的处理器而特别设计的,即uClinux不能使用处理器的虚拟内存管理技术而是采用的是实存储器管理策略。
这里有主要的三个方面在移植的过程中是需要注意的。1、如果处理器的核不被uClinux支持,这就需要我们在uclinux/linux-2.4.x/arch/中增加一个新的体系结构,这个工作量将是巨大的。但在我们的这个系统中ARM7TDMI体系结构已经存在uclinux/linux-2.4.x/arch/armnommu/目录中。2、在相同体系结构目录中找一个与你的处理器比较接近的处理器的配置文件进行修改,使之适合你的处理器。如果没有合适的就需要你自己写,同样这个工作量也是相当大的。 3、如果本系统的一些外围设备电路不被uClinux所支持,需要自己编写其的设备驱动程序。
4 结束语
本汽车黑匣是建立在以32位三星的S3C44B0X微处理器为核心及uClinux操作系统的嵌入式系统,可以更好的满足系统稳定性和运用程序的多样性,因此可以更加完整、精确和多样性的记录下汽车的行驶状态,为事故的分析提供准确的依据,同时也对抑制交通事故起到很大的重要。另外在本系统中我们把整个系统做成U盘,这样可以把记录的数据方便、迅速的传输到计算机或者PDA上。