各位前辈好,我想在代码启动的时候加入一个图片作为启动界面,就像我们的台式机bios里面的启动画面一样,请各位不吝赐教~小弟先谢过了~~
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
各位前辈好,我想在代码启动的时候加入一个图片作为启动界面,就像我们的台式机bios里面的启动画面一样,请各位不吝赐教~小弟先谢过了~~
感谢回复~昨天晚上我已经基本实现了,就是配置一下内核选项,/kernel/device drivers/graphics support/logo configuration 。根据help说明,需要FB或者SGI_NEWPORT_CONSOLE的支持,我不知道SGI_NEWPORT_CONSOLE是什么,于是我配置了Frame buffer support。 重新编译烧写,果然可以看见开机logo,但是有一个问题,系统总是会卡住,不能继续运行,在没有配置logo之前,绝对没有这个现象,不知道我哪里少选了,还是哪里冲突了? 多谢指教~
是停在kernel还是停在哪里?按你说的,也不是每次都卡住,还是说每次卡住的地方不一样? 可能需要你提供一下当时的log
顺便想问一下,因为你这个是kernel下的logo,从系统加电到出现logo大致需要多久?
恩,确实不是每次都停,但阻塞的时候居多,程序阻塞在了AVSERVER UI: Initializing 的上一行,也就说没有能进入到avserver ui initial里面。请看下面的log:
从上电到出现logo大约6-7s的样子。我本来是想在uboot里面实现logo,但由于之前没做过,加上看到kernel里面有logo可以配置,就图省事了。
U-Boot 2010.12-rc2-svn2 (Sep 28 2012 - 15:31:51)
Cores: ARM 297 MHz
DDR: 243 MHz
I2C: ready
DRAM: 128 MiB
NAND: 256 MiB
MMC: davinci: 0, davinci: 1
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
Net: Ethernet PHY: GENERIC @ 0x00
DaVinci-EMAC
Hit any key to stop autoboot: 0
123
Loading from nand0, offset 0x400000
Image Name: Linux-2.6.18_pro500-davinci_IPNC
Created: 2013-06-04 9:21:44 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1666660 Bytes = 1.6 MiB
Load Address: 80008000
Entry Point: 80008000
## Booting kernel from Legacy Image at 80700000 ...
Image Name: Linux-2.6.18_pro500-davinci_IPNC
Created: 2013-06-04 9:21:44 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1666660 Bytes = 1.6 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux.............................................................
Linux version 2.6.18_pro500-davinci_IPNC_1.5 (touptek@touptek-laptop) (gcc vers3
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: DaVinci DM365 IPNC
Memory policy: ECC disabled, Data cache writeback
DaVinci DM0365 variant 0x8
PLL0: fixedrate: 24000000, commonrate: 121500000, vpssrate: 243000000
PLL0: vencrate_sd: 27000000, ddrrate: 243000000 mmcsdrate: 121500000
PLL1: armrate: 297000000, voicerate: 20482758, vencrate_hd: 74250000
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists. Total pages: 13824
Kernel command line: mem=54M console=ttyS0,115200n8 root=/dev/mtdblock3 rootfstf
PID hash table entries: 256 (order: 8, 1024 bytes)
Clock event device timer0_0 configured with caps set: 07
Console: colour dummy device 80x30
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 54MB = 54MB total
Memory: 51072KB available (2832K code, 585K data, 172K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
DaVinci: 104 gpio irqs
MUX: initialized GPIO20
MUX: initialized I2C_SCL
MUX: initialized GIO50
MUX: initialized GIO51
MUX: initialized VOUT_B0
MUX: initialized VOUT_B1
MUX: initialized VOUT_B2
MUX: initialized VOUT_G0
MUX: initialized VOUT_G1
MUX: initialized VOUT_R0
MUX: initialized VOUT_R1
MUX: initialized VOUT_R2
ch0 default output "LCD", mode "1280x720"
parallel rgb mode!
parallel rgb mode!
parallel rgb mode!
MUX: initialized VOUT_COUTL_EN
VPBE Encoder Initialized
NET: Registered protocol family 2
IP route cache hash table entries: 512 (order: -1, 2048 bytes)
TCP established hash table entries: 2048 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 2048 bind 1024)
TCP reno registered
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
squashfs: version 3.1 (2006/08/19) Phillip Lougher
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
yaffs Jun 4 2013 17:04:50 Installing.
SGI XFS with no debug enabled
io scheduler noop registered
io scheduler anticipatory registered (default)
LTT : ltt-facilities init
LTT : ltt-facility-core init in kernel
Console: switching to colour frame buffer device 160x45
davincifb davincifb.0: dm_osd0_fb: 1280x720x16@0,0 with framebuffer size 1800KB
davincifb davincifb.0: dm_vid0_fb: 0x0x16@0,0 with framebuffer size 2700KB
davincifb davincifb.0: dm_osd1_fb: 1280x720x4@0,0 with framebuffer size 1800KB
davincifb davincifb.0: dm_vid1_fb: 0x0x16@0,0 with framebuffer size 2700KB
DAVINCI-WDT: DaVinci Watchdog Timer: heartbeat 60 sec
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO map 0x1c20000 mem 0xfbc20000 (irq = 40) is a 16550A
serial8250.0: ttyS1 at MMIO map 0x1d06000 mem 0xfbd06000 (irq = 41) is a 16550A
RAMDISK driver initialized: 1 RAM disks of 32768K size 1024 blocksize
Linux video capture interface: v2.00
Trying to register davinci display video device.
layer=c04f7800,layer->video_dev=c04f7960
Trying to register davinci display video device.
layer=c04f7600,layer->video_dev=c04f7760
davinci_init:DaVinci V4L2 Display Driver V1.0 loaded
i2c /dev entries driver
nand_davinci nand_davinci.0: Using 4-bit hardware ECC
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bi)
Creating 5 MTD partitions on "nand_davinci.0":
0x00000000-0x003c0000 : "bootloader"
0x003c0000-0x00400000 : "params"
0x00400000-0x00800000 : "kernel"
0x00800000-0x02800000 : "/"
0x02800000-0x10000000 : "data"
nand_davinci nand_davinci.0: hardware revision: 2.3
DaVinci DM365 Keypad Driver
MUX: initialized KEYPAD
input: dm365_keypad as /class/input/input0
Advanced Linux Sound Architecture Driver Version 1.0.12rc1 (Thu Jun 22 13:55:50.
ASoC version 0.13.1
CQ0093 Voice Codec 0.1
asoc: cq93vc <-> davinci-vcif mapping ok
ALSA device list:
#0: On-chip voice codec (cq93vc)
IPv4 over IPv4 tunneling driver
NET: Registered protocol family 1
NET: Registered protocol family 17
ieee80211: 802.11 data/management/control stack, git-1.1.13
ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>
Time: timer0_1 clocksource has been installed.
Clock event device timer0_0 configured with caps set: 08
Switched to high resolution mode on CPU 0
VFS: Mounted root (cramfs filesystem) readonly.
Freeing init memory: 172K
INIT: version 2.86 booting
0
mkdir: Cannot create directory `/dev/.test': Read-only file system
Starting the hotplug events dispatcher: udevd.
Synthesizing the initial hotplug events...done.
Waiting for /dev to be fully populated...done.
0
insmod: /opt/ipnc/modules/g_media.ko: No such file or directory
CSL: Module install successful, device major num = 254
CSL: Module version 0.10.00, built on Jun 4 2013 17:07:07
I2C: Module install successful, device major num = 253
DMA: Module install successful, device major num = 252
DRV: Module install successful
DRV: Module built on Jun 4 2013 17:07:09
DRV: EDMACC.QUEPRI = 00000777
DRV: SYSTEM.MSTPRI0 = 00550011
DRV: SYSTEM.MSTPRI1 = 00000444
DRV: ISP.BCR = 00000002
CMEMK module: built on Jun 4 2013 at 17:06:49
Reference Linux version 2.6.18
File /data/work/ipnc_dm365/dvsdk_2_10_01_18/linuxutils_2_24_03/packages/ti/sdc
allocated heap buffer 0xc4000000 of size 0x4800000
CMEM Range Overlaps Kernel Physical - allowing overlap
CMEM phys_start (0x1000) overlaps kernel (0x80000000 -> 0x83600000)
cmemk initialized
EDMAK module: built on Jun 4 2013 at 17:06:51
Reference Linux version 2.6.18
File /data/work/ipnc_dm365/dvsdk_2_10_01_18/linuxutils_2_24_03/packages/ti/sdc
IRQK module: built on Jun 4 2013 at 17:06:51
Reference Linux version 2.6.18
File /data/work/ipnc_dm365/dvsdk_2_10_01_18/linuxutils_2_24_03/packages/ti/sdc
irqk initialized
Starting mounting local filesystems: mount none on /dev/shm type tmpfs (rw,size)
none on /var/run type tmpfs (rw)
none on /tmp type tmpfs (rw,sync)
io scheduler cfq registeredCreat queue id:0
queue id:0
Creat queue id:32769
queue id:32769
queue id:32769
Creat queue id:65538
queue id:65538
IPNC_1.5 (touptek@touptek-laptop) (gcc version 4.2.0 (MontaVist
queue id:65538
DEMOCFG Value: 0
nVideocodecmode = 0
nVideocodecres = 0
./av_server.out AEWB APPRO2A 720P H264 4000000 CVBR MJPEG 97 MENUOFF &
Check_device_version : DEVICE VER = 1 !!
insmod: /opt/ipnc/modules/exportfs.ko: No such file or directory
davinci-mmc davinci-mmc.0: Supporting 4-bit mode
davinci-mmc davinci-mmc.0: Using DMA mode
ApproDrvInit: 7
Creat queue id:98307
queue id:98307
请问如何在uboot里面实现呢?如果可以在uboot里面实现是最好的了~
uboot里面是可以做的,不过需要你自己去配置寄存器了。可以参考开发板自带的VPFE工程去做这个
我猜是内核已经做了一些显示部分的初始化,后面跑应用的时候又做了一遍,之间可能就有配置打架了
具体要看到底停在哪里了,因为你log中打印出来的东西停在哪里,代码里未必是在那个地方的
哦,好的,虽然我还不知道怎么解决他,不过非常感谢您的耐心回答~~等我弄好了贴出来办法,希望可以帮助其他人。
Excuse me, 我找不到你说的VPFE工程,可否告诉我在哪里可以下载到?
查资料说很有可能是在VPSS初始化部分冲突了,内核默认VPSS是未初始化的,但配置LOGO后,其实是已经初始化过了,应该是这里冲突了,请问您知道内核中VPSS初始化这个该怎么修改下么。。
您好。请问现在知道卡在哪里了吗。我也在启动内核时有时会卡住。我是在uboot加入logo...
这个问题叫u-boot splash
给你一个参考的CCS工程,你可以把里面的代码加到u-boot里来实现开机界面 (多看看初始化VPBE的流程)
但是kernel起来之后,kernel里的framebuffer驱动起来之后会重新初始化VPBE, 这样会导致闪屏
比较好的做法是,u-boot里初始化VPBE,修改kernel里的framebuffer里的驱动,用ioremmap把u-boot里配置好的VPBE OSD/video窗口的地址映射到kernel空间来(注意地址冲突)