ARM9的交通违章抓拍系统的开发

 

ARM9的交通违章抓拍系统的开发

智能交通系统(ITS)将先进的信息技术、数据通讯传输技术、电子控制技术、计算机处理技术等应用于交通运输行业,从而实现各种运输方式发展规划的现代化、决策的科学化和管理的智能化。数码电子警察是现在应用比较广泛的一种智能交通产品,利用数码相机技术和相应的车辆检测与控制技术, 自动抓拍闯红灯的车辆。数字化、网络化、小型化和智能化已经成为当前电子警察的主要发展趋势。目前国内的产品多以Windows操作系统和x86 硬件体系为核心构建, 有成本高、体积大、稳定性欠缺的不足之处。

以Linux 操作系统和RAM7 或RAM9 系列芯片为核心构建嵌入式系统是目前最流行的嵌入式开发策略。Linux 是典型的嵌入式操作系统, 发展最快, 应用最广泛。Linux 是开源的、免费的,从技术和经济的角度来看都是最佳选择。S3C2410 是韩国三星( Samsung) 公司设计的32 位RISC 嵌入式处理器。该处理器为手持设备和一般性应用提供了一个高性价比、低功耗、高性能的解决方案。该芯片基于ARM920T 内核, 采用五级流水线和哈佛结构, 提供1.1MIPS/MHz 的性能。arm920T 具有全性能的内存管理单元MMU(Memory Management Unit) 、独立的16KB 指令和数据Cache 以及高速AMBA 总线接口。为了减少应用系统设计的成本, S3C2410 集成了众多的常用资源, 例如: LCD 控制器、NAND Flash 控制器、SDRAM控制器、系统片选逻辑以及一些常用的通讯接口等资源。

本文针对交通违章抓拍系统的特点,以S3C2410 为核心合理设计硬件电路, 并提供必须的USB 接口、串口、网络接口和JTAG 口; 充分考虑抓拍的实时性和准确性, 采用裁减的实用的Linux2.6.12 内核,制作根文件系统, 开发应用程序, 构建软硬件协作的嵌入式系统。

2 硬件设计

图1 硬件总体结构图

2.1 基于S3C2410 的电路设计

电路设计如图2 所示。

通讯接口部分包括USB 接口、以太网接口、串口。其中串口为常见的接口形式。这里主要说明USB 接口和以太网接口。

S3C2410 集成了USB 控制器, 支持两路USB Host 和一路USB Device.与USB Rev1.1 兼容, 支持低速和全速USB 设备。

本系统中设计两路USB, 都作为Host 使用。USB 接口接线图如图3 所示。

网络接口芯片选用台湾DAVICOM 公司的DM9000,DM9000 是带有通用处理器接口的单片快速以太网MAC 控制器, 并带有10/100M物理层接口, 内部集成4K 字SRAM, 接口支持8 位、16 位、32 位处理器。接口设计电路设计如图4 所示。

图4 Ethernet接口电路设计

2.2 检测电路设计

通常从交通指挥灯信号机中输出的红灯信号是220V/50Hz 的工频交流电, 需要设计一个整流滤波电路将从信号机输出的交通指挥灯信号变换为TTL 电平。交通指挥灯信号检测部分采用一个光隔隔离内外电路, 从交通指挥灯信号机输入至检测板的是220V/50Hz 的交流电, 通过二级管全波整流后, 得到大约200V 的直流信号,再经过电阻分压, 接着使用100uF 的电容平波, 获得5V 左右的直流电,加到4N25 光隔输入端, 输出经过一个反向器获得5VTTL 电平输出,转换电路如图5 所示。

本系统采用环形线圈检测系统,环形线圈检测系统目前国内外使用最广泛的车辆检测系统, 它由3 部分组成: 埋设在路面下的环形线圈传感器、信号检测处理单元(包括检测信号放大单元、数据处理单元和通信接口) 及馈线。检测单元、环形线圈与馈线线路共同组成一个LC 调谐电路。此电路中的电感主要决定于环形线圈的匝数,环形线圈是此电路的电感元件; 电容则决定于检测单元中的电容的大小。当电流通过环形线圈时, 在其周围形成一个电磁场, 当车辆行至线圈上方时, 在金属车体中感应出涡流电流,涡流电流产生与环路耦合、但方向相反电磁场, 即互感, 使环形线圈电感量随之降低, 因而引起电路谐振频率的上升。只要检测到此频率随时间变化的信号, 就可检测出是否有车辆通过。振荡电路设计如图6 所示。

3 软件平台的构建和应用程序的开发

3.1 构建软件平台

系统的引导过程包括以下步骤:

( 1) 处理器重新启动以后, 执行ROM启动代码。

( 2)ROM启动代码初始化CPU、内存控制器以及片上设备,然后配置存储映射。随后执行bootloader.

( 3) bootloader 将内核从闪存解压到RAM中, 然后跳到内核的第一条指令处执行。

( 4) 内核初始化各种硬件设备, 挂载根文件系统, 然后执行init 进程。

( 5) Init 进程装载运行时共享库, 读取配置文件/etc/inittab,执行脚本/etc/rc.d/rcS.

构建嵌入式软件平台需要准备以下工作:制作内核、创建根文件系统和生成启动代码bootloader.

3.1.1 制作Linux 内核

采用Linux2.6.12 的内核。在Linux2.6 中, 引入了很多非常有利于嵌入式应用的功能。这些新功能包括实时性能的增强、更方便的移植性、对大容量内存的支持、支持微控制器和I/O系统的改进等。2.6.12 提供了针对S3C2410 的配置, 使用命令make s3c2410_defconfig, 然后配置内核使用命令make menuconfig,配置体系结构( System Type) , 选择S3C2410 Implementation,配置处理器类型, 选择arm9T, 接着配置通用选项, 支持网络、SYSVIPC 机制、支持ELF 文件格式, 选择根文件系统为JFFS2, 然后再配置网络, 选择网络设备支持, 选择串口支持、选择文件系统与网络文件系统,配置USB 设备选项, 由于数码相机是USB 设备, 我们使用libusb0.1.10 版本的驱动支持, 所以需要修改内核源码usb.c 文件,不把数码相机作为USB 存储设备。编译内核映像使用命令make zImage, 建立模块使用命令make modules.

3.1.2 创建根文件系统

根文件系统是所有Unix 系统不可或缺的组件, 顶层目录/bin、/dev、/etc、/lib、/proc、/sbin 和/usr 是必须的。有几项工作非常重要,首先是建立安装GNU C 链接库, glibc 套件包括若干链接库,比如数学链接库libm- 2.2.3.so, 共享c 链接库libc- 2.2.3.so.

除了链接库文件,还要复制动态链接库及其符号连接。再就是建立设备文件, 按照Unix 的传统, 任何对象都可视为文件, 所有设备节点都放在/dev 目录下, 包括zero、random、tty0、tty1、ttyS0、tty、console、mem、null, 另外还需要建立必要的符号连接:

fd- >/proc/self/fd, stdin- >fd/0, stdout- >fd/1, stderr- >fd/2.然后选择主要的系统命令, BusyBox 无疑是最方便的套件, 成功安装后, /bin 目录下会出现二进制文件busybox, 对需要的命令建立对BusyBox 的符号连接。

为根文件系统选择文件系统是很重要的工作。JFFS2 文件系统的特点是可被写入、具有永久性、断电可靠性而且可以压缩。JFFS2 会为垃圾回收功能维护空间,提供断电可靠性和损耗平衡这两个对flash 系统非常重要的特性。由于抓拍系统工作在开放式的环境中, 稳定性、可靠性是首先要考虑的,所以选择JFFS2.用mkfs.jffs2 工具程序建立文件系统的映像: mkfs.

jffs2- r rootfs/- o images/rootfs- jffs2.image.

3.1.3 Bootloader 代码。

Bootloader 主要负责加载内核, 尽管它在系统启动期间执行的时间很短, 但是非常重要的系统组件, 对嵌入式系统来说是一件特别的工作。Bootloader 是严重依赖于硬件而实现的, 目前以arm为基础的系统还没有标准的Bootloader, 针对本系统的硬件特性, 在ppcboot 的基础上加以修改,生成适合本系统的启动代码。

3.2 应用程序的开发

程序主要实现以下功能:现场红灯和线圈信号的采集; 控制相机拍照、保存参数、传输照片和删除照片; 处理按键信息并送数码管显示; 通过以太网远程下载照片, 也可以用U 盘本地下载照片。应用程序的总体结构如图7 所示。

系统软件的设计主要是控制相机的USB 通讯模块的编写、网络传输模块的编写、信号采集模块的编写和串口通讯模块的编写。其中USB 通讯模块是关键, 需要严格遵守数码相机的通讯协议; 网络传输采用客户机服务器方式, 本机作为客户机, 工控中心设置为服务器。检测信号模块主要是读取并口信息, 并口的操作使用端口I/O, 简单、操作性强,并且可以清楚

基于三星ARM9(S3C2410)的交通违章抓拍系统的开发的更多相关文章

  1. 用python+selenium获取XX省交通违章数据

    前言: 目前在研究易信公众号,想给公众号增加一个获取个人交通违章的查询菜单,通过点击返回查询数据.以下是实施过程. 一.首先,用火狐浏览器打开XX省交管网,分析页面信息: 可以看到共有4种查询种类,我 ...

  2. 基于socket.io的实时在线选座系统

    基于socket.io的实时在线选座系统(demo) 前言 前段时间公司做一个关于剧院的项目,遇到了这样一种情况. 在高并发多用户同时选座的情况下,假设A用户进入选座页面,正在选择座位,此时还没有提交 ...

  3. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud

  4. 基于nginx+xxl-job+springboot高可用分布式任务调度系统

    技术.原理讲解: <分布式任务调度平台XXL-JOB--源码解析一:项目介绍> <分布式任务调度平台XXL-JOB--源码解析二:基于docker搭建admin调度中心和execut ...

  5. 推文《阿里凑单算法首次公开!基于Graph Embedding的打包购商品挖掘系统解析》笔记

    推文<阿里凑单算法首次公开!基于Graph Embedding的打包购商品挖掘系统解析>笔记 从17年5月份开始接触Graph Embedding,学术论文读了很多,但是一直不清楚这技术是 ...

  6. 基于DRL和TORCS的自动驾驶仿真系统——之环境配置

    基于DRL和TORCS的自动驾驶仿真系统 --之环境配置 玩TORCS和DRL差不多有一整年了,开始的摸爬滚打都是不断碰壁过来的,近来在参与CMU的DRL10703课程学习和翻译志愿者工作,也将自己以 ...

  7. 理解DDoS防护本质:基于资源较量和规则过滤的智能化系统

    本文由  网易云发布. 随着互联网生态逐渐形成,DDoS防护已经成为互联网企业的刚需要求,网易云安全(易盾)工程师根据DDoS的方方面面,全面总结DDoS的攻防对抗. 1.什么是DDoS DDoS全称 ...

  8. 基于 Express+Gulp+BrowserSync 搭建一套高性能的前端开发环境

    基于 Express+Gulp+BrowserSync 搭建一套高性能的前端开发环境 Express 是比较经典的,也是最常用的 Nodejs Web框架. 一.Express 快速构建一个web应用 ...

  9. DIY一个基于树莓派和Python的无人机视觉跟踪系统

    DIY一个基于树莓派和Python的无人机视觉跟踪系统 无人机通过图传将航拍到的图像存储并实时传送回地面站差点儿已经是标配.假设想来点高级的--在无人机上直接处理拍摄的图像并实现自己主动控制要怎么实现 ...

随机推荐

  1. 卸载QTP

    卸载QTP11.5 1.首先需要卸载QTP11.5,点击exe文件,不点击重启 2.然后删除C:"Program Files"下的Mercury Interactive文件夹.(默 ...

  2. LeetCode——Count and Say

    The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221 ...

  3. MySQL中同一时候存在创建和上次更新时间戳字段解决方法浅析

    在写这篇文章之前.明白我的MySQL版本号. mysql> SELECT VERSION(); +------------+ | VERSION() | +------------+ | 5.5 ...

  4. XMPP入门

    本人原创,很多其它xmpp知识.ios知识.其它分享知识见:我的个人博客 简单介绍: 1.XMPP是可扩展消息与存在协议,主要用于im. 2.他是一种类似于http协议的传输数据协议.过程如:&quo ...

  5. 访问祖先类的虚方法(直接访问祖先类的VMT,但是这种方法在新版本中未必可靠)

    访问祖先类的虚方法 问题提出 在子类覆盖的虚方法中,可以用inherited调用父类的实现,但有时候我们并不需要父类的实现,而是想跃过父类直接调用祖先类的方法. 举个例子,假设有三个类,实现如下: t ...

  6. 八皇后问题详细分析与解答(递归法解答,c#语言描述)

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或 ...

  7. thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)

    原文:thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成(十五) 本章节:详细介绍thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成 一.URL ...

  8. HDU1300DP

    /* HDU1300 DP 特定n饰品种类 每个饰品的两个数据.amount[i]代表数量.price[i]代表单位价格 购买珠宝时要满足下面购买规则: 单独买:每种珠宝要加上数量10 合并买:能够把 ...

  9. 初尝Java序列化/反序列化对象

    看个类: package com.wjy.bytes; import java.io.Serializable; public class ObjTest implements Serializabl ...

  10. TreeSet排序

    TreeSet的排序能够通过两种方法来实现: 1.通过TreeSet(Comparator<? super E> comparator) 构造方法指定TreeSet的比較器进行排序. 2. ...