高通平台Driver开发的参考文档(4)

2019-08-31 10:48

44922004.doc

在启动过程中就可以看到校验的相关其中签名段和证书段是用来校验代码段的完整性与合法性的。步骤。代码段就不需要我说了吧。 3.2.1 Nor Boot Nor flash有地址线,存在Nor Flash的代码可以本地执行,变量存在PSRAM,所以从NOR启动不需要Bootloader Boot switchImage EFSNOR启动模式太简单,一般只要将Nor Flash挂载到EBI1上,然后做些简单的操作,就可以直接运行。在高通代码中关于这方面的注释也很少。 3.2.2 Nand Boot

Nand Flash没有地址线,代码不能直接运行,因此需要Bootloader,那么bootloader的作用:

联想移动产品开发部软件处 - 13 -

44922004.doc

bootloaderBIB ImageEfs可以看出相对NOR boot,Nand boot复杂很多。它需要将falsh中的Image复制到SDRAM,然后才能执行。并且要对各个image进行校验。

3.2.3 Boot流程 Boot是一个很复杂的过程,尤其是Nand Boot,需要你对ARM架构很深的了解,这边只是简单示意相关流程,具体大家可以参考代码!

联想移动产品开发部软件处 - 14 -

44922004.doc

3.3 Gpio

3.3.1 GPIO的作用 GPIO 作为QSC60X5 与外界沟通的桥梁,主要有四个作用:

1. 通过GPIO 向外部输出一个高/低电平,控制外部的器件或者通知外部器件某事件的发生。 例如我们可以通过GPIO 输出一个高电平点亮一个LED, 或者输出低电平关掉一个LED。 2. 通过GPIO 读入一个外界的高低电平输入,检测外部器件的当前状态。例如键盘按键是否 按下的探测。

3. 将GPIO 口作为外部中断信号的一个输入口,实时检测外部事件的发生。 4. 将GPIO 用作其他特定用途。例如用作I2C 通信、数据线、地址线等。

联想移动产品开发部软件处 - 15 -

44922004.doc

3.3.2 GPIO的用法

1. 配置一个GPIO 口。通常一个GPIO 有多种功能,我们可以将GPIO 配置为符合我们当前需要的功能;同时我们也可以将GPIO配置为内部具有上拉电阻、下拉电阻或者没有任何上下拉电阻。文件GPIO_60x5.c 中定义了配置GPIO 的函数接口 void gpio_tlmm_config(GPIO_SignalType gpio_signal) { … … }

gpio_signal 指定要配置成的功能,文件GPIO_60x5.h 枚举出了每个GPIO 的可配置的功能选项: typedef enum { … …

GPIO_OUTPUT_3 = GPIO_OUT(3,0), GPIO_INPUT_3 = GPIO_IN(3,0,GPIO_PULL_DOWN), SDCC_DATA0 = GPIO_ALT(3,0,1,GPIO_PULL_UP), DBG_BUS_IN_7 = GPIO_ALT(3,0,2,GPIO_PULL_DOWN),… ? } 例子:

SDCC_DATA0 = GPIO_ALT(3,0,1,GPIO_PULL_UP) gpio_tlmm_config(SDCC_DATA); /* 将GPIO3 配置为SD卡 的数据线1*/ gpio_tlmm_config(GPIO_INTPUT_3); /* 将GPIO26 配置为通用的有下拉电阻的输入端口*/

2. 从GPIO 输出高/低电平。首先应该通过函数接口gpio_out来确定GPIO输出高电平或者低电平,然后通过函数接口gpio_tlmm_config把该GPIO配置为通用功能(非特定功能),在该配置函数中调用一个宏函数接口BIO_TRISTATE 打开GPIO 使能,将此电平输出出去。

void gpio_out(GPIO_SignalType gpio_signal,GPIO_ValueType gpio_value) /*将GPIO 寄存器设置输出的电平*/ BIO_TRISTATE(io, mask, val) /*GPIO 寄存器中的值输出出去:输出使能*/ 例子:使GPIO 31 输出低电平

联想移动产品开发部软件处 - 16 -

44922004.doc

gpio_out(GPIO_OUTPUT_31, GPIO_LOW_VALUE); gpio_tlmm_config(GPIO_OUTPUT_31);

3. 从GPIO 读入外部器件输入的高/低电平,检测外部的事件或者状态。只能从一个输出已被disable 的GPIO 读入输入的高/低电平,也就是说只能从一个已被设置为输入模式的GPIO 读入高/低电平。从GPIO 读入外部输入的高/低电平的宏函数接口: GPIO_ValueType gpio_in (

GPIO_SignalType gpio_signal ),

gpio_signal解释见上面的说明,而返回值 typedef enum {

GPIO_LOW_VALUE = 0, GPIO_HIGH_VALUE = 1 } GPIO_ValueType;

例:判断GPIO3的当前状态 gpio_tlmm_config(GPIO_INTPUT_3); if (gpio_in(GPIO_INTPUT_3) == GPIO_LOW_VALUE) { ….. }

4. 将GPIO 设置为某个中断信号的输入口。这样外部器件一旦有中断信号(高电平或者低电平)输入到此GPIO 端口,将直接触发一个中断,指定的ISR 将被调用,处理中断事件。中断的好处在于中断事件可以实时得到处理,无论系统是否处于睡眠状态。接口函数有两个:

A)gpio_int_set_detect(gpio_int_type which_group_int, gpio_int_detect_type detect) /*指定边沿触发还是电平触发*/

B) boolean gpio_int_set_handler (

gpio_int_type which_group_int,

联想移动产品开发部软件处 - 17 -


高通平台Driver开发的参考文档(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公路工程建设程序与各阶段工程造价关系知识表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: