中级会员
- 积分
- 417
- 金钱
- 417
- 注册时间
- 2018-4-2
- 在线时间
- 42 小时
|
视壮科技商显主板RK3288在uboot电量计驱动分析
1、uboot添加电量计fg驱动:
修改u-boot\drivers\power\fuel_gauge\fg_cw201x.c
#define COMPAT_ROCKCHIP_CW201X "cw2013"
宏定义COMPAT_ROCKCHIP_CW201X 必须与内核的dts里面的节点一致,如下:
CW2015@62 {
compatible = "cw2013";
status = "okay";
2、uboot修改系统正常启动的电压门限宏定义,低于这个电压,禁止uboot启动内核,并关机。
u-boot\include\configs\rk32plat.h
#define CONFIG_SYSTEM_ON_VOL_THRESD 7500 //7500表示7.5V,如果不接外部电源,电池电压低于7.5V时,系统不能启动。
3、添加低电压图片:
1)拷贝u-boot\tools\resource_tool\resources\images\battery_fail.bmp到kernel根目录下。
2)修改kernel\arch\arm\Makefile,将battery_fail.bmp编译进固件
LOGO := $(notdir $(wildcard $(srctree)/logo.bmp)) $(notdir $(wildcard $(srctree)/battery_fail.bmp))
3)修改uboot/board/rockchip/common/rkboot/fastboot.c
static void board_fbt_low_power_off(void)
{
if (is_power_low()) {
if (!is_charging()) {
FBTERR("low power, shutting down...\n");
#ifdef CONFIG_LCD
#ifdef CONFIG_RK_FB
//TODO: show warning logo.
- show_resource_image("image/battery_fail.bmp");
+ show_resource_image("battery_fail.bmp");
4、uboot电压计算
uboot/drivers/power/fuel_gauge/fg_cw201x.c
cw_get_vol()
{
- voltage = value16_1 * 305;
- return voltage/1000;
//与内核fg驱动计算公式一致。
+ voltage_jason = (value16_1 * 312 / 1024)*2;
+ return voltage_jason;
}
uboot计算出来的电压要比kernel计算出来的电压高0.3V左右。板子一上电uboot就计算电压,所以电压值会偏高一点。
uboot电量百分比的计算公式依赖于电压,所以要注意电量百分比的计算。
|
|