hiberhe 发表于 2014-7-24 15:19:09

imx6的linux(3.0.35_4.1.0)编译出来开机画面怎么是2个企鹅-已解决

本帖最后由 hiberhe 于 2014-7-25 00:26 编辑

如题,怎么干掉一个?是前景和背景的原因吗,我用的dl,显示是lvds0,sep0方式。

heyuncun 发表于 2014-7-24 15:20:49

^_^         ^_^

hiberhe 发表于 2014-7-24 15:28:23

在fb_show_logo中添加dump_stack(),从dmesg结果只看到调用了一次。因而是在mxc_ipuv3_fb.c中做了什么处理?

honami520 发表于 2014-7-24 15:46:28

是lcd驱动分辨率小了吧。所以会出现多个企鹅

aammoo 发表于 2014-7-24 16:12:57

本帖最后由 aammoo 于 2014-7-24 16:14 编辑

好像是因为有多个核,单核的CPU是一个

bbstr 发表于 2014-7-24 16:21:27

楼上兄弟好萌...

richards 发表于 2014-7-24 16:25:36

aammoo 发表于 2014-7-24 16:12
好像是因为有多个核,单核的CPU是一个

我的 zynq 也是 两个呵呵

aammoo 发表于 2014-7-24 17:52:38

richards 发表于 2014-7-24 16:25
我的 zynq 也是 两个呵呵

你的也是双核的

hiberhe 发表于 2014-7-24 18:33:50

肯定不是分辨率的问题,我的是1027×768的分辨率呢。看俩企鹅在那太不顺眼了。

hiberhe 发表于 2014-7-24 18:36:30

honami520 发表于 2014-7-24 15:46
是lcd驱动分辨率小了吧。所以会出现多个企鹅

我的是两企鹅并列在左上角...

一个人· 发表于 2014-7-24 18:55:41

有啥奇怪的,一个核是一个企鹅,我的4412 显示4个企鹅。

hiberhe 发表于 2014-7-24 19:19:53

真与核有关?这倒也有可能,我查查显示logo的代码。

hiberhe 发表于 2014-7-24 23:55:06

好吧,好像真跟cpu数目有关:
int fb_show_logo(struct fb_info *info, int rotate)
{
int y;
y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
num_online_cpus());
y = fb_show_extra_logos(info, y, rotate);
return y;
}

static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
int rotate, unsigned int num)
{
unsigned int x;
if (rotate == FB_ROTATE_UR) {
for (x = 0;
x < num && image->dx + image->width <= info->var.xres;
x++) {
info->fbops->fb_imageblit(info, image);
image->dx += image->width + 8;
}
} else if (rotate == FB_ROTATE_UD) {
for (x = 0; x < num && image->dx >= 0; x++) {
info->fbops->fb_imageblit(info, image);
image->dx -= image->width + 8;
}
} else if (rotate == FB_ROTATE_CW) {
for (x = 0;
x < num && image->dy + image->height <= info->var.yres;
x++) {
info->fbops->fb_imageblit(info, image);
image->dy += image->height + 8;
}
} else if (rotate == FB_ROTATE_CCW) {
for (x = 0; x < num && image->dy >= 0; x++) {
info->fbops->fb_imageblit(info, image);
image->dy -= image->height + 8;
}
}
}

hiberhe 发表于 2014-7-25 00:05:24

include/linux/cpumask.h:
83 #if NR_CPUS > 1
84 #define num_online_cpus() cpumask_weight(cpu_online_mask)
...

include/linux/threads.h:
14 #ifndef CONFIG_NR_CPUS15 /* FIXME: This should be fixed in the arch's Kconfig */16 #define CONFIG_NR_CPUS 1
17 #endif
20 #define NR_CPUS CONFIG_NR_CPUS

hiberhe 发表于 2014-7-25 00:14:12

本帖最后由 hiberhe 于 2014-7-25 00:15 编辑

arch/arm/Kconfig:
config NR_CPUS
int "Maximum number of CPUs (2-32)"
range 2 32
depends on SMP
default "4"

include/linux/cpumask.h,:
442 /**
443 * cpumask_weight - Count of bits in *srcp
444 * @srcp: the cpumask to count bits (< nr_cpu_ids) in.
445 */
446 static inline unsigned int cpumask_weight(const struct cpumask *srcp)
447 {
448 return bitmap_weight(cpumask_bits(srcp), nr_cpumask_bits);
449 }

hiberhe 发表于 2014-7-25 00:25:17

后续就不查了,在手机上找起来不方便。

由上可知,要在多核cpu上用系统缺省logo机制只显示1个logo图标,只需修改drivers/video/fbmem.c中的fb_show_logo,将对fb_show_logo_line的调用的最后一个参数由num_online_cpus()改为1即可!

nongxiaoming 发表于 2014-7-25 01:00:51

真八核出来8只企鹅,很壮观啊~

kingboy1000 发表于 2014-7-25 11:24:10

我的三星5260 显示6只

mangocity 发表于 2014-7-25 11:30:26

richards 发表于 2014-7-24 16:25
我的 zynq 也是 两个呵呵

如果多弄16个NIOS2核,会不会一窝企鹅出来了?哇哈哈


不过Linux kernel里真的是按照CPU核的个数来显示企鹅数量的。

hiberhe 发表于 2014-7-25 12:48:22

不会显示那么多啦,具体的显示数量与核数,logo宽度以及屏宽有关:
x < num && image->dx + image->width <= info->var.xres

richards 发表于 2014-7-25 22:22:19

hiberhe 发表于 2014-7-25 12:48
不会显示那么多啦,具体的显示数量与核数,logo宽度以及屏宽有关:
x < num && image->dx + image->width va ...

lz 认真钻研的精神值得敬佩

FSL_TICS_Rita 发表于 2014-7-29 14:24:23

首先要给楼主大赞~~自己专研的同时分享给大家。
楼主的结论是正确的,使用i.mx6q的话,会出现4个企鹅,i.mx6dl的是双核的,所以是两个。

mfketggo111 发表于 2014-8-2 22:27:32

linux都是这样的,几个核就是几只企鹅,我台式机8核的,开机8只企鹅

SCREA 发表于 2021-2-5 13:48:32

Linux 启动时显示的小企鹅的数量,就是你的 CPU 个数,你最多见过几个?
页: [1]
查看完整版本: imx6的linux(3.0.35_4.1.0)编译出来开机画面怎么是2个企鹅-已解决