8599|23

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince bootloader启动界面 [复制链接]

最近学习关于bootloader启动界面设置,以前一直用的是小图,启动每问题,现在需要在LCD上显示一张大图(大约有600k左右),用const定义一个大数组,结果发现编译出错:compiler limit : internal heap limit reached; use /Zm to specify a higher limit。查看msdn,说是堆比较小,需要在/Zm后面修改参数,网上可是这么解决的。我的问题是:
1 网上说的方法基本上都是应用程序开发出现的问题(VC++),而我用的是platform builder4.2开发bootloader,没有找到设置 /Zm 参数的地方,请各位知道的麻烦告知,谢谢!!、
2 个人感觉需要配置相关文件的参数从而达到解决问题,但不知从何入手,望大虾指点迷津。。
此帖出自WindowsCE论坛

最新回复

这样做应该就可以了。。。。。。。。。。  详情 回复 发表于 2008-11-24 16:37
点赞 关注
 

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
贴出来代码来看看,我觉得未必是你说的原因。
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
由于代码比较多,现就大致流程如下:
1 首先在文件中定义个常量大数组,大概有600k;如:const unsigned char XXX[640*480*2]
2  然后在显示图片的地方利用for循坏把上面的数组都拷贝到相应的buffer里面
基本上流程就是这样,利用这种方法,以前小图片没有问题,但是换了大图片(大数组)就出现如撒谎能够问题,请指教
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
boot好像有64K的限制吧(我的就是),就算可以加大估计也不可能到这么大吧,所以图片只能用一个小图片。
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
  1. // Display a bitmap image on the LCD...
  2. // 这是在OAL 中Initdisplay函数中显示图片的方法。
  3.   destframebuffer=(unsigned short *)IMAGE_FRAMEBUFFER_UA_BASE;
  4.   srcframebuffer=(unsigned short *)ScreenBitmap;
  5.   memset((void *)IMAGE_FRAMEBUFFER_UA_BASE, 0xff, LCD_ARRAY_SIZE_TFT_16BIT);
  6.   //memcpy((void *)IMAGE_FRAMEBUFFER_UA_BASE, ScreenBitmap, (240*320*2));
  7.   //Show your logo here
  8.   for(j=0;j<100;j++)
  9.       for(i=0;i<240;i++)
  10.   *(unsigned short *)(destframebuffer+((110+j)*LCD_XSIZE_TFT)+i)=*(unsigned short *)(srcframebuffer++);
复制代码

我想你的在bootloader也类似。
你是使用静态数据的方法。觉得不怎么好,照着这个弄一下。
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 constantine 的回复:
boot好像有64K的限制吧(我的就是),就算可以加大估计也不可能到这么大吧,所以图片只能用一个小图片。


看是使用什么BIOS了,如果修改巧妙,600K都没有问题。
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
我最近刚编译通过 loadcepc.exe 用的是640*480的BMP图片,的确DOS显示一个页是64K 但如果要全部显示就要5个页,数据要分开的,但是能显示的。
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
是不是定义了局部变量?全局变量试试看。。。
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
把图片数据写到Flash的某个位置,起动的时候读出来显示不就完了,再大也没有关系
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
你的图片太大, 就算编绎通过了你的bootloader也太大.
为什么不把图片放在Flash某一个位置呢? 启动时把它从Flash中读入LCDBuffer中就完事了.
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
谢谢各位的指点!
1 接gooogleman的所示的方法,有一点想问一下,你的代码中ScreenBitmap也是一个数组吧,在哪定义的呢?全局?局部?
2 事先把图像文件放到flash中,有想过,不过有点难度,想问的是如果用这种方法,图像数据直接以.bin格式存放吗?还是其他格式?
谢谢指点!
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

12
 
ScreenBitmap 三星开发包中也是个常量数组吧。只要你不能突破尺寸大小就没有用,依然编译不了。
另外,先不管格式,在boot中能读硬盘上的文件吗?
此帖出自WindowsCE论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

13
 
我们现在用的是norflash启动,我想如果想要从中读取文件的话,首先必须把文件烧进去,不过这有点难度。。。
另外由于当时文件系统还没有初始化,所以不知道按什么格式存放才能直接从norflash中获取数据,也就是说norflash存放的全部都是象素的数据?
此帖出自WindowsCE论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

14
 
另外补充一下,编译的错误为:error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit。
请问/Zm这个参数在哪修改??找了一天了
此帖出自WindowsCE论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

15
 
lz,我以前试过在eboot启动时显示另一张图片(挺大的,具体多少忘了),也是添加数组。编译是没错,但是eboot.nb0就是没有生成。当时检查了半天也不知道哪里的问题,后来倒退回去,发现是这个操作引起的,后面就没做下去了。
你的bootloader编译的时候是有大小设置的,添加的数组太大编译通不过。

象楼上各位建议的,烧到nand中,再读出来。那你需要在你的bootloader中添加这项功能了,类似于down image的操作。再在你bootloader启动时读出来。具体没做过,呵呵。
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

16
 
接constantine的方法,如果可以从flash中读取数据的话,请问如何存放图像文件???
此帖出自WindowsCE论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

17
 
放在OAL里面,就是我提供的代码的哪里,你很容易找到。
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

18
 
引用 14 楼 yy080808 的回复:
lz,我以前试过在eboot启动时显示另一张图片(挺大的,具体多少忘了),也是添加数组。编译是没错,但是eboot.nb0就是没有生成。当时检查了半天也不知道哪里的问题,后来倒退回去,发现是这个操作引起的,后面就没做下去了。
你的bootloader编译的时候是有大小设置的,添加的数组太大编译通不过。


生成不了nb0文件就是因为图片太大导致eboot会过大而不能正确生成, 可以作如下修改:
1: boot.bib中的
    EBOOT    80038000  00040000  RAMIMAGE
    BINFS    80080000  00021000  RESERVED
   把这个大小调结下, 比如我的的里是00040000改为更大, 同样BINFS起始地址也修改
2: boot.bib中的
    ROMSIZE= 00040000  
   把这个也调大.

这样就能正确的生成eboot了.

还是建议楼主把图片的RGB数据存入flash中, 这个并不难. 只要你的flash读写没问题.

如果不存flash, 把ScreenBitmap作为一个全局的吧,比如一bitmap.c中就放一个数组 g_ScreenBitmap[600000] = {..}, 同时要修改bib文件以正确的生成.
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

19
 
学习,标记一下。
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

20
 
PB帮助文件里面有对编译器的各个命令参数说明的!!!自己好好找一下,看了就应该能够明白!!!
此帖出自WindowsCE论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表