飞凌干货丨i.MX8MM如何在uboot调试显示

原创 2020-08-07 17:33:00 i.MX8MM i.MX8Mmini
2020年8月7号

i.MX8MM 显示结构

imx8m mini的显示只有1个MIPI_DSI接口,显示接口的结构如下:


 


 

显示参数调节

我们在调试显示的时候,需要初始化LCDif和MIPI_DSI, uboot中驱动程序已经提供了完整的驱动程序,我们只需要设置环境变量panel,驱动按照panel的值匹配显示设备列表内显示设备的名称,选择当前设备显示。如设定panel的值为“MIPI7”,就会在显示列表内找到名称为“MIPI7”的显示设备,按照该设备初始化相关的设备。该设备是我们默认支持的7寸mipi显示屏,可以从下图看到设备的名字和详细的显示参数。


 


如果用户需要添加自己的显示屏,只需要按照屏的手册额外添加一组显示参数,设置panel,指定使用所添加的参数即可。(注:此方法只针对不需要额外初始化的mipi屏)

但是由于我们的uboot不开源,用户无法修改源码,也就自行添加一组显示参数。针对这种情况,我们提供了一种解决方法。我们提供了一组参数,用户选定这组参数后,可以通过修改环境变量的方法来修改这组参数内显示参数。

这组用来显示mipi屏的显示参数的名字是“MIPI_CUSTOM”,只要将panel设置为“MIPI_CUSTOM”,就会选定这组参数,下图是这组参数的默认值。


 


 

如何修改这组参数呢?默认是无法修改这组参数的,我们通过做了额外的工作,在检测到使用的panel的名称为 “MIPI_CUSTOM” 时做了特殊处理,如果检测到环境变量custom_video_mode的值不为空,则解析custom_video_mode,将其内包含的显示参数替换默认的显示参数。

 

判断是否是自定义参数


 


 

自定义参数替换默认参数


 


 

实际测试

我们实际演示下如何使用,首先在启动开发板,在uboot按下空格键进入uboot菜单,按1,退出菜单进入命令模式


 


 

然后,我们在输入命令设置panel值为MIPI_CUSTOM, 设置custom_video_mode值使refresh,xres,yres,pixclock,left_margin,right_margin,upper_margin,lower_margin,hsync_len,vsync_len等值设置为我们想要的值,例如我们有一块800x1280的显示屏,要将参数设置为refresh=60,xres=800,yres=1280,pixclock=20000,left_margin=32,right_margin=20,upper_margin=8,lower_margin=4,hsync_len=40,vsync_len=1(注:时钟为时间值,单位是皮秒,10的12次方除以此值就是频率值)

 

那么需要输入命令以下命令

设置panel值为MIPI_CUSTOM

setenv   panel MIPI_CUSTOM

 

设置自定义参数

setenv   custom_video_mode refresh=60,xres=800,yres=1280,pixclock=20000,left_margin=32,right_margin=20,upper_margin=8,lower_margin=4,hsync_len=40,vsync_len=1

 

保存环境变量

saveenv


 


 

重启后显示参数生效。


 


 

我们还可以用这种方法快速测试我们的显示参数是否准确,因为这样测试非常快速,只需要在uboot设置环境变量即可,不需要修改代码和烧写。

 

批量烧写

在我们测试显示正常后,我们还可以通过追加uboot环境变量的方式,将我们测试好的环境变量,在TF卡烧写的时候直接烧写到存储介质中,烧写完成启动就是我们想要的显示结果。

追加uboot环境变量的方法:

 

在电脑上创建一个文件,文件名env.ini。该文件的每一行是一个环境变量, 格式是: 环境变量的名字=环境变量的值。

 

将我们在上面操作步骤确认的环境变量添加到env.ini,每个环境变量一行,按照格式添加如:在第一行添加panel =MIPI_CUSTOM,第二行添加custom_video_mode= refresh=60,xres=800,yres=1280,pixclock=20000,left_margin=32,right_margin=20,upper_margin=8,lower_margin=4,hsync_len=40,vsync_len=1

 

将修改好的env.ini放入到制作好的TF卡(TF卡制作过程参考用户手册),使用次TF卡烧写即可。烧写完成后重启,检验环境变量是否已经追加到存储中,显示是否正常。

 

 

 

相关产品 >

  • FETMX8MM-C核心板

    NXP i.MX8系列分为iMX8I、i.MX8M、i.MX8Mini、iMX8M Nano、iMX 8X等,提供基于Cortex-A72 + Cortex-A53、Cortex-A35核心,搭配实时任务处理的Cortex-M4和Cortex M7的解决方案,适用于从消费家庭音频到工业楼宇自动化及移动计算机等。飞凌嵌入式近期推出的iMX8系列i.MX8Mmini核心板基于四核Cortex-A53、单核Cortex-M4架构的i.MX 8Mmini 处理器设计,现已全面上市,更多i.MX8M核心板产品、解决方案详情,欢迎致电飞凌嵌入式了解。

    了解详情
    FETMX8MM-C核心板
  • OKMX8MM-C开发板

    多数字音频接口,多核异构A53+M4,10年+生命周期|NXP公司 i.MX8系列应用处理器根据不同配置有i.MX8I、iMX8M、i.MX8Mini、iMX8M Mini、iMX8M Nano、iMX 8X ,提供基于Cortex-A72 + Cortex-A53、Cortex-A35核心,此外还提供实时任务处理的Cortex-M核心(Cortex-M4和Cortex M7)的解决方案,因此,NXP i.MX8系列应用处理器在高级图形、高级成像、高级机器视觉、高端音频、高端语音、高端视频和高安全的嵌入式应用等跨领域的多种应用场景非常适用。飞凌嵌入式i.MX8M Mini开发板基于NXP 公司的i.MX8M Mini 四核64位处理器设计,主频最高1.8GHz,ARM Cortex-A53架构。IMX8开发板是一款高性能,低功耗产品,欢迎选购。更多IMX8芯片介绍,IMX8系列软硬件资料,i.MX8M mini方案定制,请联系飞凌嵌入式

    了解详情
    OKMX8MM-C开发板

推荐阅读 换一批 换一批