当前位置: 首页 > news >正文

RK平台一个系统固件兼容多款屏幕

一、需求:

一个固件兼容3款屏幕模组(mipi显示,触摸驱动,背光亮度都不一样)。硬件设计上:通过mipi读取id,或者adc读取id。

二、网上找了下:

找到个最火的博客是基于rk提供的方法,太复杂了。(第一眼就是,繁琐,又长又臭)

三、自己实现吧:

1. 修改dts,增加mipi初始化参数(在rk原有的增加-xx后缀):

panel-init-sequence-aa = [39 01 04 B9 83 11 2A.......
];panel-init-sequence-bb = [39 01 04 B9 83 22 2A.......
]panel-init-sequence-cc = [39 01 04 B9 83 33 2A.......
]

2. 同理修改dts增加屏幕显示参数:

		disp_timings0: display-timings {native-mode = <&dsi0_timing0>;dsi0_timing0: timing0 {aa_clock-frequency = <135000000>; // 135000000aa_hactive = <1080>;aa_vactive = <1920>;aa_hfront-porch = <48>; // 48aa_hsync-len = <12>;aa_hback-porch = <16>;aa_vfront-porch = <44>;aa_vsync-len = <5>; // 5aa_vback-porch = <5>;aa_hsync-active = <0>;aa_vsync-active = <0>;aa_de-active = <0>;aa_pixelclk-active = <1>;bb_clock-frequency = <125000000>; // 135000000bb_hactive = <1080>;bb_vactive = <1920>;bb_hfront-porch = <60>; // 48bb_hsync-len = <6>;bb_hback-porch = <60>;bb_vfront-porch = <24>;bb_vsync-len = <1>; // 5bb_vback-porch = <6>;bb_hsync-active = <0>;bb_vsync-active = <0>;bb_de-active = <0>;bb_pixelclk-active = <1>;cc_clock-frequency = <125000000>; // 135000000cc_hactive = <1080>;cc_vactive = <1920>;cc_hfront-porch = <60>; // 48cc_hsync-len = <6>;cc_hback-porch = <60>;cc_vfront-porch = <24>;cc_vsync-len = <1>; // 5cc_vback-porch = <6>;cc_hsync-active = <0>;cc_vsync-active = <0>;cc_de-active = <0>;cc_pixelclk-active = <1>;};};

3. reset-delay-ms = <200>;上电,复位时间等有需要也可以同理增加。

4. 修改代码(以uboot为例, kernel就是依样画葫芦)

修改rockchip_display.c文件rockchip_ofnode_get_display_mode函数。把 FDT_GET_INT(hactive, "hactive");  改为 FDT_GET_INT(hactive, "aa_hactive"); 部分代码:

	switch (g_panel_id) // 通过 adc采集硬件id进行赋值{case AA_PANEL_ID:printf("windra using aa display-timings dts\n");FDT_GET_INT(hactive, "aa_hactive");
...................................

同理修改rockchip_panel.c文件的static int rockchip_panel_ofdata_to_platdata(struct udevice *dev)函数。 部分代码:

	switch (g_panel_id){case AAS_PANEL_ID:printf("windra using panel-init-sequence-cw\n");data = dev_read_prop(dev, "panel-init-sequence-cw", &len);break;
..........................

5. 读取屏幕id可以通过mipi(该方法rk提供,自己百度吧),也可以通过adc读取id(rk3568 Android12 sdk默认uboot有bug,需要自己修改)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 虚幻5|AI行为树,跟随task(非行为树AI)
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • 内存管理篇-03物理内存管理-32位
  • MySQL 的子查询(Subquery)
  • 单例模式 详解
  • 计算机毕业设计opencv+pytorch疲劳驾驶检测系统 自动驾驶 面部多信息特征融合的疲劳驾驶检测系统 驾驶员疲劳驾驶风险检测 深度学习 机器学习 大数据
  • Educational Codeforces Round 169 (Rated for Div. 2)
  • Java语言程序设计——篇十七(1)
  • verilog中两个常数相除
  • 三、LogicFlow 基础配置介绍及实现一个基础 Demo
  • Vue3 条件语句 8
  • <数据集>Visdrone数据集<目标检测>
  • Python编程:从入门到实践书籍介绍
  • PHP轻创推客集淘客地推任务平台于一体的综合营销平台系统源码
  • Java集合框架--Map
  • 【5+】跨webview多页面 触发事件(二)
  • canvas 高仿 Apple Watch 表盘
  • Java比较器对数组,集合排序
  • Java编程基础24——递归练习
  • Java多线程(4):使用线程池执行定时任务
  • JS学习笔记——闭包
  • mysql innodb 索引使用指南
  • node.js
  • scrapy学习之路4(itemloder的使用)
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 大快搜索数据爬虫技术实例安装教学篇
  • 前端攻城师
  • 前端性能优化——回流与重绘
  • 区块链将重新定义世界
  • 王永庆:技术创新改变教育未来
  • 我的zsh配置, 2019最新方案
  • 小程序开发之路(一)
  • 因为阿里,他们成了“杭漂”
  • 云大使推广中的常见热门问题
  • 责任链模式的两种实现
  • #java学习笔记(面向对象)----(未完结)
  • #大学#套接字
  • #微信小程序:微信小程序常见的配置传旨
  • (2)STM32单片机上位机
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Note)C++中的继承方式
  • (SpringBoot)第二章:Spring创建和使用
  • (初研) Sentence-embedding fine-tune notebook
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (回溯) LeetCode 77. 组合
  • (算法设计与分析)第一章算法概述-习题
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • *** 2003
  • *1 计算机基础和操作系统基础及几大协议