在RK3562平台上更换lcd和tp

需求和目的

原来的平台已经支持了800x1280的竖屏,现在要让它支持1024x600的横屏,而且触摸也变了。

步骤

1.编译

按对方给的文档先制作一个编译脚本

export LC_ALL=C
source build/envsetup.sh
lunch rk3562_t-userdebug
./build.sh -UCKAu -d ido-evb3562-v1b-dsi-mipi -J32

测试编译ok,下载ok,启动ok。有一个问题是usb的adb需要开机时候接着usb才能识别到。

2.修改lcd设备树

原来平台已经支持了mipi的lcd,正好需要修改的只是换个lcd,利用原来的设备树进行修改

sdk/kernel-5.10/arch/arm64/boot/dts/rockchip/ido-evb3562j-v1b-dsi-mipi.dts

&dsi {
        status = "okay";
        //rockchip,lane-rate = <1000>;
        dsi_panel: panel@0 {
                status = "okay";
                compatible = "simple-panel-dsi";
                reg = <0>;
                power-supply = <&vcc3v3_lcd_n>;
                pinctrl-names = "default";
                pinctrl-0 = <&lcd_rst_gpio>;
+               enable-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
-               enable-delay-ms = <60>;
-               prepare-delay-ms = <60>;
-               unprepare-delay-ms = <60>;
-               disable-delay-ms = <60>;
+               enable-delay-ms = <35>;
+               prepare-delay-ms = <6>;
+               unprepare-delay-ms = <0>;
+               disable-delay-ms = <20>; 
panel-init-sequence = [
+                        15 00 02 80 58
+                        15 00 02 81 47
+                        15 00 02 82 D4
+                        15 00 02 83 88
+                        15 00 02 84 A9
+                        15 00 02 85 C3
+                        15 00 02 86 82
                ];

                panel-exit-sequence = [
-                       05 00 01 28
-                       05 00 01 10
+                        05 05 01 28
+                        05 78 01 10
                ];
                disp_timings0: display-timings {
                        native-mode = <&dsi_timing0>;
                        dsi_timing0: timing0 {
-                               clock-frequency = <73400000>;
-                               hactive = <800>;
-                               vactive = <1280>;
-                               hfront-porch = <52>;
-                               hsync-len = <4>;
-                               hback-porch = <12>;
-                               vfront-porch = <60>;
+                               clock-frequency = <56000000>;
+                               hactive = <1024>;
+                               vactive = <600>;
+                               hfront-porch = <160>;
+                               hsync-len = <10>;
+                               hback-porch = <160>;
+                               vfront-porch = <12>;
                                vsync-len = <18>;
-                               vback-porch = <50>;
-                               hsync-active = <0>;
-                               vsync-active = <0>;
+                               vback-porch = <23>;
+                               hsync-active = <10>;
+                               vsync-active = <1>;
                                de-active = <0>;
-                               pixelclk-active = <1>;
+                               pixelclk-active = <0>;
                        };

同样的路径,同样的驱动,仅仅修改参数改成新的屏幕

3.修改设备树,触摸部分

&i2c3 {
        status = "okay";
/*
        gt911@14 {
                compatible = "goodix,gt9xx";
                reg = <0x14>;
                pinctrl-names = "default";
                pinctrl-0 = <&touch_gpio>;
                goodix_irq_gpio = <&gpio0 RK_PB6 IRQ_TYPE_LEVEL_LOW>;
                goodix_rst_gpio = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
                // touchscreen-inverted-y;
                // touchscreen-swapped-x-y;
                status = "okay";
        };
};
*/


+*/
+
+
+        focaltech: ft5206@38 {
+                compatible = "focaltech,fts";
+                reg = <0x38>;
+                interrupts = <&gpio0 RK_PB6 IRQ_TYPE_LEVEL_LOW>;
+                focaltech,irq-gpio = <&gpio0 RK_PB6 IRQ_TYPE_LEVEL_LOW>; // GPIO4 D4(3X8+4=28)
+                focaltech,reset-gpio = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>; // GPIO1 C7(2X8+7=23)
+                focaltech,max-touch-number = <5>;
+                //focaltech,display-coords =  <0 0 1024 600>;
+                //focaltech,keys = <256 1068 64 64 128 1068 64 64 192 1068 64 64>;
+                focaltech,key-x-coord = <1024>;
+                focaltech,key-y-coord = <600>;
+                status = "okay";
+        };
+};
+

注释掉原来的gt911的触摸,改成敦泰的focaltech的触摸驱动。

4. 再次编译后下载测试

enable-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;

试图用enable-gpios来控制io拉高开启lcd的供电,没有起作用(在rk3588的驱动里面是支持的),先用手工拉高这一路供电,现象是,背光亮了但是花屏,屏幕top上面有一些貌似android界面的内容,触摸没有反应。是否是因为分辨率从竖屏改成了横屏,造成的问题,以前早期的android版本里面对横屏竖屏是有单独的设置的。而且增量编译是否没有选择正确的资源文件?索性删除out目录重新编译一次。

还是花瓶

5. 结果

用命令dmesg查询日志发现怎么触摸还是gtp。感觉修改完全无效。

仔细检查,我改的设备树和编译脚本./build.sh -UCKAu -d ido-evb3562-v1b-dsi-mipi -J32使用的设备树有一字之差ido-evb3562j-v1b-dsi-mipi。 多了一个j后缀,j代表工业级。重新修改正确的设备树文件。

6.补充触摸

需要在config文件里面增加CONFIG_TOUCHSCREEN_FTS=y触摸就可以使用了,但是分别率还是不对,修改对应的驱动文件focaltech_touch/focaltech_core.c里面的函数fts_get_dt_coords()

找到

pdata->x_min = FTS_X_MIN_DISPLAY_DEFAULT;
pdata->y_min = FTS_Y_MIN_DISPLAY_DEFAULT;
pdata->x_max = FTS_X_MAX_DISPLAY_DEFAULT;
pdata->y_max = FTS_Y_MAX_DISPLAY_DEFAULT;

在其下面增加下面4行覆盖原来值
        pdata->x_min = 0;
        pdata->y_min = 0;
        pdata->x_max = 1024;
        pdata->y_max = 600;

### 将 RK3568 的 RKNN 库迁移到 RK3562 平台 迁移RKNN库涉及多个方面的工作,包括但不限于确认硬件兼容性、调整软件环境以及验证模型性能。 #### 确认硬件差异与兼容性 RK3568 RK3562 虽然同属瑞芯微的产品线,但在具体规格上有一定区别。对于RKNN的支持情况,建议查阅官方文档来了解两者之间的异同点[^1]。特别是要注意NPU(神经网络处理单元)架构是否存在显著差别,因为这直接影响到RKNN模型能否无缝移植。 #### 准备工作环境 为了确保顺利迁移,需准备适合于目标平台的操作系统镜像并安装必要的依赖项。基于之前的描述,在新平台上同样需要构建Python虚拟环境,并通过特定命令安装`rknn-toolkit2`工具包: ```bash conda create -n rknn_env python=3.8 source activate rknn_env pip install -r /path/to/requirements_cp38-2.1.0.txt -i https://pypi.tuna.tsinghua.edu.cn/simple pip install /path/to/rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl ``` 这里假设已经下载好了对应的`.whl`文件依赖列表文本[^2]。 #### 测试与优化 完成上述步骤后,应该尝试加载之前在RK3568上训练好的.rknn模型至RK3562设备中执行推理操作。如果遇到任何问题,则可能需要针对新的硬件特性重新编译或调优模型参数设置。此外,考虑到不同芯片组之间可能存在效率上的差距,还应对最终效果进行全面评估以保证满足实际应用场景的需求。 #### 验证过程中的注意事项 在整个过程中要特别注意以下几点: - **驱动版本匹配**:确保所使用的操作系统内核及图形驱动程序能够良好支持RK3562; - **API接口一致性**:检查是否有因SDK更新而导致的功能变更影响现有代码逻辑; - **资源消耗对比分析**:记录两代产品间功耗表现的变化趋势作为后续改进依据;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenyq14

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值