转载至:http://blog.csdn.net/bmw7bmw7/article/details/46126223
展讯7731平台驱动调试总结-驱动配置部分
1. 关键配置文件路径
1). 项目板级配置:idh.code/device/sprd/scx35_sp7731geaplus_pad_qhd/文件夹内各文件
⑴.BoardConfig.mk---板级宏配置文件。包括设置该板(项目)所使用的uboot/kerenl全局配置宏文件,摄像头接口类型、分辨率等参数,所使用的重力加速度、光线传感器,内部存储空间大小分配等。
⑵. init.board.rc---板级自定义启动服务文件(TP,传感器等设备的启动指令放置在此文件中)
⑶.system.prop---板级系统属性文件(当所使用的LCD是屏幕旋转90°或180°显示时,请配置ro.sf.hwrotation这个值,使得系统端的输出图像就已经对应正确。请尽量不要使用修改LCD IC的寄存器的方式来调转图像显示方向,因为这样极易引出切屏的问题)。
⑷.xxx.idc---tp触摸屏属性文件。当新增一个触摸驱动时,需在此处添加对应文件名的idc文件,否则会出现进入系统后界面出现小圆圈,触摸功能异常的问题。
2). Kernel模块: kernel/arch/arm/configs/sp7731geaplus_pad_qhd-dt_defconfig(该文件由BoardConfig.mk 里的KERNEL_DEFCONFIG确定)
3). Uboot模块:idh.code/u-boot/include/configs/sp7731geaplus_pad_qhd.h(该文件由BoardConfig.mk 里的UBOOT_DEFCONFIG确定)
注意:不同项目使用不同的配置文件,用户也可以新建不同的项目工程文件以便在一套代码中支持不同的项目。
2. FLASH配置(包括配置项目的内存RAM大小,内部存储空间大小)
RAM配置如下:
1).chipram模块: idh.code\chipram\include\configs\Sp7731geaplus_pad_qhd.h
DDR_TYPE定义所使用的DDR芯片信息
2). uboot模块:idh.code\u-boot\include\configs\Sp7731geaplus_pad_qhd.h
定义项目所使用的内存RAM大小CONFIG_RAM512M/ CONFIG_RAM1G/ CONFIG_RAM256M
3). Kernel模块:idh.code/kernel/arch/arm/boot/dts/sprd-scx35_sp7731geaplus_pad_qhd.dts
memory {
device_type = "memory";
reg = <0x80000000 0x20000000>;
};
0x20000000即为512M。
ROM配置如下:idh.code/device/sprd/scx35_sp7731geaplus_pad_qhd/ BoardConfig.mk
BOARD_SYSTEMIMAGE_PARTITION_SIZE:分配给system.img文件的空间大小
BOARD_USERDATAIMAGE_PARTITION_SIZE:分配给手机(平板)的内部存储空间大小
3. LCD
1). Kernel模块:kernel\arch\arm\configs\ sp7731geaplus_pad_qhd-dt_defconfig中配置LCD新屏
kernel/drivers/video/sprdfb/lcd目录下添加本项目LCD驱动
kernel/drivers/video/backlight目录下修改系统LCD背光配置(若与系统默认配置不同时);
2). uboot模块:u-boot\include\configs\ sp7731geaplus_pad_qhd.h定义新增的LCD屏及其分辨率
u-boot/drivers/video/sprdfb/lcd目录下添加本项目LCD驱动
u-boot/drivers/video/sprdfb/ sprdfb_panel.c增加新增LCD的函数结构体及ID;
u-boot/drivers/video/sprdfb/ sprdfb_mainc修改新项目的背光配置(若与系统默认配置不同时);
2. CTP触摸屏
(1) kernel\arch\arm\configs\ sp7731geaplus_pad_qhd-dt_defconfig中配置新TP
(2)kernel/drivers/input/touchscreen内添加TP驱动;
提示:在展讯8825C等android 4.03版本上的CTP驱动可以不修改或简单修改即可在android 4.4上直接使用。
(3) device/sprd/ scx35_sp7731geaplus_pad_qhd /内添加对应的xxx.idc文件,并在scx35_sp7731geaplus_pad_qhd_dt.mk文件中调用该xxx.idc文件(若不添加或添加错误,有可能会造成开机后系统界面上出现一个类似于鼠标似的可以移动的小圆圈)。
(4) device/sprd/ scx35_sp7731geaplus_pad_qhd /init.board.rc中加入新TP的启动指令。
(5) idh.code/kernel/arch/arm/boot/dts/sprd-scx35_sp7731geaplus_pad_qhd.dts中配置新的TP设备名及其I2C地址,复位及中断脚号等参数。
注意:在驱动中需要增加专门的解析函数,对设备树sprd-scx35_sp7731geaplus_pad_qhd.dts中的内容进行解析。
补充:从7731平台开始,展讯统一使用设备树来对设备进行配置。设备树是一种数据结构,用以描述设备硬件参数。
3. Camera
(1) 根据摄像头模组厂打样时的摄像头摆放方向,配置好device\sprd\scx35\BoardConfigCommon.mk文件内的前/后摄像头方向。
若模组厂打样时摄像头拍照方向为横屏,则TARGET_BOARD_BACK_CAMERA_ROTATION及TARGET_BOARD_FRONT_CAMERA_ROTATION设置为false,否则设置为true。
(2)idh.code/device/sprd/scx35_sp7731geaplus_pad_qhd/BoardConfig.mk文件中CAMERA_SUPPORT_SIZE配置摄像头的分辨率(可比实际值大,可插值)、摄像头通讯接口等
(3) 根据电路原理图,在kernel/arch/arm/boot/dts/sprd-scx35_sp7731geaplus_pad_qhd.dts文件中sprd_sensor处配置好前后摄像头的pwdn、reset脚。
(4) vendor/sprd/open-source/libs/libcamera/sensor内添加具体的摄像头驱动。
(5) vendor/sprd/open-source/libs/libcamera/sc8830/src/sensor_cfg.c内设置前后摄像头
调试摄像头时,要尤其注意VDDCAMA(2.8V)、VDDCAMIO(1.8V)、VDDCAMMOT(3.0V)这三个LDO的输出电压大小区别。客户的模组厂在打样时经常会忽视VDDCAMA、VDDCAMIO这两个LDO的供电电压输出区别,从而造成摄像头点不亮。因此在调试时,如果出现摄像头点不亮,可以尝试跳线短接VDDCAMA(2.8V)、VDDCAMIO(1.8V),确认是否是这个问题。
项目中如果有前后摄像头,在调试时如果点不亮,也可以尝试对调前后摄像头的pwdn设置脚。在实际调试中也时常出现模组厂将这连个引脚对调的问题。
4. Sensor传感器
(1)kernel\arch\arm\configs\ sp7731geaplus_pad_qhd-dt_defconfig中添加新传感器全局配置
(2)Kernel层:kernel/drivers/input/misc/ 内添加Sensor传感器底层驱动程序
(3)HAL层:vendor/sprd/open-source/libs/libsensors/ 添加hal层代码
(4)device/sprd/scx35_sp7731geaplus_pad_qhd/BoardConfig.mk文件中设置所使用的sensor传感器(用于HAL层编译控制)
(5)device/sprd/scx15_sp7715ga/init.board.rc中加入新sensor的启动指令。
(6)kernel/arch/arm/boot/dts/sprd-scx35_sp7731geaplus_pad_qhd.dts中配置新的sensor设备名及其I2C地址,中断gpio口配置。
注意:在驱动中需要增加专门的解析函数,对设备树sprd-scx35_sp7731geaplus_pad_qhd.dts中的内容进行解析。
5. 其他配置
1). Gpio pin 配置: u-boot\board\spreadtrum\sp7731geaplus_pad_qhd\Pinmap-sp8830.c
2). Keypad按键配置:kernel/arch/arm/boot/dts/sprd-scx35_sp7731geaplus_pad_qhd.dts中的[email protected]。