您尚未登录。

楼主 #1 2018-01-16 11:01:53

bugfix
会员
注册时间: 2017-11-22
已发帖子: 125
积分: 125

荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

我在Linux的dts文件里面中死活也没有找到关于LCD的width, height,format等配置参数。

我跟踪驱动代码进去,

drivers/video/fbdev/simple_fb.c

simplefb_probe() 有调用 simplefb_parse_dt() 这个设备树DeviceTree解析函数。
但是实际上设备树并没有这个东东。

感觉很神奇!

离线

#2 2018-01-16 11:03:10

daydayup
会员
注册时间: 2017-10-09
已发帖子: 343
积分: 343

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

不懂,帮顶。

离线

#3 2018-01-16 11:07:05

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,473
积分: 9207

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

这个问题我以前也纳闷过,
后来发现 u-boot的 common/fdt_support.c 里面有 fdt_setup_simplefb_node()这个函数,
他居然会自己创建设备树, 然后传递给Linux用,赶脚好神奇!





离线

#4 2018-01-16 11:08:51

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,473
积分: 9207

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

/**

  • fdt_setup_simplefb_node - Fill and enable a simplefb node
    *

  • @fdt: ptr to device tree

  • @node: offset of the simplefb node

  • @base_address: framebuffer base address

  • @width: width in pixels

  • @height: height in pixels

  • @stride: bytes per line

  • @format: pixel format string
    *

  • Convenience function to fill and enable a simplefb node.
    */
    int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
    u32 height, u32 stride, const char *format)
    {
    char name[32];
    fdt32_t cells[4];
    int i, addrc, sizec, ret;

of_bus_default_count_cells(fdt, fdt_parent_offset(fdt, node),
&addrc, &sizec);
i = 0;
if (addrc == 2)
cells[i++] = cpu_to_fdt32(base_address >> 32);
cells[i++] = cpu_to_fdt32(base_address);
if (sizec == 2)
cells[i++] = 0;
cells[i++] = cpu_to_fdt32(height * stride);

ret = fdt_setprop(fdt, node, "reg", cells, sizeof(cells[0]) * i);
if (ret < 0)
return ret;

snprintf(name, sizeof(name), "framebuffer@%" PRIx64, base_address);
ret = fdt_set_name(fdt, node, name);
if (ret < 0)
return ret;

ret = fdt_setprop_u32(fdt, node, "width", width);
if (ret < 0)
return ret;

ret = fdt_setprop_u32(fdt, node, "height", height);
if (ret < 0)
return ret;

ret = fdt_setprop_u32(fdt, node, "stride", stride);
if (ret < 0)
return ret;

ret = fdt_setprop_string(fdt, node, "format", format);
if (ret < 0)
return ret;

ret = fdt_setprop_string(fdt, node, "status", "okay");
if (ret < 0)
return ret;

return 0;
}





离线

楼主 #5 2018-01-16 11:10:54

bugfix
会员
注册时间: 2017-11-22
已发帖子: 125
积分: 125

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

还真是这么回事, 谢谢楼上的大佬解我心头之惑!
相当于和u-boot共享设备树,
参数只需要在 u-boot里面设置一次即可。

离线

#6 2020-11-25 15:57:36

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 54
积分: 35.5

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

晕哥 wrote:

这个问题我以前也纳闷过,
后来发现 u-boot的 common/fdt_support.c 里面有 fdt_setup_simplefb_node()这个函数,
他居然会自己创建设备树, 然后传递给Linux用,赶脚好神奇!

晕哥 如何使用de功能 在Linux设备树中更改lcd屏幕的参数 现在都是更改linux/drivers/gpu/drm/panel/panel-simple.c源码 然后编译镜像之后烧写 以后会有多种屏幕 这样不太方便 最好只修改设备树 在设备树配置参数 只更换设备树即可 这样最好

离线

#7 2020-11-25 17:09:12

smartcar
会员
注册时间: 2018-02-19
已发帖子: 735
积分: 735

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

hanzixi_angel wrote:

晕哥 wrote:

这个问题我以前也纳闷过,
后来发现 u-boot的 common/fdt_support.c 里面有 fdt_setup_simplefb_node()这个函数,
他居然会自己创建设备树, 然后传递给Linux用,赶脚好神奇!

晕哥 如何使用de功能 在Linux设备树中更改lcd屏幕的参数 现在都是更改linux/drivers/gpu/drm/panel/panel-simple.c源码 然后编译镜像之后烧写 以后会有多种屏幕 这样不太方便 最好只修改设备树 在设备树配置参数 只更换设备树即可 这样最好

你的de功能正常了吗?

离线

#8 2020-11-26 09:22:13

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 54
积分: 35.5

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

smartcar wrote:

hanzixi_angel wrote:

晕哥 wrote:

这个问题我以前也纳闷过,
后来发现 u-boot的 common/fdt_support.c 里面有 fdt_setup_simplefb_node()这个函数,
他居然会自己创建设备树, 然后传递给Linux用,赶脚好神奇!

晕哥 如何使用de功能 在Linux设备树中更改lcd屏幕的参数 现在都是更改linux/drivers/gpu/drm/panel/panel-simple.c源码 然后编译镜像之后烧写 以后会有多种屏幕 这样不太方便 最好只修改设备树 在设备树配置参数 只更换设备树即可 这样最好

你的de功能正常了吗?

de功能正常啊 修改了linux/drivers/gpu/drm/panel/panel-simple.c源码 适配了屏幕 但是这样修改不太好 想只修改设备树 在设备树增加屏幕参数

离线

#9 2020-11-26 09:32:21

smartcar
会员
注册时间: 2018-02-19
已发帖子: 735
积分: 735

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

hanzixi_angel wrote:

smartcar wrote:

hanzixi_angel wrote:

晕哥 如何使用de功能 在Linux设备树中更改lcd屏幕的参数 现在都是更改linux/drivers/gpu/drm/panel/panel-simple.c源码 然后编译镜像之后烧写 以后会有多种屏幕 这样不太方便 最好只修改设备树 在设备树配置参数 只更换设备树即可 这样最好

你的de功能正常了吗?

de功能正常啊 修改了linux/drivers/gpu/drm/panel/panel-simple.c源码 适配了屏幕 但是这样修改不太好 想只修改设备树 在设备树增加屏幕参数

drm的话如果找不到现成的LCD配置估计就一定要修改那部分的代码吧,

离线

#10 2023-10-18 18:12:59

wcq6699
会员
注册时间: 2023-10-17
已发帖子: 15
积分: 0

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

U-BOOT 是不是没在FLASH固件包里面呢

离线

#11 2023-10-18 18:15:25

wcq6699
会员
注册时间: 2023-10-17
已发帖子: 15
积分: 0

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

我怎么链接电脑看不到荔枝派设备,只是显示 多了一个通用USB集线器呢

离线

#12 2024-04-08 16:24:25

酱爸
会员
注册时间: 2024-01-06
已发帖子: 6
积分: 1

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

大佬,我想咨询下,屏幕尺寸和接口引脚都一样的情况下,如果只改动屏幕驱动,由ST7789改成ILS9341,请问要修改哪几个位置?

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发