修复 rk3288 android9 的一些问题

1.视频播放卡,有时播放H265视频HDMI显示花屏。
&route_hdmi{
	status = "okay";
};

&lvds_in_vopb {
  status = "disabled"; // LVDS使用vopl, 关闭vopb
};

&hdmi_in_vopl {
	status = "disabled";
};


\sdk-9.0\kernel\drivers\gpu\drm\rockchip\dw_hdmi-rockchip.c
 
+530 if(!strcmp(mode->name, "4096x2160") || !strcmp(mode->name, "3840x2160")){
+531    printk(KERN_ERR"bad mode:%s, vrefresh:%d\n",mode->name, mode->vrefresh);
+532   return MODE_BAD;
+533  }

关闭4k以上的分辨率
会出现桌面切换缓慢,hdmi闪黑屏,播放4k视频花屏。原因是当插上hdmi后,会自动识别hdmi的分辨率,当屏的分辨率与hdmi输出的分辨率不一致时,容易发生异常。但也不是绝对的,闪黑屏可以打补丁解决,但4k p30 的分辨率在板子上运行是不太流畅的,所以我想让它默认低分辨率输出,有4k需求的时候再设置4k分辨率。

(1)解决闪黑屏补丁
(u-boot)
diff --git a/drivers/clk/rockchip/clk_rk3288.c b/drivers/clk/rockchip/clk_rk3288.c
index ab346ef539..ede89a7445 100644
--- a/drivers/clk/rockchip/clk_rk3288.c
+++ b/drivers/clk/rockchip/clk_rk3288.c
@@ -169,7 +169,7 @@ enum {
 
 /* Keep divisors as low as possible to reduce jitter and power usage */
 static const struct pll_div apll_init_cfg = PLL_DIVISORS(APLL_HZ, 1, 1);
-static const struct pll_div gpll_init_cfg = PLL_DIVISORS(GPLL_HZ, 2, 4);
+static const struct pll_div gpll_init_cfg = PLL_DIVISORS(GPLL_HZ, 1, 8);
 static const struct pll_div cpll_init_cfg = PLL_DIVISORS(CPLL_HZ, 1, 2);
 
 (kernel) 
\sdk-9.0\kernel\drivers\gpu\drm\rockchip\dw_hdmi-rockchip.c

static const struct dw_hdmi_plat_data rk3288_hdmi_drv_data = {
	.mode_valid = dw_hdmi_rockchip_mode_valid,
	.mpll_cfg   = rockchip_mpll_cfg,
+	.mpll_cfg_420 = rockchip_mpll_cfg_420,  //rockchip_rk3288w_mpll_cfg_420,
	.cur_ctr    = rockchip_cur_ctr,
	.phy_config = rockchip_phy_config,
	.dev_type   = RK3288_HDMI,
	.tmds_n_table = rockchip_werid_tmds_n_table,
};

\sdk-9.0\kernel\drivers\clk\rockchip\clk-rk3288.c

-	RK3066_PLL_RATE_NB(594000000, 2, 198, 4, 1),
+	RK3066_PLL_RATE_NB(594000000, 1, 198, 8, 1),
+	
\sdk-9.0\kernel\arch\arm\boot\dts\rk3288-evb-android-act8846-edp.dtsi

			vdd_10: REG10 {
				regulator-name = "VDD_10";
-				regulator-min-microvolt = <1000000>;
-				regulator-max-microvolt = <1000000>;

+				regulator-min-microvolt = <1100000>; 
+				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};
(2) 设置主副屏,为副屏hdmi设置默认分辨率

\sdk-9.0\device\rockchip\rk3288\device.mk
PRODUCT_PROPERTY_OVERRIDES += \
		vendor.hwc.device.primary=LVDS \
		vendor.hwc.device.extend=HDMI-A \
		persist.vendor.resolution.aux=1920x1080p60 

(3)打开配置

\sdk-9.0\device\rockchip\rk3288\BoardConfig.mk
	BOARD_SHOW_HDMI_SETTING = true
	
(4)添加服务(查看自己使用的是哪个manifest.xml)

\sdk-9.0\device\rockchip\common\4g_modem\manifest.xml

    <hal format="hidl">
 				<name>rockchip.hardware.outputmanager</name>
 				<transport>hwbinder</transport>
 				<version>1.0</version>
 				<interface>
 						<name>IRkOutputManager</name>
 						<instance>default</instance>
 				</interface>
		</hal>

5.发现hdmi显示正常了,但4k分辨率情况下,播放高清视频会花屏。(关闭hwc测试)

\sdk-9.0\device\rockchip\rk3288\device.mk
PRODUCT_PROPERTY_OVERRIDES += \
		vendor.hwc.compose_policy=0 \
		
2.WIFI与蓝牙不稳定,有时启动之后无法打开,硬件的问题性比较大旧版本的AP6212稳定。改版为AP6356之后经常打不开。

待定
3.gps不支持,系统显示测试应用版本太低。

$: logcat
发现/dev/ttyS3没有权限

\sdk-9.0\device\rockchip\common\init.rk30board.rc
+ chmod  777 /dev/ttyS3

删除老旧的应用

4.SATA不支持。SATA供电脚没有电。
&i2c0 {
 act8846: act8846@5a {
 
    sata-enable-gpio = <&gpio7 RK_PB7 GPIO_ACTIVE_HIGH>;
    //usb_hub_reset_gpio = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
    //sata_reset_gpio = <&gpio8 RK_PA7 GPIO_ACTIVE_HIGH>;
    ....
    }
 }

sdk-9.0\kernel\drivers\regulator\act8865-regulator.c

static int act8865_pmic_probe(struct i2c_client *client,
			      const struct i2c_device_id *i2c_id)
{
	......
+	int sata_enable;
+	enum of_gpio_flags flags;
	......
		if (IS_ERR(rdev)) {
			dev_err(dev, "failed to register %s\n", desc->name);
			return PTR_ERR(rdev);
		}
	}

+	sata_enable = of_get_named_gpio_flags(client->dev.of_node, "sata-enable-gpio", 0, &flags);
+   	//GPIO7_B7_D //sata enable
+ 	 if(!gpio_request(sata_enable, "")){
+		  gpio_direction_output(sata_enable, 0);
+	    gpio_set_value(sata_enable,1);
+	 printk("rk3288 sata_enable gpio ok\n");
+  }else{
+ 	 printk("rk3288 gpio erro\n");
+ 	}
.......
}

还存在有事连接不上的问题
参照android7.1 修改 act8865-regulator.c 驱动后问题已解决。

5.RTC时间可运行断电能保存,但不能跟网络时间同步.

$:make ARCH=arm menuconfig
# 使用rtc芯片,关掉系统自带的rtc
 Device Drivers → Real Time Clock
 	<*>   Haoyu Microelectronics HYM8563 
 	< >   Rockchip RK808/RK816 RTC 

以上方法尚未解决,待定。

重新编译配置后,没有进行更换,导致时间不同步

CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set

#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set

测试发现 rtc并未同步。

logcat :
05-10 03:44:36.580 436 1384 D SntpClient: request time failed: java.net.SocketTimeoutException: Poll timed out
05-10 03:44:36.581 436 1384 E NtpTimeHelper: requestTime failed
05-10 03:44:37.125 1305 1305 W ServiceManagement: Waited one second for android.hardware.radio@1.0::IRadio/slot1. Waiting another..
ntp 连接不上,参照android7修改地址。

做一下修改
sdk-9.0\frameworks\base\core\res\res\values\config.xml
+ <!-- <string translatable="false" name="config_ntpServer">time.android.com</string> -->
+ <string translatable="false" name="config_ntpServer">2.android.pool.ntp.org</string>

已解决。曾修改用苹果的地址,发现gps受影响。

6.系统运行比较卡界面切换响应较慢。系统在启动或者运行中一直报VCCIO_SD的电压问题打印影响终端的使用如附件所示.

\sdk-9.0\kernel\drivers\power\avs\rockchip-io-domain.c
+162 //dev_info(supply->iod->dev, "Setting to %d done\n", uV);

\sdk-9.0\kernel\drivers\regulator\core.c
	if (*min_uV > *max_uV) {
+256		//rdev_err(rdev, "Restricting voltage, %u-%uuV\n",
+266			//*min_uV, *max_uV);
		return -EINVAL;
	}

系统运行比较卡界面切换响应较慢,尚未解决。

更新:由于hdmi处于4kp30分辨率下,系统运行比较卡,已经切换到低分辨率。

您好!对于RK3399 Android应用开发,您可以按照以下步骤进行: 1. 设置开发环境:首先,您需要安装Android Studio并配置好开发环境。您可以从官方网站下载最新版本的Android Studio并按照指示进行安装。 2. 创建项目:打开Android Studio后,选择“Start a new Android Studio project”来创建一个新的项目。在项目设置中,选择合适的应用名称、包名和存储位置等信息。 3. 设计用户界面:使用Android Studio提供的布局编辑器来设计应用的用户界面。您可以通过拖放控件、调整属性等方式进行界面的设计。 4. 编写代码:使用Java或Kotlin编写应用的逻辑代码。您可以在项目中的Java或Kotlin文件中编写Activity、Fragment、Service等组件的代码,并处理用户交互、数据处理等功能。 5. 调试和测试:在开发过程中,您可以使用Android Studio提供的模拟器或连接真实设备进行调试和测试。通过运行应用来验证功能是否正常,并根据需要进行调整和修复。 6. 打包发布:当应用开发完成后,您可以使用Android Studio提供的打包工具将应用打包成APK文件。然后,您可以将APK文件发布到Google Play商店或其他渠道供用户下载安装。 请注意,以上步骤仅为Android应用开发的基本流程,具体的开发过程可能会因项目需求而有所不同。另外,RK3399是一款处理器,用于驱动和运行Android系统,对于应用开发来说,并没有特别的限制或要求。 希望这些信息能对您有所帮助!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YY2065

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

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

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

打赏作者

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

抵扣说明:

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

余额充值