当前位置:首页 >> 计算机硬件及网络 >>

SC7731客户配置文档


SC7731 客户配置文档

2014-07-09

目录

02 SC7731

Add your texts here

01 03 软件架构简介 SC7731 02

Pinmap配置

Pinmap的设置

03

Add you texts here

客户化驱动配置

04

Add your texts here

11/09/11

.2

SC7731 软件架构简介
SC7731 平 台 简 介

SC7731 软件介绍

SC7731目录结构

11/09/11

.3

SC7731 平台简介 举例W
RF SR3131

CHIPSET BB/AP/PMU

NAME SC7731 SR3131 SR2351C

USIM/SIM
eMCP

SR2351C

SC7731

WCDMA/EDGE RF WIFI/BT/FM /GPS

MCP

SC7731 平台简介 2
CPU
–1.2 GHz Cortex A7 –256 KB L2 Cache – Neon coprocessors

WCDMA
–3GPP Rel. 7 UMTS HSPA+ –DL 21Mbps/ UL 5.76Mbps –Class 12 EGPRS, type B

GPU
– ARM Mali-400 dual – 33Mtri/s; 624Mpix/s

EDGE
–Class 12 EGPRS, type B

WCN
– Integrated WIFI 802.11 b/g/n – Integrated BT 2.1, FM – Integrated GPS

Camera
– 13M raw senor – Double 2-lane RX PHY

Interface
–HS USB 2.0 OTG –UART/SPI /I2C –4 x SDIO 3.0 interfaces

Multimedia
– H.264/H.263/MPEG4 1080P Codec 30fps –High Performance Audio Codec

DISPC
– Up to HD LCD –MCU I/F/MIPI

SC7731 软件介绍
在Native系统上,7731平台AP和Modem物理上是分离的子系统,两边通过 SIPC机制进行通讯。系统模块如下

device/sprd目录结构
PLAT里会提供不同组合方案给Board做为选择。比如SCX35可以支持eMMC和Nand两种方 案。在PLAT scx35里,会分出emmc和nand两个目录,分别存放相关的配置文件。而eMMC 方案的scx35_sp7731gea的BoardConfig里会配置相关的eMMC,而其product的mk文件里会 引用包含emmc_device.mk。相应的,Nand方案的product里会引用包含nand_device.mk

实例详见下页

device/sprd目录结构

vendor/sprd目录结构
平台实现的Android HAL代码和库放在vendor/sprd内,按是否开放源码分成几个独立的git管 理。IDH管理方式与shark的管理方式是一致的。

Pinmap 的配置 什么是pinmap

Pinmap 的配置规则

Pinmap 的配置实例

11/09/11

. 10

什么是pinmap
? Pinmap 是系统在启动之后,uboot对芯片pin脚进行初始化的配置信

息表。
? Pinmap 里面包括IO的:
? 1.Function 功能选择(Function0~3)

?
? ?

2.上下拉设置(WPD,WPU,X)
3.驱动能力设置(DS0~3) 4.sleep时的上下拉设置(WPD,WPU,X)

?
? ?

5.sleep时的输入输出设置(Input,Output,Hiz)
6.强上拉的设置(WPUS,X) 7.AP或CP的sleep控制—AP+CP架构(AP,CP0~CP2)

?

8.其他(PIN_ctrl0~3)
. 11

什么是pinmap
? WPU-IO的上拉电阻,一般在70K,会随着电压的降低增大。

? WPD-IO的下拉电阻,一般在70K,会随着电压的降低增大。
? WPU和WPD用于普通IO的有上下拉需求的配置。

? WPUDS-IO的强上拉电阻,一般在4.7K,会随着电压降低增大,用于
SIM_IO,I2C,RF_SDA,SDIO,EMMC等协议需要的的方。 ? 一般被配置成强上拉的,也会被配置成弱上拉,这个一般没什么影响。

? 自shark平台开始,pinmap的设置统一放在uboot里完成。
u-boot/board/spreadtrum/sp7731gea/pinmap-sp8830.c

. 12

Pinmap 的配置规则
以u-boot/board/spreadtrum/sp7731ea/pinmap.c为例,以下是pinmap配置规则。

需 要 配 置 的 pin 脚

强 上 拉 设 置

功 能 选 择

弱 上 下 拉 设 置

Sleep时 的上下 拉设置

驱 动 能 力 设 置

Sleep 时的 IO输 入输 出设 置

其他 (PIN _ctrl0 ~3)

AP或CP 的sleep 控制

TIPs:对于与CP侧有关的配置,我 们不建议客户修改

. 13

Pinmap 的配置规则
? 一般情况下Function功能是4种:
? Function是从0开始,3结束,一般Function3是GPIO功能,Function是绝对不能选
错的。

? Function的IO类型:
? I –输入,O-输出,Z-三态/高阻

? 一般情况下Drive Strength功能是4种:
? 2/6/12/24mA对应驱动能力0/1/2/3,一般情况下驱动能力(DS)设置为1就可以

,3为最强(7715的代码里是定义8个等级的,但我们一般只使用前4个等级)。
? DS Default 代表默认的驱动能力是2/6mA (根据芯片spec)。

. 14

Pinmap 的配置规则
? PU/PD代表系统在Active时(deepsleep以外)IO的上拉和下拉选择,有WPUS,WPU,WPD,X四 种选择。

. 15

Pinmap 配置规则
? Slp OE/IE代表系统在配置Deepsleep时,IO输入输出选择,有Input,Output和Hiz三种选择

. 16

Pinmap 的配置规则
? Slp PU/PD代表系统在Deepsleep时,IO的上拉和下拉的选择,有WPU/WPD和X三种选择

TIPs:对于NC引脚,一般设为WPD+Hiz

. 17

Pinmap的配置规则
? CP or AP代表IO随那个AP或者CP进入sleep而转变为sleep状态。这个设置只在AP+CP的架构中有

※: ×ALL=AP|CP0|CP1|CP0
DCP=CP0|CP1

. 18

Example
?RFCTL: ?如果引脚作为RFCTL用,Function必须选择正确,有的引脚可能会是多 个CP共用,应该特别小心,sleep的应该由cp开控制,多个cp采用, cpx|cpx的格式配置。 ?RFCTL引脚默认 是输出0,RFCTL使用时是输出,所以不用上下拉。 ?Sleep的时候,所有的RFCTL引脚是要求低电平的,有两种方法保持 sleep的低电平状态,1)x+output.2)WPD+Hiz ?RF_SPI可能会漏电到Transceiver,最好设置WPD+Hiz ?NC引脚按照WPD+Hiz的配置就可以。

以RFCTL10为例: Function选FUNC0,sleep时由CP0开控制 使用时不用上下拉,func up 设为:PIN_NULL Sleep时为了保持低电平,sleep pull up 设为SLP_WPD,且sleep i/o 设为: PIN_NULL
. 19

客户化驱动配置
GPIO配置 Device Tree简介
Keypad配置 I2C配置 LCD配置 Sensor客户化配置

TP客户化配置
11/09/11
. 20

GPIO 配置
首先要将要使用的PIN脚配置成GPIO功能 在u-boot/board/spreadtrum/sp7731gea/pinmap.c找到要用的PIN将Function配置 FUNC3,FUNC3表示GPIO功能(以CCIRRST为例)。

定义GPIO号
kernel/arch/arm/boot/dts/sprd-scx35_sp7731*.dts

GPIO 配置
配置GPIO的方向

申请GPIO资源

配置GPIO方向

设置GPIO输出值

. 22

Device Tree 简介

设备树是一种数据结构来描述硬件。而不是硬编码的设备的 每一个细节到操作系统,硬件的许多方面可以被传递给操作 系统在引导时的数据结构进行说明。设备树被开放固件,和独 立的扁平的设备树(FDT)形式使用

基本语法与C语言相似,可以参见展讯Device Tree相关文档
参见Device Tree 官方主页 http://www.devicetree.org/Main_Page

. 23

Keypad 配置
在文件kernel/arch/arm/boot/dts/sprd-scx35_sp7731*.dts中按照如下步骤 配置Keypad

Keypad 配置
步骤 1, 定义行列数

步骤 2, 定义键值

Keycodes 参考 linux/input.h

解析代码在 sc_keypad.c 中 函数sci_keypad_parse_dt(…)

I2C配置
? 在文件kernel/arch/arm/boot/dts/sprd-scx35_sp7731*.dts中按照如下步骤配置 Shark 芯片 四组 i2c 口, 确定设备使用那组i2c并添加配置,例如:

设备名,且要与后面的匹配

从设备名称与地址

I2C 配置
? 添加新的i2c Shark 默认未加i2c4, 添加如下:

添加i2c4到aliases中

I2c从设备信息

LCD配置
LCD配置(u-boot)
1) 增加驱动文件 u-boot/drivers/video/sprdfb/lcd/lcd_nt35516_mipi.c

2) 增加编译规则
./idh.code/u-boot/drivers/video/sprdfb/lcd/Makefile

COBJS-$(CONFIG_FB_LCD_NT35516_MIPI) += lcd_nt35516_mipi.o
3) 配置LCD编译选项及LCD尺寸 ./idh.code/u-boot/include/configs/sp7731gea.h #ifdef CONFIG_LCD //#define CONFIG_LCD_HVGA 1

#define CONFIG_LCD_QHD 1
#define CONFIG_FB_LCD_NT35516_MIPI

#endif // CONFIG_LCD

LCD配置
LCD配置(u-boot)
4) 关联到内核 在./idh.code/u-boot/drivers/video/sprdfb/sprdfb_panel.c文件中

extern struct panel_spec lcd_panel_nt35516_mipi_spec;
static struct panel_cfg lcd_panel[] = {

[0]={
.lcd_id = 0x63, .panel = &lcd_panel_nt35516_mipi_spec , }, };

LCD配置
LCD配置(kernel)
1)添加menuconfig配置项 ./idh.code/kernel/drivers/video/sprdfb/Kconfig

config FB_LCD_NT35516_MIPI
boolean "support NT35516 panel mipi"

depends on FB_SC8825 || FB_SCX35 || FB_SCX15
default n 2)添加driver ./idh.code/kernel/drivers/video/sprdfb/lcd/ lcd_nt35516_mipi.c 3)添加编译规则

在./idh.code/kernel/drivers/video/sprdfb/lcd/Makefile文件中增加
obj-$(CONFIG_FB_LCD_NT35516_MIPI) += lcd_nt35516_mipi.o

LCD配置
LCD配置(kernel)
4) 配置kernel默认LCD 在./idh.code/kernel/arch/arm/configs/sp7731gea-dt_defconfig中

添加CONFIG_FB_LCD_NT35516_MIPI=y

Camera配置
Camera 驱动配置
SC7731 默认是MIPI raw sensor. 配置代码位于vendor/sprd/open-source目录 按照如下步骤配置,以配置sensor ov8825为例

可以通过在两个文件中增加sensor的配置,实现自动匹配sensor。主要修改以下几个地方:
?将驱动代码文件放到vendor\sprd\open-source\libs\libcamera\sensor目录下。

?修改文件vendor/sprd/open-source/libs/libcamera/sc8830/src/sensor_cfg.c
在const SENSOR_INFO_T* main_sensor_infor_tab[]或sub_sensor_infor_tab[]中 增加对应驱动代码中的结构体变量如:g_XXXX_mipi_raw_info 并且增加声明:extern SENSOR_INFO_T g_XXXX_mipi_raw_info; 注意:放在main_sensor_infor_tab[]中最前面的sensor会最先匹配,所以我们一般把当 前使用的sensor放在第一,这样可以节省sensor初始化的时间。

Camera配置
Camera 驱动配置
?在vendor/sprd/open-source/libs/libcamera/Camera.mk和Camera_Utest.mk文 在对应的工程中增加要编译的驱动代码 ifeq ($(strip $(TARGET_BOARD_PLATFORM)),sc8830) LOCAL_C_INCLUDES := \ 件中,

$(LOCAL_PATH)/ispvideo
............

\

LOCAL_SRC_FILES:= \
............

sensor/sensor_XXXX.c \
?在文件BoardConfig.mk中配置sensor接口类型

//将此驱动代码名称添加到编译目录

TARGET_BOARD_BACK_CAMERA_INTERFACE := mipi
TARGET_BOARD_FRONT_CAMERA_INTERFACE := mipi

L&Psensor客户化配置
?作为input设备,相应驱动文件均放在kernel/drivers/input/misc/目录下 kernel/drivers/input/misc/ltr_558als.c ?相应的头文件路径: kernel/include/linux/i2c/ltr_558als.h ?设备是否启用由Makefile,Kconfig 对应的defconfig控制。

?Makefile
obj-$(CONFIG_INPUT_LTR558_I2C) += ltr_558als.o

?K con fig

L&Psensor客户化配置
?如下sp7731gea工程: kernel/arch/arm/configs/sp7731gea-dt_defconfig ?sp7731ea-native_defconfig中定义了设备及编译的模式: # CONFIG_INPUT_AL3006_I2C is not set CONFIG_INPUT_LTR558_I2C=y

?详细定义:
#include <linux/i2c/ltr_558als.h>

?配置i2c注册信息,如sp7731gea工程:
kernel/arch/arm/boot/dts/sprd-scx35_sp7731*.dts

L&Psensor客户化配置

? Pinmap用于配置gpio的初始功能,如 GPIO_PROX_INT ,配置如下: u-boot/board/spreadtrum//sp7731gea/pinmap.c

L&Psensor客户化配置
? HAL层文件位于/vendor/sprd/open-source/libs/libsensors_sprd /目录下
/vendor/sprd/open-source/libs/libsensors_sprd /Pls_LTR558ALS.cpp

/vendor/sprd/open-source/libs/libsensors_sprd /PlsSensor.h
? Android.mk 指定源码编译:

ifneq ($(BOARD_HAVE_PLS),NULL)
LOCAL_SRC_FILES += Pls_$(BOARD_HAVE_PLS).cpp

else
LOCAL_CFLAGS += -DPLS_NULL endif ? BoardConfig.mk配置使用的组件,如sp7731gea项目: device/sprd/sp7731gea/BoardConfig.mk USE_SPRD_SENSOR_LIB := true BOARD_HAVE_PLS := LTR558ALS

Gsensor客户化配置
? 作为input设备,相应驱动文件均放在kernel/drivers/input/misc/目录下 kernel/drivers/input/misc/mma8x5x.c(飞思卡尔方案) ? 设备是否启用由Makefile,Kconfig 对应的defconfig控制。 ? Makefile

obj-$(CONFIG_INPUT_MMA_8X5X)
? Kconfig

+= mma8x5x.o

Gsensor客户化配置
? defconfig文件放在了configs目录,如下sp7731gea工程: kernel/arch/arm/configs/sp7731gea-dt_defconfig ? sp7731gea-dt_defconfig中定义了那些设备被开启及被编译的方式 # CONFIG_INPUT_ADXL34X is not set

CONFIG_INPUT_LIS3DH_I2C = y
? Device Tree

Gsensor客户化配置
? 代码初始化部分(驱动加载)

? 部分sensor还需要其他辅助引脚,相关配置请参考light sensor部分。

Gsensor客户化配置
? HAL层文件位于/vendor/sprd/open-source/libs/libsensors_sprd /目录下 /vendor/sprd/open-source/libs/libsensors_sprd /Acc_Frescale.cpp /vendor/sprd/open-source/libs/libsensors_sprd /AccSensor.h ? Android.mk 控制相关代码的编译:

ifneq ($(BOARD_HAVE_ACC),NULL)
LOCAL_SRC_FILES += Acc_$(BOARD_HAVE_ACC).cpp

LOCAL_CFLAGS += -DACC_INSTALL_$(BOARD_ACC_INSTALL)
endif

? BoardConfig.mk指定使用的组件,如sp7731gea项目,配置路径为:
device/sprd/sp7731gea/BoardConfig.mk

? 详细配置:
USE_SPRD_SENSOR_LIB := true

BOARD_HAVE_ACC := Frescale
BOARD_ACC_INSTALL := 6

移植过程中注意事项
? 在HAL层代码中,sensors.cpp可以说是作为sensor hal层代码的core层,因此,如果要 新添加一个sensor例如:mma_8x5x,则HAL层代码需要修改Acc_Frescale.cpp和头文 件AccSensor.h,从而具体实现sensors.cpp中的抽象方法。 ? 在集成HAL层代码之前先要让驱动能正常工作,可以使用getevent来看是否能获取数据

,另外有些snesor会创建两个设备节点:一个eventX,用来获取数据,另外的设备节
点用来使能sensor。因此在获取数据时,首先要使能该sensor。

TP客户化配置
? 作为input设备,相应驱动文件均放在kernel/drivers/input/目录下 kernel/drivers/input/touchscreen/focaltech/focaltech.c ? 设备是否启用由Makefile,Kconfig 对应的defconfig控制。 ? Makefile

obj-$(CONFIG_TOUCHSCREEN_FOCALTECH) += focaltech_ts.o
? Kconfig

TP客户化配置
? defconfig文件放在了configs目录,如sp7731gea工程: kernel/arch/arm/configs/sp7731gea-dt_defconfig ? sp7731gea-dt_defconfig中定义了该设备是否被开启及其编译的模式 CONFIG_TOUCHSCREEN_FOCALTECH=m

TP客户化配置
? 配置i2c注册信息,如sp7731gea工程: kernel/arch/arm/boot/dts/sprd-scx35_sp7731*.dts ? 详细定义:

TP客户化配置
? Pinmap用于配置gpio的初始功能,如GPIO_TOUCH_RESET ,配置如下: u-boot/board/spreadtrum/sp7731gea/pinmap.c

TP客户化配置
? Driver修改

该名称必须与Device tree 匹配

TP客户化配置
? DTS解析

Gpio reset 解析

电压解析

The End


赞助商链接
相关文章:
更多相关标签: