微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > 基于uClinux嵌入式系统的汽车黑匣子的设计与开发

基于uClinux嵌入式系统的汽车黑匣子的设计与开发

时间:03-21 来源:汽车电子 点击:

图二

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 进行下一步的操作。USB 设备所执行的操作可用图三所示。

在这里需要注意的是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所支持,需要自己编写其的设备驱动程序。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top