CN111443952A - 提升基于uart接口的蓝牙打开速度的方法及*** - Google Patents
提升基于uart接口的蓝牙打开速度的方法及*** Download PDFInfo
- Publication number
- CN111443952A CN111443952A CN202010180310.1A CN202010180310A CN111443952A CN 111443952 A CN111443952 A CN 111443952A CN 202010180310 A CN202010180310 A CN 202010180310A CN 111443952 A CN111443952 A CN 111443952A
- Authority
- CN
- China
- Prior art keywords
- bluetooth
- firmware
- chip
- uart interface
- loading attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请提出一种提升安卓***上基于UART接口蓝牙打开速度的方法,包括以下步骤:在安卓***的init进程on boot阶段,为蓝牙芯片上电并打开UART接口以加载蓝牙固件,同时初始化蓝牙固件加载属性为假;在所述蓝牙固件加载完毕后,设置蓝牙固件加载属性为真;在初始化libbt‑vendor模块时,检查所述蓝牙固件加载属性是否为真;当所述蓝牙固件加载属性为真时,直接打开蓝牙控制器上的蓝牙接口并对蓝牙芯片执行HCI_RESET操作,否则为所述蓝牙芯片上电并打开UART接口,并在加载蓝牙固件后,再打开所述蓝牙控制器上的蓝牙接口并对所述蓝牙芯片执行HCI_RESET操作。
Description
技术领域
本发明涉及蓝牙通信技术领域,尤其涉及一种提升安卓***上基于UART接口蓝牙打开速度的方法、***及存储介质。
背景技术
在安卓***上,用户每次打开蓝牙功能时都需要先加载蓝牙固件。对于UART接口的蓝牙,由于UART接口速度的限制,加载固件的时间会使得用户通过操作界面打开蓝牙时感到明显的延迟。特别地,由于目前安卓***上蓝牙应用领域越来越广泛,功能越来越完善,因此蓝牙固件的体量相应地变得越来越大。当用户打开蓝牙时,加载蓝牙固件的时间相应地变得越来越长,严重影响用户体验。
目前行业内的惯用思路是裁剪蓝牙固件。具体地,蓝牙的基本功能被固化到ROM中,而蓝牙固件则采取PATCH RAM的形式以减小自身体量。然而,由于蓝牙芯片的ROM特性,其通常只能在出厂时烧写一次;因此,上述方案仅适用于新的蓝牙芯片。对于出厂后的芯片,上述方案对于因功能更新扩充而导致蓝牙固件体量变大的情况无能为力。
发明内容
本申请的目的是解决现有技术的不足,提供一种提升安卓***上基于UART接口蓝牙打开速度的方法、***,通过调整蓝牙加载固件的时机,能够获得减少用户打开蓝牙的等待时间的效果。
为了实现上述目的,本申请采用以下的技术方案。
在第一方面,本申请提出一种提升安卓***上基于UART接口蓝牙打开速度的方法,包括包括以下步骤:在安卓***的init进程on boot阶段,为蓝牙芯片上电并打开UART接口以加载蓝牙固件,同时初始化蓝牙固件加载属性vendor.bluetooth.fw.loaded为假;在所述蓝牙固件加载完毕后,设置蓝牙固件加载属性vendor.bluetooth.fw.loaded为真;在初始化libbt-vendor模块时,检查所述蓝牙固件加载属性vendor.bluetooth.fw.loaded是否为真;当所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,直接打开蓝牙控制器上的蓝牙接口并对蓝牙芯片执行HCI_RESET操作,否则为所述蓝牙芯片上电并打开UART接口,并在加载蓝牙固件后,再对所述蓝牙芯片执行HCI_RESET操作。
在本申请的上述方法中,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件的操作与启动zygote服务同步执行。
在本申请的上述一个或多个方法中,当蓝牙被主动关闭时,所述蓝牙芯片仅被RESET一次而不断电。
在本申请的上述一个或多个方法中,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件,并在加载所述蓝牙固件后设置所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真。
在本申请的上述一个或多个方法中,当需要再次打开蓝牙,且所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,所述蓝牙芯片使用之前加载的蓝牙固件。
在本申请的上述一个或多个方法中,为蓝牙芯片上电的步骤还包括以下子步骤:拉低所述蓝牙芯片硬件RESET引脚以RESET所述蓝牙芯片。
在本申请的上述一个或多个方法中,当所述蓝牙芯片为PATCH RAM型芯片时,所述蓝牙固件通过HCI VENDOR SPECIAL命令加载。
在本申请的上述一个或多个方法中,当所述蓝牙芯片为非PATCH RAM型芯片时,所述蓝牙固件通过使用蓝牙厂商私有方式加载。
在第二方面,本申请提出一种计算机***。所述计算机***包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序。所述处理器执行所述程序时实现以下步骤:在安卓***的init进程on boot阶段,为蓝牙芯片上电并打开UART接口以加载蓝牙固件,同时初始化蓝牙固件加载属性vendor.bluetooth.fw.loaded为假;在所述蓝牙固件加载完毕后,设置蓝牙固件加载属性vendor.bluetooth.fw.loaded为真;在初始化libbt-vendor模块时,检查所述蓝牙固件加载属性vendor.bluetooth.fw.loaded是否为真;当所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,直接打开蓝牙控制器上的蓝牙接口并对蓝牙芯片执行HCI_RESET操作,否则为所述蓝牙芯片上电并打开UART接口以加载蓝牙固件,并对所述蓝牙控制器执行HCI_RESET操作。
在本申请的上述计算机***中,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件的操作与启动zygote服务同步执行。
在本申请的上述一个或多个计算机***中,当蓝牙被主动关闭时,所述蓝牙芯片仅被RESET一次而不断电。
在本申请的上述一个或多个计算机***中,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件,并在加载所述蓝牙固件后设置所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真。
在本申请的上述一个或多个计算机***中,若需要再次为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件,则在加载所述蓝牙固件后设置所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真。
在本申请的上述一个或多个计算机***中,当蓝牙被打开且所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,所述蓝牙芯片使用之前加载的蓝牙固件。
在本申请的上述一个或多个计算机***中,为蓝牙芯片上电的步骤还包括以下子步骤:拉低所述蓝牙芯片硬件RESET引脚以RESET所述蓝牙芯片。
在本申请的上述一个或多个计算机***中,当所述蓝牙芯片为PATCH RAM型芯片时,所述蓝牙固件通过HCI VENDOR SPECIAL命令加载。
在本申请的上述一个或多个计算机***中,当所述蓝牙芯片为非PATCH RAM型芯片时,所述蓝牙固件通过使用蓝牙厂商私有方式加载。
在第三方面,本申请提出一种存储介质。其中。所述存储介质中存储有计算机程序。所述计算机程序被设置为运行时执行以下步骤:在安卓***的init进程on boot阶段,为蓝牙芯片上电并打开UART接口以加载蓝牙固件,同时初始化蓝牙固件加载属性vendor.bluetooth.fw.loaded为假;在所述蓝牙固件加载完毕后,设置蓝牙固件加载属性vendor.bluetooth.fw.loaded为真;在初始化libbt-vendor模块时,检查所述蓝牙固件加载属性vendor.bluetooth.fw.loaded是否为真;当所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,直接打开蓝牙控制器上的蓝牙接口并对蓝牙芯片执行HCI_RESET操作,否则为所述蓝牙芯片上电并打开UART接口,并在加载蓝牙固件后,再打开所述蓝牙控制器上的蓝牙接口并对所述蓝牙芯片执行HCI_RESET操作。
在本申请的上述存储介质中,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件的操作与启动zygote服务同步执行。
在本申请的上述一个或多个存储介质中,当蓝牙被主动关闭时,所述蓝牙芯片仅被RESET一次而不断电。
在本申请的上述一个或多个存储介质中,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件,并在加载所述蓝牙固件后设置所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真。
在本申请的上述一个或多个存储介质中,若需要再次为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件,则在加载所述蓝牙固件后设置所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真。
在本申请的上述一个或多个存储介质中,当蓝牙被打开且所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,所述蓝牙芯片使用之前加载的蓝牙固件。
在本申请的上述一个或多个存储介质中,为蓝牙芯片上电的步骤还包括以下子步骤:拉低所述蓝牙芯片硬件RESET引脚以RESET所述蓝牙芯片。
在本申请的上述一个或多个存储介质中,当所述蓝牙芯片为PATCH RAM型芯片时,所述蓝牙固件通过HCI VENDOR SPECIAL命令加载。
在本申请的上述一个或多个存储介质中,当所述蓝牙芯片为非PATCH RAM型芯片时,所述蓝牙固件通过使用蓝牙厂商私有方式加载。
本申请技术方案的有益效果为:对于出厂后的蓝牙芯片,缓解由于蓝牙固件的更新扩展而引发的蓝牙启动速度过长问题。
附图说明
图1所示为现有的蓝牙固件加载方法流程图;
图2所示为根据本申请实施例的提升安卓***上基于UART接口蓝牙打开速度的方法流程图;
图3所示为根据本申请实施例的再次为蓝牙芯片上电和加载蓝牙固件的子方法流程图;
图4所示为根据本申请实施例的再次开启蓝牙的子方法流程图;
图5所示为根据本申请实施例的蓝牙芯片上电的子方法流程图;
图6所示为根据本申请实施例的提升安卓***上基于UART接口蓝牙打开速度的模块结构图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。
参照图1所示现有蓝牙芯片启动方法流程图,在搭载有安卓***的电子设备开启时,所述电子设备的引导芯片代码开始从预定义的地方开始执行,加载引导程序BootLoader到RAM(Random Access Memory,随机存取存储器)。其中,所述预定义的地方通常是ROM(Read Only Memory,只读存储器)中的预设地址。引导程序Boot Loader是在安卓***开始运行前被执行的一个小程序,用以检测外部的RAM及加载后续过程中需要使用的程序,以及设置网络和内存等。init进程作为安卓***中用户空间的第一个进程而被启动,用于挂载目录(如/sys、/dev、/proc等)以及运行init.rc脚本。其中,init进程可以在/system/core/init找到,init.rc可以在/system/core/rootdir/init.rc找到,readme.txt可以在/system/core/init/readme.txt找到。其中init.rc脚本是安卓***的初始化脚本文件。安卓***初始化过程要触发的动作和需要启动的服务及其各自属性都在init.rc脚本中定义。在实际应用中,当init进程启动(即on boot阶段)后,孵化器(zygote)进程启动。然后zygote进程将启动***服务(System Server)进程,进而在System Server进程中启动一系列的服务。特别地,安卓***自身的蓝牙服务(即图1中的bluetootmanagerservice)及其后继执行流程(尤其是用户打开蓝牙功能后所执行的蓝牙固件加载等流程阶段①~⑧)也是通过System Server开启的。应当理解,本文中出现的术语“安卓***自身的蓝牙服务”是指基于安卓***实现的蓝牙服务。
然而,正如前文所提到,当蓝牙固件因功能扩展和更新而不断变大之后,蓝牙固件的加载时间则会相应地变长,从而影响用户的体验。为此,参照图2所示的方法流程图,根据本申请的实施例,提升安卓***上基于UART接口蓝牙打开速度的方法可以包括以下步骤:在安卓***的init进程on boot阶段,为蓝牙芯片上电并打开UART接口以加载蓝牙固件,同时将设置蓝牙固件加载属性vendor.bluetooth.fw.loaded为假;在所述蓝牙固件加载完毕后,设置蓝牙固件加载属性vendor.bluetooth.fw.loaded为真;在初始化libbt-vendor模块时,检查所述蓝牙固件加载属性vendor.bluetooth.fw.loaded是否为真;当所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,直接打开蓝牙控制器上的蓝牙接口并对蓝牙芯片执行HCI_RESET操作,否则为所述蓝牙芯片上电并打开UART接口,并在加载蓝牙固件后,再打开所述蓝牙控制器上的蓝牙接口并对所述蓝牙芯片执行HCI_RESET操作。相对于图1所示的流程方案,上述蓝牙启动流程将图1中的提前至init进程所在的的on boot阶段,实现蓝牙上电、打开UART接口并加载固件加载。对于蓝牙固件来说,当蓝牙功能扩展更新而导致蓝牙固件的体量变大后,上述阶段⑦所占用的时间就会变长。例如,当蓝牙固件为300KB且UART接口速度为1.5Mbps时,该阶段耗时至少为300×1024÷(1500000÷10)=2s。因为用户操作蓝牙的动作发生在***启动完成之后,即按照图所示的流程方案,上述流程阶段①~⑧的动作肯定发生on boot阶段的蓝牙固件加载之后;所以对于用户来说,图2所示的方法流程在安卓***启动后完成,用户操作蓝牙时,阶段⑤和⑦相当于被直接省略(即跳过蓝牙固件加载这一过程)。由前述计算可知,当蓝牙固件的大小为300KB且UART接口的波特率为1.5Mbps时,图2所示的方法流程至少要减少2s的等待时间。具体地,发明人已经在A50Android-P平台测试上述蓝牙打开方法。经验证,当电子设备搭载XR829蓝牙芯片时,用户等待时间相比图1所示的技术方案可缩短约2.7s。根据上面的讨论可知,如果出厂后的蓝牙芯片所对应的蓝牙固件体量越大,本申请的上述蓝牙打开方法的优化效果越明显。
例如,在本申请的一个或多个实施例中,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件的操作与启动zygote服务同步执行(都在用户手动操作打开蓝牙功能之前)。然而,在某些情况下,在用户手动操作打开蓝牙功能之后,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件的操作仍未完成。此时,参照图2的流程图和图3所示的子方法流程图可知,在本申请的技术方案中,因为只有在蓝牙固件加载完成后,所述蓝牙固件加载属性才被设置为真。相应地,图1中的阶段⑤和⑦的执行逻辑被调整为若所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真,则无需执行该阶段原有任务。具体地,参照图4所示的子方法流程图在本申请的上述一个或多个实施例中,当蓝牙被主动关闭时,若所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真,则所述蓝牙芯片仅被RESET一次而不断电。反之,若需要再次为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件,则在加载所述蓝牙固件后设置所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真。进一步地,在本申请的上述一个或多个实施例中,当蓝牙被打开且所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,所述蓝牙芯片直接使用之前加载的蓝牙固件。因此,上述实施例通过调整蓝牙芯片加载蓝牙固件的时机,减少用户打开蓝牙的等待时间。当用户再次打开蓝牙功能时,如果安卓***检测到蓝牙固件已经加载,则蓝牙芯片无需再次加载蓝牙固件。
参照图5所示的子方法流程图,在本申请的一个或多个实施例中,在给蓝牙芯片再次上电前,蓝牙芯片硬件RESET引脚会被拉低而做一次RESET动作。然后,当所述蓝牙芯片为PATCH RAM型芯片时,上述RESET操作会使芯片进入初始化状态,所述蓝牙固件通过HCIVENDOR SPECIAL命令加载;当所述蓝牙芯片为非PATCH RAM型芯片时,上述RESET操作会使芯片进入BROM,所述蓝牙固件将通过使用蓝牙厂商私有方式加载。
图6是本发明实施例提供的提升安卓***上基于UART接口蓝牙打开速度的***的示意图。如图6所示,该实施例的提升安卓***上基于UART接口蓝牙打开速度的***包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如提升安卓***上基于UART接口蓝牙打开速度的程序。所述处理器执行所述计算机程序时实现上述各个视频流播放方法实施例中的步骤,例如图2所示的步骤。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述提升安卓***上基于UART接口蓝牙打开速度的***中的执行过程。
所述提升安卓***上基于UART接口蓝牙打开速度的***可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述视频流播放设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,图6仅仅是提升安卓***上基于UART接口蓝牙打开速度的***的示例,并不构成对提升安卓***上基于UART接口蓝牙打开速度的***的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述提升安卓***上基于UART接口蓝牙打开速度的***还可以包括输入输出设备、网络接入设备、总线等。参照图6所示的实施例,蓝牙固件被储存于存储器中。在蓝牙打开后,蓝牙固件才被加载到蓝牙芯片中。具体地,处理器与存储器、处理器与蓝牙芯片之间分别双向传输数据,使得蓝牙固件在被处理器读取后,该蓝牙估计可被写入到蓝牙芯片中。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的***实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种提升安卓***上基于UART接口蓝牙打开速度的方法,其特征在于,包括以下步骤:
在安卓***的init进程on boot阶段,为蓝牙芯片上电并打开UART接口以加载蓝牙固件,同时初始化蓝牙固件加载属性vendor.bluetooth.fw.loaded为假;
在所述蓝牙固件加载完毕后,设置蓝牙固件加载属性vendor.bluetooth.fw.loaded为真;
在初始化libbt-vendor模块时,检查所述蓝牙固件加载属性vendor.bluetooth.fw.loaded是否为真;
当所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,直接打开蓝牙控制器上的蓝牙接口并对蓝牙芯片执行HCI_RESET操作,否则为所述蓝牙芯片上电并打开UART接口,并在完成蓝牙固件加载后,对所述蓝牙芯片执行HCI_RESET操作。
2.根据权利要求1所述的方法,其特征在于,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件的操作与启动zygote服务同步执行。
3.根据权利要求1所述的方法,其特征在于,***启动期间,为所述蓝牙芯片上电并打开UART接口以加载所述蓝牙固件,并在加载所述蓝牙固件后设置所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真。
4.根据权利要求1所述的方法,其特征在于,当蓝牙被主动关闭时,所述蓝牙芯片仅被RESET一次而不断电。
5.根据权利要求4所述的方法,其特征在于,***启动完成后,当蓝牙被打开且所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,所述蓝牙芯片使用之前加载的蓝牙固件。
6.根据权利要求1所述的方法,其特征在于,为蓝牙芯片上电的步骤还包括以下子步骤:
拉低所述蓝牙芯片硬件RESET引脚以RESET所述蓝牙芯片。
7.根据权利要求6所述的方法,其特征在于,当所述蓝牙芯片为PATCH RAM型芯片时,所述蓝牙固件通过HCI VENDOR SPECIAL命令加载。
8.根据权利要求6所述的方法,其特征在于,当所述蓝牙芯片为非PATCH RAM型芯片时,所述蓝牙固件通过使用蓝牙厂商私有方式加载。
9.一种计算机***,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
在安卓***的init进程on boot阶段,为蓝牙芯片上电并打开UART接口以加载蓝牙固件,同时初始化蓝牙固件加载属性vendor.bluetooth.fw.loaded为假;
在所述蓝牙固件加载完毕后,设置蓝牙固件加载属性vendor.bluetooth.fw.loaded为真;
在初始化libbt-vendor模块时,检查所述蓝牙固件加载属性vendor.bluetooth.fw.loaded是否为真;
当所述蓝牙固件加载属性vendor.bluetooth.fw.loaded为真时,直接打开蓝牙控制器上的蓝牙接口并对蓝牙芯片执行HCI_RESET操作,否则为所述蓝牙芯片上电并打开UART接口加载蓝牙固件,并对所述蓝牙控制器执行HCI_RESET操作。
10.一种存储介质,其中所述存储介质中存储有计算机程序,所述计算机程序被设置为运行时执行所述权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010180310.1A CN111443952B (zh) | 2020-03-16 | 2020-03-16 | 提升基于uart接口的蓝牙打开速度的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010180310.1A CN111443952B (zh) | 2020-03-16 | 2020-03-16 | 提升基于uart接口的蓝牙打开速度的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111443952A true CN111443952A (zh) | 2020-07-24 |
CN111443952B CN111443952B (zh) | 2023-04-07 |
Family
ID=71652330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010180310.1A Active CN111443952B (zh) | 2020-03-16 | 2020-03-16 | 提升基于uart接口的蓝牙打开速度的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111443952B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108319480A (zh) * | 2018-02-01 | 2018-07-24 | 微鲸科技有限公司 | 蓝牙服务启动方法、装置及电子设备 |
CN109451472A (zh) * | 2018-10-08 | 2019-03-08 | 四川长虹电器股份有限公司 | Android智能设备上多蓝牙芯片的动态管理方法 |
-
2020
- 2020-03-16 CN CN202010180310.1A patent/CN111443952B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108319480A (zh) * | 2018-02-01 | 2018-07-24 | 微鲸科技有限公司 | 蓝牙服务启动方法、装置及电子设备 |
CN109451472A (zh) * | 2018-10-08 | 2019-03-08 | 四川长虹电器股份有限公司 | Android智能设备上多蓝牙芯片的动态管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111443952B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8964610B2 (en) | System and method of reducing factory program time for wireless devices | |
US10140231B2 (en) | Flexible port configuration based on interface coupling | |
CN105718281A (zh) | 一种触摸屏固件升级方法及装置 | |
CN112732616B (zh) | 一种基于spi控制器的bmc启动方法、装置及设备 | |
US20150154029A1 (en) | Electronic apparatus and operational method thereof | |
CN109936716B (zh) | 一种显示驱动的实现方法及*** | |
CN113485754A (zh) | 一种芯片启动方法、装置及电子设备 | |
CN115658160A (zh) | 基于多核异构soc的多操作***升级方法、装置及*** | |
CN112996020A (zh) | 一种基于蓝牙的自动化测试方法、装置及蓝牙测试终端 | |
CN108259895B (zh) | 机顶盒测试方法、***及终端设备 | |
CN116719724B (zh) | eMMC多平台测试方法和装置、电子设备 | |
CN116431546B (zh) | 参数配置方法、电子设备、存储介质及程序产品 | |
CN111443952B (zh) | 提升基于uart接口的蓝牙打开速度的方法及*** | |
CN111897760A (zh) | 电子产品及其扩展装置、控制方法与控制装置 | |
CN114185720B (zh) | 服务器动态热备份的方法、装置、设备及存储介质 | |
CN111752623B (zh) | 显示配置方法、装置、电子设备及可读存储介质 | |
CN109343886B (zh) | 一种升级bios的方法、装置以及设备 | |
CN115587026A (zh) | 芯片测试方法、装置、存储介质及芯片 | |
CN105068835B (zh) | 移动终端及其调试信息显示方法 | |
CN111447514B (zh) | 无源光网络sfp ont的eeprom***以及其数据更新控制方法 | |
CN110362526B (zh) | Spi从机设备、存储和适配方法及计算机存储介质 | |
CN109982136B (zh) | 音量调节的方法及装置 | |
CN111459564A (zh) | boot阶段初始化兼容的实现方法、***及计算机设备 | |
CN110944234A (zh) | 一种电视升级方法、***及存储介质 | |
US20080222385A1 (en) | Parameter setting method and apparatus for network controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |