May 25, 2010
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计算机模块进入Suspend和wakeup的具体设置
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
- 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
- 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”








