位图问题,想在uboot启动的时候把一张图片显示到LCD上面。这时候系统还没有起来,不知道程序怎么写?
我现在能想到的方案是这样的:
@ 把bitmap图像的数据用数组的形式组织起来,然后把这些数据丢到显示缓存上面。然后让其显示在lcd上面。
现在遇到的问题是,
1;不知道bimap的数据是怎样组织的。用UltraEdit打开一张bitmap位图,里面的数据看不懂。
2;假设用数组的形式组织好数据之后怎么把他“丢”到显存上面。
3;我要实现的是在os没有起来之前就嵌入一张图片。不知道我的想法对不对?
我是一个新人,刚毕业,很多东西不懂。
请各路前辈指教!!!!!
http://blog.eeworld.net/dthxman/archive/2007/12/14/1934553.aspx
bitmap的格式你在网上一搜索,有成千上万的结果。
你首先要知道lcd控制器支持的数据格式,然后将bitmap像素一个个取出来,然后以打点的方式显示在lcd上。
做这个有2种思路:
1、做个工具把你的BMP的数据部分取出来,处理后存成数组,然后在里的uBoot初始化LCD的事后直接拷贝到
它的LCD buffer中显示
2、把bmp位图先下载到flash上,然后在你的uboot中读取出来,根据位数不同分别处理,然后拷贝到LCD Buffer
中显示
我采用的就是第二种方式,呵呵,现在支持8位,24位,16位的只能是acd see转换的16位,它是565格式的,而且没有调色板
1有专门的工具可以把bmp转换为c语言数组
2要修改bootload
首先,谢谢肖大侠;
我的是8,16,24,32,都支持。我用的powerpc的5121的芯片。里面有DIU单元。我粗看了datasheet。功能挺大的。不过我现在的要求就是要在uboot起来而内核没有起来的时候使LCD显示出我的图片。其他的以后再研究
你说的第二种方式很好,也是我想用的。
但是问题在于
1:把位图下载到flash之后怎么让uboot读取出来,要重新修改uboot,再编译吗?
2:如何拷贝到lcd 的buffer上面(我曾想到用mmap()函数。不知道是否可行)?
3:拷贝到buffer上面 是不是lcd就会自动显示出来了,也就是大功告成。
谢谢肖大侠的帮助。
我的芯片是powerpc的。里面有个DIU单元,对8,16,24,32的bitmap都支持。我现在想做的就是能够在开机的时候(在uboot起来而kernel没有起来之前)显示图片。图片的质量和其他都不管先,以后在研究也不迟。我现在也正想用你的第二种方法。但是同样也有疑问:
1;下载bmp到flash之后,怎么实现在uboot读取?
2;位数不同处理方法会有什么不同的地方?(或者我就找一个能自动把bmp转化为c语言数组的工具,这个问题应该就不用考虑了?)
3;如何实现拷贝到lcd buffer上面的操作。(用mmap()能行吗)?
有相关的例子吗,借来参考一下。
谢谢
谢谢肖大侠的帮助。
我的芯片是powerpc的。里面有个DIU单元,对8,16,24,32的bitmap都支持。我现在想做的就是能够在开机的时候(在uboot起来而kernel没有起来之前)显示图片。图片的质量和其他都不管先,以后在研究也不迟。我现在也正想用你的第二种方法。但是同样也有疑问:
1;下载bmp到flash之后,怎么实现在uboot读取?
2;位数不同处理方法会有什么不同的地方?(或者我就找一个能自动把bmp转化为c语言数组的工具,这个问题应该就不用考虑了?)
3;如何实现拷贝到lcd buffer上面的操作。(用mmap()能行吗)?
有相关的例子吗,借来参考一下。
谢谢
现在我可以做到把任何一张位图转化为一个数组了,现在就是不知道,怎么去“画点”
怎么去把数组传到buffer上面。数组没有传到buffer之前要放在哪里?