当前位置: 首页 > news >正文

seo网站开发注意事项wordpress qq微信登录

seo网站开发注意事项,wordpress qq微信登录,成都网站建设cdcidi,在北京做网站制作一个月多少钱网上不少介绍三星24x0系列的BINFS启动方式实现#xff0c;有 些内容上描述的不是非常全面。 下面就WinCE6上的BINFS实现#xff0c;从基本原理到修改BSP #xff0c;再到如何烧录启动做一个较全面的讲解。 一 BINFS到底是什么#xff1f; 其实BINFS就是MS给CE做的一种存放… 网上不少介绍三星24x0系列的BINFS启动方式实现有 些内容上描述的不是非常全面。 下面就WinCE6上的BINFS实现从基本原理到修改BSP 再到如何烧录启动做一个较全面的讲解。 一 BINFS到底是什么  其实BINFS就是MS给CE做的一种存放系统镜像的一个文件系 统。 一说文件系统大家可能比较头大。那么这么说其实就是一个结构体(说是文件系统确实比较勉强 结构体可能更合适)里面有记录各模块的起始地址大小等的信息你要找模块可以根据这个信息到后面找。 二 为什么要用BINFS有什么好处  其实我觉得最大的好处是“按需加载系统模块到内存 ”这里衍生出两个优点 1 开机需要加载的核心部分很少大大减少开机读取系统的时间 2 不需要为操作系统预留全尺寸的内存大小只需预留最小开机核心的大小剩下的作为通用内存空间 所以使系统内存使用有了很大灵活性可用系统内存大大增加 三 BINFS的实现基础  这 里不得不说WinCE的烧写和引导方式在默认情况下大家都知道WinCE会生成nk.bin和nk.nb0。 bin其实就是nb0的压缩形 式nb0怎么可以压缩因为nb0中有很多空白区域bin是如何压缩的 很简单的描述下就是用一个结构体记录一下起始地址大小校验 和然后后面就是实际的内容 这样的一个一个结构体顺序排在一起就组成了bin这个简单的压缩格式实际上只是压缩了nb0里面不必要的0 而不是对数据做了算法压缩所以很好理解所以你用winrar等去压缩bin发现可以更小呵呵 最简单最简单的烧写和启动 WinCE的方法是 直接把nk.bin烧到存储设备上比如NAND上。假设nk.bin是30MB那么就在NAND上顺序留下30MB给 NK.bin。 启动的时候把nk.bin按照那个结构体解压到内存中跳转到起始地址就可以运行了。 但是我发现有趣的是很多开发 板厂家并不是这么做的 他们实际上是用了 BINFS来存放解压出来的系统镜像 这里大家可能比较疑惑一个问题明明很多开发板 都没有用“BINFS”你怎么说他们用了BINFS 实际上这里有一 个重要的误会BINFS是一个文件系统但是大家关注BINFS是因为想实现上面说的加快开机 和节省内存的好处实际上需要完成这种好处BINFS是一个文件系统基础真正做到将系统镜像分为两个部分 还需要用到multi-bin 技术。 所以这个就是误会所在很多开发板确实用了BINFS文件系统 但是他们只是把系统镜像全部写入到BINFS分区启动时再全部读出来这样就没有达到前面说的“好处” 怎么确定我的系统现在有没 有用BINFS 看看自己的烧写代码如果用了bootpart的库进行分区写入比如 view plain copy to clipboard print ? BP_OpenPartition(NEXT_FREE_LOC, dwNumSectors, PART_BINFS, TRUE, PART_OPEN_ALWAYS);   这里就是典型的建立了一个BINFS分区然后使用BP_WriteData将镜像内容写入到这个分区 如果你的程序没有使用这么一套机 制那么说明 你的系统没有使用BINFS。 前 面说到除了BINFS作为文件系统的支持还需要multi-bin技术那么这个multi-bin技术是做什么的呢 实际上我们想到系统 可以分为多块我们只需要把核心启动的内容放到内存中然后其它用到的从固态存储器中( 使用了BINFS文件系统)读出来就可以了这个就是我们 前面说到的“好处”的实现原理。 那么如何将系统镜像分开来这个就是需要一些BSP里面的修改了后面在实现方法中介绍。 那么最 简单的分配就是将系统镜像分为两块 一块用来存放系统启动时候需要在内存中运行的“最小内核 ” 一块用来存放系统后续需要“按需加载”的模块文件。 我 们一般也都是这么做的编译的时候我们会通过配置文件告诉系统什么地址范围是在内存中运行的内核 什么地址范围是在存储器使用BINFS存放镜像上的系统其它模块然后启动时候只需要加载最小内核 然后由最小内核使用BINFS文件系统驱动 来 读取存储器BINFS分区上的其它所需模块。 系统怎么知道那些文件在什么地址怎么知道哪些文件是在最小内核里还是存储器BINFS分区 上的 系统有记录各文件地址的结构体有了文件地址就自然知道是放在什么地方的了别忘了前面说的配置文件 里面已经告诉了各块的起止地址很容易就可以判断到。关于结构体是如何记录模块地址等内容不是本文讨论范围 这里就先放下大家知道系统有方法知道文件的地址和大小就可以了。 所以为什么一些开发板系统用了BINFS却没有那些“好处” 就是因为虽然用了BINFS文件系统但是把全部内容都 放进了最小内核所以没有达到任何的优势效果。就是说我们在实现了BINFS文件系统之后 需要做的就是将 “最小内核”和“系统其它文件”分离开来。 四 BINFS的实现  前面已经较详细的说明 了原理其实说到这里文章题目已经需要有些改变了我们实际上讨论的是“使用BINFS实现 multi-bin来节省系统内存”而不只是实现 BINFS文件系统。因为我怕标题太长大家有些费解而且很多人把这个 就称为BINFS所以才取了这个题目。实际上将这种技术单单叫做 BINFS是不准确的。 1 首先说说如何实现BINFS文件系统 前面说了BINFS文件系统是基础为什么因为分离系统镜像 之后系统“最小内核”会使用BINFS去读系统其它模 块所以我们必须将系统镜像使用BINFS文件系统写入固态存取器后面无特别说明所 有存储器均指“固态存储器 ”内存指SDRAM或DDR等程序运行介质那么我们可不可以不用BINFS用FAT理论上应该是 可以的 不过需要修改MS的系统加载模块的程序我不知道是不是所有涉及到的模块都有开源所以这个我们不讨论。 其实MS对WinCE设备 的存储器分区启动管理有点像PC的在WinCE中首先在存储器一开始存放的是MBR (master boot record,我没记错的话...)熟悉文件系统的朋友一看就明白了MBR是干什么的。MBR在CE中主要是 记录后面的存储器空间是如何分区的这个记录应该和PC上是一样的起始sector号码总共有几个Sectors 分区使用什么文件系统。但是不同的是MBR不需要承担引导代码的功能在MBR之后按照分区记录中的起始地址 就是各个分区大家不妨想象为PC上的分区只不过我们现在C盘不用FAT或者NTFS而是使用一种叫做BINFS的文件系统。 我 们需要创建修改MBR增加删除查询读取分区信息和内容。这些功能都是bootpart库里面的大家可以查询相 关内容这里不详细说明 bootpart库是如何使用的。只要了解过磁盘分区概念的朋友应该很快就可以操作bootpart函数 而且一般的EBoot在烧写这里都是有例子的。大家可以参考这里只是列出基本步骤 a) BP_LowLevelFormat 用来格式化所有存储空间 b) BP_OpenPartition 打开某个分区如果不存在可以创建该分区比如BINFS c) BP_WriteData 往分区里写数据 d) BP_ReadData 读取分区里的数据 这些是一些基本的操作函数具体实现细节大家 需要多参考EBoot里面的代码实际需要考虑的问题还可能包括整个存 储器的布局。  2 往BINFS分区中写入镜像 如果创建好了 BINFS分区那么下面要做的就是把镜像写入BINFS分区。 如果大家下载 的是BIN文件首先需要把BIN文件解压缩出来解压缩代码可以参考EBoot 里面的代码。 然后调用BP_WriteData可以写入BINFS分区详细步骤大家还是多看示例代码过程并不复杂。 3 如何将系统镜像分成多个部分 这里就是说的multi-bin的把镜像分为“最小内核”与“系统其它文件”MS帮助文件里面有How to Implement BinFS 这里将大致流程 介绍了一下。 首 先就是需要修改config.bib文件对CE比较了解的朋友知道CE的地址等配置都是在config.bib里面修改的所以 我们要去改 config.bib文件。这里可以看到现在系统对于镜像的划分例如 view plain copy to clipboard print ? Name        Address     Size        Type   NK          88200000    03000000    RAMIMAGE   RAM         8B200000    04E00000    RAM   这个很容易理解NK是唯一的一个bin文件存放RAMIMAGE这里面RAMIMAGE是关键字 告诉系统这个是需要启动的“最小内核”现在是48MB...RAM是告诉系统可用的内存起始地址和大小。 首先我们需要把NK给分开成为两 部分即“最小内核”与“系统其它文件” 修改如下 view plain copy to clipboard print ? Name        Address     Size        Type   XIPKERNEL  88200000    00400000    RAMIMAGE   CHAIN     88600000    00001000    RESERVED   NK        88601000    02BFF000     NANDIMAGE   RAM        88601000    079FF000    RAM   我们好好看下这个配置这里完成的是将系统镜像内容分为两部分。XIPKERNEL就是我们的“最小内核” 就是RAMIMAGE。 NK,就是“系统其它文件”就是NANDIMAGE(关键字不可改)。好了 这里有些问题大家可能要问。CHAIN是什么CHAIN是实现multi-bin的必须部分是告诉系统各bin文件位置的 信息。一定需 要了解CHAIN的内容其实CHAIN也是结构体...大家如果把chain.bin解压出来会发现是这个结构体。 view plain copy to clipboard print ? {   bin个数   bin信息描述结构体[bin个 数]   }   这里说的bin就是把系统镜像拆分开的子区块我们这里就是2个分别是XIPKERNEL和NK。 信息描述会记录各个bin的起始位置 实际大小和最大大小分区名称等。 实际大小就是编译出来的实际大小最大大小就是我们在config.bib里面指定的大小。 还 有一些其它的配置也需要修改 view plain copy to clipboard print ? AUTOSIZEON   COMPRESSIONON   DLLADDR_AUTOSIZEON   KERNELFIXUPSON   PROFILEOFF   RAM_AUTOSIZEOFF   ROMFLAGS0   ROM_AUTOSIZEOFF   ROMSIZE03000000   ROMSTART88000000   ROMWIDTH32   XIPSCHAIN88600000   这里你能订制的就是后面4项我这里ROMSTART88000000因为前面还有一些地址配置因为与系统镜像生成无关 所以我就没有贴上来不过为了防止大家搞不清这个88000000是怎么来的还是贴一下 view plain copy to clipboard print ? Name        Address     Size        Type   ARGS        88000000    00001000    RESERVED   VPU         88001000    000FF000    RESERVED   FRAMEBUFFER 88100000    00100000    RESERVED   88000000就是我内存映射到的起始地址这里需要注意XIPSCHAIN这个一定要设置为CHAIN的起始地址。 带了 XIPSCHAIN才会生成后面需要的xip.bin。 MS的帮助文件里面的例子是用的NK作为RAMIMAGE的名字EXT作为NANDIMAGE的名字。 当然名字不是最重要的但 是实际使用中大家会发现使用NK作为RAMIMAGE的名字亏大了为什么呢 这就是我们下面需要做的把各分区都配置好之后下面需要决定把 哪些内容放到什么分区下了。 如前面所述我们需要把启动需要的“最小内核”放到RAMIMAGE里面首先定义一下哪些是“最小内核”。 其 实说白了就是系统可以使用BINFS读取在存储器上文件所需要的最小系统文件这里其实需要了解WinCE的启动过程 但是我们并不深入到函数只是模块级的系统启动后需要初始化所以关于初始化的OAL层都需要放进来 然后我们需要使用device.exe来加载我们的存储器驱动这样才能访问存储器所以关于设备驱动加载 总线枚举的模块都要加上还有我们需要的BINFS驱动模块还有mspart分区模块不然无法找到BINFS分区的位置。 这些都是较通用的模块还有一些模块你一定要注意就是你的存储器驱动所依赖的驱动模块比如ceddk 你的bsp里的gpio驱动dma驱动等等。如果没有加入全的话就会出现加载。 不了存储器驱动也就没法找到分区没法访问 BINFS...有人说如果需要用HIVE的话还要加载FAT驱动 实际上并不需要因为我们的目的是要完成“可以访问BINFS”。boot.hv一定是要放到RAMIMAGE里的 所以基础注册表 都是有的可以让你完 成对存储器驱动的加载而这之后都可以用BINFS访问“系统其它文件”了 所以FAT驱动是不需要放到RAMIMAGE里面的在用到FAT时BINFS已经好用了同时default.hv,user.hv也都是 不需要放到RAMIMAGE里面的。如果你使用非英文的系统还有一个文件不要忘记wince .nls,少了这个你也会启动不了。 下面给出例子我相信 可以涵盖大部分平台应用 了 view plain copy to clipboard print ? MODULES       nk.exe          $(_FLATRELEASEDIR)/oal.exe                  XIPKERNEL  SHZ       kernel.dll      $(_FLATRELEASEDIR)/kern.dll                 XIPKERNEL  SHZ       coredll.dll     $(_FLATRELEASEDIR)/coredll.dll              XIPKERNEL  SH        k.coredll.dll   $(_FLATRELEASEDIR)/k.coredll.dll            XIPKERNEL  SHMK        oalioctl.dll    $(_FLATRELEASEDIR)/oalioctl.dll             XIPKERNEL  SHK        filesys.dll     $(_FLATRELEASEDIR)/filesys.dll              XIPKERNEL  SHK        fsdmgr.dll     $(_FLATRELEASEDIR)/fsdmgr.dll                XIPKERNEL  SHMK        mspart.dll     $(_FLATRELEASEDIR)/mspart.dll                XIPKERNEL  SHK        romfsd.dll     $(_FLATRELEASEDIR)/romfsd.dll              XIPKERNEL  SHK        binfs.dll     $(_FLATRELEASEDIR)/binfs.dll                      XIPKERNEL  SHK        fpcrt.dll       $(_FLATRELEASEDIR)/fpcrt.dll                XIPKERNEL  SH        k.fpcrt.dll     $(_FLATRELEASEDIR)/fpcrt.dll                XIPKERNEL  SHMK        ceddk.dll       $(_FLATRELEASEDIR)/ceddk.dll                XIPKERNEL  SHQ        device.dll      $(_FLATRELEASEDIR)/device.dll               XIPKERNEL  SHMK      udevice.exe     $(_FLATRELEASEDIR)/udevice.exe              XIPKERNEL  SHM      devmgr.dll      $(_FLATRELEASEDIR)/devmgr.dll               XIPKERNEL  SHMK      regenum.dll     $(_FLATRELEASEDIR)/regenum.dll              XIPKERNEL  SHK      busenum.dll     $(_FLATRELEASEDIR)/busenum.dll              XIPKERNEL  SHK       pm.dll       $(_FLATRELEASEDIR)/pm.dll                      XIPKERNEL  SHMK          nandfmd.dll         $(_FLATRELEASEDIR)/nandfmd.dll              XIPKERNEL  SHK      FILES       boot.hv         $(_FLATRELEASEDIR)/boot.hv                  XIPKERNEL  SH      wince.nls      $(_FLATRELEASEDIR)/wince.nls                XIPKERNEL  SHU    这里的nandfmd.dll是我的NAND驱动可以改成你自己的。可能有一些还是可以优化掉的但是我还没有尝试 大家可以给出意见。 上面这段代码放到哪里 放到config.bib最后没错是config.bib不是platform .bib。 这里再回 头来说说使用NK当作RAMIMAGE名称的缺点 大家看到我们只要把需要的模块改成XIPKERNEL就好了但是系统默认的都是用的NK这个 名字如果我们使用NK当作 RAMIMAGE的名字的话我们要把其他所有不要加进来的改名字...这个工作量太大了所以我们把NK当 作了NANDIMAGE 的名字 4 配置注册表 到了这一步还没有完成我们需要配置些注册表 其实我默认的 注册表还真没有什么需要改的 大家看看MS的帮助文件里面关于注册表的配置这里列出一些设置 view plain copy to clipboard print ? [HKEY_LOCAL_MACHINE/System/StorageManager/PartitionTable]       21  BINFS       [HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk/BINFS]       MountHidden dword:1       MountAsROM dword:1   这里不得不说一下RAM and ROM file system和ROM-Only file system 很多帖子都说用BINFS一 定要用RAM and ROM file system实际上并不是这样 使用ROM-Only file system一样可以但是大家需要记住在使用ROM-Only file system时把FAT mount为根目录 五 BINFS的烧写和启动  上面把BSP那里该修改的都修改了只要编译就可以了关于如何编译系统其实是一个非常非常重要的 问题一定要 重视参考http://www.armce.com/bbs/thread-804-1-1.html 。不正确的编译 会影响你本来应该正确的结果 下面又是一个问题现在生成了4个可以用的bin分别 是XIKERNEL.binnk.bin,chain.bin,xip.bin。 那么到底该怎么烧写呢实际上大家从大小就可以看出XIP包 含了所有其他bin的内容所以大家直接把XIP.bin下载解压 然后用bootpart的函数烧写到存储器上就可以了。 启动的时候怎么引导和原来启动系统一样但是记住不需要把全部的 xip.bin里面指定的大小都读取出来了最多 只要读你在config.bib里面指定的RAMIMAGE大小就可以了。RAMIMAGE大小 怎么确定的这个你可以先放的比较大 比如10MB然后看编译出来的RAMIMAGE分区有多大再调整一般都是3MB以内吧我这里保守的用4MB。 六 调试技巧  调试BINFS的multi-bin启动需要反复的烧写设置有一点不正确经常就是卡在某个地方对于我们用中文 镜像的就 更痛苦了release版都有30-40MBdebug版不改存储布局烧都烧不进去 我建议大家新建一个项目然后选择 thin client不妨将显示驱动也加入其他驱动都不要然后一定选择debug版本 debug版本的调试信息非常重要。花这点时间去编译一个thin client是非常值得的调试速度很快。 下面给一些调试建议 1 引导之后就死机什么消息都没有 估计是内存配置有问题或者烧写的有问题或者没有把需要的内核模块加进去。 2 死在OEMInit之后 后面应该开始加载NAND驱动了看看你的关于设备管理驱动加载和总线枚举的模块有没有加全。 如果已经有 NAND驱动的信息出来了看看NAND驱动是不是因为什么原因没有加载起来比如缺少某个dll支持。 3 其他 如果NAND正 常了BINFS没问题了大家需要根据自己的BSP来看看其他的问题。
http://wiki.neutronadmin.com/news/305864/

相关文章:

  • access如何与网站连接数据库网站开发如何设置背景图片
  • 郴州市建设局网站节能科2345电视剧网站免费
  • 做网站需要工商证吗部门网站建设的工作领导小组
  • 网站运营分析centos wordpress ftp
  • 自动生成图片的网站蒙阴蜜桃
  • 关于电子商务网站建设的现状iis 7.5 网站
  • 四川定制网站建设网站怎么搭建
  • 营销型网站建设哪家专业网站需要备案才能建设吗
  • 用node.js可以做网站吗杭州网站seo
  • 阿克苏地区住房和城乡建设局网站网站使用流程图
  • 一个域名可以做两个网站吗机房网络建设方案
  • 成立一个网站软件需要多少钱成都科技公司排名
  • wordpress知名站点上海外贸网站seo
  • 济南网站建设找凌峰wordpress修改导航
  • 深圳极速网站建设电话微信如何申请小程序商店
  • 网站域名密码杭州余杭区抖音seo质量高
  • 点点站长工具个人名义做网站能备案吗
  • wap网站生成建立门户网站的程序
  • 小网站 收入php代码删除网站
  • w78企业网站后台怎么做东莞关键词优化效果
  • 网站建设客户合同郑州网站建设丶汉狮网络
  • 网站商城制作费用今天上海最新事件
  • 做网站编辑校对jquery 选择 网站
  • 高校思政课网站建设网站排名关键词
  • 网站建设脚本语言有哪些浙江seo公司
  • HTML做网站的书籍wordpress小分类主题
  • 做公司网站建设价格网站规划作品
  • 嘉兴建设教育网站装修网站怎样做
  • 网站后台软件可以自己做吗网站建设肆金手指排名6
  • 泰安百度网站建设昆明网站建设推广