Archive

Archive for the ‘学习笔记’ Category

扩大WinCE可用物理内存

December 28th, 2008 will No comments

WinCE系统内核的源代码中默认使用28M的内存。如果在Build Option中选中Run-Time Image Can be Larger than 32 MB (IMGRAM64=1)项,那么定制WinCE的时候Platform Builder会使用64M的内存来编译。对于大于64M内存系统的定制需要做些修改。

对于x86架构的GEODE处理器(注意此处是对于Geode处理,如果是CEPC则不需要改源代码,CEPC的内存修改方法),要支持大于64M的内存必须修改源码。

首先在WinCE安装目录找到%_WINCEROOT%\Public\Common\Oak\Csp\x86\Inc\Pc.h文件,修改Pc.h中的CEPC_EXTRA_RAM_SIZE宏,CEPC_EXTRA_RAM_SIZE为总内存数减去Config.bib中详细列出的内存数。128M内存是在原来的0×02400000基础上加上0×04000000。

然后找到%_WINCEROOT%\Public\Common\Oak\Csp\x86\Oal\OEMInit.asm文件,打开oeminit.asm文件,修改“_OEMAddressTable:”的值。 _OEMAddressTable是一个非常关键的内存映射描述表,主要描述物理内存和虚拟内存之间的映射,表的每一条目有3个DWORD,依次是(VA,PA,cbSize),其中VA是虚拟内存的开始地址,一般为80000000h,PA是物理内存的开始地址,一般为0,cbSize就是CE内核支持物理内存的大小,这个DWORD是我们最最关心的,其单位是BYTE。需要注意的是,cbSize,一定要是4M Byte的倍数,因为Windows CE.NET内核中检测内存大小,是以4M Byte为单位来检测的。cbSize系统默认为04000000h,其大小为64M,我们可以将其修改为8000000h,就可以支持128M内存了。

最后重新编译生成Buildi486oal.lib。选择Platform的Build OS菜单下的Open Release Directory打开CMD命令行(直接在windows下运行cmd命令行不行,一定要从Platform的build OS菜单进入),进入 %_WINCEROOT%\Public\Common\OAK\CSP\i486\Oal目录下。然后执行:build –c和sysgen i486oal命令。然后在PB工作空间,选择FileView选项卡,找到%_WINCEROOT%\Public\Common\OAK\CSP\x86\Oal,右键后选上Run Makeimage Tool After Build,最后Build and sysgen编译生成映像NK.bin。

对于x86架构的非GEODE处理器,可以直接通过设置环境变量IMGRAM128=1,使系统可以支持128M的内存。注意config.bib文件中的代码RAM 80C00000 07000000 RAM,其中07000000代表分配的内存空间的大小,这部分空间是真实内存空间大小减去内核所占空间的结果。所以如果分配给RAM内存的空间过大,定制的系统加载之后会黑屏。

对于x86EMULATOR修改代码似乎也不能使其内存超过64M,测试了一次,失败了。

Categories: 学习笔记 Tags: , ,

ADOCE打包到WinCE NK.bin镜像中

December 22nd, 2008 will No comments

WinCE下SQLCE开发初探中说明的方式只能作为调试程序之用,其实每次调试都需要配置一次也够麻烦的,下面就讲一下如何将ADOCE的dll文件打包到内核NK中,并将数据库文件存在硬盘(CF卡)上,实现数据永久保存地方法。

一、需要将ADOCE的dll库文件打包到WinCE的windows目录下

1、 在菜单的Platform下选择Setting,再选择Custom Build Actions选项卡,在Build step:下选择Pre-Make Image选择New,然后在弹出对话框中输入

Add Files to NK.bin

copy <Path>\<File name> %_FLATRELEASEDIR%\<File name>

<File name>换成需要添加的文件
%_FLATRELEASEDIR%环境变量表示当前工程的release目录

确认后保存

2、在菜单的View下选择Parameter View,双击打开Project.bib文件进行编辑,在Files session下添加

FILES
; Name Path Memory Type
; ————– ——————————– —— —- ——————————–
<File name> $(_FLATRELEASEDIR)\<File name> NK  S

$(_FLATRELEASEDIR)对应的目录和%_FLATRELEASEDIR%相同
例如:将D盘根目录下的adoce31.dll打包,
copy D:\ adoce31.dll %_FLATRELEASEDIR%\ adoce31.dll
adoce31.dll $(_FLATRELEASEDIR)\adoce31.dll        NK     S

保持对应关系一致就可以了。

然后Build and Sysgen(此时不必做,等后面修改完了一并Build and Sysgen)
这样包含的文件默认在NK.bin的windows目录下

如果追加了新的文件需要重新Build and Sysgen
我已经改过的project.bib和project.reg文件可以到这里下载

二、替换掉dllregister.exe

每次运行dllregister.exe都会弹出一个“注册成功”的确认对话框,相当不爽。不知道如何让它静默运行,直接修改注册表完成它的功能算了。将dllregister注册之前和之后的注册表用UltraEdit比较,找出不同的写入project.reg中。

三、将数据库文件放入硬盘

NK的内核是个ROM,每次操作完之后的数据都是写入内存中,重启之后就没有了。所以必须将数据库文件放入CF上(NK.bin文件之外)。

在wince 的os定制中打开Catalog 中的Device Drivers\Storage Devices, 然后选择ATAPI PCI/IDE Storage Block Driver,右键选择Add to OS Design。

在Core OS\Windows CE devices\File Systems and Data Store\Storage Manager, 然后选择 FAT File System.右键选择Add toOS Design。然后重新Build and Sysgen。

CF卡的容量不要超过2G,fat16最大只能支持2G空间

Build and Sysgen等待完成后,将mydata.sdf(数据库文件)拷贝到CF上。在中文WinCE系统下,程序中访问数据库文件的路径为 /硬盘/mydata.sdf。

Categories: 学习笔记 Tags: , , ,

WinCE下SQLCE开发初探

December 7th, 2008 will 1 comment

WinCE下数据库开发可以选择两个自带的数据库,一个是EDB,另一个为SQLCE。EDB不支持SQL语句,操作几乎是靠调用API,感觉极不方便,所以没有选用。SQLCE支持简单的SQL语句,比较灵活。

SQLCE的链接MS推荐使用OLEDB,但是以前没有用过,所以没有采用这中方法,而使用了ADO方式。网上关于WinCE ADOCE的资料也比较多。主要是使用VOADO,而实际使用的时候发现并非那么好用。后来有找到了一个voado的示例程序,仿照示例搞定了。论坛需要注册才能下载,我将程序上传到了纳米盘,点击直接SqlCeExaple.rar下载。作者将voado做了修改,程序是在arm平台下的,实际x86下也可以使用。在硬件仿真条件下通过remote file viewer将文件上传到对应的目录就可以使用数据库了。如何将adoce集成到内核中,请看ADOCE打包到WinCE NK.bin镜像中

SQLCE本身不支持top关键字,所以分页显示比较麻烦,我的解决办法是将数据全部读出来(数据记录不多),然后通过程序控制该显示哪几条记录。上述的voado当记录为空的时候,ISEOF()函数并不能返回真,这样当没有记录的时候可能会进入死循环,为避免这种情况,读取记录之前可以先获取记录的条数,如果有记录则继续读取,没有则直接返回。

Categories: 学习笔记 Tags: , ,

VxSim不能再Tornado2.2下启动的解决办法

September 20th, 2008 will No comments

一直用VMware测试程序,没有用过VxSim今天用的时候启动不了,主要是下面两个错误提示,

error simulator failed to initialize before timeout

在netmuch的帮助下解决了,而今天又在论坛看到有人遇到同样的问题。还是将方法贴出来。

1、检查有没有安装KB917422,直接在控制面板添加删除程序中卸载

2、安装KB924867补丁,安装这个补丁之前可能需要安装KB935839

装完重启就ok了。

2008-09-21
刚开始启动VxSim显示不了结果怀疑是XP SP3的问题,将SP3卸载问题依旧。最后发现是没有在生成VxWorks.exe的工程中添加linwndml.a库。具体方法就是:
Builds->Macros->EXTRA_MODULES添加
$(WIND_BASE)\target\lib\simpc\SIMNT\common\libwndml.a

如果运行后屏幕出现一片灰色,那是因为在配置WindML的时候没有添加font的原因。

Categories: 学习笔记 Tags: ,

Ubuntu Linux下安装VMware tools

September 17th, 2008 will No comments

本来打算用cygwin gcc模拟linux环境进行编译minigui的,但是失败,由于时间紧还是改用虚拟机运行Linux,建立编译环境。而一开始又遇到了问题VMware6.0的VMware Tools似乎和ubuntu8.0.4有些不兼容,查了N多资料之后终于搞定,记录一下。

一、安装build-essential,linux-headers
sudo apt-get install build-essential  //不行则在System->Administration->Software Source中更改源
uname -r //得到系统的版本号
sudo apt-get install linux-headers-’uname -r’     //uname -r替换成上条命令的结果

二、安装VMware Tools
cd /media/cdrom0
cp VMwareTools-6.0.0.45731.tar.gz /home/mydoc
cd /home/mydoc
tar -zxf VMwareTools-6.0.0.45731.tar.gz
这时不要安装,(安装也不会成功)。
需要下载http://jaist.dl.sourceforge.net/sourceforge/open-vm-tools/open-vm-tools-2008.05.02-90473.tar.gz
解压该文件,进入modules/linux目录
将vmxnet重命名为vmxnet-only(可使用sudo mv vmxnet vmxnet-only),其他也改为如对应的xxx-only。
分别执行tar -cf xxx.tar xxx-only;
然后xxx.tar复制到vmware-tools-distrib/lib/modules/source目录。
cd vmware-tools-distrib
sudo ./vmware-install.pl

然后一路回车,应该就搞定了。

PS:在没有安装VMware Tools情况下,VMware和XP共享文件采用了光盘镜像.iso文件。

Categories: 学习笔记 Tags: ,