智能终端定制开发 ad
MTK/瑞芯微/高通-Android,智能模块/智能终端方案商

深度定制各类智能终端和智能硬件产品,提供硬件选型咨询、参考设计、元器件推荐、驱动开发、行业模块集成、操作系统定制与算法集成等软硬件定制服务。
contact.aspx

Android核心板产品覆盖2G、3G、4G通讯,双核、四核、八核CPU,可选的平台有MTK6580、MTK6737、MTK6750等,Android版本有5.1 6.0 7.0等。
contact.aspx

可广泛应用于低端智能POS、安防监控、车载设备、低端智能机器人、智能家居、智能硬件、工业智能手持设备、低端智能对讲设备、低端警务或执法设备、智能穿戴、贩卖机、物流柜、智能门禁系统等行业和设备。
contact.aspx

可提供以太网转串口透传,WIFI转串口透传,蓝牙转串口透传,CAN总线模拟量控制输出模块等。
contact.aspx

带3G或4G通讯功能,运行android系统,有多个串口,可以外挂各种模块:条码扫描、RFID、指纹识别、身份证识别、磁条卡、ID卡、GPS/北斗模块等。
contact.aspx

具有4G通讯功能,多个RS232或RS485接口,以太网接口,USB接口,CAN接口,多个AD输入。基于Android系统智能平台,方便APP应用开发。器件严格选型,运行稳定,质量可靠。
contact.aspx

Windows Mobile下ROM定制的原理说明
[手机开发] 2009-03-02
用WM两年了还没刷过几次机,因为我一向认为系统的应用在于软件而不是操作系统,而且刷机也有风险万一失败成了砖头就不划算了。上个星期到论坛ROM版转转,830的WM6那个多啊,实在忍不住诱惑了,刷了个WM6,不过却不是很满意,里面集成了那么多垃圾软件想删又删不掉。于是就开始研究ROM定制了,经过几天的实验,刷了十次以下机,电话短信漏了N多,总算做了个自己满意的基本纯净的WM6Pro。讲讲我得出的原理好了。

        WM的RAM一般是64MB,系统中显示的少,是除去了PAGEPOOL(高速缓存默认6MB)、RADIO、DMA、屏幕缓冲区等系统核心的部分。WM不支持虚拟内存PAGEFILE。ROM 128MB位于DiskOnChip芯片,顾名思义就是把存储芯片模拟成了磁盘,用的FAT文件系统,所以就有分区,一般用的是OS分区(就是刷机要刷的分区)和extended_rom分区(放恢复出厂设置后自动安装的OEM安装包)。还有IPL(BIOS)、SPL(加载OS,显示第2屏开机画面,如果刷机刷坏了就停这了,这时还可以利用三色屏或SD卡重新刷官方ROM,所以只要IPL、SPL不坏就不怕,而一般刷机是不刷这2部分的)、RADIO模块。剩下的就是用户可以使用的存储区(大概40多MB,FLASH ROM和U盘一样是可读写的,只是没电不丢数据)。ROM分NAND和NOR两种,现在一般用的NAND,就是制作存储卡和U盘的那种,不能直接运行代码,要调入RAM才能运行。NOR是可以直接运行代码的。

         所以刷机就是重写OS分区了,用PDOCREAD可以把整个OS分区读成一个NB镜象文件,然后把镜象解开到DUMP文件夹,就是所有ROM的文件了。文件分2种,一种是普通文件,另一种是XIP(ExecInPlace)模块,这是为了加快OS运行设计的,就是这些文件可以不调入RAM而直接在ROM执行,但因为现在都是NAND ROM,所以XIP模块其实还是要调入RAM的PAGEPOOL执行。但是由于XIP模块有很多地址信息,所以移植OS最难的就是这了。因为WM6内部版本是WM5.2所以文件结构和WM5是一样的。对DUMP进行自己需要的修改后再打包会NB镜像文件然后用PDOCWRITE通过ACTIVESYNC连接整个写入ROM的OS分区就刷机完成了。DUMP里有default.hv(包括HKCR和HKLM)和user.hv(包括HKCU)是初始注册表文件,可以转换成REG来编辑再转回去。 

        当然直接对DUMP目录进行操作太麻烦了,比如要去掉一个软件,你要删掉这个软件用到的所有文件和注册表项,要一个个找。所以就有了BUILDOS工具,他把每个软件分成一个文件夹,里面有软件的所有文件和注册表项,文件夹里的RGU文件就是这个软件所要的注册表项,DSM文件是关联信息,就是以后把 DUMP反编成BUILDOS时根据DSM的内容来确定这个软件需要哪些文件。BUILDOS生成的DUMP目录里的RGU文件可以删掉,不过别人反向生成就没有了单独的注册表项。DSM还有另一个作用是系统硬启时会从DSM里读取PROVXML文件列表,然后执行对应的PROVXML文件,所以随便直接删除DUMP里的文件是不可靠的,如果万一删到那个DSM里有PROVXML文件的话,这个DSM就被破坏了,那些PROVXML也不会被执行。所以最好是用BuildOS来制作ROM,因为那样DSM会被重新生成。

        刷机后首先要硬起(HARD RESET),出厂设置就是格式化ROM中的用户分区,这样就剩ROM文件了,干干净净。ROM分区就是\windows,里面的文件除了刷机是不能修改的,所以如果OEM商在里面装了什么软件用户是无法删掉的,只能删掉外面的快截方式。当用户把文件复制进windows时系统会把它放在用户分区,然后隐藏掉windows里的原始文件,这样看起来文件就被覆盖了,实际上ROM里的文件没有变,有人想通过这样复制一个小文件覆盖windows的大文件想节省空间是不可能的,这样只是浪费了用户分区的空间。在刷NB格式的情况是不会重新分区的,OS分区的空间没有节省的说法,因为OS分区的剩余空间不能被用户使用,所以在DUMP生成镜像的时候尽量多放点东西才叫利用,不过那又不纯了。如果用RUU刷NBF的ROM的话,用户分区会随OS分区变化,就是OS 越小用户STORAGE分区就越大。所以硬启所做的事就是把用户分区格式化了,这样就只剩一个没有子目录的windows目录,然后系统执行 initflashfiles.dat里的命令建立子目录和把一些需要的ROM文件(比如注册表)复制到用户分区,因为这些文件后期是可能要修改的。然后 initflashfiles.dat运行checkautorun.exe来检查windows\autorun.exe,然后这个autorun又执行\extended_rom\autorun.exe就是运行EXTROM分区的程序。EXTROM分区默认是写保护的,可以用程序解开,默认也没有加载点显示,可以改注册表显示为STORAGE,或者不显示就直接在文件管理器输入\extened_rom路径进入。这个分区硬启不会丢失,所以可以放入硬启后想自动运行的软件。

        WM6比WM5还是有不少改进的,主要是增强了电话基本功能(比如SP的智能拨号功能)和单手操作,其实就是像SP一样都能用软键菜单操作;加入了蓝牙 PAN和NAT,现在电脑通过手机上网就有4种方式了,2种是以前就支持的把手机当成USB MODEM或蓝牙MODEM拨号上,这种方式是电脑控制拨号,拨上了后手机就不能再拨号了。新方法是把手机当作电脑的USB或蓝牙网卡,手机充当路由器,这样是手机拨号,手机和电脑可以同时上;OFFICE MOBILE支持OFFICE 2007了;集成了.NET CF 2.0;集成了SIP IP电话,不用SJPHONE了。其他OEM部分比如相机、WIFI驱动其实还是从WM5移植来的一样的。我做的这个版本稳定性、速度、耗电基本和WM5 一样,没兴趣再倒回WM5了。

制作步骤:
        os.nb文件就是ROM中的OS分区镜象(就像GHOST文件),os.nb含有XIP和IMGFS两部分,其中XIP部分是不会到DUMP的,含有系统核心文件nk.exe、coredll.dll等,要用XIPPORT才能修改。IMGFS就是磁盘文件系统,里面包含了所有DUMP里的文件,是用 XPR或LZX压缩的。 


        所以imgfsfromnb os.nb imgfs.bin就是从os.nb里提取出IMGFS部分,而imgfstodump imgfs.bin就是把IMGFS部分解压缩到DUMP目录。然后PACKAGE TOOL根据DUMP里的package.sof和DSM文件将DUMP目录重新还原SYS和OEM分组结构便于修改ROM。


        修改完ROM后先BuildOS把SYS和OEM重新生成DUMP目录,这时还会合成所有目录下的RGU文件和ROM\XIP\boot.rgu(因为 boot.rgu的内容是在os.nb的XIP部分,而不在其他SYS或OEM目录里),然后把RGU分组转换成default.hv和user.hv。接着执行imgfsfromdump imgfs.bin imgfs1.bin就是根据imgfs.bin的压缩方式来把DUMP压缩到imgfs1.bin。然后imgfstonb imgfs1.bin os.nb osnew.nb就是把imgfs1.bin替换掉os.nb里的IMGFS部分而生成osnew.nb。这时既可以用PDOCWRITE通过 ACTIVESYNC直接把osnews.nb写入到ROM的OS分区,也可以把osnew.nb打包成nbf文件用RUU刷入。区别是RUU写入会根据 nbf文件大小调整STORAGE分区大小,而PDOCWRITE不会。

        因为NAND ROM是不能直接XIP执行的,而且IMGFS又是压缩的更不可能直接执行,所以系统会把OS分区的文件解压调入RAM中预留的PagePool执行,这就是PP的作用,PP越大则调入的系统文件越多,但是用户进程可用RAM就小,所以要找到一个平衡点,MS默认的是6MB。可见PP和电脑上的 PageFile作用是完全不同的,PageFile是虚拟内存,而PagePool是运行系统文件的内存缓冲区。如果PP为0则系统文件会直接调入普通 RAM执行。

[手机开发添加评论 | 评论/阅读(0/359)
评论
昵称
主页
内容
递交


Copyright @ 我的开发笔记     2008 - 2017         粤ICP备19155526号-1