標籤:
轉載至: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]。
展訊7731平台驅動調試總結-驅動配置部分