打印

如何在Linux启动时显示开机进度条?

[复制链接]
344|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
没名字的人|  楼主 | 2018-9-20 21:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当年在学校实验室,编程点亮一个LED灯就兴奋了几天!用了一个暑假实现了液晶上电的开机进度条,成就感与幸福感满满!而今,ZLG把Linux启动时显示开机进度条浓缩到了一个文件和几行代码…



本文基于ZLG ARM9开发套件,主要介绍了如何实现在Linux操作系统启动时显示开机进度条,其方法适用于其他产品。





开发主机环境:

Ubuntu 12.04(64位)、arm-none-linux-gnueabi-gcc系列交叉工具链



硬件清单:

EasyARM-i.MX257开发套件或EasyARM-i.MX283A/287A开发套件或EPC-28xC-L工控板 等



软件资源:

产品光盘资料

进度条实现的源文件:boot_process.c



一、解压内核源码包



将产品光盘资料中的linux-2.6.31.tar.bz2内核源码包复制到ubuntu系统的“~/”目录,解压可得到linux-2.6.31目录,参考命令如下:





vmuser@Linux-host:~$ tar jxvf linux-2.6.31.tar.bz2





二、复制boot_process.c文件



将ZLG提供的boot_process.c文件(可以通过400-888-4005 或发邮件至epc@zlgmcu.com索取文件或更为详细的操作方法)拷贝到“~/linux-2.6.31/drivers/video/**”目录下,如图1所示:

说明: QQ截图20150806113105





图1 复制boot_process.c



进入该目录使用vi指令编辑其中的Makefile文件:



vmuser@Linux-host:~$ cd linux-2.6.31/drivers/video/**

vmuser@Linux-host:~/ linux-2.6.31/drivers/video/**$ vi Makefile





按下“20gg”定位到第20行,然后按i键进入插入模式,输入如下所示内容:



obj-y                                      += boot_process.o





修改后这部分代码应如图2所示:

说明: QQ截图20150806114802





图2 修改后的代码



修改完毕后,保存并退出编辑器。



三、定制boot_process.c



在boot_process.c文件中定义了几个宏,可供用户参考定制自己的进度条。这些宏的定义以及用法如下所示:



CONFIG_BOOT_PROCESS,开启或关闭进度条显示功能

CONFIG_BOOT_PROCESS_BLOCK,选择启用块状进度条,与条状进度条互斥

CONFIG_BOOT_PROCESS_BAR,选择启用条状进度条,与块状进度条互斥

CONFIG_PROCESS_DURATION,延长或缩短进度条的持续时间

PROCESS_BLOCK_NUM,修改进度条每一格的填充宽度



四、重新编译内核



返回“~/linux-2.6.31”目录并重新编译内核,参考命令如下:



vmuser@Linux-host:~/ linux-2.6.31/drivers/video/**$ cd ../../..

vmuser@Linux-host:~/ linux-2.6.31$ make uImage





编译完成后生成的固件存放在“arch/arm/boot”目录下,如图3所示:





图3 生成uImage



将这个固件重新烧写进开发套件,具体的烧写过程请参考产品光盘资料中的开发指南或用户手册。



五、开机启动系统



将开发套件连接好液晶屏以及电源线,然后开机启动系统,可以看到在Linux小企鹅的下方出现了进度条,如图4所示。

说明: jindutiao





图4 开机进度条

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

420

主题

432

帖子

0

粉丝