掌微平台与wince问题收集

 

排除问题:1、有时cmmb player异常退出,不向GPSSHELL发送退出消息,导致GPSSHELL仍然认为player在运行中而不会卸载CMMB驱动。
从而导致此种情况下没有看到CMMB在播放,但是也读不到卡。
解决方法:不再与CMMB PLAYER作进入退出通讯,直接在GpsShell本身重新激活时检查cmmb状态,设为正确状态。确保cmmb player异常退出后也不影响下一次操作。

2、由于BSP中sleep处理的的BUG,导致在加载驱动过程中sleep时,cmmb驱动控制线程线程中FindWindow有时会卡死不响应,在WakeUp后才会响应,
从而使得在Sleep时cmmb驱动控制线程操作逻辑混乱(在wakeup后过一段时间才收到sleep时设置的线程退出事件,使控制线程退出,不再加载驱动),
而出现player一直在那里显示“正在连接”。
解决方法:在进入Sleep时不再控制线程检查是否正在进入sleep,如果是则不再findwindow,不再向player发送驱动加载成功的消息,防止被卡死。

3、在cmmb player播放时不再更新GPS的时间,不再读取GPS的数据,防止dsp render出现问题,导致player当掉。
4、添加了在cmmb player播放时不关闭背光, 在播放MP3时关闭背光(原来在播放MP3时是不关闭背光的)。
5、添加启动player前关掉GPS,防止DPS render出现问题。
6、BSP修改低电报警后休眠的处理,防止多次休眠。

BSP中sleep时,在辅助线程当中使用FindWindow会卡死。在wakeup后才恢复执行,而且时序变乱。


控制面板的源代码位置:D:/WINCE500/PUBLIC/WCESHELLFE/OAK/CTLPNL/CONTROL


/////////修改显存大小
platform.reg:
; Common LCD Registry Settings
   "sizeVideoMemory"=dword:600000
   "VGA"=dword:0
修改为:
   "sizeVideoMemory"=dword:A00000

ConfigCE.bib:
IF IMGMULTIXIP
    IF WINCEDEBUG=retail
        IF DRAM_128M=1
                #define         FREE_RAMSIZE    072BA000
        ELSE
                #define         FREE_RAMSIZE    032BA000
        ENDIF
    ELSE
        IF DRAM_128M=1
                #define         FREE_RAMSIZE    070BA000
        ELSE
                #define         FREE_RAMSIZE    030BA000
        ENDIF
    ENDIF

IF WINCEDEBUG=retail
    TINYNK   8C856000 00400000 RAMIMAGE
    RAM         8CC56000        $(FREE_RAMSIZE) RAM
    DRIVERS     82000000        00600000        NANDIMAGE
    NK       82600000        01B00000        NANDIMAGE
ELSE
    TINYNK 8C850000 00600000 RAMIMAGE
    RAM         8CE50000        $(FREE_RAMSIZE) RAM
    DRIVERS     82000000        00400000        NANDIMAGE
    NK       82400000        01D00000        NANDIMAGE
ENDIF
    #define     CHAIN_ADDR      8C64C000
    CHAIN       $(CHAIN_ADDR)   00004000        RESERVED
    pdwXIPLoc   00000000        $(CHAIN_ADDR)   FIXUPVAR
ENDIF IMGMULTIXIP

; Common RAM areas reserved
    GPS_DATA    8C650000        00206000        RESERVED
;   CHAIN       8C64C000        00004000        RESERVED
    EDBG        8C620000        0002C000        RESERVED
    DISPLAY     8C020000        00600000        RESERVED
   
修改为:
IF IMGMULTIXIP
    IF WINCEDEBUG=retail
        IF DRAM_128M=1
                #define         FREE_RAMSIZE    072BA000
        ELSE
                #define         FREE_RAMSIZE    02EBA000
        ENDIF
    ELSE
        IF DRAM_128M=1
                #define         FREE_RAMSIZE    070BA000
        ELSE
                #define         FREE_RAMSIZE    030BA000
        ENDIF
    ENDIF

IF WINCEDEBUG=retail
    TINYNK   8CC56000 00400000 RAMIMAGE
    RAM         8D156000        $(FREE_RAMSIZE) RAM
    DRIVERS     82000000        00600000        NANDIMAGE
    NK       82600000        01B00000        NANDIMAGE
ELSE
    TINYNK 8C850000 00600000 RAMIMAGE
    RAM         8CE50000        $(FREE_RAMSIZE) RAM
    DRIVERS     82000000        00400000        NANDIMAGE
    NK       82400000        01D00000        NANDIMAGE
ENDIF
    #define     CHAIN_ADDR      8CA4C000
    CHAIN       $(CHAIN_ADDR)   00004000        RESERVED
    pdwXIPLoc   00000000        $(CHAIN_ADDR)   FIXUPVAR
ENDIF IMGMULTIXIP

; Common RAM areas reserved
    GPS_DATA    8CA50000        00206000        RESERVED
;   CHAIN       8CA4C000        00004000        RESERVED
    EDBG        8CA20000        0002C000        RESERVED
    DISPLAY     8C020000        00A00000        RESERVED
   
把显示增加4M,

BSP目录driver的GPS目录下的GpsOEM_astro目录中
OEMGps.c
#define SNIFF_mode

#ifdef SNIFF_mode
 #define  GPS_SNIFF_PHYSICAL_ADDR  0xc0650000
 #define  GPS_SNIFF_VIRTUAL_ADDR  0x8c650000
 #define  GPS_SNIFF_SIZE    0x00006000
 #define  GPS_MEMORY_PHYSICAL_ADDR 0xc0656000
 #define  GPS_MEMORY_VIRTUAL_ADDR  0x8c656000
 #define  GPS_MEMORY_SIZE    0x00200000


修改为:
#define SNIFF_mode

#ifdef SNIFF_mode
 #define  GPS_SNIFF_PHYSICAL_ADDR  0xc0a50000
 #define  GPS_SNIFF_VIRTUAL_ADDR  0x8ca50000
 #define  GPS_SNIFF_SIZE    0x00006000
 #define  GPS_MEMORY_PHYSICAL_ADDR 0xc0a56000
 #define  GPS_MEMORY_VIRTUAL_ADDR  0x8ca56000
 #define  GPS_MEMORY_SIZE    0x00200000

根据BIB的配置来修改GPS驱动所用到的内存地址。

 

 


//////////////////////////////////////
//  NAND flash layout
//  | NBoot (block 0) | TOC | EBOOT | DM | LOGO  |NK | ... |

////////////////////////////////掌微A3文档P39
修改CPU的频率:
路径:E:/WINCE500/PUBLIC/COMMON/OAK/CSP/ARM/centrality/AT4X0A/SRC/KERNEL/KERNLIBS/CLOCK/sysclk.c

     pSysClkInfo->dwSystemClock  = dwClkSrc [dwSysClkSW & 3] / GetRealRatio8 (dwRat >> 8);
     pSysClkInfo->dwIoClock      = dwClkSrc [dwSysClkSW & 3] / GetRealRatio8 (dwRat >> 12);
改为:
    pSysClkInfo->dwSystemClock  = 143000000;//zhujian modify 080507 dwClkSrc [dwSysClkSW & 3] / GetRealRatio8 (dwRat >> 8);
    pSysClkInfo->dwIoClock      = 143000000;
 ////////////////////////////////////////////   
修改内存频率:
CSP目录的NBOOT下的Clock.c
函数__inline void StartXipPllSwitch()
中修改
    DWORD dwPll1Cfg, dwClkRatioCfg;
    DWORD tmp = g_dwCpuFreq * 2 / 12;

    dwPll1Cfg = (g_dwCpuFreq >= 252 ? (tmp / 2) : (0x400 | tmp)) - 2;
    //zxj update for 640cpu
    dwPll1Cfg = 0x1d; 

      dwPll1Cfg = 0x1F;//修改后会有很多不稳定的现像。 


在ATLAS_SDCardDDK.h中将DEBUGMSG定义为RETAILMSG后会造成插入卡后系统变得非常慢,因为每个SD命令都会造成串口的调试信息输出,
从而使用系统变慢。
 //#undef  DEBUGMSG
//#define DEBUGMSG(cond,expr)   RETAILMSG (1, expr)
/////////////////////////////////////////


//////////////////////////BSP和驱动

363的版上面出现sharp屏在sleep后屏闪的原因为TMC串口7映射成了串口9,从而造成屏闪。改为串口5后正常。
;add for TMP com1

IF BSP_ATLAS_SERIAL7=0 !
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial7]
 "Dll"="AtlasSerial.Dll"
 "SysIntr"=dword:12
 "IoBase"=dword:AB110000 ; IF UseUART7(P7 or P8)
 "Tsp"="Unimodem.dll"
; "DeviceArrayIndex"=dword:1
 "Prefix"="COM"
 "Order"=dword:1
 "Index"=dword:5
 "FriendlyName"="Serial Cable on Uart7 Atlas Debugging Board"
 "Priority256"=dword:41
IF BSP_NOPOWERMANAGEMENT !
; "IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"   ;GUID for generic power-managed devices.
ENDIF ; BSP_NOPOWERMANAGEMENT
ENDIF ; BSP_ATLAS_SERIAL7
//================================== MUI实现
wince5.0下
问题:
怎样定制内核,让系统默认语言是英文,但是我能浏览中文及中文繁体的网站?


我在定制内核的时候 platform --setting LOACL 选了三种 中文、中文(台湾)、英文。
defaulte language:英语(美国)的时候,中文网页显示不出中文,只有一个“口口口口口口”

defaulte language:中文(中国)的时候,中英文网页都可以正常浏览,但是wince系统的字体是中文,比如控制面板里的显示都是中文了,这不是我想要的,我要的是英文操作界面,但是能够浏览中文网页


1.选择菜单的Platform->Setting…,在弹出的对话框中的Custom Build Actions页的下拉框中选择Pre-Make Image

2.点击New…加入语句createmui XXXX,此处的XXXX表示要支持切换的语言,例如:
createmui 0409,0804,0404
此处0409为英语(美国),0804为简体中文,0404为繁体中文。以“,”分隔。

3.在platform.bib中添加如下语句:

#include $(_FLATRELEASEDIR)/MultiUI.bib  -------//WINCE60下这个文件不存在!!!

4.重新编译(Build and Sysgen Current BSP)。

有2种方法:
1.default language 选择中文,取消对localize the build的选择

2.default language选择英文,支持的语言选上中文,从catlog里面选择字库加到项目里面。

////////////////////////


梦晴地图进不了的原因为BSP里必须加上help组件,SYSGEN_HELP。
//////////////////////////////
TFT LCD驱动IC依X、Y轴分作Source驱动IC(或称Data驱动IC)和Gate驱动IC(或称Scan驱动IC),
自Time Controller传来的资料由Source驱动IC依照讯号提供灰阶电压,TFT的开或关则由Gate驱动IC来控制。

LCD显示器采用按行按列的有源矩阵驱动方式,行线都是接在像素NMOS管的栅极(gate),列线接在NMOS管的源极(source)。
在LCD模块中,行线和列线是分开来驱动的,驱动行线的电路叫:gate-driver ,驱动列线的电路叫:source driver。


调屏时应保证SCN_VEND_VAL-SCN_VSTART_VAL = 屏高,SCN_HEND_VAL-SCN_HSTART_VAL=屏宽。

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/FontLink/SystemLink]
; "Tahoma"="//Windows//Tahoma.ttc,Tahoma"
中文字体库中希腊语字体太宽的BUG,因为中文字体库的问题。所以在image中中文和希腊语不能共存。
////////////////////////////////////////////////
9368的掌微BSP的SD驱动频率降低一半:
D:/WINCE500/PUBLIC/COMMON/OAK/CSP/ARM/CENTRALITY/AT4X0A/SRC/DRIVERS/sdcard/SDHC/BASE/sdhcslot.cpp
VOID
CSDHCSlotBase::SetClockRate(
                            PDWORD pdwRate
                            )
{
    DEBUGCHK(m_dwMaxClockRate);
   
    const DWORD dwClockRate = *pdwRate/2;    //频率降一半
    DWORD       dwMaxClockRate = m_dwMaxClockRate;
    int         i = 0; // 2^i is the divisor value
   
另外可以设置BSP中的频率值 atlas_sdcard.h中的#define SD_FULL_SPEED_RATE              20000000//25000000    // 25 Mhz zj
直接进行频率值的修改。
/////////////////////////////////////////////////////
PB编译私有代码找不到"ndislink.h","bttdi.lib"等文件时,需要打PB的2008年五月的补丁即可,这样标准的蓝牙部分就可以编译出来。

PB编译提示关于"sdk"的错误时,请删除相应目录下的build.dat再重新编译即可。

PB编译altas时提示找不到某个lib库时,如果sysgen也没有该文件时,应先进入CSP的对应目录进行编译出该lib文件,然后再编BSP,就可以sysgen了。
一般是因为有时编译时编译了一半,原来的LIB文件已经被clean,so miss lib when build some bsp driver,becase the csp code that
will be use on the bsp code haven't  be compiled.

PB的OSDesignView中组件的图标显示为叉时,表示在该平台的cec文件中有该组件的定义,但是加入该组件时找不到该组件的代码,
需要确认目录结构里否正确(解压时多解了一层目录),或者是DIR文件未包含对应的目录。(新添加CSP时).

使用同一BSP编译不同平台时,如366A切换到9362就使用arloball,并且应该关闭批处理窗口再打开,因为有些宏已经改变了。

平台选项中缺少某种语言支持时,会出现多语言的Shell中时间格式的API获取不正确,如EnumTimeFormats,
EnumCalendarInfo,GetLocaleInfo等获取得到的结果会出问题。(FG的土耳其语言BUG)

lobster用法:只编译csp的lib库,可使用lobster /a /t(在sysgen之前必须进行一次,因为sysgen需要用到csp里的lib)
      编译BSP与csp里的指定驱动并生成image,可使用lobster /l
      所有重编时应使用arloball,(ar中有些lib不会被编译到,如ne2000, pcictrl等驱动未包含在ar中,但使用lobster /c会清除掉这些lib)
      所以可以先使用lobster /a /t编译所有的CSP,然后lobster /l 不指定参数编译所有的BSP。
      
编好后的NK中出现了读取SD卡慢,系统变慢的原因为.bat文件里有个宏打开造成了驱动进入调试状态,所以特别慢。
image变慢可能是因为PB中加入了Unicode Script Processor for Complex Scripts组件,在codepage越多的情况下,系统越慢,因为每个字符都要进行处理。
这个组件是为了完成如希伯莱语等反向显示的字符串的正常显示。

9368在cmmb player全屏播放后立即进入导航,此时收不到星的问题是因为cmmb player在全屏播放时使用了GPS的DSP来处理加速,而退出后gps的dsp驱动有问题
未能即时的释放,需要shell在退出全屏后立刻调用GpsHotStar(),重启下gpslib驱动就正常了。

现有的机型中有些机器读不到2G的卡,出现挑卡的现像,是因为在SD卡的连接电路中使用的开关元件(该元件用来作安全保护用的,防止电流冲击,
实际上和开关是差不多的,但是这个元件中可能带有电容,使波形不对,因此对SD卡的频率造成干扰),因此有些卡会读不到,以2G的烂卡最为常见。

WINCE字体目录D:/WINCE500/PUBLIC/COMMON/OAK/FILES

你可能感兴趣的:(image,Build,语言,平台,WinCE,debugging)