项目中遇到的问题及解决方案
1、RK3066中lvds屏三分之一显示正常,其他显示不正常
-->初始化代码中前后肩和工作模式配置不正确,改动后正常工作
2、RK3066中camera调试中模糊不清
-->摄像头在板子上偏置了90°,而在代码中是只能偏转0°或者180°
3、RK2926中LCD不能正常显示
-->(1)检查GPIO口在其他文件中是否复用,
(2)模块是否供上电,用万用表测量电压,
(3)GPIO口是否已使能控制,
(4)I2C是否通讯上,从地址是否匹配
4、RK2926中修改DV的分辨率
-->out\target\product\rk29sdk\system\etc\media_profiles.xml
--> device\rockchip\rk29sdk\media_profiles.xml
5、更改屏幕放置apk宽度大小
-->将\packages\apps\Launcher2\res\layout-sw720dp\workspace.xml 拷贝到 packages\apps\Launcher2\res\layout-sw720dp-port\ (横屏)和 packages\apps\Launcher2\res\layout-sw720dp-land(竖屏)下,添加代码如下:
launcher:defaultScreen="2"
launcher:cellCountX="4" //放置apk个数
launcher:cellCountY="7"
launcher:pageSpacing="@dimen/workspace_page_spacing">
6、屏幕的启动方向相反,触摸屏上报数据正常
--> 要求硬件工程师调换屏的上下拉电阻
7、查找文件中的内容
-->grep "..." 文件路径 -rin
8、TP上有触摸按键,添加按键驱动代码
-->1、在TP驱动程序中添加触摸键盘驱动代码,驱动中按下按键应该添加在触摸屏down状态下,而释放按键应该添加在触摸屏被释放状态下;
注意:input_report_key( input_dev , BTN_TOUCH , 1); // pressed
input_report_key( input_dev , BTN_TOUCH , 0); // realse
2、根据input_dev名字(如FT5X0X_KEY) 在\device\rockchip\rk2928sdk目录下添加FT5X0X_KEY.kl 文件(此文件是上报给上层对应的键值)
3、修改\device\rockchip\rk2928sdk目录下的device.mk文件,添加代码如下:
PRODUCT_COPY_FILES += \
.........
device/rockchip/$(TARGET_PRODUCT)/rk29-keypad.kl:system/usr/keylayout/rk29-keypad.kl \
device/rockchip/$(TARGET_PRODUCT)/FT5X0X_KEY.kl:system/usr/keylayout/FT5X0X_KEY.kl
9、USB充电控制(RK方案测试)
--> 因为电脑USB 口最大供电电流为500mA,而火牛供电电流要大于800mA,所以我们分不同情况充电:
1、当使用DC充电时,电池低电压(充电电流为400mA);电池不低电压(充电电流为800mA);
2、当usb连接电脑时,Usb连接状态(不充电);Usb断开状态(充电电流为400mA);
3、当usb处于串口调试状态时,我们也可给400mA的充电电流。
检测DC 还是 PC:int get_gadget_connect_flag(void),(火牛:返回0)(P
C:返回
1)
10、Android上层Gsensor的x、y、z接口函数(RK2926)
-->\hardware\rk29\sensor\mid\mmasensor.cpp中的下列函数:
void MmaSensor::processEvent(int code, int value);先确定Z轴的方向是Gsensor哪一轴上报上去的,然后再来调整x、y的方向。
11、修改开机Logo
-->1、在Linux下将bmp图片转换为ppm格式
$bmptoppm pic.bmp > temp1.ppm //生成ppm
$ppmquant 224 temp1.ppm > temp2.ppm //转换成224颜色
$pnmnoraw temp2.ppm > logo.ppm //转换成ascii格式
2、将kernel\drivers\video\logo文件夹下的图片替换为logo.ppm,并删除相应的.c和.o文件,再重新编译
12、压缩文件夹和在该文件夹下有不需要压缩的文件命令
-->tar -zcvf *.tar.gz --exclude=不需要压缩文件名 文件名
13、隐藏设置菜单中的HDMI格式
-->修改packages\apps\Settings\res\xml\settings_headers.xml的代码
android:id="@+id/hdmi_settings"
android:icon="@drawable/ic_settings_hdmi"
android:fragment="com.android.settings.HdmiControllerActivity"
android:title="@string/hdmi_settings"
android:visibility="gone" />
或者
-->frameworks\base\core\java\android\provider\OEMConfig.java文件中的IS_HAVE_HDMI设为false或true
packages\apps\Settings\src\com\android\settings\Setting.java中添加代码:
import android.provider.OEMConfig;
。。。。。。
private boolean hasHdmiFeature(){
//add by zhangguoji
if(!OEMConfig.IS_HAVE_HDMI){
return false;
}
//end
File file30=new File("/sys/class/display/HDMI/enable");
14、修改DDR频率
-->修改kernel\arch\arm\plat-rk\Kconfig文件内容
config DDR_SDRAM_FREQ
int "DDR SDRAM frequence (in MHz)
default 400
15、修改ro.hardware 字符名 adb
-->\system\core\init\init.c
//property_set("ro.hardware", hardware);
property_set("ro.hardware", "Luna TAB474");
16、修改盘符卷标大小写及卷标名称
-->\system\core\toolbox\newfs_msdos.c
原因分析:当USB设备插入到PC电脑上后,盘符全是大写,如下函数在上报前进了转行,将所有的小写全转换成大写了。为了保存不改变原来的值,做如下处理,将字符串转换函数去掉即可!
mklabel(u_int8_t *dest, const char *src)
{
int c, i;
for (i = 0; i < 11; i++) {
//c = *src ? toupper(*src++) : ' ';
c = *src ? (*src++) : ' ';
*dest++ = !i && c == '\xe5' ? 5 : c;
}
}
-->device\rockchip\rk2928sdk\init.rc
on boot
# basic network init
ifup lo
hostname localhost
domainname localdomain
setprop UserVolumeLabel "RockChips"