有两种方法可以改变开机logo,编译进内核或者修改u-boot。
《一》、编译进内核
一、 制作LOGO图片(可以使用gimp)
1. 制作一个.ppm格式图片(logo_tvu_clut.ppm)
2. ppmquant 224 logo_tvu_clut.ppm > logo_tvu_clut224.ppm
3. pnmnoraw logo_tvu_224.ppm > logo_tvu_clut224_ascii.ppm
4. cp logo_tvu_clut224_ascii.ppm logo_tvu_clut224.ppm
5. mv logo_tvu_clut224.ppm ~/ingenic/.../kernel/drivers/video/logo/
二 、修改相关文件
一、修改kernel目录下的如下文件:
1、 在include/linux/linux_logo.h添加
extern const struct linux_logo logo_tvu_clut224;
2、在drivers/video/logo.c添加:
#ifdef CONFIG_LOGO_TVU_CLUT224
/* Tvu Linux logo */
logo = &logo_tvu_clut224;
#endif
3、修改Makefile:
添加 obj-$(CONFIG_LOGO_TVU_CLUT224) += logo_tvu_clut224.o
4、修改Kconfig:
添加:config LOGO_TVU_CLUT224
bool "Tvu 224-color logo"
default y
二、修改 u-boot 目录下的如下文件:
1.修改include/configs/halley2.h文件
/* #define CONFIG_LCD_LOGO */ 注释掉此行,否则如果u-boot中也存在开机logo的话,会先在LCD上显示u-boot LOGO,再显示framebuffer上的LOGO。
三、配置内核
1.Device Drivers
-->Graphics support
-> Support for frame buffer devices
2.Device Drivers
-->Graphics support
--><*>Backlight & LCD device support
--> Lowlevel LCD controls
SLCD TRULY TFT240240-2-E with control IC st7789s (240x240)
SLCDC USE TE SIGNAL
SLCDC CONTINUA TRANFER
Lowlevel Backlight controls
Generic PWM based Backlight Driver V13
3.Device Drivers
-->Graphics support
--><*>JZ LCDC framebuffer V1.3
-->set lcd gpio (lcd v13 8bit slcd)
---> lcd v13 8bit slcd
4.Device Drivers
-->Graphics support
----->Console display driver support
--------> < * > Framebuffer Console support
[ * ] Map the console to the primary display device
5.Device Drivers
-->Graphics support
---> [ * ] Bootup logo --->
----> [ * ] Tvu 224-color logo (选取哪一个取决于../kernel/drivers/video/logo/Kconfig)
eg.
config LOGO_TVU_CLUT224
bool "Tvu 224-color logo"
default y
四、编译内核及u-boot
注意:编译之前要先初始化编译环境
source build/envsetup.sh
lunch halley2_norflash-user
1、编译内核:
进入kernel目录下,执行make uImage, 会在arch/mips/boot/下生成uImage.
2、编译u-boot:
进入u-boot目录下,先执行make distclean, 再执行make halley2_v10_uImage_sfc_nor, 会在u-boot目录下生成u-boot-with-spl.bin。
将uImage 和 u-boot-with-spl.bin 烧录进X1000E核心板,开机即可显示你所设计的logo。
五、开机黑屏没有显示logo
如果出现黑屏现象,可能是由于图片像素不正确,可以先找一个像素较小的图片来测试一下是否成功,再制作与屏幕相对应的图片。
想实现logo的居中显示、拉伸显示修改、kernel/drivers/video/fbmem.c文件中的fb_show_logo_line函数(大概位于第500行左右)和kernel/drivers/console/fbcon.c文件中的fbcon_prepare_logo函数(大概位于第596行左右)。
居中显示:
(1)修改源码/driver/video/fbmem.c中的fb_show_logo_line函数。
在
//image.dx=0;
//image.dy=y;
image.width=logo->width;
image.height=logo->height;
下增加:
image.dx = (info->var.xres / 2) - (image.width / 2);
image.dy = (info->var.yres / 2) - (image.height / 2);
全屏显示:
(2)修改源码/driver/video/console/fbcon.c中的fbcon_prepare_logo()函数
在logo_height = fb_prepare_logo(info, ops->rotate);后增加下面一行代码
logo_height += (info->var.yres / 2) - (logo_height / 2);
经过以上方式重新编译内核,把uImage烧录进X1000E核心板,开机即可居中全屏显示logo。
六、Linux下LCD 10分钟自动熄屏的问题
Linux下的LCD驱动默认10分钟后会自动关闭屏幕,我们可以修改一下代码让其不自动关屏。
方法1:修改kernel/drivers/tty/vt/vt.c 文件中的变量blankinterval,设置为0;
方法2:修改kernel/drivers/tty/vt/vt.c 文件中的函数(blank_screen_t),在函数开头直接return;
七、去除开机LOGO中的光标
打开fbcon.c文件(kernel/drivers/video/console/fbcon.c)
方法一:
1.将static void fb_flashcursor(struct work_struct *work)制成空函数
static void fb_flashcursor(struct work_struct *work)
{
#if 0
...
...
#endif
}
2.同样的方法将函数static void fbcon_cursor(struct vc_data *vc, int mode)制成空函数。
方法二:
打开Makefile文件(kernel/drivers/video/console/Makefile)
#obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o
改为:
obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o
编译遇到一个soft_cursor没有定义的问题问题,注释代码:
/kernel/drivers/video/console/bitblit.c
//ABING
// if (err)
// soft_cursor(info, &cursor);
《二》、U-boot logo
一、制作logo图片,并命名为tvu_logo.bmp,把tvu_logo.bmp拷贝到u-boot/tools/logos/目录下
二、修改u-boot/tools/Makefile文件,大约在第158行
158 LOGO_BMP ?= logos/ingenic.bmp
改为 LOGO_BMP ?= logos/tvu_logo.bmp
三、在u-boot目录下,先执行make distclean, 再执行make halley2_v10_uImage_sfc_nor,会在u-boot目录下生成u-boot-with-spl.bin。
将u-boot-with-spl.bin 烧录进X1000E核心板,开机即可显示你所设计的logo。
注意:
此种方法具有局限性,不适合显示较大的logo图片,如果图片较大,u-boot-with-spl.bin大小大于烧录器所分配的空间大小,不能进行烧录(经验证15K左右的.bmp图片可以)。此种方法制作开机logo可能会出现u-boot使用过程中宕机重启的后果!
- MIPS开发板的“不二”选择——Creator Ci20单板计算机评测(芯片是君正JZ4780 ,也就是MIPS R3000,系统推荐Debian或深度,官网就有,其它语言有FreePascal和Go和Java和Python)
在MIPS架构的CPU上开发软件,当然需要使用MIPS专用的工具链来编译代码.不过一般的LINUX发行版内都有相应的配套工具链供用户使用.Ci20出厂时的LINUX发行版为DEBIAN 7.5,相应的 ...
- 手把手教你君正X2000开发板的OpenHarmony环境搭建
摘要:本文主要介绍基于君正X2000开发板的OpenHarmony环境搭建以及简单介绍网络配置情况 本文分享自华为云社区<君正X2000开发板的OpenHarmony环境搭建>,作者: 星 ...
- 开发Android应用怎么更改LOGO图标
开发安卓应用怎么更改LOGO图标,我们知道我们开发安卓程序的时候,都需要给他整一个logo,一般开发程序都会自动一个图标,我们怎么给他更换自己想要的logo图标,之前大家看过我们写的怎么安装程序到虚拟 ...
- 解密电子书之三:MCU(君正)
汉王科技,早先使用的是Marvell的Xscal(ARM架构).而后据说出于功耗与价格的考虑,汉王旗下的全线产品,除了双品牌的T61(ALEX)以外,都使用北京君正提供的产品.君正的4740,基于MI ...
- 44.Linux君正X1000-添加st7789v显示
由于板子LCD旧屏是ili9335型号的,旧屏有时候会断货,如果断货则使用一个st7789v型号的LCD 它们两个屏的区别在于初始化屏的参数不同,引脚都一样,也就是说需要使板子同时支持ili9335型 ...
- RT-thread v2.1.0修正版
RT-Thread v2.1.0是v2.0.1正式版这个系列的bug修正版.RT-Thread v2.1.0修正的主要内容包括: 这个版本经历的时间比较长,并且原定的一些目标也还未能完成(更全的POS ...
- 北京君正集成电路的Newton平台--穿戴式
版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/hellomxj1/article/details/25324125 Newton1开发平台 • 很适合 ...
- CSAW2013
竞赛地址:https://ctf.isis.poly.edu/challenges/ 第一关:Trivia Trivia意思为琐事,每题分值50,比较简单 1.Drink all the booze, ...
- 编译器的未来——我们还需要C++么?
在未来我们还需要纯C++开发模式么? 随着C++11的诞生,C++已经越来越臃肿,从03的时候就觉得C++实在是太复杂了.以一个合格C++程序员的标准来简单的来说3-5年略有小成,5-8年才可以说自己 ...
随机推荐
- Android 从服务器获取时间戳转换为年月日
用JAVA相关类转换.代码如下: Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(NumberUtils.ge ...
- Android Eclipse 安装教程 2016.06.13版
2016.8.16修改 第一步,也是最为关键的一步——修改hosts文件 为什么说是最关键的一步呢?因为接下来的操作,我们都需要连接google网,也就是要连接国外的网站.一般情况下,国外的网站是无法 ...
- 解决sql server死锁
-- 查询死锁 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys ...
- IP访问频率限制不能用数组循环插入多个限制条件原因分析及解决方案
14.IP频率限制不能用数组循环插入多个限制条件原因分析及解决方案: define("RATE_LIMITING_ARR", array('3' => 3, '6' => ...
- 多线程-实现Runnable接口
当一个任务或者函数多个线程同时调用时仅仅继承Thread是不行的.需要实现Runnable接口. 好处: 1.将线程的任务从线程的子类中分离出来,进行了单独的封装. 按照面向对象的思想将任务封装成对象 ...
- WPF在win7运行时报'Initialization of 'System.Windows.Setter' threw an exception.'
写的一个WPF程序,在win10运行好好的,在win7就报'Initialization of 'System.Windows.Setter' threw an exception.' 原来是xaml ...
- css知识框架
- JS弹出子窗口
目的 在一个主窗口中,点击一个链接, 弹出一个子窗口 , 父窗口保留 在子窗口中点击关闭, 关闭子窗口. 子窗口的位置位于屏幕的中间 实现 main.html <!DOCTYPE html> ...
- Aizu - 1379 Parallel Lines
平行直线 题意:给出一些点,这些点两两相连成一条直线,问最多能连成多少条直线. 思路:暴力出奇迹!!记得当时比赛做这道题的时候一直依赖于板子,结果却限制了自己的思路,这得改.dfs直接暴力,但是需要将 ...
- 原来PHP对象比数组用更少的内存
一直以为php的数组更节省内存,从来没有测试过,今天因为要读取一个大配置文件作为pool.做了一次测试: 得出结论是 使用对象保存数据更好,花费的内存是数组array的1/4. 测试代码 class ...