嵌入式爱好者

查看: 10998|回复: 1

wince6.0操作系统层修改终极解决方案

[复制链接]

69

主题

184

帖子

338

积分

RK3568通行证

扫一扫,手机访问本帖
发表于 2012-10-19 16:30:26 | 显示全部楼层 |阅读模式
1:启动画面更改
第一步:准备一张800*200BMP图片,背景为黑色,将他转换成.hC语言文件,转换为C语言文件后大小不能超过512KB
第二步:修改eboot中的main.c文件,增加#include "logo.h",找到mv_initPrimary(&s);在其后的mv_textOut(20, g_dwLcdHeight-20, EBOOT_VERSION, mv_RGB2Color(0, 255, 0));这段代码的意思是开机输出版本信息文字提示,可以注释掉,增加如下代码:
for(i = 0; i < 800 * 200; i++)
{
  PWORD pWord = (PWORD)gImage_logo;
  PWORD pFrmBuf = (PWORD)IMAGE_FRAMEBUFFER_UA_START;
  pFrmBuf[i+800 * 200] = pWord;
}
第三步:重新编译eboot生成EBOOT.bin文件,覆盖原来EBOOT.bin文件即可
2:增加IIS服务
打开Catalog Items View,依次打开Core OS>CEBASE>Communication Services and Networking>Servers>选中Web Server(HTTPD)重新编译即可。
3:开机自启动
思路:每次系统启动后,都自启动WinceRun.exe,通过WinceRun.exe再去启动其他需要启动的程序,通过读取配置文件自定义启动开机程序,这样可以增加灵活性。
C#编写好WinceRun.exe程序,开机自启动,程序启动后,检测NandFlash中是否存在WinceRun.xml文件,不存在则不启动任何文件。存在则启动第一个EXE文件,这样的话每次只需要将程序和对应启动配置文件WinceRun.xml拷贝到NandFlash根目录即可。
设置WinceRun.exe为开机启动:
第一步:准备好需要自动运行的程序: WinceRun.exe
第二步:将应用程序WinceRun.exe拷贝到该路径下:\WINCE600\OSDesigns\S3C6410_DEMO\S3C6410_DEMO\RelDir\Samsung_SMDK6410_Release
第三步:新建一个名为 WinceRun.txt 的文件,里面填入以下内容:10#\Windows\WinceRun.exe
之后将该文件重命名为:WinceRun.lnk
第四步:修改 project.bib 文件,在 FILE 下添加
WinceRun .exe $(_FLATRELEASEDIR)\ WinceRun .exe NK H
WinceRun .lnk $(_FLATRELEASEDIR)\ WinceRun .lnk NK H

第五步:修改 project.dat 文件里添加
Directory("\Windows\Startup"):-File("WinceRun.lnk","\Windows\WinceRun.lnk")
第六步:修改 shell.reg
[HKEY_LOCAL_MACHINE\init]
"Launch50"="explorer.exe"
"Depend50"=hex:14,00, 1e,00
后面添加
"Launch80"="WinceRun.exe"
"Depend80"=hex:1e,00(这里1e前面没有空格)
4:中文输入法
WINCE上面自带没有中文输入法,需要自己加进去,办法很多,例如拷贝文件然后修改注册表然后重新编译烧写系统,而我这个办法呢,有点邪门!呵呵呵!直接C#代码来执行!
我这里准备的是万能拼音输入法的WINCE版本,默认是一个CAB安装文件Wnpy.ARMV4.CAB,首先第一步要找到这个输入法安装后增加了哪些文件,存放在哪个目录(一般默认Windows,用解压软件解压出来,有一些类似00WnpyCE.002的分卷压缩文件,找到_setup.xml,这个就是CAB安装文件的执行过程,用记事本打开,有一些这样的节点:
<characteristic type="FileOperation">
<characteristic type="%CE1%\wnpy" translation="install">
<characteristic type="MakeDir" />
<characteristic type="WnpyUnReg.exe" translation="install">
<characteristic type="Extract">
<parm name="Source" value="WNPYUN~1.001" />
</characteristic>
看到没,WnpyUnReg.exe,这个根据名称理解应该是反注册工具,依次可以找到包含如下文件WnpyUnReg.exeWnpyReg.exeWnpySetup.dll(这三个存放在用户安装时选定的目录下面的wnpy文件夹下)WnpyCE.dll(输入法核心文件,所有调用算法都在里面),Total_MB.txt(输入法的数据库文件,可以用记事本打开,里面就是词汇,拼音对应汉字),findIndex.idx(索引文件,快速检索词汇),Total_MB.idx(索引文件),(这四个文件放在Windows目录下),这样的话,我们首先安装一次,然后从对应文件夹拷贝这些文件出来,放到目录wnpy,输入法一般还会在注册表中注册,所以必须在注册表中增加对应的项,C#中注册表操作很方便,RegistryKey,需要引入命名空间,using Microsoft.Win32;方法如下:
#region  注册万能拼音输入法
        public static void LoadPinYin()
        {
            //创建注册表项
            RegistryKey BaseKey = Registry.ClassesRoot;
            RegistryKey CLSIDKey = BaseKey.OpenSubKey("CLSID", true);
            //创建万能拼音注册表项并赋值
            RegistryKey PinYinKey = CLSIDKey.CreateSubKey("{85EDDFAC-6799-4C3E-A627-E3CC1D28E0B1}");
            PinYinKey.SetValue("Default", "万能拼音", RegistryValueKind.String);
            //创建子项并赋值
            RegistryKey PinYinKey1 = PinYinKey.CreateSubKey("DefaultIcon");
            PinYinKey1.SetValue("Default", "\\NandFlash\\wnpy\\WnpyCE.dll,0", RegistryValueKind.String);
            RegistryKey PinYinKey2 = PinYinKey.CreateSubKey("InProcServer32");
            PinYinKey2.SetValue("Default", "\\NandFlash\\wnpy\\WnpyCE.dll", RegistryValueKind.String);
            RegistryKey PinYinKey3 = PinYinKey.CreateSubKey("IsSIPInputMethod");
            PinYinKey3.SetValue("Default", "1", RegistryValueKind.String);
            //拷贝文件到Windows目录
            CopyFile("Total_MB.idx");
            CopyFile("WnpyCE.dll");
            CopyFile("findIndex.idx");
            CopyFile("Total_MB.txt");
        }
        static void CopyFile(string FileName)
        {
            try
            {
                if (!File.Exists("\\Windows\\" + FileName))
                {
                    File.Copy("\\NandFlash\\wnpy\\" + FileName, "\\Windows\\" + FileName, true);
                }
            }
            catch { }
        }
        #endregion
这样的话只要发布软件的时候将wnpy目录拷贝到NandFlash目录下,然后程序里面在main函数中执行LoadPinYin()即可!简单吧!呵呵!
static void Main()
        {
            myHelper.LoadPinYin();
            Application.Run(new frmMain());            
        }


文档下载: WINCE操作系统解决方案.zip (6.08 KB, 下载次数: 38)
该会员没有填写今日想说内容.
回复

使用道具 举报

robert 该用户已被删除
发表于 2013-3-7 10:57:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-23 21:48

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表