初学者入门篇-----config.bib学习

//-------------------------------------------------------------------------------------------------

// Topic:初学者入门篇——config.bib学习

// 作者:gooogleman

// 版权:桂林电子科技大学一系科协wogoyixikexie@gliet.gooogleman

// 平台:wince5.0 2440 5.0 BSP (飞凌FL2440开发板)

// 发布日期:2009年11月22日

// 最后修改:

//技术论坛:http://www.armce.com/bbs/index.php

// 注意事项:商业网站未经作者同意不能转载,否则追究责任!

//-------------------------------------------------------------------------------------------------

作者:gooogleman
   呵呵,晕死了,公司调休,今天还要上班,不过昨天我把动态调整camera的驱动和应用都做好了。QQ也没有啥人,还是写一篇入门文章吧——config.bib
   config.bib是配置wince系统内存的,呵呵。其实PB帮助写的很详细了,我现在只是补充一点个人经验而已,非常菜鸟,希望对新手有点帮助。下面就以飞凌的FL2440 BSP中的config.bib为例子。
MEMORY
    NK                                80200000  02200000  RAMIMAGE
    RAM                                82400000  01c00000  RAM
——》RAM就是 wince系统控制面板上显示的内存总量,如果还有不连续使用的内存,那么就会再次加上。PB帮助如下
Specifies the range of virtual addresses available to the kernel for allocation to running processes and the RAM-based Windows CE-based file system. The region must be contiguous. Do not reserve memory in the middle of a RAM section. Doing so creates two noncontiguous regions of memory, which is the maximum supported by Windows CE.(wince支持最大两块不连续的内存!) If you need to reserve memory in the middle of your RAM allocation, a portion of free RAM is reported in the Config.bib file and the rest is reported when the kernel calls OEMGetExtensionDRAM or pNKEnumExtensionDRAM.——有非连续内存就是用这两个函数实现,O(∩_∩)O哈哈哈~俺的128M SDRAM就是这么做成功的。RAM sections must be page aligned.——》还必须夜对齐!

——》RAMIMAGE
Specifies that the region should be treated like RAM. The memory addresses in this entry can physically correspond to RAM or to linear flash memory. This memory-type value is useful when loading the ROM image into RAM during the development process or when burning the run-time image onto a single ROM.
RAMIMAGE有点像RAM,他的内存地址入口和RAM或者线性flash内存对应。意思就是说80200000(虚拟地址)会和实际的内存地址对应上,具体是哪个要看内存映射表。这个内存用来加载ROM image 到RAM:这就是为什么wince控制面板里面显示的内存大小不是实际的物理内存大小的原因,正确的应该是=实际物理内存大小-RAMIMAGE size(如果实现了XIP ,就会节省内存,呵呵,这个我也没有做过)
------------------------------------------------------------------------
The kernel copies all writable sections for an application into RAM and fixes the memory addresses prior to starting the application process.
------------------------------------------------------------------------
The name used to describe a RAMIMAGE section must be the same name used in the .bib file that specifies the modules and files to add to the run-time image.
?这是啥意思???
-------------------------------------------------------------------------
Romimage generates one .bin file for each RAMIMAGE entry.
Romimage会给每个RAMIMAGE 项生成一个bin文件(bin文件是微软自己弄的一套格式,主要是压缩并且加入一些组织信息,以利于binfs等实现XIP)
After you run Romimage, all noncompressed executable code is fixed up to run at a virtual address in slot 0, which is an address space created by the kernel.
——》当运行Romimage的时候,所有非压缩的可执行代码就会固定到slot 0中的虚拟地址运行,(slot 0是由内核创建的地址空间,呜呜以前看过,现在都有点忘记了,呵呵,大家一起交流,一起进步!)

The actual source code resides in the address range specified in the corresponding RAMIMAGE entry.
——》实际的代码驻留在RAMIMAGE 项对应的地址范围

 

下面都是预留给DMA使用的,注意要连续分配,产生空洞后系统是不能使用的,会浪费掉,至于AUD_DMA 等名字是可以自己随便命名的。
并且下面的启示地址在驱动中要对应上,不然就会出问题。拿显示驱动来说吧   80100000  这个东西是要在显示驱动或者LCD buffer显示中用到的。
; Common RAM areas
        AUD_DMA             80002000  00000800  RESERVED
        SDIO_DMA            80010000  00010000  RESERVED
        ARGS                80020800  00000800  RESERVED
        DBGSER_DMA          80022000  00002000  RESERVED
        SER_DMA             80024000  00002000  RESERVED
        IR_DMA              80026000  00002000  RESERVED
        SLEEP               80028000  00002000        RESERVED
        EDBG                80030000  00020000  RESERVED
        DISPLAY             80100000  00100000  RESERVED   

CONFIG
    COMPRESSION=ON
    KERNELFIXUPS=ON

IF IMGPROFILER  
    PROFILE=ON
ELSE
    PROFILE=OFF
ENDIF

;
; ROMFLAGS is a bitmask of options for the kernel
;   ROMFLAGS    0x0001      Disallow Paging
;   ROMFLAGS    0x0002      Not all KMode
;   ROMFLAGS    0x0010      Trust Module only
;
IF IMGTRUSTROMONLY
    IF IMGNOTALLKMODE
       ROMFLAGS=12
    ELSE
       ROMFLAGS=10
    ENDIF
ELSE
    IF IMGNOTALLKMODE
       ROMFLAGS=02
    ELSE
       ROMFLAGS=00
    ENDIF
ENDIF

        ROMSTART = 80200000——》看看合RAMIMAGE有啥共同之处?一样的
        ROMWIDTH = 32
        ROMSIZE  = 02200000——》看看合RAMIMAGE有啥共同之处?一样的
据我经验这个ROMSIZE  就是nk.nb0的大小,即使你的nk.bin只有1M,他也会是等于02200000,实际运行的是nk.nb0,所以大家要注意,组件不要选的太多,否则就会打包失败!

  呵呵,还有一些细节等我以后再补充了。总之PB帮助都有的,现在想干啥,看PB帮助就OK了,很多教材都是根据他改动过来的。

转载请标明:作者wogoyixikexie@gliet.桂林电子科技大学一系科协,原文地址:http://www.cnblogs.com/wogoyixikexie/http://www.armce.com/bbs/index.php(或者我在CSDN的博客:http://blog.csdn.net/gooogleman)——如有错误,请到留言指出;如果你有更加好的方法,也请在http://www.armce.com/bbs/index.php发帖指点,我会感激你的批评和分享。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gooogleman/archive/2009/11/23/4854218.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值