当前位置:首页 >> 信息与通信 >>

展讯客户化配置使用指南(驱动部分)


客户化配置使用指南(驱动部分)

版本: 1.0.0 SW-BASE-UG-0027 2004-11-24 D1

www.spreadtrum.com

展讯通信有限公司 ·保密·

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG

-0027

修订历史
版本
1.0.0

日期
2004-11-24

作者
Lin.liu

审核
Draft

说明

展讯通信有限公司 ·保密·

第2页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

重要声明
版权声明 版权所有 ? 2003, 展讯通信有限公司,保留所有权利。 商标声明
展讯通信有限公司和展讯通信有限公司的产品是展讯通信有限公司专有。在提及其他公司及其产品时将使用各自公司 所拥有的商标,这种使用的目的仅限于引用。

不作保证声明
展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或 者任何间接、特殊或连带的损失承担任何责任。

保密声明
本文档(包括任何附件)包含的信息是保密信息。接收人了解其获得的本文档是保密的,除用于规定的目的外不得用 于任何目的,也不得将本文档泄露给任何第三方。

展讯通信有限公司 ·保密·

第3页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027


1



介绍 ........................................................................................................................................7 1.1 1.2 1.3 1.4 范围 .................................................................................................................................7 概述 .................................................................................................................................7 配置使用..........................................................................................................................7 缩写和定义 ......................................................................................................................7

2 3

键盘扫描码的配置和使用........................................................................................................8 存储器的配置........................................................................................................................10 3.1 Memory的空间区域划分 ................................................................................................11 3.2 Memory的配置与说明....................................................................................................12 3.2.1 flash相关地址定义( 8Mbytes = 1M + 3M + 3M + 1M)........................................12 3.2.2 SRAM相关定义(4Mbytes) ......................................................................................12 3.2.3 各种内存池的大小与定义 .......................................................................................13

4

系统频率与memory(程序和数据区)存取参数设置...........................................................16 4.1 4.2 4.3 4.4 PLL设置(输出为52MHz) ................................................................................................16 系统频率设置 ................................................................................................................16 第一块扩展memory的存取参数 .....................................................................................16 第二块扩展memory 1的存取参数 ..................................................................................16

5

系统引脚功能配置 ................................................................................................................17 5.1 5.2 5.3 各个引脚功能与总线驱动能力的定义.............................................................................17 全局的寄存器配置 .........................................................................................................18 GPIO的配置 ..................................................................................................................18

6

LCD的配置使用指南.............................................................................................................20 6.1 LCD的总体框架 .............................................................................................................20 6.2 LCD驱动需要包含的实现...............................................................................................20 6.2.1 主屏的高度和宽度 ..................................................................................................20 6.2.2 检查LCD的指针是否正确 .......................................................................................20 6.2.3 让主屏工作在显示模式 ...........................................................................................20 6.2.4 得到主屏LCD缓冲区的首地址 ................................................................................20 6.2.5 得到附屏LCD缓冲区的首地址 ................................................................................20 6.2.6 得到主屏的操作函数指针。....................................................................................20 6.2.7 得到附屏的操作函数指针 .......................................................................................21 6.2.8 硬件复位 ................................................................................................................21 6.2.9 设置LCD的亮度......................................................................................................21 6.2.10 LCD_OPERATIONS_T中定义的各种函数的实现。...............................................21

展讯通信有限公司 ·保密·

第4页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

7

GPIO的配置使用 ..................................................................................................................23 7.1 GPIO 状态的获取和设置 ...............................................................................................23 7.2 GPIO中断的使用 ...........................................................................................................23 7.2.1 GPIO_AddCallbackToIntTable() .......................................................................23 7.2.2 GPIO_AddToIntTable() .....................................................................................23

8

文件系统配置........................................................................................................................24 8.1 8.2 文件系统所支持的最大块数。 .......................................................................................24 文件系统所支持的最大文件/目录数目............................................................................24

9 10

NVITEM的cache功能配置 ...................................................................................................25 充电功能 ...........................................................................................................................26

10.1 概述 ...............................................................................................................................26 10.2 充电消息定义 ................................................................................................................26 10.3 客户化部分需要实现的函数 ...........................................................................................26 10.3.1 获取电池的状态......................................................................................................26 10.3.2 获取当前电量的百分比 ...........................................................................................26 10.3.3 初始化充电模块......................................................................................................26 10.3.4 关闭充电模块 .........................................................................................................27 10.3.5 触发器 ....................................................................................................................27 11 其它一些典型设备的配置 ..................................................................................................28

11.1 Dight Camera的相关地址定义.......................................................................................28 11.1.1 DC的起始地址定义.................................................................................................28 11.1.2 DC的地址偏移位数.................................................................................................28 11.2 MIDI( Y762C )的相关地址定义 ......................................................................................28 11.2.1 MIDI状态寄存器地址 ..............................................................................................28 11.2.2 MIDI数据寄存器地址 ..............................................................................................28 12 12.1 12.2 12.3 12.4 13 需要实现的一些回调函数 ..................................................................................................29 切换MCU时钟................................................................................................................29 准备关机 ........................................................................................................................29 进入/退出 deepsleep .....................................................................................................29 设置Power Button的功能...............................................................................................29 生产测试系统配置使用......................................................................................................30

13.1 电流测试........................................................................................................................30 13.1.1 停止当前的电流测试...............................................................................................30 13.1.2 准备deepsleep时的电流测试..................................................................................30 13.1.3 测试LED 打开时的电流 ..........................................................................................30
展讯通信有限公司 ·保密· 第5页 共33页 2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

13.1.4 测试震动马达打开时的电流....................................................................................30 13.1.5 测试充电电流 .........................................................................................................30 13.2 Pin 测试.........................................................................................................................30 13.2.1 Pin 测试函数说明 ...................................................................................................30 13.2.2 Audio测试 ..............................................................................................................31 13.2.3 LCM的测试 ............................................................................................................31 13.2.4 震动马达测试 .........................................................................................................31 13.3 测试扩展接口 ................................................................................................................31 13.4 辅助测试函数 ................................................................................................................32 13.4.1 进入Audio环回模式 ................................................................................................32 13.4.2 退出Audio环回模式 ................................................................................................32 13.4.3 切换Audio通路 .......................................................................................................32 13.5 ADC calibration的配置使用 ...........................................................................................32 14 参考例子中的文件介绍: ..................................................................................................33

展讯通信有限公司 ·保密·

第6页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

1 介绍
本文档描述了驱动部分客户化配置及其使用。

1.1

范围
本文档描述了驱动部分客户化配置的使用,作为设计时的参考。 [1] 参考文档

1.2

概述

对于不同的设计应用,其间的差别被独立出来,使得客户可以不用修改内核,仅仅通过配置能够快速 的应用到不同的产品中。客户的配置部分就作为系统功能的一个延伸。这些不同点一般是存储空间的大小 和各种引脚的功能不同。 和系统的模块相对应,大致划分成下面几个选项: 1. 键盘扫描码的定义 2. 存储空间的配置(flash/SRAM等) 3. 引脚的功能定义和GPIO的功能配置

1.3

配置使用

所有的参数均是通过全局变量的形式配置,用户一般只需定义所需的全局变量,值设为所需参数即 可。 所需注意的是所有的变量都需定义成 const 类型。

1.4

缩写和定义
General Purpose Input/Output

GPIO

展讯通信有限公司 ·保密·

第7页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

2 键盘扫描码的配置和使用
整个系统定义了一组虚拟键,其值保持不变,定义在dal_keypad.h中(可通过包含tb_dal.h来引用该文 件)。上层应用只看到这些虚拟键,并且也只能引用这些虚拟键。 同一虚拟键在不同的产品中其键盘扫描码可能是不同的,其差别就由该配置屏蔽,配置文件一般取名 为keymap_产品名.c,用户也可以取不同的名称,需要(并且只需要)包含如下的 查询表: const uint16 keymap[] ={……} ; 该数组定义了键盘扫描码和虚拟键的对应表, 其关系为: keymap[ 扫描码n ] = 虚拟键n

一个典型的定义如下: const uint16 keymap[] = { /* scan code 0 */ SCI_VK_MENU_CANCEL, /* scan code 1 */ SCI_VK_RIGHT, /* scan code 2 */ SCI_VK_POWER, /* scan code 3 */ SCI_VK_1, /* scan code 4 */ SCI_VK_2, …… /* scan code 46 */ TB_KPD_INVALID_KEY, /* scan code 47 */ TB_KPD_INVALID_KEY };

当产生键盘中断后,键盘服务器根据扫描码,在该表中查找并转换成对应的虚拟键后,发送 该虚拟键的消息给应用层。 例如,当扫描码为n1时,表中对应的虚拟键为SCI_VK_1,然后键盘服务器通知注册的客户 SCI_VK_1被按下。 有关键盘服务器的工作流程与使用接口请参见 《键盘接口使用说明.doc》

扫描码的计算公式: scan_code = ( col * 8 ) + row (见下图的键盘矩阵)

展讯通信有限公司 ·保密·

第8页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

展讯通信有限公司 ·保密·

第9页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

3 存储器的配置
memory部分主要完成以下几方面的配置。 1. 系统各种模式的堆栈大小定义; 2. RAM的大小等相关地址定义; 3. Flash的大小以及文件系统相关地址定义; 4. 各种大小的内存池及堆的定义。

展讯通信有限公司 ·保密·

第10页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

一组典型的定义及说明如下:

3.1

Memory的空间区域划分
Flash的大小为16Mbytes, 分成四个分区(2M + 6M + 6M + 2M,参见flash的datasheet)。 前三个分区存放代码,后一个分区存放数据(nvitem + 文件系统)。RAM的大小为4Mbytes。

FLASH的空间分配图 FLASH_StartAddr

代码区

FLASH_FixedNvitemAddr

下载的nvitem区
FLASH_Size FLASH_BankAddr

数 据 区

文件数据

FLASH_FileSystemNum FLASH_SectorNum FLASH_ProductInfoAddr

nvitem数据

系统保留

SRAM的空间分配图 RAM起始地址

程序所使用的RAM,包括各种 全局和静态变量
g_mem_limit(系统堆栈开始地址)

各种模式堆栈

系统 保留空间

g_svc_stack_limit_add(SVC模式堆栈的顶端)

展讯通信有限公司 ·保密·

第11页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

3.2
3.2.1

Memory的配置与说明
flash相关地址定义( 8Mbytes = 1M + 3M + 3M + 1M)
= 95; // 数据部分所管理的sector数目。 //使用第三个分区(6Mbytes, 共96个sector). //最后一个64K保留给系统使用 const uint32 FLASH_FileSystemNum = 80; //文件系统部分所占用的sector数目。 //文件系统和nvitem部分的存储空间是分开的, //以保证足够的nvitem空间。 //该值应小于FLASH_SectorNum,其差值应大于所有的 //nvitem大小之和 + 1sector(整理空间时使用)。 const uint32 FLASH_SectorSize const uint32 FLASH_StartAddr const uint32 FLASH_BankAddr = 0x10000; // 数据部分所管理的每个sector的大小(64Kbytes) = 0x0; // flash的起始地址 const uint32 FLASH_SectorNum

= 0x800000; // 数据部分的分区起始地址(最后1Mbytes的起始地址) // 必须是一个物理分区的起始地址。

const uint32 FLASH_Size

= 0x1000000; // 整个flash的大小

const uint32 FLASH_FixedNvitemAddr = 0x07F0000; //下载的nvitem的地址,一般选择代码区的 //最后一个sector const uint32 FLASH_ProductInfoAddr = 0x0FFE000; // 保存生产信息的地址空间(一般选取最 //后一个sector) 注: 如果修改了 FLASH_FixedNvitemAddr / FLASH_ProductInfoAddr 的定义,需要同时修改下载和生产 工具中相应的设置。

// The offset of the sram that be used to simulator const uint32 FLASH_EmuOffsetAddr = 0; //当没有flash,用RAM模拟时,系统会占用 //一段空间来模拟flash.该值为相对于RAM //起始地址的偏移量。 //别的情况下该值不会被使用。

3.2.2

SRAM相关定义(4Mbytes)
0x400000

#define SRAM_SIZE

各种模式的堆栈大小定义 const uint32 g_fiq_stack_size const uint32 g_irq_stack_size = 512; = 2048; // fiq模式的堆栈大小 // irq模式的堆栈大小 // undefine模式的堆栈大小 // abort模式的堆栈大小 //系统堆栈大小
2005-7-22

const uint32 g_undefine_stack_size = 512; const uint32 g_abort_stack_size const uint32 g_sys_stack_size
展讯通信有限公司 ·保密·

= 512; = 512;

第12页 共33页

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

const uint32 g_timer_stack_size

= 2048;

//系统timer线程堆栈大小

系统保留空间地址(SVC模式的堆栈终止地址) 系统需要保留12Kbytes. const uint32 g_svc_stack_limit_add = EXTM_XCSN1_START + SRAM_SIZE – 0x3000;

RAM空间的界限,包括 ZW/ZI 数据不应该超过这个空间。 在该地址之后的空间一般被用作各种堆栈等系统用途。 const uint32 g_mem_limit = EXTM_XCSN1_START + 0x3FC000;

整个RAM的大小 const uint32 g_sram_size = SRAM_SIZE;

3.2.3
注:

各种内存池的大小与定义

1. 对于各种pool的大小定义,如果RTOS库是debug模式(定义了SCI_MEMORY_DEBUG),则用户 的工程中也必需定义该宏,并且增加pool的大小,来存储额外的debug信息。 该宏在 os_api.h 中定义。 2. 字节堆和各种内存池的空间分配必须是 32bites的边界。

3.2.3.1

字节堆的大小定义
(1000 * 1024) // 1.0Mbytes

#define BYTE_HEAP_SIZE

3.2.3.2

大小为52bytes的内存池大小定义 #define BLOCK_52_SIZE 52 (52 + sizeof(MEM_HEADER_T) ) //存储debug信息。

#ifndef SCI_MEMORY_DEBUG #else #define BLOCK_52_SIZE #endif #define MAX_NUM_OF_52_POOLS #define POOL_52_SIZE 300 //总共300个

(MAX_NUM_OF_52_POOLS * (BLOCK_52_SIZE + sizeof(void *)))

3.2.3.3

大小为100bytes的内存池大小定义
100 124 // 100 + sizeof(MEM_HEADER_T)
第13页 共33页 2005-7-22

#ifndef SCI_MEMORY_DEBUG #define BLOCK_100_SIZE #else #define BLOCK_100_SIZE
展讯通信有限公司 ·保密·

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

#endif

#define MAX_NUM_OF_100_POOLS #define POOL_100_SIZE

100

(MAX_NUM_OF_100_POOLS * (BLOCK_100_SIZE + sizeof(void *)))

3.2.3.4

大小为300bytes的内存池大小定义
300 324 // 300 + sizeof(MEM_HEADER_T)

#ifndef SCI_MEMORY_DEBUG #define BLOCK_300_SIZE #else #define BLOCK_300_SIZE #endif

#define MAX_NUM_OF_300_POOLS #define POOL_300_SIZE

70 //@Ivan.Yin 2004-03-09 GPRS fta need 55

(MAX_NUM_OF_300_POOLS * (BLOCK_300_SIZE + sizeof(void *)))

3.2.3.5

大小为600bytes的内存池大小定义
600 624 // 600 + sizeof(MEM_HEADER_T) 50//25,@hyman change for cr10974

#ifndef SCI_MEMORY_DEBUG #define BLOCK_600_SIZE #else #define BLOCK_600_SIZE #endif #define MAX_NUM_OF_600_POOLS #define POOL_600_SIZE (MAX_NUM_OF_600_POOLS * (BLOCK_600_SIZE + sizeof(void *)))

3.2.3.6

大小为1600bytes的内存池大小定义
1600 1624 // 1600 + sizeof(MEM_HEADER_T)

#ifndef SCI_MEMORY_DEBUG #define BLOCK_1600_SIZE #else #define BLOCK_1600_SIZE #endif #define MAX_NUM_OF_1600_POOLS 100 #define POOL_1600_SIZE (MAX_NUM_OF_1600_POOLS * (BLOCK_1600_SIZE + sizeof(void *)))

3.2.3.7

各种pool的大小定义
= BLOCK_52_SIZE; = BLOCK_100_SIZE; = BLOCK_300_SIZE;
第14页 共33页 2005-7-22

const uint32 block_52_size const uint32 block_100_size const uint32 block_300_size
展讯通信有限公司 ·保密·

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

const uint32 block_600_size const uint32 block_1600_size const uint32 byte_heap_size const uint32 pool_52_size const uint32 pool_100_size const uint32 pool_300_size const uint32 pool_600_size const uint32 pool_1600_size

= BLOCK_600_SIZE; = BLOCK_1600_SIZE; = BYTE_HEAP_SIZE; = POOL_52_SIZE; = POOL_100_SIZE; = POOL_300_SIZE; = POOL_600_SIZE; = POOL_1600_SIZE;

3.2.3.8

各种内存池的空间分配
BYTE_HEAP_ADDR[ byte_head_size >> 2 ]; POOL_52_ADDR[ pool_52_size >> 2 ]; POOL_100_ADDR[ pool_100_size >> 2 ]; POOL_300_ADDR[ pool_300_size >> 2 ]; POOL_600_ADDR[ pool_600_size >> 2 ]; POOL_1600_ADDR[ pool_1600_size >> 2 ];

uint32 uint32 uint32 uint32 uint32 uint32

展讯通信有限公司 ·保密·

第15页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

4 系统频率与MEMORY(程序和数据区)存取参数设置
对于SC6600B系列而言,ARM和DSP的时钟都由PLL的时钟分频得到。而PLL的时钟则由晶振通过锁 相环(PLL)倍频得到。 系统一般挂接两块基本的存储器(分别接在CS0/CS1)上,其中CS0(第一块扩展memory)接flash, CS1上接 RAM,CS2/CS3上接用户的外设。 对于不同的memory,在不同频率下,其总线访问参数是不同的。

4.1

PLL设置(输出为52MHz)
设置PLL的输出频率 const uint32 g_pll_mn_value = PLL_MN_CLK_P52M;

4.2

系统频率设置
在PLL=52M时, 设置 DSP clock = 52M, ARM clock = 13 const uint32 g_clk_value = PCTL_CLK_P52M_D52M_A13M;

4.3

第一块扩展memory的存取参数
const uint32 g_cs0_value = MCU13M_ECS0_VALUE;

4.4

第二块扩展memory 1的存取参数
const uint32 g_cs1_value = MCU13M_ECS1_VALUE;

展讯通信有限公司 ·保密·

第16页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

5 系统引脚功能配置
系统设置主要包含三个方面的内容。

5.1

各个引脚功能与总线驱动能力的定义
该定义为PM_PINFUNC_T的数组,其类型在pinmap.h中声明如下: typedef struct PM_PINFUNC_tag { uint32 addr; uint32 value; }PM_PINFUNC_T; // 寄存器地址 // 该寄存器的初始化数据

该数组的定义例子如下(摘录于SC6600B7系列): const PM_PINFUNC_T pm_func[]= { //系统配置/总线驱动能力定义,一般不要修改。 {0x8c000058, 0 {0x8c000064, 0 {0x8c000070, 0 {0x8c000080, 0xf {0x8c000088, 0x3f03 {0x8c000094, 0xf {0x8c0000A4, 0x0 {0x8c0000B8, 0 {0x8c0000BC, 0 {0x8c0000C8, 0 {0x8c000050, 0xffff {0x8c000054, 0xffff {0x8c000084, 0xffff {0x8c000028, 0x40 }, }, }, }, U }, }, }, }, }, }, }, }, }, },

// 客户化配置部分,可根据自己需要修改 {0x8C000000, BIT_2}, {0x8c000020, BIT_1 | BIT_0 | BIT_12 | BIT_13 }, // 选择 PWMA。 // 选择clk输出为 32K Hz // 选择 GPIO 31, 32

{0x8C000030, BIT_3 | BIT_2 | BIT_5 | BIT_4},
展讯通信有限公司 ·保密·

//选择 GPIO 1,2 //选择 GPIO 3,4
第17页 共33页 2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

{0x8C000008, BIT_3 | BIT_2 | BIT_5 | BIT_4 }, …… //客户化配置结束 {0xffffffff, 0xffffffff} // 最后一项,全为1,结束标识符 }; //选择 GPIO 6, 7, 8 //选择 GPIO 9

5.2

全局的寄存器配置
一个典型的配置如下: const PM_PINFUNC_T pm_default_global_map[]= { {0x8B000018, 0x2050 …… // The tail indication {0xffffffff, 0xffffffff} }; }, // 打开毫秒级的系统时钟.

5.3

GPIO的配置
该定义为PM_GPIO_CTL_T的数组,其类型在pinmap.h中定义如下: typedef struct GPIO_CTL_tag { uint16 gpio_num; uint16 default_val; PM_DIR_E dir; PM_IS_E int_sense; } PM_GPIO_CTL_T; // GPIO的编号 // 缺省的值,仅当为输出时有效(如果为0xFFFF,则不设置该GPIO) // GPIO的方向 // 中断类型(当配置为中断时,dir应该配置成输入)

一个配置例子如下: const PM_GPIO_CTL_T pm_gpio_default_map[]= { { 3, { 6, {27, 0, PM_INPUT, PM_BOTH_EDGE}, 0, PM_INPUT, PM_FALLING_EDGE}, 0, PM_INPUT, PM_FALLING_EDGE}, PM_OUTPUT, PM_NO_INT }, // GPIO_3, flip,上升沿和下降沿都触发 // GPIO_6, 下降沿触发 // GPIO_27, 下降沿触发 // GPIO_2, 输出,保持缺省值不变
2005-7-22

{2, 0xFFFF,

展讯通信有限公司 ·保密·

第18页 共33页

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

{32, 0, ……

PM_OUTPUT, PM_NO_INT

},

// GPIO_32, 输出,缺省值为0

{0xffff, 0, PM_INVALID_DIR, PM_INVALID_INT } };

// 最后一项,GPIO编号为0xFFFF

展讯通信有限公司 ·保密·

第19页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

6 LCD的配置使用指南
6.1 LCD的总体框架
系统实现了一个虚拟的LCD,以支持不同的类型。 而LCD驱动则定义了虚拟LCD所需要的 屏幕的高度(height)和宽度(width),对应的屏幕缓冲区和各种 操作函数。 上层应用针对该缓冲区完成各种操作,当需要刷新时,调用提供的刷新函数来把该缓冲区的内容更新 到LCD上。 由于缓冲区是一个二维的结构,上层认为该缓冲区的二维结构定义为 lcd_buffer[ length ][ width ]; LCD驱动的定义应该和这保持一致,以避免结构的不同所导致的显示错乱。

6.2

LCD驱动需要包含的实现
客户的驱动需要包含如下的实现 ( 原型请参见lcd.h ):

6.2.1

主屏的高度和宽度
// width of main lcd. // height of main lcd.

const uint16 lcd_width = XXX; const uint16 lcd_height = XXX;

6.2.2

检查LCD的指针是否正确

BOOLEAN LCD_IsLCDPointerValid(LCD_ID_E lcd_id, LCD_OPERATIONS_T* lcdpointer_ptr);

6.2.3

让主屏工作在显示模式

包括退出sleep模式,打开被光等。 PUBLIC void LCD_DisplayOn(void);

6.2.4

得到主屏LCD缓冲区的首地址

之后上层对主屏的操作都先对该缓冲区进行,只在需要时才刷新到LCD上 PUBLIC void *LCD_GetLCDBuffer(void)

6.2.5

得到附屏LCD缓冲区的首地址

之后上层对附屏的操作都先对该缓冲区进行,只在需要时才刷新到LCD上。 PUBLIC void *LCD_GetSubLCDBuffer(void);

6.2.6

得到主屏的操作函数指针。

之后上层利用这些函数来具体操作LCD。该指针应该被定义成const 类型,以保证在任何时候都能得到 该指针。 有关LCD_OPERATIONS_T的结构,请参见 lcd.h
展讯通信有限公司 ·保密· 第20页 共33页 2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

PUBLIC LCD_OPERATIONS_T *LCD_GetOperations(void);

6.2.7

得到附屏的操作函数指针

之后上层利用这些函数来具体操作LCD。该指针应该被定义成const 类型,以保证在任何时候都能得到 该指针。

PUBLIC LCD_OPERATIONS_T *SubLCD_GetOperations(void);

6.2.8

硬件复位

系统在调用init函数之前会先调用该函数来复位LCD模块。

PUBLIC void LCD_Reset(void);

6.2.9

设置LCD的亮度

原型如下,参数为LCD亮度的百分比。如果为100,则为最亮。如果为0,则关闭被光。

void LCD_SetBackLightBrightless( uint32 brightless )

6.2.10 LCD_OPERATIONS_T中定义的各种函数的实现。
LCD驱动应该实现该结构定义的所有操作函数。 以下是函数原型和简要介绍: 6.2.10.1 初始化LCD ERR_LCD_E lcd_Init(void);

6.2.10.2 设置sleep模式 如果is_sleep非零,则进入sleep模式,否则退出sleep模式。 ERR_LCD_E lcd_EnterSleep(BOOLEAN is_sleep);

6.2.10.3 设置对比度 ERR_LCD_E lcd_SetContrast(uint16 contrast);

6.2.10.4 设置亮度 ERR_LCD_E lcd_SetBrightness(uint16 brightness);

6.2.10.5 设置显示窗口大小 ERR_LCD_E lcd_SetDisplayWindow(uint16 left, uint16 top, uint16 right, uint16 bottom);

展讯通信有限公司 ·保密·

第21页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

6.2.10.6 获取LCD的相关参数 ERR_LCD_E lcd_GetInfo(LCD_INFO_T *lcd_info_ptr);

6.2.10.7 刷新一块矩形区域 ERR_LCD_E lcd_InvalidateRect(uint16 left, uint16 top, uint16 right, uint16 bottom);

6.2.10.8 刷新整个屏幕 ERR_LCD_E lcd_Invalidate(void);

6.2.10.9 清除整个屏幕(设为背景色) void lcd_Clear(uint32 color);

6.2.10.10 关闭LCD设置 void lcd_Close(void);

6.2.10.11 得到主屏的spec说明 ERR_LCD_E lcd_GetMainLcdSpec(LCD_SPEC_T *spec_ptr);

展讯通信有限公司 ·保密·

第22页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

7 GPIO的配置使用
GPIO的配置在系统引脚功能的配置里说明,这里说明使用方法。

7.1

GPIO 状态的获取和设置

由于功能在pinmap.c中已经配置好(引脚功能选择,方向等),因此只需调用tb_hal.h中定义的GPIO 操作函数来获取GPIO的状态即可。

7.2

GPIO中断的使用
系统初始化时,会调用GPIO_CustomizeInit()来允许客户继续GPIO的配置。 客户可以使用如下两个函数来配置中断的使用(对同一个GPIO,不能同时使用)。

7.2.1

GPIO_AddCallbackToIntTable()

增加中断处理函数。当产生中断时,调用传入的回调函数。

7.2.2

GPIO_AddToIntTable()

增加中断处理消息。当产生中断时,把对应的消息通过键盘服务器发送给客户(注册在键盘服务器 上),通过类似于键盘消息的处理方式来处理GPIO中断事件。 所需注意的是,这些消息必须是键盘消息(参见 tb_keypad.h)。

展讯通信有限公司 ·保密·

第23页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

8 文件系统配置
前述的在flash地址中定义了一些文件系统的物理定义,下面的则定义了文件系统的一些逻辑配置。

8.1

文件系统所支持的最大块数。

每个块为1024bytes,这样文件系统的最大使用空间为g_file_system_data_block_num * 1024。该空 间不应超过定义的物理空间大小(即文件系统所使用sector * 单个sector的大小),否则在空间基本用完时 会导致文件系统性能下降。 建议比物理空间少两个sector

const uint32 g_file_system_data_block_num = 5000;

8.2

文件系统所支持的最大文件/目录数目
const uint32 g_file_system_file_num = 256;

展讯通信有限公司 ·保密·

第24页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

9 NVITEM的CACHE功能配置
当该值非零时,打开cache的功能,此时允许在文件系统繁忙时,对nvitem的操作先在cache中进行, 待空闲时再写入到flash中,以缩短对nvitem的写入时间,来支持对时间要求较严格的写请求。

const uint32 g_nvitem_cache_enabled

= 1;

展讯通信有限公司 ·保密·

第25页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

10 充电功能
10.1 概述
SC6600B系列的模块不包含充电的功能,因此,充电芯片都是外接,充电管理软件也在客户化部分实 现。相关的类型/函数声明在 dal_chr.h中定义。客户化应该作为一个服务器的形式,当有事件发生时,发送 在 CHR_SVR_MSG_SERVICE_E 中定义的事件值给注册的客户。

10.2 充电消息定义
typedef enum { CHR_CAP_IND = 0x1, CHR_CHARGE_START_IND, CHR_CHARGE_END_IND, // 报告当前的电量给注册的客户, // 开始充电 // 充电结束(现在不再使用,分为 finish/disconnect/fault)

CHR_WARNING_IND, CHR_SHUTDOWN_IND, CHR_CHARGE_FINISH, CHR_CHARGE_DISCONNECT, CHR_CHARGE_FAULT, CHR_MSG_MAX_NUM } CHR_SVR_MSG_SERVICE_E;

// 报告电量低的消息,以提示需要充电 // 电量严重不足,需要关机。 // 充电完成 // 充电器被拔除 // 充电意外(例如充电器电压太低等).

10.3 客户化部分需要实现的函数
客户化部分还需实现如下的函数,提供给系统使用:

10.3.1 获取电池的状态
该函数返回电池当前的状态,可能的值在dal_chr.h中定义。 uint32 CHR_CheckBatteryStatus(void);

10.3.2 获取当前电量的百分比
一般返回五档(分别是 0, 20, 40, 60, 80 )。 uint32 CHR_GetBatCapacity(void);

10.3.3 初始化充电模块
当系统初始化时,调用该函数来初始化充电模块。 void CHR_Init(void);

展讯通信有限公司 ·保密·

第26页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

10.3.4 关闭充电模块
当系统关闭时调用该函数。 void CHR_Close(void);

10.3.5 触发器
系统一般间隔2秒左右会调用该函数来触发充电模块启动电压等的检测。 如果客户有自己的检测机制,则不需要实现该函数。 void Charge_ReportCapacity( void );

展讯通信有限公司 ·保密·

第27页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

11 其它一些典型设备的配置
系统实现了一些设备的驱动(例如digit camera,MIDI等),这些驱动需要用到的一些配置描述如下:

11.1 Dight Camera的相关地址定义
11.1.1 DC的起始地址定义
const uint32 uint32 g_dc_base_addr = 0x06000000; // DC base address

11.1.2 DC的地址偏移位数
const uint32 g_dc_addr_shift_bit_num = 21; // DC address shift bit number

11.2 MIDI( Y762C )的相关地址定义
11.2.1 MIDI状态寄存器地址
const uint32 g_midi_status_reg_addr = 0x04000001;

11.2.2 MIDI数据寄存器地址
const uint32 g_midi_data_reg_addr = 0x04040001;

展讯通信有限公司 ·保密·

第28页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

12 需要实现的一些回调函数
包括当系统开始/完成某项操作时调用的回调函数以及PowerButton的功能设置。

12.1 切换MCU时钟
当系统完成MCU时钟切换后,调用该函数,以方面外设完成相应的改变。 原型如下,唯一的参数 clk 是系统新的时钟频率。 void SCI_AfterChangeClk( uint32 clk );

12.2 准备关机
当系统准备关机时,调用该函数来关闭客户化部分。 void SCI_PrePowerOff( void )

12.3 进入/退出 deepsleep
当系统准备进入或已经从deepsleep模式下退出时,系统会调用下述两个函数来通知。 void SCI_BeforeEnterDeepSleep( void ); void SCI_AfterExitDeepSleep( void );

12.4 设置Power Button的功能
Power Button的引脚有两种功能复用(键盘和GPIO),可能在不同的产品中有不同的接法。 如果用作GPIO的功能,则在需要检测Power Button状态时,要把其引脚功能设为键盘,不需要时恢 复。 如果用作键盘,则不需要做这些改变,此时该函数体为空即可。 因此,系统需要这个函数来动态设置Power Button引脚的功能。 原型如下,当参数bGPIO_Mode为零时,需要设置PowerButton的引脚功能为 PowerButton。 非零则设置PowerButton的引脚功能为GPIO功能。

void PowerButton_SetMode( BOOLEAN bGPIO_Mode );

展讯通信有限公司 ·保密·

第29页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

13 生产测试系统配置使用
生产测试系统中的基本项目(各项电流测试、LCM、LED等),在现在的测试架构下如果各个产品都 是一样的,无需配置,则在系统内部实现。如果有差别,则系统会调用各个配置函数完成相应的测试。对 于以后可能的扩展测试项,系统提供一个函数接口来支持扩展测试项。 系统同时提供了一些辅助函数来完成相关的测试。

基本的配置函数描述如下:

13.1 电流测试
13.1.1 停止当前的电流测试
该函数停止当前的电流测试项,设置必须的外设状态,准备下一项测试。 系统每开始一项测试之前都会调用该函数。

void SCI_ProductTest_Current_Stop( void )

13.1.2 准备deepsleep时的电流测试
当系统准备测试deepsleep时的电流时,会调用该函数来关闭所有的外设/LED等,准备进入deepsleep 状态。

void SCI_ProductTest_Current_Prepare_DeepSleep( void )

13.1.3 测试LED 打开时的电流
测试LED(键盘/LCD背光等)打开时的电流,需要在这个函数里面打开相关的背光灯。

void SCI_ProductTest_Current_LED_On( void )

13.1.4 测试震动马达打开时的电流
需要在这个函数里打开震动马达。

void SCI_ProductTest_Current_Vibrator_On( void )

13.1.5 测试充电电流
需要在这个函数里打开充电开关。

void SCI_ProductTest_Current_Charge( void )

13.2 Pin 测试
13.2.1 Pin 测试函数说明
所有的MMI测试函数的原型都是一样的:
展讯通信有限公司 ·保密· 第30页 共33页 2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

uint32 SCI_ProductTest_XXXX( uint8 * failed_pin_list, uint32 max_failed_pin_list ); 输入参数说明: failed_pin_list: 存储测试失败的引脚编号,最后一个应该是0xFF,已指明结尾。 可以存储的数据不应超过 failed_pin_list(包括结尾的0xFF)。 用户也可以存储别的信息,但需 PC端的测试工具支持。 max_failed_pin_list:failed_pin_list的最大长度。 返回值: 如果成功,返回 1,失败则返回 0。

13.2.2 Audio测试
测试原理是利用DSP的环回,输入测试波形,检测输出是否正确。 可参见给出的例子。

uint32 SCI_ProductTest_Audio( uint8 * failed_pin_list, uint32 max_failed_pin_list )

13.2.3 LCM的测试
uint32 SCI_ProductTest_LCM( uint8 * failed_pin_list, uint32 max_failed_pin_list )

13.2.4 震动马达测试
uint32 SCI_ProductTest_Vibrator( uint8 * failed_pin_list, uint32 max_failed_pin_list )

13.3 测试扩展接口
这个接口用来扩展对生产测试的支持。 该接口仅仅完成和PC端的数据传输,数据的格式由PC端的生产测试工具和手机内的测试程序确定。 函数原型如下: uint32 SCI_ProductTest_Extend( uint8 *src_ptr, uint32 src_len, uint8 *rsp_ptr, uint32 max_rsp_len ) 参数说明: src_ptr :包含输入的数据内容 src_len :输入的数据长度 rsp_ptr:存储测试结果的缓冲区 max_rsp_len:存储测试结果的缓冲区的最大长度。 返回值: 该函数返回实际存储在结果缓冲区的数据长度。

展讯通信有限公司 ·保密·

第31页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

13.4 辅助测试函数
系统提供了如下的函数来帮助完成Audio部分的测试。

13.4.1 进入Audio环回模式
BOOLEAN SCI_ProductTest_Audio_Enter_Loopback_Mode( void );

13.4.2 退出Audio环回模式
BOOLEAN SCI_ProductTest_Audio_Exit_Loopback_Mode( void );

13.4.3 切换Audio通路
SC6600B系列的Audio部分有两路输入,也有两路输出。 当进入环回模式时,系统使用其中的一对,调用该函数可以切换到另一对进行测试。

void

SCI_ProductTest_Audio_SwitchChannel( void );

13.5 ADC calibration的配置使用
对于每一路的ADC,系统支持其可以测量 高/低两个电压点。 做ADC的calibration前,系统会调用下面的函数来配置这一次电压的高低。 如果该路只有一种电压输入,则不需要实现。

void SCI_Calibration_ADC_Config( ADC_E adc_src, BOOLEAN bHighVoltage ) 输入参数: adc_src:需要做calibration的通路 bHighVoltage:如果非零,则该路的输入电压应配置成高电平,零则配置成低电平。

展讯通信有限公司 ·保密·

第32页 共33页

2005-7-22

客户化配置使用指南(驱动部分)

版本 1.0.0

SW-BASE-UG-0027

14 参考例子中的文件介绍:
1. keymap_XXXX.c :键盘扫描码定义 2. mem_cfg_XXXX.c:存储器配置 3. pinmap_XXXX.c:引脚功能/GPIO功能配置 4. XXXX_cfg.c:时钟频率/内存访问参数/一些设备的配置 5. lcd_cfg.c:LCD的配置 6. gpio_XXXXX.c:gpio相关的函数实现。 7. charge.c:充电管理模块 8. production_test.c:生产测试实现 9. test_export.c:和GPIO相关的一组辅助测试函数。

展讯通信有限公司 ·保密·

第33页 共33页

2005-7-22


相关文章:
展讯平台TCXO和DCXO自适应兼容方案(客户配置)
展讯平台TCXO和DCXO自适应兼容方案(客户配置)_计算机硬件及网络_IT/计算机_专业资料。展讯平台 TCX0 和 DCXO 自适应配置今日推荐 116...
客户化配置练习题
展讯客户化配置使用指南(驱... 33页 1财富值 NC61产品手册-客户化配置 34页...部门档案维护: 请在系统中增加本公司部分部门的档案。例如:编码 01 02 部门 ...
更多相关标签:
展讯驱动 | 展讯驱动win7 | 展讯刷机驱动 | 展讯手机驱动 | 展讯win7 64位驱动 | 展讯usb驱动 | 展讯驱动下载 | 展讯camera驱动调试 |