瑞芯微Rockchip开发者社区
直播中

h1654155275.5916

7年用户 993经验值
私信 关注
[问答]

怎样在RK3399核心板上安装ubuntu18.04系统呢

怎样在RK3399核心板上安装ubuntu18.04系统呢?有哪些安装步骤?

回帖(1)

杨万富

2022-3-7 16:43:49
使用RK3399核心板CORE-3399-JD4,接口板是自制的,采用MIPI接口转LVDS,现在在3399的板子上装ubuntu18.04系统,在该系统上点亮LVDS屏幕。

1、首先安装Linux系统
        我安装的是ubuntu16.04的系统,具体安装步骤不再过多描述。

2、按照firefly的维基教程安装开发环境和ubuntu18.04的系统源码

3、根文件系统

        使用firefly官方提供的根文件系统,编译完成后总是有问题,于是下载了ubuntu18.04,2020年份的系统镜像,使用Android_Tool工具进行解包,将解包后其中的rootfs.img文件系统放到源码中进行编译,可以正常启动。

4、切换编译系统类型

        我使用的是RK3399,aio-3399-jd4-lvds-ubuntu.mk,根据自己的型号选择相应的版本,在源码根目录输入

./build.sh aio-3399-jd4-lvds-ubuntu.mk


        打开这个文件,可以看到里面的内容,kernel dts为 rk3399-firefly-aiojd4-lvds.dts



5、配置设备树

        在内核设备树目录下打开该dts,/kernel/arch/arm64/boot/dts/rockchip

        下图中红框标出的三个,为配置外设经常用到的3个配置文件



        修改背光

&backlight {
        status = "okay";
        pwms = <&pwm1 0 25000 1>;
        //enable-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
        default-brightness-level = <199>;
        polarity = <1>;
        brightness-levels = <

                        199 198 197 196 195 194 193 192 191 190
                        189 188 187 186 185 184 183 182 181 180
                        179 178 177 176 175 174 173 172 171 170
                        169 168 167 166 165 164 163 162 161 160
                        159 158 157 156 155 154 153 152 151 150
                        149 148 147 146 145 144 143 142 141 140
                        139 138 137 136 135 134 133 132 131 130
                        129 128 127 126 125 124 123 122 121 120
                        119 118 117 116 115 114 113 112 111 110
                        109 108 107 106 105 104 103 102 101 100
                         99  98  97  96  95  94  93  92  91  90
                         89  88  87  86  85  84  83  82  81  80
                         79  78  77  76  75  74  73  72  71  70
                         69  68  67  66  65  64  63  62  61  60
                         59  58  57  56  55  54  53  52  51  50
                         49  48  47  46  45  44  43  42  41  40
                         39  38  37  36  35  34  33  32  31  30
                         29  28  27  26  25  24  23  22  21  20
                         19  18  17  16  15  14  13  12  11  10
                          9   8   7   6   5   4   3   2   1   0
                        >;
};

查询一下电路上背光是接到那个PWM上的,pwm0或者pwm1,配置为相应pwm。

设置default-level,即默认亮度。

设置brightness-level,即亮暗变化方向。

修改dsi配置,因为我在安卓上移植过液晶屏,所以屏参已经配置好了,这里我直接复制过来就行了。我使用的是天马的TM101JDHG30,具体屏的初始化序列,有一个文件可以配置,文件名称为:TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm 3399.xls,具体配置大家自行百度吧,时间长了我也记不太清楚了。


&dsi {
        status = "okay";
        rockchip,lane-rate = <800>;
        dsi_panel: panel {
                ;
                reg = <0>;
                //ddc-i2c-bu
                //power-supply = <&vcc_lcd>;
                pinctrl-0 = <&lcd_panel_reset>;
                backlight = <&backlight>;
               
                //enable-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
                reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
               
                dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
                dsi,format = ;
                //dsi,format = ;
                //bus-format = ;
                //bus-format = ;
                dsi,lvds-force-clk = <800>; // 800/2/3 ~= 65Mhz
                dsi,lanes = <4>;

                dsi,channel = <0>;

                enable-delay-ms = <35>;
                prepare-delay-ms = <6>;
        
                unprepare-delay-ms = <0>;
                disable-delay-ms = <20>;
               
                size,width = <120>;
                size,height = <170>;

                status = "okay";

                panel-init-sequence = [

                        29 00 06 3C 01 09 00 07 00
                        29 00 06 14 01 06 00 00 00
                        29 00 06 64 01 09 00 00 00
                        29 00 06 68 01 09 00 00 00
                        29 00 06 6C 01 09 00 00 00
                        29 00 06 70 01 09 00 00 00
                        29 00 06 34 01 1F 00 00 00
                        29 00 06 10 02 1F 00 00 00
                        29 00 06 04 01 01 00 00 00
                        29 00 06 04 02 01 00 00 00
                        29 00 06 50 04 21 01 E0 15
                        29 00 06 54 04 04 00 04 00
                        29 00 06 58 04 00 05 28 00
                        29 00 06 5C 04 01 00 02 00
                        29 00 06 60 04 20 03 28 00
                        29 00 06 64 04 01 00 00 00
                        29 10 06 A0 04 06 80 44 00
                        29 00 06 A0 04 06 80 04 00
                        29 00 06 04 05 04 00 00 00

                        29 00 06 80 04 00 01 02 03
                        29 00 06 84 04 04 07 05 08
                        29 00 06 88 04 09 0A 0E 0F
                        29 00 06 8C 04 0B 0C 0D 10
                        29 00 06 90 04 16 17 11 12
                        29 00 06 94 04 13 14 15 1B
                        29 00 06 98 04 18 19 1A 06

                        29 00 06 9C 04 31 04 00 00
                ];

                panel-exit-sequence = [
                        05 05 01 28
                        05 78 01 10
                ];
               
                power_ctr: power_ctr {
                        rockchip,debug = <0>;
                        lcd_rst: lcd-rst {
                                gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&lcd_panel_reset>;
                                rockchip,delay = <120>;
                        };
                };

                disp_timings: display-timings {
                        native-mode = <&timing0>;
                        timing0: timing0 {               
                            clock-frequency = <66866760>;
                            hactive = <1280>;
                            vactive = <800>;
                            hsync-len = <10>;
                            hback-porch = <2>;
                            hfront-porch = <30>;
                            vsync-len = <1>;
                            vback-porch = <2>;
                            vfront-porch = <40>;
                            hsync-active = <0>;
                            vsync-active = <0>;
                            de-active = <0>;
                            pixelclk-active = <0>;  
                                };
                };
        };
};
下边为dsi配置的具体分析:



其中reset-gpios按照电路图引脚配置,要搜索一下是否有其他地方占用了这个IO资源,占用的屏蔽掉。

dsi,format输出格式,我的为RGB888。

dsi,lvds-force-clk,屏的频率,800MHz。

dsi,lanes,看电路图,用了几路线,填对应的数。

dsi,channel,看电路用了那个通道。



初始化序列,通过上边说的TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm 3399.xls生成对应的初始化序列。也可以跟厂家咨询初始化序列。

下边为屏的退出序列和时序配置。



clock-frequency为时钟频率,通过计算得出。

hactive为屏幕长,vactive为屏幕宽,和屏幕尺寸对应,剩下的为留边的长度宽度,如果屏幕有黑边或者少显示,则调整下边的这些参数即可。

修改vopl,vopb,如下图所示



hdmi使用的是vopl,那么dsi使用vopb,如图所示,hdmi_in_vopb为disabled,hdmi_in_vopl为okay,dsi_in_vopl为disabled,dsi_in_vopb为okay。各用一路。

配置好后,重新编译,烧录即可。

如果屏幕没有亮,则应检查以下几项:

1、reset引脚是否对,默认高低电平是否对,是否有其他地方配置该引脚。

2、屏幕初始化序列是否正确。

3、时序配置是否正确,根据屏幕参数进行配置。

4、vopl,vopb的配置是否正确,hdmi使用一路,dsi使用一路。

RK3399的linux系统,配置LVDS屏幕是可以使用的,如果不成功,则检查上述几项,基本就完事了。

遇到的问题:

1、升级后屏幕不亮,但是有背光,通过修改背光的默认值,背光有变化,说明dts的配置是没问题的,只是有某个地方没有配置对。

2、修改vopl,vopb配置后,HDMI无输出,说明配置的dts是正确的。

3、修改reset引脚后,屏幕出现白色,带有竖条纹,说明驱动有,可以使用,只是配置有问题。

4、搜索reset引脚,将其他dtsi中有用到该引脚的地方去掉后,液晶屏点亮。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分