December 9, 2009

纵向比较Xscale CPU系列处理能力

 

一.  Xscale处理器介绍

Xscale 处理器系列是始于Intel公司ARM v5TE处理器发展的产品。早期技术来源于StongARM, 相比于ARM处理器,但它拥有与众不同的7级流水线,除了无法直接支持Java解码和V6 SIMD指令集外,各项性能参数与ARM11核心都比较接近。2006年开始, Marvell6亿美元价格收购了英特尔公司手机芯片业务。Xscale系列处理器处理器现在由Marvell公司生产和销售。Marvell推出PXA3xx系列,采用新一代的XScale架构,其中PXA320最高主频806MHz

 下图是一个Xscale产品的参数比较

 

二.     测试方法以及平台介绍

    为了测试Xscale系列产品的处理器性能,采用了一个比较直观的做法,即使用CPU资源对MPEG4 的进行软件解码,测试其解码性能。MPEG 4视频的软件解码,解码过程实际上就是从视频编码码流中恢复出VOP数据的过程。需要处理运动解码和纹理解码。恢复I帧和P帧,还有大量的IDCT和乘法除法运算。在WINCE5.0 平台下,利用一段视频数据,使用TCPMP视频播软进行性能测试(Benchmark)。 硬件平台采用Toradex 公司的 Colibri系列模块以及评估开发板进行。

Xscale 处理器系列:

 

 

  

 

 

三.    测试结论

视频片断信息

URL                            \USB HD\MatrixXQ.avi

Size                           30605312

Platform                       PLATFORM_TYPE

OS Version                     5.00

OEM Info                       PLATFORM_OEM

Video output                   Colibri 640×480 8bits

Video zoom                     640×480 -> 640×480

Audio output                   Audio 44100Hz 32Bits 2Ch.

采集1

 

采集2

 

性能测试列表1

处理器

频率

原始数据码率

平均速度

实际解码码率

基准

 

1.6 Mbit/s

100%

1.6 Mbit/s

PXA270

312Mhz

116.42%

1.8 Mbit/s

PXA270

520MHz

147.52%

2.3 Mbit/s

PXA300

208Mhz

103.48%

1.6 Mbit/s

PXA310

624Mhz

157.35%

2.5 Mbit/s

PXA320

806Mhz

229.28%

3.7 Mbit/s

 

 

 

 

 

 

 

  

性能测试图表2

 

 

1.     Xscale处理器的软件解码能力和主频高低存在直接关联,但不是线性关系。

2.     最新的PXA300系列相比PXA270, 性能有了较大的提高, 比如PXA300使用208Mhz 频率就可以达到PXA270 312MHz的解码性能,在运行TCPMP功耗也只有990mW.

3.     PXA320由于带有256KBL2 cache,性能提高很大。无论是软件操作还是性能测试,都很明显的表现出性能优势。

几点说明

1.     PXA310 内部带有视频加速引擎,可以对H.264, MPEG 2, MPEG 4进行高速解码,如果软件支持,视频处理能力有很大提高,Toradex,测试其处理MPEG-2的能力甚至可以达到4Mbps。本文讨论不涉及这个问题。

2.     为了在同一个环境下测试,Video文件均在USB 盘中, 如果将其拷贝到    片内Flash, 性能还能够进一步提高,如果同样是PXA320, 在片内Flash Video的性能能够达到Bench.Data Rate 4.1 Mbit/s,相比原来有10%的提高。

3.     内存的大小也会影响处理器的处理能力,在本测试中,没有作为考虑因素。

Toradex Releases the Worlds First Pico ITX Board for Nano COM Express Modules

 

 Toradex introduces Daisy, a Pico ITX board for Nano COM Express and nanoETXexpress modules.

Toradex Daisy Pico ITX Board
 Daisy is an embedded base board for credit card sized nanoETXexpress and COM Express computer modules. The board was initially designed to work with the Intel Atom based Toradex Robin module. Together they form a modular computer system that fits in the palm of your hand. With a tiny form factor of 10 cm x 7.2 cm, the Daisy is 75% smaller than a mini ITX board.

Daisy is suitable for application in areas such as, advertising, POS, data acquisition, automation, medical, mobile and many others. When size and power consumption matters, the Daisy embedded computer board is an ideal choice.

The given multimedia interfaces VGA, TV out, LVDS and 7.1 HD Audio, can create a great user experience. LVDS enables you to connect a LCD display in a very direct way. There are 8 GPIOs to connect peripherals like simple buttons or LEDs. Additionally you can find several USB ports. With Gigabit Ethernet, SATA and a PCI Express Mini Card slot, the board is ready for bandwidth hungry applications. For example, the Mini PCIe is a great way to add 3G capability or other wireless technologies.

Toradex recommends using the small Robin COM Express embedded module in combination with the Daisy board. Robin is based on the Intel Atom Z530 or Z510 processor with the US15W System Controller Hub. It has DDR RAM and an SSD disk onboard, therefore an extra hard disk is not necessary. For additional storage requirements, the combination features two micro SD cards slots and one SATA port.

Daisy is available now for only 90 Euro at the Toradex Webshop (single quantity price).

 

For more information, please visit www.toradex.com

 

 

 

 

 

 

 

 

 

 

 

December 3, 2009

Colibri PXA320 Flash 空间配置介绍

 

对于ARM构架的嵌入式系统来讲, Flash空间就相当于硬盘空间,设计者往往将系统文件、系统配置甚至应用程序以及数据保存在内,比较内存空间,Flash面的内容是可以掉电保存的,本文将以Colibri PXA320 Flash空间为例,介绍如何根据WINCE 操作系统来配置FLASH 空间的。

PXA320 带有一个1GNAND Flash, PXA270 带有32MNOR FLASH,两者除了容量有区别外,其它配置方法相类似。下图是系统默认的PXA320FLASH空间分布。

 

 

一、           默认的FLASH 空间配置

     以下介绍每个区域的功能。.

1、          256 KB Bootloader

    Bootloader位置:0×0000000-0003ffff, 这个位置和大小是不能随意更改的, 可以刷新和升级,如果损坏,需要专用JTAG调试器来恢复,这个文件就是通常所说的eboot。这段代码在开机的过程中首先被加载,接下来引导操作系统((WinCE, Linux 或其它),在这个区域里,也可以作一些基本配置, 可以使用bootloader行命令方式或者Config Block Utility 软件配置。Bootloader具体使用已经在前面的章节作过介绍了。

2、          256 KB Config Block

    Config Block位置: 0x000040000-0007ffff,位置和大小不能随意更改,这个区域里面保存了bootloader里面的配置内容,如GPIO的初始配置,网络地址配置等等。可以通过bootloader的行命令方式来更改和访问这个区域。或者使用updated toolcolibri tweak 将这个区域备份复制和恢复。  

3、          19 ~24MB Win CE Image

    根据操作系统的功能、语言,映像(内核)尺寸有变化。位置位于:0x 00080000-0163ffff (举例),起始位置:0×00080000。可以根据需要的功能,语言,输入方式和应用程序来生成自己的操作系统映像,如果这个映像文件大于18M 就需要更改platfrom.reg 来移动Flash Disk 的位置,防止出现重叠,也可以在 Colibri tweak上完成。

4、          120~150KB SplashScreen 

     SplashScreen就是开机画面,通常起始位置紧靠操作映像的结尾,例如Splash Screen:0x 01640000-0167ffff,你可以在bootloader中定义是否出现开机画面以及详细的偏移。 Colbiri SplashScreen工具可以重新配置所需要的开机画面。

5、          512 KB Flash Registry

    这个区域的内容类似于windows系统的注册表,有关系统的设置都保存在这个区域。

6、          Flash File System

    FlashSystem位置: 0×01a80000-3e47ffff,Colibri 设备中, Flash File System 是一个特殊的文件系统,可以确保在突然掉电的情况下保存数据, 全称为安全执行文件系统(transaction safe file system TFAT),这个目录在Colibri 设备上被称为 \NOR FLASH (3.0 以内的内核)或者是\FlashDisk(新的内核,3.0以后的)

二、          如何改变 Flash 空间配置

  最简单的方式是通过Colibri Tweak 工具 -> Flash Layout

        可以利用 Update Tool来清空 Registry 区域。

        可以利用(Colibri Tweak)来调整Registry 的起始地址。

        同时可以调整 Flash File System 起始地址和长度(需要确认结束地址不要超过FLASH空间。

        可以通过Colibri Tweak 来备份,批量恢复Flash空间的每一个区域。

        还可以通过Bootloader 行命令方式来修改Registry 的位置。

        Type in the Bootloader menu:

        X

        set loc.regstart=0xNEWADDRESS

        save loc

三、          Flash Filesystem 的建立

      1  格式化 Flash File System 需要到 Start->Settings->Control Panel->Storage Manager

      2  Dismount the partition

      3  Format

      4  New

      5  Type any partition name (任何名字不影响结果)

      6  Finish

     然后在系统中,就可以看到Flash Disk 文件夹, PXA270PXA320的设置方面,除了空间尺寸不同,其他均一样,因此,压缩内核尺寸对于PXA270 Flash disk 文件的空间至关重要,同时,比较大的Flash Disk 同样在启动的时候耗的时间就要多一些。  

 

December 2, 2009

Toradex Robin 和Daisy 载板的应用

 

Robin Z5xx使用了intel® Atom Z5xx 配合US15W芯片组,提供了丰富的外围接口,在计算能力和功耗上取得了较好的平衡,非常适合嵌入式系统的应用,为了配合Robin Z530/510的应用, Daisy 载板提供了一下主要接口:

l  四个USB2.0 高速接口(480Mbit/s, 2个为Micro A/B, 2个为插针。Robin本身提供7USB2.0 高速接口(480Mbit/s

l  一个USB 从设备接口

l  一个千兆以太网接口。

l  一个SATA接口和一个Micro SD接口

l  一个MINI PCIe接口包括SIM卡座

l  一个VGA接口。

l  LVDS FFC 显示屏接口

l  TV-out 插针(没有DAC

l  通过FFC和插头将HD-Audio接口引出。

l  LPC, I2C, SMB3针风扇接口等

相比较Robin Z5xx本身提供的外围接口数量,Daisy 减少了很多,但是考虑到遵循Pico ITX尺寸标准,100×72mm的载板尺寸也为许多空间限制的应用提供了一个可行的方案。Robin Z5xx V1.0本身带了2G/1GSSD(可设置为系统启动盘)和512M DDR RAM 这也为用户在使用XPE/WES以及linux系统提供了方便,不用增加额外的空间和存储设备。下一代Robin Zxx V2.0提供了更大的固态硬盘和内存空间,用户可以使用更为复杂的操作系统。

Robin Z5xx + Daisy 经过验证,可以运行XPE/WES, XP(需要外接存储器)以及linux 系统,包含以下版本:

Ubuntu 8.04 Desktop

  • LiveCD: works
  • Install on USB Disk: works
  • Install on SATA Disk: not yet tested

Ubuntu 8.10 Desktop

  • LiveCD: works
  • Install on USB Disk: not yet tested
  • Install on SATA Disk: not yet tested

Ubuntu 9.04 Desktop

  • LiveCD: works
  • Install on USB Disk: not yet tested
  • Install on SATA Disk: not yet tested

以下为Toradex 公司的Colibri PXA270, 300, 320实测功耗

Power consumption:
Suspend: 2mA@3.3V

Here some rough data about the power consumption:
All currents at 3.3V

Colibri PXA300 208MHz (USB mouse, USB Stick, ActiveSync, Audio, LCD through VGA,Ethernet):
WinCE running, idle:                   < 260mA
WinCE running, playing DivX with TCPMP: < 300mA

Colibri PXA270 312MHz (USB mouse, USB Stick, ActiveSync, Audio, LCD through VGA,Ethernet):
WinCE running, idle:                    < 220mA
WinCE running, playing DivX with TCPMP: < 420mA

Colibri PXA270 520MHz (USB mouse, USB Stick, ActiveSync, Audio, LCD through VGA,
Ethernet):
WinCE running, idle:                    < 240mA
WinCE running, playing DivX with TCPMP: < 550mA

Colibri PXA320 806MHz (USB mouse, USB Stick, ActiveSync, Audio, LCD through VGA,
Ethernet):
WinCE running, idle:                    < 340mA
WinCE running, playing DivX with TCPMP: < 550mA

有关Colibri模块更加详细的信息可以访问Toradex中文网站。 http://www.toradex.com/Cn-zh

Colibri PXA270 PXA320在机器人项目中的应用

英国普利茅茨大学的研究人员近期研发了一款新的全自主人形机器人,从而使研究人机互动成为现实。

 

这个机器人高不超过50厘米,采用了双路摄像机作为视觉系统,内置了瑞士Toradex 公司的Colibri PXA270为核心的中央处理板,WINCE操作系统。

    20086月,这个机器人项目在瑞士和澳大利亚参加了为期十天的Euroby 2008 robot football competition Euro 2008 football tournament 在短跑、障碍赛、举重、机器人足球赛和罚球挑战赛各个项目中均取得良好成绩。详细信息请关注http://www.plymouth.ac.uk/pages/view.asp?page=23385

 

    一个类似的机器人项目是法国巴黎的“Droids Corporation”, 采用的是Colibri PXA320, 他们也参加了以上的赛事。http://wiki.droids-corp.org/mediawiki/index.php/Microb_Technology/2008/Embedded_vision_system

    以下两幅图片分别显示了机器人系统如何处理图像,分别是边界检测和经过R/G/B滤波后的自动锐化算法检测,可以避免目标丢失。

     

边界检测丢失了一个红色的球。

 

 

R/G/B滤波后的自动锐化算法检测到所有的目标。

 

有关Toadex公司信息请关注: http://www.toradex.com/Cn-zh

Colibri PXA270 300 310 320 bootloader (eboot)介绍

       用于colibri PXA270 300 310 320的 bootloader(eboot)功能比较完善,可以访问到芯片的主要硬件资源,
例如,GPIO的初始化设置、MAC设置、IP设置、启动选项、串口、FLASH空间的分配、CPU的频率设置、debug
信息输出、启动画面和版本信息设置等,当然最基本的内核下载和文件维护功能也在其中,为客户订制系统,
主要指WINCE提供了很大的灵活性。
Toradex Windows CE Bootloader 3.2 for Colibri Built Jul 23 2008

Press [SPACE] to enter Bootloader Menu

 

BootLoader Configuration:

C) Clear Flash Registry
X) Enter CommandPrompt Mode
D) Download image to RAM now
F) Download image to FLASH now
L) Launch existing flash resident image now
Enter your selection: x

>help
Available Commands:
        setconfig:    Sets Configuration Structures
        saveconfig:   Saves Configuration Structures to FLASH
        clearconfig:  Clears Configuration Structures from FLASH
        eraseflash:   Erases Flash Range
        writemem:     Writes 32bit val at address
        readmem:      Reads 32bit val from address
        help:         This help screen
>setconfig
Config List:
* mac:          Ethernet MAC Address
* mult:         Clocks Multipliers
  ip:           IP Config
* boot:         Boot Config
  ser:          Serial Port Config
  loc:          Flash Locations (Layout)
  gpio:         GPIOs Config
  msc:          Static ChipSelect Timings
  hw:           HW Version
* dbg:          Debug Config
  mbs:          Memory Buffer Stength
  ss:           SplasScreen Config
* karg:         Kernel Arguments

>setconfig mac
mac.tid:        0×0000142D      (Toradex MAC range ID)
mac.cid:        969             (Colibri MAC range ID)

>setconfig mult
mult.l: 16              (RUN Clock = 13Mhz x l)
mult.n: 5               (Turbo Clock = RUN x n/2)
mult.t: 1               (Turbo Enable)
mult.b: 1               (Fast BUS)
mult.a: 1               (Alternate Mem Clock)
mult.k1db2:     1               (SDRAMClk/2)
mult.k0db2:     0               (FlashClk/2)
mult.k0db4:     0               (FlashClk/4)
mult.ht:        0               (HalfTurbo Enable)

>setconfig ip
ip.ip:  192.168.0.91    (IP address)
ip.subnet:      255.255.255.0   (Subnet Mask)
ip.dhcp:        1               (Use DHCP Server)

>setconfig boot
boot.delay:     0               (User key press delay)
boot.gpio:      0               (Boot/Download select gpio)
boot.sel:       0               (0=Use Serial 1=Use gpio for boot/download selec
t)
boot.dl:        0               (Download IMAGE by default action when sel=0)
boot.silent:    0               (In silent mode bootloader does not output anyth
ing)
boot.dltype:    0               (0=Download via Ethernet,1=Download via USBC)
boot.breakchar1:        0×00000008      (1st Char used to eter Bootloader Menu)
boot.breakchar2:        0×00000000      (2nd Char used to eter Bootloader Menu)
boot.breakchar3:        0×00000000      (3rd Char used to eter Bootloader Menu)
boot.breakchar4:        0×00000000      (4th Char used to eter Bootloader Menu)

>setconfig ser
ser.port:       0×40100000      (UART port (ffuart=0×40100000, btuart=0×40200000
))
ser.speed:      9600            (Baud rate)

>setconfig loc
loc.imgstart:   0×00080000      (Address of IMAGE in Flash)
loc.regstart:   0×01400000      (Address of Registry in Flash)
loc.regsize:    0×00040000      (Maximum Size of 1 Registry copy (There are 2))

>setconfig gpio
gpio.gpdr0:     0xC0008000      (GPIO Direction ( 31: 0) 0=In 1=Out)
gpio.gpdr1:     0×00020000      (GPIO Direction ( 63:32) 0=In 1=Out)
gpio.gpdr2:     0×8001C000      (GPIO Direction ( 95:64) 0=In 1=Out)
gpio.gpdr3:     0×00000004      (GPIO Direction (120:96) 0=In 1=Out)
gpio.gplr0:     0×00000000      (GPIO Level ( 31: 0))
gpio.gplr1:     0×00000000      (GPIO Level ( 63:32))
gpio.gplr2:     0×00000000      (GPIO Level ( 95:64))
gpio.gplr3:     0×00000000      (GPIO Level (120:96))
gpio.gafr0_l:   0×80000000      (GPIO AltFn ( 15:  0))
gpio.gafr0_u:   0×00000010      (GPIO AltFn ( 31: 15))
gpio.gafr1_l:   0×00000000      (GPIO AltFn ( 47: 32))
gpio.gafr1_u:   0×00000008      (GPIO AltFn ( 63: 48))
gpio.gafr2_l:   0xA0000000      (GPIO AltFn ( 79: 64))
gpio.gafr2_u:   0×00000002      (GPIO AltFn ( 95: 80))
gpio.gafr3_l:   0×00000000      (GPIO AltFn (111: 96))
gpio.gafr3_u:   0×00000000      (GPIO AltFn (120:112))
>setconfig msc
msc.0type:      2               (Memory Type (0=ROM, 1=SRAM, 2=BURST4, 3=BURST8,
 4=VLIO))
msc.0buswidth:  0               (Bus Width (0=32Bit, 1=16Bit))
msc.0timing1:   150             (Timing1 (Type Specific))
msc.0timing2:   28              (Timing2 (Type Specific))
msc.0recovery:  35              (Recovery between Accesses)
msc.0buffer:    1               (Return Data Buffer/Streaming)
msc.0res:       0               (Reserved)
msc.1type:      1               (Memory Type (0=ROM, 1=SRAM, 2=BURST4, 3=BURST8,
 4=VLIO))
msc.1buswidth:  0               (Bus Width (0=32Bit, 1=16Bit))
msc.1timing1:   120             (Timing1 (Type Specific))
msc.1timing2:   120             (Timing2 (Type Specific))
msc.1recovery:  10              (Recovery between Accesses)
msc.1buffer:    1               (Return Data Buffer/Streaming)
msc.1res:       0               (Reserved)
msc.2type:      4               (Memory Type (0=ROM, 1=SRAM, 2=BURST4, 3=BURST8,
 4=VLIO))
msc.2buswidth:  0               (Bus Width (0=32Bit, 1=16Bit))
msc.2timing1:   38              (Timing1 (Type Specific))
msc.2timing2:   80              (Timing2 (Type Specific))
msc.2recovery:  80              (Recovery between Accesses)
msc.2buffer:    1               (Return Data Buffer/Streaming)
msc.2res:       0               (Reserved)
msc.3type:      1               (Memory Type (0=ROM, 1=SRAM, 2=BURST4, 3=BURST8,
 4=VLIO))
msc.3buswidth:  0               (Bus Width (0=32Bit, 1=16Bit))
msc.3timing1:   120             (Timing1 (Type Specific))
msc.3timing2:   120             (Timing2 (Type Specific))
msc.3recovery:  10              (Recovery between Accesses)
msc.3buffer:    1               (Return Data Buffer/Streaming)
msc.3res:       0               (Reserved)
msc.4type:      1               (Memory Type (0=ROM, 1=SRAM, 2=BURST4, 3=BURST8,
 4=VLIO))
msc.4buswidth:  0               (Bus Width (0=32Bit, 1=16Bit))
msc.4timing1:   120             (Timing1 (Type Specific))
msc.4timing2:   120             (Timing2 (Type Specific))
msc.4recovery:  10              (Recovery between Accesses)
msc.4buffer:    1               (Return Data Buffer/Streaming)
msc.4res:       0               (Reserved)
msc.5type:      1               (Memory Type (0=ROM, 1=SRAM, 2=BURST4, 3=BURST8,
 4=VLIO))
msc.5buswidth:  0               (Bus Width (0=32Bit, 1=16Bit))
msc.5timing1:   120             (Timing1 (Type Specific))
msc.5timing2:   120             (Timing2 (Type Specific))
msc.5recovery:  10              (Recovery between Accesses)
msc.5buffer:    1               (Return Data Buffer/Streaming)
msc.5res:       0               (Reserved)

>setconfig hw
hw.vermaj:      1               (Major Version)
hw.vermin:      0               (Minor Version)
hw.variant:     0               (Variant Numer (stuffing options))

>setconfig dbg
dbg.serial:     1               (Debug Serial Output)
dbg.regread:    1               (Read from persistent Registry)
dbg.regwrite:   1               (Write to persistent Registry)

>setconfig mbs
mbs.mdl:        15              (MD<15:0>)
mbs.mdh:        15              (MD<31:16>)
mbs.cas:        15              (SDCAS)
mbs.ras:        15              (SDRAS)
mbs.clk0:       15              (SDCLK<0>)
mbs.clk1:       1               (SDCLK<1>)
mbs.clk2:       15              (SDCLK<2>)
mbs.cke1:       15              (SDCKE)
mbs.rdnwr:      15              (RDnWR)
mbs.sdcas_delay:        5               (Reserved (do not change))
mbs.oe: 15              (nOE)
mbs.we: 15              (nWE)
mbs.sdcs10:     15              (SDCS<1:0>)
mbs.sdcs32:     15              (SDCS<3:2>)
mbs.dqm10:      15              (DQM<1:0>)
mbs.dqm32:      15              (DQM<3:2>)
mbs.ma25:       15              (MA<25>)
mbs.clk3:       15              (SDCLK<3>)
mbs.cs0:        15              (nCS<0>)
mbs.cs1:        15              (nCS<1>)
mbs.cs2:        15              (nCS<2>)
mbs.cs3:        15              (nCS<3>)
mbs.cs4:        15              (nCS<4>)
mbs.cs5:        15              (nCS<5>)
mbs.ma0:        15              (MA<0>)
mbs.ma1:        15              (MA<1>)
mbs.ma92:       15              (MA<9:2>)
mbs.ma2010:     13              (MA<20:10>)
mbs.ma21:       15              (MA<21>)
mbs.ma22:       15              (MA<22>)
mbs.ma23:       15              (MA<23>)
mbs.ma24:       13              (MA<24>)

>setconfig ss
ss.fileaddr:    0×00000000      (FlashAddress with SplashScreen Data)
ss.filesize:    0               (Size of SplashScreen Data)
ss.enable:      1               (Enable SplashScreen)
ss.res: 0×00000000      (Reserved Flags)
ss.width:       640             (Display Width)
ss.height:      480             (Display Height)
ss.bpp: 8               (BitsPerPixel)
ss.ldds:        18              (LCD Lines Used)
ss.type:        1               (Display Type (0=Passive, 1=Active))
ss.color:       1               (0=Mono, 1=Color)
ss.dual:        0               (0=SinglePanel, 1=DualPanel)
ss.overlay:     0               (Overlay Enable)
ss.dpc: 0               (Double Pixel Clock)
ss.pcp: 0               (Pixel Clock Polarity)
ss.oep: 0               (Output Enable Polarity)
ss.hsp: 0               (Horizontal Sync Polarity)
ss.vsp: 1               (Vertical Sync Polarity)
ss.bs:  5               (LCD Buffer Strength)
ss.pclk:        25000000                (PixelClock (in Hz))
ss.hsw: 64              (Horizontal Sync Width)
ss.vsw: 2               (Vertical Sync Width)
ss.blw: 48              (Begin of Line Width)
ss.elw: 48              (End of Line Width)
ss.bfw: 37              (Begin of Frame Width)
ss.efw: 17              (End of Frame Width)
ss.acb: 256             (AC Bias Frequency)
ss.disp_gpio:   81              (Display On/Off Gpio)
ss.bl_gpio:     81              (BackLight On/Off Gpio)
ss.dispondelay: 0               (Display On Delay (ms))
ss.disp_pol:    1               (Display On/Off polarity)
ss.bl_pol:      1               (BackLight On/Off polarity)
ss.pcddiv:      1               (Enable Pixel Clock PreDivider)

>setconfig karg
karg.arg (Kernel Arguments (E.g. cmdline for Linux)):

December 1, 2009

计算机模块在嵌入式系统中的应用

Toradex Shanghai office201100      王立

 

摘要: 本文介绍了计算机模块在工业嵌入式系统中的应用,结合Toradex™公司的Colibri®产品线,给出了计算机模块的仿真开发平台,并讨论了在工业领域应用中的几个关键问题。该计算机模块应用范围涵盖航空航天、仪器仪表、医疗设备、工业控制以及商业物流终端等各个领域。

关键词:计算机模块  系统核心模块  嵌入式系统   

 

Computer module in embedded application

Toradex shanghai office, Shanghai (201100)   Wang Li

[Abstract]  In this paper, we introduce the computer module in industrial embedded application , and give the description of Toradex™ company’s Colibri® product evaluation systemdiscuss the key issue of the application. Toradex® products are widely used in the following areas: navigation systems, test instrument, medical devices, automotive, machine control, POS terminator

[Keywords] computer on module (COM)  system on module(SOM)  embedded system                  

 

       计算机模块( COM, Computer On Module)是指一个包含微处理器、存储器、内存、设备控制器、特定模块接口、以及操作系统的计算机最小化系统, 也称为系统核心模块(SOM System On Module) 一般由厂家定制完成,应用中需要进行二次开发,如根据应用来定制载板,操作系统的定制,应用软件的编写。计算机模块越来越普遍地出现在嵌入式应用领域,相比较采用完整的工业计算机主板或者单独研发,采用计算机模块的好处在于: 高可靠性、较短的研发周期、定制化的功能、简化的物流,以及较长的生命周期等。高可靠性表现在,模块的设计需要考虑各种应用,通过实际使用,经过多次的改版, 例如Toradex™公司的Colibri®系列计算机模块,经过了8次以上的改版和6年以上的市场应用检验;一个常用的基于ARM处理器的嵌入式系统,研发周期通常是618个月,达到产品质量稳定往往需要更长的时间,如果采用一个稳定的计算机模块,通过对于提供的评估系统硬件的裁剪,采用已有的硬件驱动,用户只要将精力集中在软件开发设计中,这样将大大缩短产品开发周期;通常嵌入式产品是一个定制化的产品,很难在市场上找到合时的现有产品,要么选用的产品功能太多造成浪费,要么尺寸不符合产品要求,采用一个计算机模块可以根据产品的尺寸和外围接口来定制自己的载板,满足了个性化的需求,如果一个计算机模块的接口是通用的,用户还可以采用不同厂家的产品或者很方便的升级硬件资源。如colibri产品线中基于Marvell™ XScale®处理器从208Mhz 主频到 806Mhz 均使用同样的模块接口;计算机模块包含了计算机最小化系统的主要元器件,因此,采用模块对于简化用户的生产采购非常有利;一个工业设备通常有很多年的生产周期,对于元器件的生命周期也提出要求,计算机模块在设计之初就要考虑产品的生命周期,选用合适的元器件,如选择特定的处理器系列,Intel™Atom® Z510/530产品就提供了超过7年的生命周期。从以下的表格中也可以看出,对于工业应用领域,采用计算机模块是一个比较经济的做法。

 

  

图 1.          嵌入式产品数量与总费用比较表

 

      传统的计算机模块是基于X86 构架下的386/486或者Pentium®处理器的 PC104模块, PC104是一个基于ISA的接口, 后来发展到PC104 plus,这个接口是对应于PCI接口。随着计算机的发展,计算机模块为了支持一些新的接口,如PCI-Express™, IDE, SATA,多路视频输出等,PCI 工业计算机制造商组织(PICMG)定义了COM Express™ 模块标准:

 

图 2.          COM Express™ 接口定义

 

目前,为了能够使计算机模块尽可能的小,Kontron™Toradex™共同参与制定了和名片大小相仿的Nano ComExpress™模块标准。   

图 3.          Toradex Robin 计算机模块

 

 

图 4.          COM Express™ Nano COM express™ 计算机模块尺寸对比

 

      这些模块一般都使用了基于X86的高性能处理器,可以提供丰富的外围接口,操作系统也可以灵活选用。 为了优化功耗和计算能力, 有一些厂家提供了基于ARM处理器的计算机模块,例如Toradex™2003年推出的Colibri®产品线系列,产品使用Marvell ®XScale® 系列处理器,整个模块的功耗只有350mW~1700mW, 特别适合应用于功耗受限工业嵌入式应用。下面就结合具体应用来介绍Colibri®计算机模块。        

1    Colibri®计算机模块的硬件构架介绍

       Colibri®计算机模块是瑞士Toradex™公司基于Marvell™ XScale® (PXA270, PXA300, PXA310, PXA320)处理器的管脚兼容的系列产品,模块是一个含有CPU、内部存储空间(FLASH, DDR RAM)、以太网控制器、音频触摸屏控制器和大量GPIO接口的标准SODIMM200高度集成计算机模块,可根据需要选定208M806MHZ主频的CPU32MB Nor Flash64MB SDRAM 1GB NAND Flash128M DDR RAM的灵活组合。受益于Intel Wireless Speedstep®技术的优化,模块的功耗介于350mW~1700mW。模块预装WINCE5.0/6.0操作系统,同时免费提供板级支持包(BSP)以供客户订制自己的系统。

      

 

图 5.          Colirbi®计算机模块接口

 

图 6.          Colirbi®计算机模块

 

2    Colibri仿真开发平台介绍以及开发流程

     Toradex公司提供了Colibri®产品的评估开发系统,该平台可用于对全部Colibri®计算机模块进行开发和评估。通过该评估板, 可以将计算机模块的外围接口、CPU总线和GPIO口引出,结合计算机PC的开发软件,如微软的Platfrom builder5.0EVC,或者linux软件平台 ,实现对Colibri模块的评估和软件开发。

 

 

图 7.          Colirbi®计算机模块评估开发板

 

 

图 8.          Colirbi®计算机评估开发板系统构架

 

       自WINCE6.0,微软已经将的开发环境集成到了Microsoft Visual Studio 2005中,操作系统的定制作为其一个工程项目。 一般来说,用户会直接使用Colibri计算机模块内预装的WINCE5.0/6.0操作系统,根据Toradex公司提供的SDK来编译自己的应用程序, Toradex还提供了大量的库函数和应用事例,如开机界面定制程序,CAN总线驱动,GPIO库函数、显示屏驱动定制程序等。如果用户需要定制自己的操作系统内核(OS Image, 就需要利用Toradex提供的BSP,通过Visual Studio 裁剪定制自己的内核。当完成内核编译以后,可以通过网络接口,将内核下载到计算机模块中运行,开发应用程序的过程也类似。

3    应用举例和几个关键问题

LX navigation 公司的(斯洛文尼亚)LX 7007飞行导航控制仪。

       LX7007飞行导航控制系统采用了两个显示器,一个是80毫米高,另一个是57毫米高最新设计的80毫米显示器采用了“colibri嵌入式微处理核心模块”、带后备电池的额外的512K RAM1M Flash备份空间,这些硬件的设计,充分保障了强大的功能和高可靠性的特点。

所有系统的关键数据均存储于一个非易失的FLASH存储空间里,即使后备电池出现故障也不会丢失数据。这个飞行记录仪已得到IGC的认证。

   

    得益于Colibri丰富的外围接口,LX7007可以为用户提供以下接口:

1.  SD卡接口,主要用于飞行计划下载、TP/TSK数据更新、机场和领空数据更新、配置更新等。

2.  3个独立的RS-232通信接口,可以为飞行数据记录仪、PDA等提供3个标准RS-232 COM口。

3.  直接为PDA供电和数据更新,LX7007利用高效的DC/DC转换器输出5V电压,NMEA数据输出也兼容于常用的飞行用PDA, PDA软件如onnectMe, ConnectLx

4.   即插即用的“Colibri”和“LX20”模块,这两种设备可以采用标准电缆连接,此类设备是IGC所要求的独立运行设备,储存TP/TSK和飞行日志数据。

5.   PC 连接, 可以采用标准的PC COM口或者USB接口。

6.   飞行防撞单元, 这个单元作为一个选件可以和LX 7007系统直接相连,另外只需要在飞机的尾部安装一个射频天线。LX7007为此提供一个图形显示介面,也可以显示当前临近滑翔机的状态和净空状态。 ,这个模块由LX7007产生告警和其它提示音。

8.   副显示器可以显示临近飞机和空中流量等信息。

 

以上的设计硬件基于Colibri PXA270 520M 模块, 软件为WINCE 操作系统,开发和通过IGC认证历时9个月。

 

   与此类似的应用还有,瑞士牛郎星-滑翔机导航控制仪

 

 

在实际设计中,针对不同的应用领域,需要考虑以下几个关键问题

 

3.1内核的裁剪和定制

       预装在计算机模块内的WINCE5.0/6.0内核是一个比较完整的内核, 非常方便基于C/C++, ATL MFC应用程序的开发。但是,对于一些实时性要求高的应用领域,为了提高系统的可靠性,必须对内核进行裁剪,去掉一些不用的组件,尽可能减小内核的尺寸。例如去掉内核中的游戏程序、去掉一些不必要的驱动、去掉一些媒体文件的支持、去掉一些不需要的字库等等,这样定制下来的英文内核要小于 10M Byte, 冷启动在5.5S以内。在另外的一些应用环境,可能需要增添一些组件,例如中文环境的支持。

 

3.2 模块的加固

       Colibri 模块是通过SODIMM200插槽和载板进行连接,这个插槽和DDR-I 内存插槽是同样的物理尺寸和结构,经过实践证明,通过这种插槽连接是稳定可靠的。但是,如果在一些震动环境应用中,建议对模块进行加固。Colibri模块有四个定位孔,可以使用螺栓和载板进行加固连接,这样的结构能够经受了飞行以及船舶航行等高震动领域的考验

3.3 温度范围的选择

工业控制领域通常会有一些恶劣环境的应用,例如环境温度变化很大,这就需要挑选特殊规格的模块,特别是指定工业温度范围应用的产品,例如Colibri PXA320IT,这样的产品在设计过程中,就充分考虑到了每一个器件的温度特性。特别是电源,处理器,甚至接插件都是特殊的。使用这样的计算机模块比在普通模块里做温度筛选来的可靠的多。  

 

结语

       至20091月份,Toradex公司的Colibri系列计算机模块至今已经被不同国家的1800个客户中采用,应用领域涉及航空设备、船舶导航、医疗设备、仪器仪表嵌入式领域,计算机模块由于其可靠性、灵活性被证明是工业领域的嵌入式应用的主要组成部分。

聚焦英特尔“凌动”, 瑞士Toradex推出COM-Express计算机模组

    英特尔“凌动”处理器Z510/530和英特尔系统控制中心US15W构建了一个令人惊讶的嵌入式平台,凭借其革命性的低功耗和X86构架的良好兼容性,这个平台开始侵入ARMDSP所固有的嵌入式控制领域,如医疗、工业控制、互动客户端、游戏和车载信息娱乐系统。丰富的接口资源为客户的应用提供了极大的灵活性。

 

平台参数:

芯片组设计功耗(TPD) 4.3~4.5W

400-MHz 533-MHz FSB

512-KB 芯片内二级缓存

支持HT技术

高级电源管理技术(Enhanced Intel SpeedStep®Technology

C0–C6 四个低功耗状态,

C0(Vcc 全功耗) C1(0.5Vcc 32% Co) C4(0.5Vcc 12%Co)C60.3Vcc6%Co    

单通道最高支持 2-GB, DDR2, 400 MT/s 533 MT/s

内置低功耗2D/3D 图形引擎GMA500

高清硬件解码器(H.264,MPEG2,MPEG4,VC1,WMV9

独立双显示通道(LVDS/SDVO)

其它外围接口

详细资料如附图

 

   Z510/530 US15W 双芯片平台相比较原来的三芯片平台(赛扬M+945G+ICH7)总封装面积减少了80%以上,功耗不到其10%。可以想象,在未来的几年,借助网络和多媒体处理的日益增长的需求,这个平台一定会成为一个嵌入式发展的新趋势,基于传统ARM和DSP构架的嵌入式产品会受到这个可以提供强大计算能力通用平台的挑战。丰富的接口和强大的功能同时也带来了硬件设计的复杂性,来自瑞士Toradex公司提供了采用Z510/530US15W得最为广泛的基于PIGMG组织的COM-Express Type II 标准计算机模组,客户只需要在此基础上设计载板,大大减小了设计难度,瑞士Toradex也借助多年来的嵌入式领域设计经验和广泛的全球客户基础,确保了产品的可靠性。Toradex的代号为woodpecker的计算机模块和代号lily载板以及以后的相关产品,全部由瑞士设计,德国生产,全球多个地方建立应用支持中心。

 

Woodpecker COM-E标准计算机模组

  Woodpecker Z530 Z510 是基于Intel® Atom™ Z530  Z510微处理器以及 Intel® 系统控制中心 US15W 的 嵌入式 Micro COM Express™ 标准计算机模块。Intel® Atom™ Z530 微处理器运行于1.6GHz主频,专用于高性能低功耗计算平台。低成本的Woodpecker Z510 采用了运行于1.1GHz主频的Intel® Atom™ Z510 微处理器。Woodpecker Z530 计算机模块提供了2 PCI Express x1, 一个PCI 接口和高达6USB高速接口,其中一个USB接口可配置为从设备。模块标准配置为两个分别为SDVOLVDS的独立显示输出,或者一个可选的VGALVDS接口。
  Woodpecker
为大容量存储提供了众多的接口,一个可以做为主/从的并行ATA接口(PATA)支持两个IDE设备,同时提供两个串行ATA接口(SATA)。另外还有MICRO SD 接口提供以扩展存储空间,一个30线的扁平柔性电缆连接接口(FFC)提供了两个SDIO扩展通道,可用于扩展SDMMCWLAN适配器、蓝牙适配器、调制解调器、红外适配器、RFID阅读器和GPS模块。

Woodpecker如图  Robin 如图

 

Lily: Micro COM Express™ Type 2 标准载板-用于 Woodpecker 计算机模块

  Lily Micro COM Express™标准载板可长期支持应用于工业领域的Woodpecker计算机模块, 它为用户熟悉和测试Woodpecker计算机模块提供了一个灵活的开发环境。Lily既可以用于Woodpecker Z530, Woodpecker Z510模块, 也可以用于其它任何第三方符合Micro Com Express™ type 2 标准计算机模块。

Lily 提供了千兆以太网(Gigabit LAN, 4USB 集线器, USB 从设备和一个PCI Express  Express Card 扩展槽。硬盘驱动器,其它存储介质,扩展槽可以用来扩展2SATA, 一个PATA / IDE  SD/SDIO (4 Bit) 或者 MMC (8 Bit) 一个带变换器的DVI输出(HDMI, 可选的模拟接口), 模拟VGA 输出,和LVDS扩展接口一个HD Audio Codec (7.1)可以提供多媒体应用。Lily板上电源工作于12V输入电压,由于可以输出高达140W的功率,方便种类繁多的外围设备的需要,节省了额外ATX电源的预算。为将来数据处理的需要,板上内置了一个XILINX Spartan FPGA,可以根据需要直接访问和编程。Lily 计算机载板完全遵循COM Express™ type 2 标准,可用于替换其它第三方厂家的的COM Express™ or ETXExpress®载板。

Lily载板如图:

Daisy 载板如图:

 

公司中文网址

http://www.toradex.com/Cn-zh

产品信息

http://www.toradex.com/Cn-zh/Products/Woodpecker_Modules

报价信息

http://www.toradex.com/Webshop/Product_Selection

瑞士Toradex PXA270/3xx系列模块和载板介绍资料

        瑞士Toradex公司的Colibri PXA270/3xx 系列模块全部由德国和泰国生产,每一片Colibri模块均通过严格的全功能检测,确保产品在质量和性能上保持有冗余。所有的Toradex产品遵循EU 2002/95/EC 指导的RoHS标准。此产品已经在69个国家里被超过1500个客户所选用。  

       Colibri模块除了内置了闪存(FLASH Memory),还提供了丰富的数据存储接口: USB-MemoryStick, CompactFlash/PCMCIA SDCard Colibri模块针对主动和被动LCD显示提供了无缝链接,显示分辨率可达1024×768,同时提供了4线电阻式触摸屏接口,内置16bit的立体声编解码器可以用于播放和录制音频信号;Colibri模块可以直接连接CMOS 传感器,100Mbit 的以太网接口和USB 主从接口也一并提供。

        Colibri模块可以灵活适应各种特定成本产品的需求,针对以太网、音频、内存空间和CPU速度的不同需要分别有不同产品对应,整个CPU总线均扩展出来以适应某些高带宽的需求。  

Colibri模块预装了Windows CE操作系统,为了满足设计的特殊需要(如特殊LCD的设置、时序、整合客户的程序和启动自动加载等),提供了先进便利的定制工具。用户可以更加专注于现实中的应用,不必受到某些系统设置的困扰。

 Toradex公司还提供了一系列为开发基于Colibri SODIMM200模组产品所准备的评估板和载板。  Orchid, Protea  MECS Tellurium 标准载板系列是应用于长寿命周期的广泛的工业领域,均适用于所有Colibri计算机模块,Colibri评估板为客户提供了一个灵活的开发环境,用以评估、开发基于Colibri计算机模块的产品。

 Toradex 的嵌入式产品选用的器件均是应用于工业领域满足长生命周期的产品。 我们的产品非常成熟、应用广泛,借助这些产品可以将您的想法快速融入到现实产品中。
        
为了能够达到客户高质量标准的要求,我们的合作伙伴在德国和泰国的工厂均通过ISO9001体系认证。

 

 

更详细的信息可在/Cn-zh www.toradex.com中获得

报价信息:http://www.toradex.com/Webshop/Product_Selection

库存信息:http://www.toradex.com/Webshop/Stock_Situation

联系我们:http://www.toradex.com/Cn-zh/Contact

Older Posts »