当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]  介绍了Ubicom公司的最新网络处理器IP2022以及专为网络优化而设计的嵌入式实时操作系统ipOS的特点。描述了如何在中ipOS下编制以太网应用程序。给出IP2022在一个嵌入式牌照识别系统中的应用实例。 随着Internet技术的广泛应用,许多专家预测Internet技术将会无所不在,且是一个嵌入式技术。这就导致了一个需求,即在某些电子、电器设备中,以低成本去执行物理层(PHY)与TCP/IP函数集。嵌入式互联网技术可广泛应用于家电产品、安全设备、自动售货机、远程抄表以及工业控制等领域。

介绍了Ubicom公司的最新网络处理器IP2022以及专为网络优化而设计的嵌入式实时操作系统ipOS的特点。描述了如何在中ipOS下编制以太网应用程序。给出IP2022在一个嵌入式牌照识别系统中的应用实例。

随着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虚拟外设的例子:





其它诸如以太网、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机或工作站就可以通过互联网进行数据传输。这就给电子设备的升级、维护等带来了极大的方便性和灵活性。可以预料,嵌入式互联网技术必将在各个领域得到更为广泛的应用。

参考文献

l ipOS-An Embedded Operating System.Ubicom lnc,May 24,2001

2 Ubicom Networking Protocols and Application Software.Ubicom lnc,May 10,2001

3 ipEthernet lmplementation Of 10Base-T Ethernet in Software.Ubicom lnc,May 18,2001

4 1P2022 Internet Processor Data Sheet.Ubicom lnc,December 14,2001

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用

嵌入式开发是一种专门针对特定硬件平台设计和实现软件系统的工程实践,它涵盖了从需求分析、系统设计、编程实现、调试测试直到产品部署及维护的全过程。本文将深入探讨嵌入式开发的主要阶段,分解其流程并阐述每个步骤的关键要点,以便于...

关键字: 嵌入式开发 嵌入式软件
关闭
关闭