有两种方法可以改变开机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年才可以说自己 ...
随机推荐
- 【转】Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
概要 前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对Linked ...
- pptp服务故障
pptp服务故障记录 原文地址:http://www.cnblogs.com/caoguo/p/4994512.html 1.pptp部署是遇到开了防火墙端口不能拨号,拨号是提示错误如下: 但是关闭防 ...
- C# 调用指定打印机 (并不是默认)
this.printDocument1.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; this.pr ...
- CAD保存DWG文件,设置保存的文件版本号和密码
主要用到函数说明: MxDrawXCustomFunction::Mx_SaveDwgEx 保存DWG文件,可以设置保存的文件版本号和密码,详细说明如下: 参数 说明 IN CString sFile ...
- 构建秘钥对验证的SSH体系
构建秘钥对验证的SSH 体系 首先先要在ssh 客户端以root用户身份创建秘钥对 客户端将创建的公钥文件上传至ssh服务器 服务器将公钥信息导入用户root的公钥数据库文件 客户端以root用户身份 ...
- uvalive 3231
3231 - Fair ShareAsia - Seoul - 2004/2005You are given N processors and M jobs to be processed. Two ...
- 【原创】基于NodeJS Express框架开发的一个VIP视频网站项目及源码分享
项目名称:视频网站项目 开发语言:HTML,CSS(前端),JavaScript,NODEJS(expres)(后台) 数据库:MySQL 开发环境:Win7,Webstorm 上线部署环境:Linu ...
- for循环提高内存访问效率的做法
今天写程序的时候突然想到一点,记录一下: 计算机内存地址是线性排列组织的,而利用for循环对高维数组结构进行遍历处理的时候,要保证最内层for循环遍历的是高维数组的最低维度,这样可以最大化利用CPU的 ...
- wget扒网站
wget神奇操作 整站复制 只限静态网页 wget -P 指定下载路径 -p 获取显示HTML页面所需的所有图像 -k 使链接指向本地文件 -H 递归时转到外部主机. wget --mirro ...
- odoo api介绍
odoo api修饰器介绍与应用 参考文档:https://www.cnblogs.com/kfx2007/p/6093994.html 一.one one的用法主要用于self为单一集合的情况,被o ...