0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于IP2022处理器和ipOS操作系统实现牌照识别器的设计

电子设计 来源:电子技术应用 作者:宋振宇,宋焕生, 2021-06-22 15:56 次阅读

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

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

在大量的嵌入式应用中,为物理层提供网络连接是一个关键。然而TCP/IP网络协议栈的供应商并没有意识到这一点。通常,即使协议栈是以软件形式执行,接口也是以某种专用的硬件形式提供。Ubicom的网络处理器IP2022已经能够执行TCP/IP协议模块,也能以软件形式执行物理口,例如UARTI2C等。随着以太网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机或工作站就可以通过互联网进行数据传输。这就给电子设备的升级、维护等带来了极大的方便性和灵活性。可以预料,嵌入式互联网技术必将在各个领域得到更为广泛的应用。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19191

    浏览量

    229311
  • 嵌入式
    +关注

    关注

    5076

    文章

    19045

    浏览量

    303856
  • 操作系统
    +关注

    关注

    37

    文章

    6753

    浏览量

    123222
收藏 人收藏

    评论

    相关推荐

    32位嵌入式处理器与8位处理器应用开发的区别

    32位的RISC嵌入式处理器非常大的优势,为嵌入式设计带来丰富的硬件功能和额外的性能,已经成为嵌入式应用和设计的主流。而8位处理器通常受到的64K软件限制也不存在了,设计者几乎可以任意选择多任务操作系统。32位
    发表于 09-22 10:42 1564次阅读

    嵌入式实时操作系统uCOS II经典实例:基于STM32处理器

    嵌入式实时操作系统uCOS II经典实例:基于STM32处理器.part1
    发表于 10-18 23:59

    基于STM32处理器的嵌入式实时操作系统μCOS-Ⅱ经典实例光盘资料

    买的书带的 可以参考下嵌入式实时操作系统μCOS-Ⅱ经典实例——基于STM32处理器-光盘资料.zip (12.94 MB )
    发表于 02-13 06:35

    网络处理器IP2022电子资料

    概述:IP2022是一款功能强大的网络通信处理器,在4.8MHz晶振驱动下,利用其内部的锁相环(PLL)电路,CPU工作频率可达到120MHz,并且大多数指令均为单周期执行,其吞吐量能满足各种新型网络连通应用。
    发表于 04-07 07:27

    IP2022在嵌入式牌照识别系统中的应用是什么?

    IP2022是什么?如何去编写一种ipOS应用程序?IP2022在嵌入式牌照识别系统中的应用是什么?
    发表于 06-03 06:31

    双内核Cortex-A9处理器设计实现

    类别:嵌入式系统处理器知识产权许可商ARMHoldingsplc已经成功开发出双内核Cortex-A9处理器设计(被称为Osprey)的两个实现。Cortex-A9
    发表于 12-13 06:03

    Sitara AM62处理器的资料分享

    分析。AM62处理器还支持双屏全高清显示和多种操作系统,包括主线Linux®和 Android 操作系统。此外,AM62处理器可提供有线和无线连接接口。将
    发表于 11-03 06:11

    网络处理器IP2022的原理及应用

    利用Ubicom公司的IP2022网络处理器可单芯片实现10BaseT以太网和其它多种快速串行协议, 特别适合网桥7网关和基于网络的控制应用。文中介绍了IP2022芯片的结构、 功能特
    发表于 04-24 15:02 25次下载

    基于ARM的PC/104处理器模块设计

    提出了一种低成本的PC/104处理器模块的设计。该模块硬件上以ARM处理器为核心实现了PC/104处理模块的基本结构、总线接口,软件上构建了嵌入式Linux
    发表于 08-25 10:36 20次下载

    IP2022中文资料,pdf (网络处理器)

    利用Ubicom公司的IP2022网络处理器可单芯片实现10BaseT以太网和其它多种快速串行协议,特别适合网桥/网关和基于网络的控制应用。文中介绍了IP2022芯片的结构、功能特点及
    发表于 10-03 13:30 179次下载

    Intel 64位处理器,Intel 64位处理器结构原理

    Intel 64位处理器,Intel 64位处理器结构原理 现在人们广泛使用的是由32位微处理器构成的计算系统,但是32位的计算和操作系统
    发表于 03-26 15:07 3295次阅读

    网络处理器IP2022及其在嵌入式牌照识别系统中的应用

    摘要:介绍了UBICOM公司的最新网络处理器IP2022以及专为网络优化而设计的嵌入式实时操作系统IPOS的特点.描述了如何在IPOS下编制
    发表于 03-01 01:18 51次下载
    网络<b class='flag-5'>处理器</b><b class='flag-5'>IP2022</b>及其在嵌入式<b class='flag-5'>牌照</b><b class='flag-5'>识别系统</b>中的应用

    MP32处理器在定制嵌入式系统实现MIPS辅助系统

    针对VxWorks实时操作系统重新使用已有的应用软件代码以及中间件。MP32处理器是第一款也是唯一一款支持VxWorks的软核处理器。MP32处理器以及Altera最新的FPGA为您开
    发表于 11-30 16:37 875次阅读
    MP32<b class='flag-5'>处理器</b>在定制嵌入式<b class='flag-5'>系统</b>中<b class='flag-5'>实现</b>MIPS辅助<b class='flag-5'>系统</b>

    嵌入式实时操作系统μCOS-Ⅱ经典实例——基于STM32处理器-

    嵌入式实时操作系统μCOS-Ⅱ经典实例——基于STM32处理器-光盘资料
    发表于 01-14 12:04 25次下载

    PXA255处理器在WinCE系统下的BootLoader的设计与实现

    PXA255处理器在WinCE系统下的BootLoader的设计与实现
    发表于 10-25 10:04 4次下载
    PXA255<b class='flag-5'>处理器</b>在WinCE<b class='flag-5'>系统</b>下的BootLoader的设计与<b class='flag-5'>实现</b>