May 25, 2010

New Toradex Colibri Windows CE Image and BSP V3.6 beta 2 available

The release candidate for Toradex’ Colibri and Limestone Windows CE Image Version 3.6 and the corresponding bootloader are available in the download section of our website.  (Version 3.6 beta 2)
The BSP is available here.
We recommend to test this version if you plan to update to Toradex Windows CE Image or BSP V3.6 since this is the official release candidate which most probably will not change.
The new image includes bug fixes, new features, and performance improvements.
For a complete list check the change-log.
Please contact us if you have any further questions. colibri@toradex.com

May 14, 2010

Colibri limestone PXA270/3xx 内核升级方法

 

一.介绍

     对于基于PXA270/3xx的计算机模块,Flash内部保存了引导程序、内核、注册表配置以及用户信息,具体内容请参阅文章《Colibri PXA320 Flash 空间配置介绍http://www.gkbk.com/more.asp?name=toradexag&id=106835 本文涉及的是升级Colibir 或者limestone PDA 模块内核的方法:

1.1   使用updated tool

工具的下载和详细描述请参阅以下的链接http://wiki.toradex.com/index.php/Update_Tool

 请注意:

这里有一个关键的步骤就是在升级以前,需要清除注册表信息(clear registry,早期的updated tool版本需要手工去做,最新的版本会提醒你。

对于内核大于19M,一般中文内核都是如此,需要参考前面的文章,重新调整Flash layout, 具体就是Registry Flash Disk 的起始位置。

    

1.2   使用platform builder 详见 Microsoft windows CE platform builder readme.

1.3   使用colibri loader tool

当您的系统已经不能启动并且又没有Windows CE PB 开发环境,Toradex 提供了Colibri loader,可以用来更新Colibri limestone 引导程序和内核的工具。http://wiki.toradex.com/index.php/Colibri_Loader .   

二.使用Colibri Loader Tool

1.1   使用网络更新。

1.1.1          使用网络来更新是一个简单并且直观的操作,只要有一个带有DHCP的交换机,PC和目标机均接入这个交换机,自动获取IP地址.

 

1.1.2          使用超级终端, 进入bootloader界面, 确认boot.dltype=0。开始升级,使用downloader image to Flash(F).

1.1.3          在超级终端,应该看到广播包,打开Colibri loader, interface setting中应该看到目标设备名称和IP配置。

1.1.4          Download image.

注意:防火墙的设置

1.2   使用USB 更新

1.2.1          使用USB通过PC更新适用于没有DHCP交换机或者没有没有以太网接口的应用,例如limestone PDA模块。目标机仍然需要一个串口用来操作。PC既需要添加一个驱动程序NDIS。详细信息和下载在以下链接http://wiki.toradex.com/index.php/USB_image_download

1.2.2          在目标机上,需要设置USBC

set boot.dltype=1

save boot

设置固定IP地址:

set ip.ip = IPADDRESS

set ip.subnet = SUBNETMASK

set ip.dhcp = 0

save ip

1.2.3          下载

请注意, 防火墙的选项,Pc机暂时断开其它网络连接

 

 

May 13, 2010

Colibri模块在WINCE5.0/6.0环境下的挂起与唤醒

 

一、为什么要进入suspend mode.

    为了使嵌入式系统尽可能的省电,特别是对于电池供电设备,将能够提供比较长的工作时间。举一个例子,Colibri全系列模块在挂起状态下的功耗是3.3V@2mA

二、WINCE如何进入挂起模式(suspend mode)与唤醒

通常有3种方法,

1)  点击WINCE的开始挂起

2)  使用电源计划,设定挂起的时间

3)  使用API函数

举例:

#include “pm.h”

SetSystemPowerState( NULL, POWER_STATE_SUSPEND, 0 );

 

  

三、WINCE 挂起与唤醒时,发生了什么?

一旦操作系统被要求挂起,它就启动了关闭该设备的子系统进程。

1)  首先,系统任务栏(Task Bar)得到通知,该系统即将中止。这是唯一得到提示的应用程序。这是意味着你的应用程序不能得到通知。

2)  应用程序消息队列关闭。这意味着应用程序将无法接收到任何消息。

3)  系统通知设备驱动的电源管理部分将硬件的电源转换到挂起状态,大部分的硬件将被关闭,系统只保留极少数的硬件电源。

4)  内核停止线程调度,只有挂起线程保留运行。

5)  内核通过设备驱动管理程序再次确认设备是否关闭电源。

6)  该内核将系统处于待唤醒状态,有一些唤醒源可以激活系统, 例如特定的GPIO、触摸屏或以太网、实时时钟的一个计划中的事件。

7)  内核将RAM置于低功耗状态,保持里面的数据,

8)  最后,内核处于一个低功率状态的CPU

 

使用唤醒源来唤醒系统:

1)    这其实是一个CPU reset事件,bootloader 引导程序来运行。将转到程序最初进入挂起前的状态。

2)    内核将RAM上电以便能够使用。

3)    内核开始控制设备驱动,使设备上电。

4)    内核开始运行线程了。

5)    消息队列开始运行。

6)    一个消息被广播到运行的应用程序中,使程序知道内核已经脱离暂停。

 

 

四、Colibri计算机模块进入Suspendwakeup的具体设置

1)  Wakeup 源,以下均可以设置为唤醒源

Touch Screen 触摸屏

internal RTC 内部时钟

SODIMM pin 43 rising and falling edge

SODIMM pin 63 rising and falling edge (PS2 Mouse)PS2鼠标

SODIMM pin 69 rising and falling edge (PS2 Keyboard) PS2键盘

    Colibri PXA 270

  • GPIO:

     以下每一个:      0-15, 16-17, 34, 35, 39, 83, 90, 91, 93-102, 116

     两者之一:  31 or 113

     仅其中的一个:  38 or 36 or 40 or 53

    Colibri PXA 320

  • SODIMM:

    以下每一个:

019,021,023,025,027,029,030,031,032,033,034,035,036,037,038,043,045,049,051,053,054,

055,057,061,063,065,066,069,073,075,077,081,085,086,088,090,092,093,095,096,100,101,

102,103,104,106,107,118,120,122,124,127,129,131,134,135,136,137,138,140,142,144,146,

150,152,154,156,158,160,162,164,166,168,170,172,174,176,180,190,192,194,196

 

   043: This pin is always sensitive on both edges!

   064,099,133: These pins could be used as wakeup under special circumstances but we

             advise to NOT use them!

  • EXTCONN扩展接口:

  以下每一个:

  01,02,03,05,06,07,08,09,10,11,12,13,14,15,16,17,18

  Colibri PXA 300/310

  • SODIMM:

  PXA 300/10以下每一个:

019,021,023,025,027,028,029,030,031,032,033,034,035,036,037,038,045,047,049,050,051,

052,053,054,055,057,059,061,063,064,065,066,069,074,081,085,086,088,090,092,093,095,

099,100,102,104,105,106,107,118,120,122,124,127,129,131,133,135,136,137,138,140,142,

144,146,152,154,156,158,160,174,176,184,190,192,194,196

 

   043: This pin is always sensitive on both edges!

    050,064,066,074,099,133: These pins could be used as wakeup under special

                         circumstances but we advise to NOT use them!

 

  PXA300 :

   004,006,014,016,018,020,073,075,077,150,162,164,166,168,170,172,180

 

  PXA310 :

  178: This pin could be used as wakeup under special circumstances but we advise

     to NOT use it!

  • EXTCONN扩展接口:

 PXA300/310以下每一个:

01,02,03,05,06,07,08,09,10,11,12,13,14,15,16,17,18

 

PXA310 :

04: This pin could be used as wakeup under special circumstances but we advise

    to NOT use it!

 

 

2)  注册表设置

 

SODMIMM 管脚作为唤醒源

语法:          “SODIMM”+Pin+Edge+[Edge]

触发沿:                         r: raising edge, f: falling edge

举例:

[HKLM\System\PM\Suspend]

“WakeupSources” = “sodimm69r,sodimm30rf”

 

Extension Connector 扩展接口(X3)作为唤醒源:

语法:          “EXTCONN”+Pin+Edge+[Edge]

触发沿:                         r: raising edge, f: falling edge

举例:

[HKLM\System\PM\Suspend]

“WakeupSources” = “extconn2r”

 

GPIO (PXA270 only) 作为唤醒源

语法:          “GPIO”+Pin+Edge+[Edge]

触发沿:                         r: raising edge, f: falling edge

举例:

[HKLM\System\PM\Suspend]

“WakeupSources” = “gpio0rf,gpio14rf”

其它唤醒源

RTC: 内部时钟.

HANDLE hNotif;

  CE_USER_NOTIFICATION un={0};

  SYSTEMTIME st={2010,4,3,21, 6,23,0,0}; //year,month,dayofweek,day, hour,minute,second,millisecond

                                         //wake the system on April 21, 2010, 06:23:00

 

  hNotif = CeSetUserNotification(NULL, L”", &st, &un);

TOUCH: Touch Screen. In this case the system will wake up if you touch the display.

Example:

[HKLM\System\PM\Suspend]

“WakeupSources” = “RTC,TOUCH”