| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 修改imx6dl的uboot默认显示方式和倒计时 -> 正文阅读 |
|
[嵌入式]修改imx6dl的uboot默认显示方式和倒计时 |
一.飞凌核心板,imx6dl,双核800M,1G内存,linux4.1.15 下载uboot-2016.tar.bz2 链接: https://pan.baidu.com/s/1SflUVtHt8bhwBzlb5QFR1w??密码: ki2v 二.修改默认显示方式LVDS,三菱AA121XN11液晶屏,12.1”XGA,1024x768,每个像素8位颜色显示 目前烧写官方提供的镜像烧写后启动时默认的屏幕为LCD屏,分辨率1024x600,部分客户需要默认启动其他类型的屏幕,故将修改方法总结如下: 2.1 linux4.1.15: 修改?./uboot-2016/include/configs/mx6sabre_common.h 修改约P74: #define?MXC_FB0?"mxcfb0=video=mxcfb0:dev=lcd,CLAA-WVGA,if=RGB24,bpp=16,int_clk\0" 2.1.1 LVDS屏改为: #define MXC_FB0?"mxcfb0=video=mxcfb0:dev=ldb,LDB-XGA,if=RGB24,bpp=16,int_clk\0" 2.1.2 HDMI屏改为: #define MXC_FB0?"mxcfb0=video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=16\0" 2.1.3 mipi屏改为: #define?MXC_FB0?"mxcfb0=video=mxcfb0:dev=mipi_dsi,TRULY-EK79007-WVGA,if=RGB24,bpp=16\0" 约P154: ?#define CONFIG_EXTRA_ENV_SETTINGS \ ????????CONFIG_MFG_ENV_SETTINGS \ ????????MXC_FB0 \ ????????MXC_FB1 \ ????????LDBMODE \ 后加: "panel=TRULY-EK79007-WVGA\0" \ 注:mipi屏与其他屏幕不同,有两处修改 2.1.4 修改./uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c struct display_info_t displays[]结构体中增加显示方式"LDB-XGA" { .bus = -1, .addr = 0, .pixfmt = IPU_PIX_FMT_RGB24, .detect = NULL, .enable = enable_lvds, .mode = { ????????????????.name ??????????= "LDB-XGA", ????????????????.refresh ???????= 60, ????????????????.xres ??????????= 1024, ????????????????.yres ??????????= 768, ????????????????.pixclock ??????= 15385, ????????????????.left_margin ???= 320, ????????????????.right_margin ??= 80, ????????????????.upper_margin ??= 38, ????????????????.lower_margin ??= 80, ????????????????.hsync_len ?????= 32, ????????????????.vsync_len ?????= 4, .sync ??????????= FB_SYNC_EXT, .vmode ?????????= FB_VMODE_NONINTERLACED } } .pixfmt?= 24; ????????//24位颜色 .refresh = 60; ????????//刷新率 .name?= ? "LDB-XGA";//LCD 名字,要和环境变量中的 panel 相等 .xres?= 1024; ????????//液晶屏X 轴像素数量 .yres?= 768; ?????????//液晶屏Y 轴像素数量 .pixclock?= 15385; ???//像素时钟,每个像素时钟周期的长度,单位为皮秒, ????????????????????//DCLK=65MHz?-》.pixclock = 1/65×1000000 = 15385皮秒 .left_margin?= 160; ??//HBP(horizontal back porch),水平同步后肩 .right_margin?= 160; ?//HFP(horizontal front porch),水平同步前肩 .hsync_len = 60; ????//HSPW(horizontal sync pulse width),行同步脉宽 .upper_margin = 16; ?//VBP(vertical back porch),垂直同步后肩 .lower_margin = 16; ?//VFP(vertical front porch),垂直同步前肩 .vsync_len = 6; ?????//VSPW(vertical sync pulse width),垂直同步脉宽 .sync =?FB_SYNC_EXT; //同步极性设置,可以根据需要设置,external sync, FB_SYNC_HOR_HIGH_ACT(水平同步高电平有效)和FB_SYNC_VERT_HIGH_ACT(垂直同步高电平有效) .vmode?= FB_VMODE_NONINTERLACED; //大多数使用 FB_VMODE_NONINTERLACED,也就是不使用隔行扫描 三菱AA121XN11显示时序表B1:
tHB = 320 ?????????//推荐值 tHB =?.left_margin+.right_margin+.hsync_len?= 320 .left_margin?= 130 .right_margin?= 130 .hsync_len?= 60 tVB?= 38 ??????????//推荐值 tVB?= .upper_margin+.lower_margin+.vsync_len?= 38 .upper_margin?= 16 .lower_margin?= 16 .vsync_len?= 6 display_info_t?定义在文件 arch/arm/include/asm/imx-common/video.h 中,定义如下: struct?display_info_t?{ ????int?bus; ????int?addr; ????int?pixfmt; ????int?(*detect)(struct?display_info_t?const?*dev); ????void?(*enable)(struct?display_info_t?const?*dev); struct??fb_videomode?mode;}; 结构体display_info_t还有个mode成员变量,此成员变量也是个结构体,为fb_videomode,定义在文件?include/linux/fb.h?中,定义如下: struct?fb_videomode?{ ????const?char?*name;???/* optional */ ????u32?refresh;????????/* optional */ ????u32?xres; ????u32?yres; ????u32?pixclock; ????u32?left_margin; ????u32?right_margin; ????u32?upper_margin; ????u32?lower_margin; ????u32?hsync_len; ????u32?vsync_len; ????u32?sync; ????u32?vmode; ????u32?flag;}; 结构体fb_videomode里面的成员变量为LCD的参数,这些成员变量函数如下: name?:LCD 名字,要和环境变量中的 panel 相等 xres 、yres?:LCD X 轴和 Y 轴像素数量 pixclock:像素时钟,每个像素时钟周期的长度,单位为皮秒 left_margin?:HBP(horizontal back porch),水平同步后肩 right_margin?:HFP(horizontal front porch),水平同步前肩 upper_margin:VBP(vertical back porch),垂直同步后肩 lower_margin:VFP(vertical front porch),垂直同步前肩 hsync_len?:HSPW(horizontal sync pulse width),行同步脉宽 vsync_len:VSPW(vertical sync pulse width),垂直同步脉宽 vmode?:大多数使用 FB_VMODE_NONINTERLACED,也就是不使用隔行扫描。 2.2 Linux 3.0.35: vi uboot2009/include/configs/mx6q_sabresd.h(6dl则修改mx6dl_sabresd.h??P73) 约P68: //#define CONFIG_UBOOT_KERNEL_LVDS #define CONFIG_UBOOT_KERNEL_LCD //#define CONFIG_UBOOT_KERNEL_MIPI 想开机默认哪个屏就打开哪个 经验证,综上方法在6x-c和6x-s3系列开发板上均适用。文中标注的行数只是个大概值,方便定位,可能不太准确,但也基本上就是那片范围。 三.启动倒计时3修改成0 修改./uboot-2016/include/configs/mx6_common.h #ifndef CONFIG_BOOTDELAY #define CONFIG_BOOTDELAY 0 #endif 四.编译uboot cd ./uboot-2016 ./build-6dl.sh build-6dl.sh内容如下: #!/bin/bash export ARCH=arm export CROSS_COMPILE=/opt/gcc-linaro-7.4.1-2020.09-arm-linux4.1.15-gnueabi/bin/arm-cortexa9-linux-gnueabi- make distclean make mx6dl-c-sabresd_defconfig make -j4 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 18:18:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |