问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何修改嵌入式linux启动进度条

发布网友 发布时间:2022-04-22 11:46

我来回答

3个回答

热心网友 时间:2023-06-22 10:54

1.分析
ARM-Linux启动时会先在LCD左上角显示一个ARMLINUX的小企鹅图案,也就是我们所说的bootlogo。
首先分析一下Logo的显示代码:
不难发现Logo显示是在加载显示驱动fb后由kernel/drivers/video/fbcon.c中的fbcon_show_logo函数来完成的。
fbcon_show_logo函数中有很多兼容性代码,不是都会用到的!
再仔细看一下,这里用到的显示数据均来自kernel/include/linux/linux_logo.h。这里同样也有一些兼容性的数据,其中对我们有用的是:
linux_logo_red[] —— 调色板中的红色分量
linux_logo_green[] —— 调色板中的绿色分量
linux_logo_blue[] —— 调色板中的蓝色分量
linux_logo[] —— Logo图案的点阵
以上数据都是不需要你修改的在fbcon_show_logo里只做了256色的显示,所以要先设置一个RGB调色板。这里的调色板是从0x20色开始编的,所以实际好象只有最多224色的显示。linux_logo.h里默认是做了一个214级的灰度调色板,如果想要更多色彩的话可以自已修改(注意调色板的颜色不能超过224种)
再看linux_logo[],这是Logo图案的点阵。因为是256色的图,所以每点为一个Byte。Logo图案是80*80大小,所以这里总共有6400 Byte。一共是800行,每行8 Byte即8 Point,每10行数据对应Logo图案中一行。可以先自己试试放一些简单图形进去显示看看。(同样注意颜色要从0x20开始,0-0x1f的32种颜色是不确定的)。
  
                          
以上分析是针对系统原版内核256色80x80的启动图标的说明。而我们要通过修改或替代原内核文件,来实现我们制做公司的的启动图标,要求如下:
1.开发板起动以后以全屏显示即240x320模式显示
2.图像以224色彩显示
2.方案设计
当然你不会只想显示一些简单图形,而是希望能把自已做的图片放上去。建议使用PhotoShop8.0这里提供三个方法加工图片:
1)先搞一个256色调色板,前面32个颜色空着,把后面224种颜色设一下吧。注意要尽量把颜色选全一些,要能覆盖到整个颜色区域上。这样就有一个通用的调色板,可适用所有图片,但颜色的真实性稍差。然后把自己的图片打开,先将颜色设置到RGB空间里,然后裁剪/缩放到240x320象数的尺寸,再将颜色优化到先前定义好的调色板里,图片就加工好了。
2)不用通用调色板,打开自己的图片,先将颜色设置到RGB空间,裁剪/缩放到240x320象素的尺寸,然后指定优化为224色图象。这样图片就加工好了,但其调色板就是专用的,不适合用到其他图片里。
3)GIMP+FBLOGO GIMP为LINUX下一个绘图程序,我们使用它打开图片后在菜单栏先择: 图片->模式->索引颜色,然后通过工具选项将图片大小调整到240x320象数大小,保存为.png格式。在使FBLOGO工具将其转换成linux_logo.h文件。
使用前两种方法加工图片,还需要把数据放到我们的linux_logo.h里。调色板可以直接保存为文件,然后可以通过自制的小程序读出来就可以了。图片的点阵比较难取,当然也可以自己做个程序去取屏幕上的点,不过比较困难。而后一种方法使用fblogo工具将用GIMP转换的图片文件自动生成linux_logo.h文件。
3.最终实施方案
通过以上内容分析,我们确定使用第三种方法GIMP加fblogo工具的方案进行实施,以下我们制做的流程及其方法:
软件环境:linux虚拟机、fblogo工具、linux下的图像编辑工具GIMP
硬件环境:X86PC机一台、优龙ST2410开发板一个、交叉网线一条。
1.调试并编译开发板所相对应的内核包,调试通过后保留.config配制文件,准备编译bootlogo时使用。
2.在linux上解压fblogo_0.52.tgz包,并进行软件安装,生成fblogo二进制可执行文件。
3.进入linux的kde图形界面,在终端下使用gimp命令运行gimp工具。
4.打开公司的logo.jpg图像文件,依次选择 图像->模式->索引颜色、并将其图片大小调至240x320象素,最后将文件保存为logo.png格式。
5.将上述文件保存到fblogo工具所在文件夹,首先在命令行下执行convert –colors 223 logo.png logo.png 将文件保存为224色素(目前fblogo工具仅支持到224色),接着再使用fblogo logo.png linux_logo.h 生成linux_logo.h内核启动代码中的图像缓冲区文件格式。
6.将linux_logo.h文件拷贝到kernel的include/linux目录即可。
7.重新编译linux系统内核,将生成的zImage内核镜像拷贝到windows下,准备对目标板进行烧写。
8.用串口将目标板与PC主机相连,接通电源,使用bnw工具进入目标板的bios程序并将生成的zImage内核镜像拷烧写到板子上,重起目标板,你会发现目标板上已经出现了美丽的logo图片。如果没有,请核对以上的步骤,并重新测试直到成功为止。
4 方案总结
4.1 方案实施过程中的关键问题
1.确保内核能够正常运行,编译时对开发板各硬件的驱动支持及其相关的配制,启动后能够自动加载文件系统。
2.安装fblogo工具,fblogo工具的编译需要使用到第三方的库文件libpng.so库以及zliba.a库的支持,编译成功后,在命令行试运行fblogo 如果安装成功将出现其使用的帮助信息。
3.fblogo工具对图片的要求是仅支持PNG格式的224色图片。
4.最后针对不同的开发板的LCD显示屏应使用与其相适应的图片大小,否则可能使系统无法正常工作。
4.2 方案实施后的遗留问题
由于使用到了logo的制做工具fblogo 所以图片在色彩上最大仅能支持到224色图片,在bootlogo启动文件linux_logo.h中有图像的色彩域点阵代码(即图片的16位进制的代码),如有需要可以自行修改,但其难度可想而知,建议可以将图片保存为TIF之类的非压缩格式,然后自已编写小程序将其从图象文件中的固定位置取点阵数据。
5 2.6内核启动Logo
在配置内核的时候选中了启动Logo的支持。
使用下面的方法可以将企鹅的Logo换成自己喜欢的任意图片。
首先准备一幅自己喜欢的图片,然后将背景涂成黑色。然后将该图片保存成png格式,例如linuxlogo.png。在Linux下使用下面的命令:
# pngtopnm linuxlogo.png > linuxlogo.pnm
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
然后用生成的linuxlogo224.ppm替换/usr/src/linux-2.6.8.1/drivers/video/logo/logo_linux_clut224.ppm(最好先做好备份),然后删除同一目录下的logo_linux_clut224.c文件,重新编译内核,启动之后就可以在屏幕左上方看到自己的Logo了。

热心网友 时间:2023-06-22 10:55

嵌入式平台的启动主要分为三个部分:

1.bootloader

2.kernel

3.roofs

这三个过程都可以设置logo或进度条,我的硬件平台是ti的dm3730+nandflash,

软件是x-loader+u-boot+linux。

bootloader:

x-loader完全是可以显示logo的,引人x-loader的原因就是u-boot体积过大,cup的片内ram很小,所以将logo转换后的bin文件链接进x-loader是肯定不行的,当然可以使用外部加载的方式实现,但是我有两个原因不愿意这么做:

1.我们现在产品没有完全关闭电源的功能,所以所谓的关机只是x-loader在运行,它关掉了所有外设,所以在x-loader中显示logo显然是不合理的;

2.开机过程中x-loader运行时间极短,所以也没必要在这个过程中增加logo。

uboot,我不知道u-boot是不是提供了已经实现的logo方法,反正我的方法是编写一个了一个dss初始化函数,并将logo转换后的bin文件链接进去了,这虽然导致了u-boot从原先的240Kb剧增到1900Kb,但是效果很好,如何在u-boot中添加logo,参阅我这篇文章。

kernel:

没什么好说的,kernel对logo的支持很好,添加与logo位置的调整可以看这里。

rootfs:

根文件系统的加载一般是比较耗时的,所以进度条就比较重要了

热心网友 时间:2023-06-22 10:55

这要看你的启动条是如何实现的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 胎毛笔,脐带章,手足印这些宝宝纪念品哪家做的好价格 嵌入式linux是分时系统还是实时操作系统? 嵌入式linux系统移植包含哪三部分内容 宝宝手上沾了红印泥吃手完了对孩子有什么影响吗 在医院出生的新生儿为啥都要留脚印呢? 嵌入式Linux操作系统的目录 小时候的玩具,是一个盒子,里面有好多小铁棍,可以上下颠倒。把手放在上面按就变成手想形状了 孕妇活动送什么礼物最实用 嵌入式Linux基础知识0什么是真正的实时操作系统 孩子手脚印怎么做? 关于嵌入试LINUX系统的资料谁有,谢谢! 婴儿婴儿出生都需要脚印泥吗 怎样将gps的时间写进嵌入式linux中 自己的指纹,有什麼设备可以扫描到电脑裏 jpg? 嵌入式 linux 系统掉电后的utc系统时间是多少 嵌入式Linux系统中的时区问题怎么解决 给宝宝印手脚印用什么印泥好 嵌入式linux的时钟频率可以修改吗 印泥干了怎么办? 想做个研究美食制作食谱类app求帮想几个好听的名字谢谢 谁能帮我写一个外卖的朋友圈推广广告词 这个美团外卖广告女主角是谁? 美团外卖广告视频里面说中午吃啥的女生是谁啊?求网络大神们告知! 在美团外卖投放广告效果怎么样 美团外卖广广告里的这个女的叫什么? 美团公司为什么要给外卖小哥头上安耳朵? 美团外卖广告的女主角是谁? 美团外卖广告上说中午吃啥的那个女的叫什么啊 美团外卖做搬家广告 戴尔电脑如何更改bios引导方式 戴尔笔记本 inspiron 3505 bios设置 戴尔笔记本bios怎么改引导 怎么将戴尔笔记本电脑的BIOS重置? 微信怎样可以快速加到100好友 微信有什么方法一天内可以加100个好友 加微信赚钱 100个怎么赚钱 怎么搞到100个 10元加100个企业微信好友