0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于IP2022处理器和ipOS操作系统+TMS320C6204+SST39LV016+SAA711lA+EPlK300QC+IS42S16400实现牌照识别器的设计方案

基于IP2022处理器和ipOS操作系统+TMS320C6204+SST39LV016+SAA711lA+EPlK300QC+IS42S16400实现牌照识别器的设计方案

来源: elecfans
2021-06-23
类别:工业控制
eye 11
文章创建人 拍明

原标题:基于IP2022处理器和ipOS操作系统实现牌照识别器的设计方案

  作者:宋振宇,宋焕生,魏鹏辉

  随着Internet技术的广泛应用,许多专家预测Internet技术将会无所不在,且是一个嵌入式技术。这就导致了一个需求,即在某些电子、电器设备中,以低成本去执行物理层(PHY)与TCP/IP函数集。嵌入式互联网技术可广泛应用于家电产品、安全设备、自动售货机、远程抄表以及工业控制等领域。

  在大量的嵌入式应用中,为物理层提供网络连接是一个关键。然而TCP/IP网络协议栈的供应商并没有意识到这一点。通常,即使协议栈是以软件形式执行,接口也是以某种专用的硬件形式提供。Ubicom的网络处理器IP2022已经能够执行TCP/IP协议模块,也能以软件形式执行物理口,例如UART、I2C等。随着以太网MAC/PHY物理层接口需求的增长,专为执行以太网协议的软件模块(ipModule)已经实现。

  1 1P2022介绍

  IP2022是Ubicom公司的最新产品。IP2022芯片为网络连接应用进行了优化,十分适用于Internet基础设备和网桥/网关部分。使用Ubicom的预制软件模块和配置工具可以对芯片编程和重新编程,为多种设备间和人机间通讯应用创建了真正的单芯片解决方案。

  IP2022内含两个全双工串化器/解串器(Ser/Des)硬件单元,能直接与各种常用网络接口相连。这种功能使其能够实现片内10 Base-T以太网、USB以及其它各种快速串行协议。由于拥有Ser/Des硬件单元,IP2022也便于从一种协议转换到另一种协议,因而也能作为协议转换器。

  IP2022的软件模块包括10base-T以太网、USB、UART、I2C、SPI、并行从设备物理接口以及一个完整的TCP/IP堆栈。正在开发的多种附加软件可用于构建完整的端到端连接解决方案。Ubicom的Internet处理器体系结构和软件模块的组合创建了一个强大灵活的平台,使设计人员能够有信心跟上标准的更新与市场需求的变化,设计出用于未来的产品。

  IP2022具有100MIPS的处理能力,并为通讯应用进行了优化。它能够在执行应用程序的同时,提供高速计算、灵活的I/O控制和高效的数据处理功能,因此可用于高性能物理接口和网络协议的软件实现。IP2022的工作电压为2.5V,芯片上带有内置的电荷泵,因此不需要为闪存编程而提供高电压。

  2 IP2022操作系统中OS简介

  ipOS是Ubicom设计的可配置的嵌入式实时操作系统。它是专为网络应用而优化的,然而不论在哪儿执行通信网络协议,都存在一个问题,就是如何最好地支持各种不同通信缓冲区/包(Buffer/Packet)的协议层。ipOS所采用的数据结构、网络缓冲区(Netbuf)为此类问题提供了一个有力且灵活的解决方案,与此同时达到了最少使用存储器的目的。

  ipOS支持单任务与多任务操作模式。要使用单任务模式可在配置工具中关闭多任务选项。在单任务模式下,需要尽可能快地轮询调用每个物理接口和一些操作系统函数。由于仅有一个任务,在轮询循环(Polling loop)中,任何被直接或间接调用的函数必须尽可能快地返回,因为这些函数阻碍了其它系统进程的继续进行。函数在等待I/0时,不能阻塞进程的执行,这是最重要的。

  3 10Base-T以太网的软件执行

  3.1硬件需求

  要给10Base-T以太网设置串化器/解串器(Ser/Des),来自差分线接收器或片上比较器的输人数据端应连接到IP2022 Ser/Des接收器的输入端,以太网的接收/发送信号要匹配Ser/Des指定的管脚。这些管脚通过一个带有终端的变压器连接到一个RJ45插座。IP2022与以太网接口连接示意图如图1所示。

  


  在这个实现中,IP2022在单个芯片上从以太网MAC/PHY层到应用层完成了网络互连的所有方面。10Base-T以太网的实现利用了IP2022片内Ser/Des单元,从而使外围器件最少。

  IP2022工作电压为2.5V。在这个设计中,以太网接口需要5V电压而IP2022 I/0却工作在2.5V上,因此必须选择一个正确转换匝数的以太网变压器。所选的变压器或者能接受2.5V输入,或者可在电路中插入一个5V的TTL缓冲器来允许使用1:1的变压器。另一种方法是使IP2022的I/0工作在3.3V上,使用一个5V的CMOS缓冲器。在这个设计中,选择了一个1:1的变压器,因为它们更易购买,且价格合算;还有,大多数带有内置变压器的RJ45连接器仅在较为流行的1:1转换配置中有用,通过去掉电路中的缓冲器,可进一步简化电路。

  3.2 软件功能

  以太网软件执行以下操作

  (1)极性检测与反转;

  (2)载波侦听;

  (3)超时检测;

  (4)连接完整性测试与连接脉冲产生;

  (5)一旦冲突,随机后退;

  (6)检测到冲突时,发送一个32 bit的jam序列;

  (7)以太网包的形成,通过把报头、目的地址、源地址、长度/类型、MAC客户数据放人到发送缓冲区,软件必须计算帧校验;

  (8)MAC层函数。

  发送连接通过把Ser/Des的发送管脚改为通用I/0脚,产生一个连接脉冲。它使用实时时钟定时器产生一16ms的时基。发送后,连接脉冲定时器复位为0。

  接收连接刷新一个定时器,上界检查是在24ms,不执行下界检查。连接脉冲宽度由硬件检测。

  在发送帧,包含了驻留在IP2022 PRAM中硬编码的数据。帧包括目的/源地址、帧长、数据和32 bit的CRC。如果通道不忙,则开始传送帧。若检测到冲突,发送ISR执行以下操作:

  (1)停止传送;

  (2)发送32bit的jam序列;

  (3)等待载波空闲;

  (4)产生随机延迟;

  (5)返回,重传条件集。

  在接收帧,每个接收ISR检查接收到的包尾EOP(End Of Packet)。一帧接收到时,接收函数执行以下操作:

  (1)帧校验序列;

  (2)地址检查,单址通信和多址通信;

  (3)检查保留地址;

  (4)帧长度(太长或太短)检查。

  冲突检测是通过监听载波侦听指示位来进行的。最大的延迟为16bit的时间。

  在MAC层应用程序接口,MAC客户(上层)通过初始化数据指针和缓冲区长度发送一个包。然后调用“Transmit_Packet”函数,返回值是发送的结果。主程序通过轮询调用一个“Receive_ Packet”函数接收一个包。非零返回值指示接收到一个有效的包。

  在网络缓冲区(Netbuffer),较高层定义一个叫netbuffer的数据结构。这是访问TCP/UDP数据报不同元素的最好方法。与原始IP包一起,有一些分配给数据包元素(例如:源IP地址、目的IP地址、选项等)的指针。这些指针是静态的。与指针相关的还有长度域,这样很容易改变netbuffer的选项数目。为了构成一个MAC帧,发送程序必须根据指针和长度域从netbuffer中把数据级联起来。

  4 ipOS应用程序的编写

  ipOS操作系统可工作在单任务模式或多任务模式下。在大多数情况下单任务模式的程序足以满足实时应用需求。利用Ubicom的Unity IDE开发环境生成的一个工程,最基本的有3个文件:entry.s、isr.s和main.c。

  4.1引导程序代码

  所有引导程序代码都放在entry.s文件中。这段代码在复位向量处加载了一个占位程序。当IP2022上电时,IP2022跳到复位向量处执行引导程序代码。该代码完成以下功能:

  (1)更新FCFG寄存器,这样代码执行速度对时钟频率而言是优化的;

  (2)设置堆栈指针指向数据存储器的末端;

  (3)通用寄存器初始化为0;

  (4)把.data段从FLASH中加载到数据存储器的开始处;

  (5)将.data段之后的数据存储器区域设置为0来容纳.bss段;

  (6)把.pram段从FLASH加载到程序SRAM的开始处;

  (7)将程序SRAM区域设置为0来容纳.pram_data段;

  (8)引导程序完成,跳到main()主函数。

  注意:用户的任何初始化代码应该加入到main()函数中,不应该加到entry.s文件中。

  4.2中断服务函数

  isr.s是中断服务函数(1SR)文件。当一个异步事件发生时,就会执行对应的ISR。在大多数使用虚拟外设的应用中,都要用到定时器timer0中断来控制周期性的进程。有两种ISR模板用于帮助基于timer0虚拟外设的开发。第一种是“Simple ISR template using timer0”,另一种是“Complex ISR Template”。

  如果仅有一个虚拟外设或所有的虚拟外设需要以同样的频率执行,那么使用第一个模板是很合适的。对于较为复杂的应用,可以使用“Complex ISR template”模板。详细的例子可参考其SDK帮助文件。

  4.3主体结构

  main.c文件是应用程序的主体结构,主要包括配置块(CONFIC_BLOCK)和main()函数。

  配置块是系统配置参数的信息,它存储在IP2022的FLASH存储器中,控制着系统时钟、PLL分频系数和其它的一些系统参数。

  在main()函数中,主程序的结构非常简单。首先是调用debug_init()、heap add()和timer_init()这3个函数对操作系统进行初始化;然后是创建虚拟外设实例进行监听,用户的回调函数(Callback Function)作为监听函数的参数;接着是设置中断服务函数并使其开始运行;最后是对虚拟外设的端口进行轮询。当轮询函数检测到相应的状态时,就会调用相应的回调函数。一般来说,这些叵调函数是用户自己设计的处理函数。

  下面是一个使用UART虚拟外设的例子:

  int main(void)

  {

  stmct uart_instance *uarti;

  /*初始化操作系统*/

  debug_init();

  heap_add((addr_t)(&_bss_end),(addr_t)(RAMEND -

  (DEFAULT_STACK_SIZE-1))-(addr_t)(&_bss_end));

  /*创建UART实例,进行监听。uart_recv_intr是用户编制的回调函数*/

  uarti:echo_uart_vp_instance_alloc();

  uarti—》listen(uarti,uarti,NULL,uart_recv_intr,NULL)

  /*配置中断服务函数, 使其开始运行*/

  tmr0_init();

  set_int_vector(iSr);

  global_int_enable();

  /*死循环,轮询UART*/

  while(TRUE){

  echo_uart_vp_recv_poll(uarti);

  echo_uart_vp_send_poll(uar

  timer_poll();

  }

  }

  其它诸如以太网、USB等通信程序,结构与此基本上相同,只是通信协议不同,程序的基本思想是一致的。

  5 应用实例

  高德威智能交通系统有限公司开发的新一代嵌入式牌照识别器(License Plate Recognition)功能框图如图2所示。通信接口芯片采用Ubicom的网络处理器IP2022,其片上虚拟外设包括UART、USB和以太网等接口,可以方便地接人Internet,从而实现远程程序更新和数据下载等功能。DSP采用TI的定点处理器TMS320C6204,完全满足实时处理的要求。视频处理器为Philips的SAA711lA,FPGA使用Altera的EPlK300QC,FLASH为SST的SST39LV016,SDRAM为ICSI的IS42S16400。

  


  下面简要介绍一下牌照识别器的工作流程。系统上电,IP2022复位并进行网络操作系统初始化工作。初始化完成后,IP2022取得对FLASH操作的总线控制权,开始读取FLASH中的FPGA程序配置逻辑。FPGA电路配置完成后,IP2022向FPGA中的控制寄存器的相应控制位写一跳变脉冲复位DSP,并释放对FLASH的操作控制权。IP2022开始等待DSP启动的完成。

  DSP的Reset脚连接到FPGA控制寄存器的对应控制位。DSP通过FPGA控制逻辑以DMA方式从FLASH中读取64K字节的程序。这64K程序中的引导程序负责把余下的DSP程序调度到SDRAM中。程序调度完成后,DSP释放对FLASH的总线控制权,并通知IP2022自己启动完成。DSP进入正常工作状态,通过12C总线设置SAA7111A,然后循环检查FPGA控制寄存器的状态位以等待汽车的到来。

  DSP启动完成后,IP2022重新取得对FLASH的控制权,进入轮询状态监听以太网和UART口。此时,远程主机可以通过以太网口对系统进行调试,更新DSP或FPGA程序。

  当汽车到来时,埋在地下的线圈便会触发,FPGA的控制寄存器的相应状态位发生变化。DSP检测到该变化时便向摄像机发送抓图命令。摄像机输出的模拟视频信号通过视频处理器进行A/D变换后,形成YUV数字视频信号,再通过FPGA逻辑传输到DSP的SDRAM中。DSP开始执行牌照识别算法,所识别的牌照号可通过串口或网口传送到主机。而抓拍的图像经过JPEG压缩后也可通过以太网传输到远程主机。

  通过使用本文介绍的方案,原先需要通过专用通信链路进行数据传输的各种电子设备,现在只要在其中加上一个廉价的网络处理器,而无需昂贵的PC机或工作站就可以通过互联网进行数据传输。这就给电子设备的升级、维护等带来了极大的方便性和灵活性。可以预料,嵌入式互联网技术必将在各个领域得到更为广泛的应用。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案