CN113885928A - 程序更新方法和电子设备 - Google Patents

程序更新方法和电子设备 Download PDF

Info

Publication number
CN113885928A
CN113885928A CN202110603262.7A CN202110603262A CN113885928A CN 113885928 A CN113885928 A CN 113885928A CN 202110603262 A CN202110603262 A CN 202110603262A CN 113885928 A CN113885928 A CN 113885928A
Authority
CN
China
Prior art keywords
partition
code block
function
electronic device
code
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
Application number
CN202110603262.7A
Other languages
English (en)
Other versions
CN113885928B (zh
Inventor
郭雨龙
陶有佳
沈赫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202110603262.7A priority Critical patent/CN113885928B/zh
Publication of CN113885928A publication Critical patent/CN113885928A/zh
Application granted granted Critical
Publication of CN113885928B publication Critical patent/CN113885928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

程序更新方法和电子设备。在该方法中,电子设备将更新程序中的第一代码块添加到独立分区,在按顺序执行代码块的过程中,若确定不符合第一预设跳转条件,会按照正常代码块执行顺序执行独立分区外的第三代码块。而若确定符合第一预设跳转条件,可以跳转到独立分区执行与该第三代码块实现相同功能但性能不同的该第一代码块,而不是去执行该第三代码块。从而能减少更新程序的容量大小,提高将新功能提供给用户的效率,也提高了用户电子设备下载安装更新程序的速度。

Description

程序更新方法和电子设备
技术领域
本申请涉及终端及通信技术领域,尤其涉及程序更新方法和电子设备。
背景技术
随着行业竞争的日益激烈,不管是功能性应用程序还是器件驱动程序,其版本更新频率也日益提升,以期为用户提供最新最好的功能。
然而一个新版本的程序从开发、测试、适配用户,直到得到最终推送用户的完整版本,有其固有周期。该周期可能达到三四个月甚至更长时间,无法满足当前快速将新功能提供给用户的需求。
发明内容
本申请提供了程序更新方法,用于在程序版本迭代中将新功能快速安装至用户电子设备,提高将新功能提供给用户的效率。
第一方面,本申请提供了一种程序更新方法,包括:电子设备获取更新程序,其中包括第一代码块,该第一代码块用于以第一性能实现第一功能;该电子设备将该第一代码块添加到该电子设备的存储器中的独立分区;该独立分区为不影响该电子设备正常启动的一个分区;在执行该独立分区外的第二代码块后,该电子设备确定第一记录结果是否符合第一预设跳转条件;在该第一记录结果不符合该第一预设跳转条件的情况下,该电子设备执行该独立分区外的第三代码块,该第三代码块用于以第二性能实现该第一功能,该第二性能与该第一性能不同;在该第一记录结果符合该第一预设跳转条件的情况下,该电子设备执行该独立分区中的该第一代码块。
在上述实施例中,电子设备可以将更新程序中的第一代码块添加到独立分区。在按顺序执行代码块的过程中,若确定第一记录结果不符合第一预设跳转条件,电子设备会按照正常代码块执行顺序执行独立分区外的第三代码块。而若确定第一记录结果符合第一预设跳转条件,电子设备可以跳转到独立分区执行与该第三代码块实现相同功能但性能不同的该第一代码块,而不是去执行该第三代码块。因此,在需要对程序进行更新时,在更新程序中可以包括与现有程序中代码块不同的代码块,可以不包括与现有程序中代码块相同的代码块,这样更新程序中可以不需要包含该程序的全量代码。一方面,由于减少了更新程序中需要测试的代码块数量,使得开发人员可以更快的开发得到更新程序。在程序版本迭代时可以更快速的开发出容量大小更小且符合功能需求的更新程序,可以将新功能更快速的推送至用户电子设备,提高了将新功能提供给用户的效率。另一方面极大的减小了更新程序的容量大小,提高了用户电子设备下载安装更新程序的速度。
结合第一方面的一些实施例,在一些实施例中,该存储器中还包括第一分区和第二分区;该第一分区中包括该第二代码块,该第二分区中包括该第三代码块。
在上述实施例中,在执行第一分区中的第二代码块后,可以根据第一记录结果是否符合第一预设跳转条件,确定执行独立分区中的第一代码块还是执行第二分区中的第三代码块,提升了代码块分布的灵活性。
结合第一方面的一些实施例,在一些实施例中,该第一分区中还包括优选函数,该优选函数用于根据第一预设选择条件得到记录结果,其中包括该第一记录结果;该第一记录结果用于标识该第一代码块和该第三代码块中符合该第一预设选择条件的代码块。
在上述实施例中,由第一分区中的优选函数根据第一预设选择条件得到包括第一记录结果的记录结果,作为选择执行独立分区中代码块还是执行第二分区中代码块的依据,提升了电子设备运行的稳定性。
结合第一方面的一些实施例,在一些实施例中,该第一预设选择条件为选择该第二分区与该独立分区中实现相同功能时性能更优的代码块。
在上述实施例中,优选函数将选择该第二分区与该独立分区中实现相同功能时性能更优的代码块作为该第一预设选择条件,使得电子设备执行的是更优的代码块,提升了电子设备的性能。
结合第一方面的一些实施例,在一些实施例中,该方法还包括:该优选函数发送第一信息上报指示给该独立分区和该第二分区,该第一信息上报指示用于指示该独立分区和该第二分区上报其中包括的代码块的功能和性能;该优选函数接收该独立分区和该第二分区上报的其中包括的代码块的功能和性能,其中包括该第一代码块实现该第一功能、性能为该第一性能,该第二代码块实现该第一功能、性能为该第二性能;该优选函数确定该独立分区和该第二分区中实现相同功能时性能更优的代码块为优选代码块,并将其保存为该记录结果,其中包括该第一记录结果;该第一记录结果用于标识该第一代码块和该第三代码块中实现该第一功能时性能更优的代码块。
在上述实施例中,通过向独立分区和第二分区发送第一信息上报指示,使独立分区和第二分区上报其中包括的代码块的功能和性能,然后比对得到其中实现相同功能的代码块中性能更优的作为优选代码块,保存为记录结果。提升了优选函数确定优选代码块的准确性。
结合第一方面的一些实施例,在一些实施例中,该方法还包括:该优选函数发送第二信息上报指示给该独立分区,该第二信息上报指示用于指示该独立分区上报其中包括的代码块的功能和性能;该优选函数接收该独立分区上报的其中包括的代码块的功能和性能,其中包括该第一代码块实现该第一功能、性能为该第一性能;该优选函数发送第三信息上报指示给该第二分区,该第三信息上报指示用于指示该第二分区上报独立分区同功能代码块的性能,该独立分区同功能代码块为与该独立分区上报的代码块实现相同功能的代码块;该优选函数接收该第二分区上报的独立分区同功能代码块的性能,其中包括同样实现该第一功能的第三代码块的性能为该第二性能;该优选函数确定该独立分区上报的其中包括的代码块与该第二分区上报的独立分区同功能代码块中实现相同功能时性能更优的代码块为优选代码块,并将其保存为该记录结果,其中包括该第一记录结果;该第一记录结果用于标识该第一代码块和该第三代码块中实现该第一功能时性能更优的代码块。
在上述实施例中,先向独立分区发送第三信息上报指示,在收到独立分区上报的其中包括的代码块的功能和性能后,才向第二分区发送指示其上报独立分区同功能代码块的性能的第三信息上报指示,最后再跟进独立分区上报的其中包括的代码块与第二分区上报的独立分区同功能代码块,确定其中相同功能的性能更优的代码块为优选代码块。极大的减少了第二分区需要上报的代码块的信息数目,同时降低了优选函数需要接收和比对的代码块的信息数目,提升了优选函数确定优选代码块的效率。
结合第一方面的一些实施例,在一些实施例中,该第一预设选择条件为选择与该电子设备上安装的物理器件匹配的代码块。
在上述实施例中,将选择与该电子设备上安装的物理器件匹配的代码块作为该第一预设选择条件,使得电子设备执行的是与物理器件最匹配的代码块,提升了电子设备运行的稳定性。
结合第一方面的一些实施例,在一些实施例中,该第一记录结果暂存在内存中,或该第一记录结果存在存储器中的第四分区。
在上述实施例中,可以将该第一记录结果暂存在内存中,减少对存储器资源的占用。或将该第一记录结果存在存储器中的第四分区,避免对第一记录结果的重复计算,提升电子设备的运行效率。
结合第一方面的一些实施例,在一些实施例中,该在执行该独立分区外的第二代码块后,该电子设备确定第一记录结果是否符合第一预设跳转条件,具体包括:在执行该第一分区中的该第二代码块后,该电子设备确定该第一记录结果中是否包含该独立分区的标识;在该第一记录结果中包含该独立分区的标识时,该电子设备确定该第一记录结果符合该第一预设跳转条件;在该第一记录结果中不包含该独立分区的标识时,该电子设备确定该第一记录结果不符合该第一预设跳转条件。
在上述实施例中,第一记录结果可以为一个记录条目,通过该记录条目中是否包含独立分区的标识,电子设备可以确定执行独立分区中的代码块还是执行第二分区中的代码块,使得电子设备可以准确的确定跳转到哪个分区执行代码块,提升了电子设备跳转执行代码块的准确性。
结合第一方面的一些实施例,在一些实施例中,该第一分区中还包括第一标志位,该第一记录结果为第一标志位的值;该方法还包括:当该优选函数确定该第一代码块性能更优时,该电子设备将该第一标志位设置为第一预设值;当该优选函数确定该第三代码块性能更优时,该电子设备将该第一标志位设置为与该第一预设值不同的其他值。
在上述实施例中,优选函数通过标志位的值来保存记录结果,使得电子设备可以更快更准确的读取记录结果并根据记录结果做出判断,提升了电子设备的运行效率。
结合第一方面的一些实施例,在一些实施例中,该第一标志位与该第一功能相关联;该第一分区中还包括第一选择函数,该第一选择函数为该第一功能的选择函数;该方法还包括:该电子设备将该第一标志位的值传递给该第一选择函数;该在执行该独立分区外的第二代码块后,该电子设备确定第一记录结果是否符合第一预设跳转条件,具体包括:在执行该第一分区中的该第二代码块后,该第一选择函数确定该第一标志位的值是否为该第一预设值;当确定该第一标志位的值为该第一预设值时,该第一选择函数确定该第一记录结果符合该第一预设跳转条件;当确定该第一标志位的值不为该第一预设值时,该第一选择函数确定该第一记录结果不符合该第一预设跳转条件。
在上述实施例中,优选函数通过标志位保存的记录结果,并将该标志位可以传递给关联相同功能的选择函数,选择函数可以根据该标志位的值来选择是执行独立分区中的代码块还是执行第二分区中的代码块,提升了电子设备跳转执行代码块的准确性。
结合第一方面的一些实施例,在一些实施例中,该在执行该独立分区外的第二代码块后,该电子设备确定第一记录结果是否符合第一预设跳转条件,具体包括:在执行该第一分区中的该第二代码块后,该电子设备确定第一标志位的值是否为该第一预设值;当确定该第一标志位的值为该第一预设值时,该电子设备确定该第一记录结果符合该第一预设跳转条件;当确定该第一标志位的值不为该第一预设值时,该电子设备确定该第一记录结果不符合该第一预设跳转条件。
在上述实施例中,电子设备通过第一标志位的值是否为第一预设值来确定执行独立分区中的代码块还是第二分区中的代码块,提升了电子设备跳转执行代码块的准确性。
结合第一方面的一些实施例,在一些实施例中,该第一分区和该第二分区为与该电子设备正常启动相关的分区。
在上述实施例中,电子设备可以通过独立分区中的代码块对电子设备正常启动相关的分区中的代码块进行更新,提升了系统更新的效率。
结合第一方面的一些实施例,在一些实施例中,该更新程序中还包括第四代码块,该第四代码块用于以第三性能实现第二功能;该方法还包括:该电子设备将该第四代码块添加到该独立分区;在执行该第一代码块或该第三代码块后,该电子设备确定第二记录结果是否符合第二预设跳转条件;在该第二记录结果不符合该第二预设跳转条件的情况下,该电子设备执行该独立分区外的第五代码块,该第五代码块用于以第四性能实现该第二功能;该第四性能与该第三性能不同;在该第二记录结果符合该第二预设跳转条件的情况下,该电子设备执行该独立分区中的该第四代码块。
在上述实施例中,电子设备可以在一个更新程序中携带多个代码块。在电子设备常规代码块执行流程中的多个代码块执行时,均可以确定是否需要跳转到执行独立分区中的代码块,提升了电子设备进行程序更新的效率。
第二方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行:
获取更新程序,其中包括第一代码块,该第一代码块用于以第一性能实现第一功能;将该第一代码块添加到该电子设备的存储器中的独立分区;该独立分区为不影响该电子设备正常启动的一个分区;在执行该独立分区外的第二代码块后,确定第一记录结果是否符合第一预设跳转条件;在该第一记录结果不符合该第一预设跳转条件的情况下,执行该独立分区外的第三代码块,该第三代码块用于以第二性能实现该第一功能,该第二性能与该第一性能不同;在该第一记录结果符合该第一预设跳转条件的情况下,执行该独立分区中的该第一代码块。
结合第二方面的一些实施例,在一些实施例中,该存储器中还包括第一分区和第二分区;该第一分区中包括该第二代码块,该第二分区中包括该第三代码块。
结合第二方面的一些实施例,在一些实施例中,该第一分区中还包括优选函数,该优选函数用于根据第一预设选择条件得到记录结果,其中包括该第一记录结果;该第一记录结果用于标识该第一代码块和该第三代码块中符合该第一预设选择条件的代码块。
结合第二方面的一些实施例,在一些实施例中,该第一预设选择条件为选择该第二分区与该独立分区中实现相同功能时性能更优的代码块。
结合第二方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:通过该优选函数发送第一信息上报指示给该独立分区和该第二分区,该第一信息上报指示用于指示该独立分区和该第二分区上报其中包括的代码块的功能和性能;通过该优选函数接收该独立分区和该第二分区上报的其中包括的代码块的功能和性能,其中包括该第一代码块实现该第一功能、性能为该第一性能,该第二代码块实现该第一功能、性能为该第二性能;通过该优选函数确定该独立分区和该第二分区中实现相同功能时性能更优的代码块为优选代码块,并将其保存为该记录结果,其中包括该第一记录结果;该第一记录结果用于标识该第一代码块和该第三代码块中实现该第一功能时性能更优的代码块。
结合第二方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:通过该优选函数发送第二信息上报指示给该独立分区,该第二信息上报指示用于指示该独立分区上报其中包括的代码块的功能和性能;通过该优选函数接收该独立分区上报的其中包括的代码块的功能和性能,其中包括该第一代码块实现该第一功能、性能为该第一性能;通过该优选函数发送第三信息上报指示给该第二分区,该第三信息上报指示用于指示该第二分区上报独立分区同功能代码块的性能,该独立分区同功能代码块为与该独立分区上报的代码块实现相同功能的代码块;通过该优选函数接收该第二分区上报的独立分区同功能代码块的性能,其中包括同样实现该第一功能的第三代码块的性能为该第二性能;通过该优选函数确定该独立分区上报的其中包括的代码块与该第二分区上报的独立分区同功能代码块中实现相同功能时性能更优的代码块为优选代码块,并将其保存为该记录结果,其中包括该第一记录结果;该第一记录结果用于标识该第一代码块和该第三代码块中实现该第一功能时性能更优的代码块。
结合第二方面的一些实施例,在一些实施例中,该第一预设选择条件为选择与该电子设备上安装的物理器件匹配的代码块。
结合第二方面的一些实施例,在一些实施例中,该第一记录结果暂存在内存中,或该第一记录结果存在存储器中的第四分区。
结合第二方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:在执行该第一分区中的该第二代码块后,确定该第一记录结果中是否包含该独立分区的标识;在该第一记录结果中包含该独立分区的标识时,确定该第一记录结果符合该第一预设跳转条件;在该第一记录结果中不包含该独立分区的标识时,确定该第一记录结果不符合该第一预设跳转条件。
结合第二方面的一些实施例,在一些实施例中,该第一分区中还包括第一标志位,该第一记录结果为第一标志位的值;该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:当该优选函数确定该第一代码块性能更优时,将该第一标志位设置为第一预设值;当该优选函数确定该第三代码块性能更优时,将该第一标志位设置为与该第一预设值不同的其他值。
结合第二方面的一些实施例,在一些实施例中,该第一标志位与该第一功能相关联;该第一分区中还包括第一选择函数,该第一选择函数为该第一功能的选择函数;该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:将该第一标志位的值传递给该第一选择函数;该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:在执行该第一分区中的该第二代码块后,通过该第一选择函数确定该第一标志位的值是否为该第一预设值;当确定该第一标志位的值为该第一预设值时,通过该第一选择函数确定该第一记录结果符合该第一预设跳转条件;当确定该第一标志位的值不为该第一预设值时,通过该第一选择函数确定该第一记录结果不符合该第一预设跳转条件。
结合第二方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:在执行该第一分区中的该第二代码块后,确定第一标志位的值是否为该第一预设值;当确定该第一标志位的值为该第一预设值时,确定该第一记录结果符合该第一预设跳转条件;当确定该第一标志位的值不为该第一预设值时,确定该第一记录结果不符合该第一预设跳转条件。
结合第二方面的一些实施例,在一些实施例中,该第一分区和该第二分区为与该电子设备正常启动相关的分区。
结合第二方面的一些实施例,在一些实施例中,该更新程序中还包括第四代码块,该第四代码块用于以第三性能实现第二功能;该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:将该第四代码块添加到该独立分区;在执行该第一代码块或该第三代码块后,确定第二记录结果是否符合第二预设跳转条件;在该第二记录结果不符合该第二预设跳转条件的情况下,执行该独立分区外的第五代码块,该第五代码块用于以第四性能实现该第二功能;该第四性能与该第三性能不同;在该第二记录结果符合该第二预设跳转条件的情况下,执行该独立分区中的该第四代码块。
第三方面,本申请实施例提供了一种芯片系统,该芯片系统应用于电子设备,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第四方面,本申请实施例提供一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得上述电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,包括指令,当上述指令在电子设备上运行时,使得上述电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
可以理解地,上述第二方面提供的电子设备、第三方面提供的芯片系统、第四方面提供的计算机程序产品和第五方面提供的计算机存储介质均用于执行本申请实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1为一种程序更新的实现方式中与本申请实施例中的一个示例性场景的程序更新流程比对示意图;
图2为本申请实施例中电子设备一个硬件构架示例性示意图;
图3为一种分区表与本申请实施例中分区表的一个示例性比对示意图;
图4为本申请实施例中电子设备一个软件构架示例性示意图;
图5为本申请实施例中程序更新方法一个流程示意图;
图6a为本申请实施例中一个示例性场景的分区表;
图6b为本申请实施例中一个信息流向示意图;
图7a为本申请实施例中另一个示例性场景的分区表;
图7b为本申请实施例中另一个信息流向示意图;
图8为本申请实施例与一种程序更新的实现方式的另一个示例性场景的程序更新流程比对示意图;
图9为本申请实施例中程序更新方法另一个流程示意图;
图10为本申请实施例中一个示例性场景的分区表示意图;
图11为本申请实施例中一个示例性场景的信息流向示意图;
图12为本申请实施例中程序更新方法另一个流程示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
采用本申请实施例提供的程序更新方法,可以在程序版本迭代中将新功能快速安装至用户电子设备,提高将新功能提供给用户的效率。
示例性的,如图1所示,为一种程序更新的实现方式与本申请实施例中的一个示例性场景的程序更新流程比对示意图。
示例性场景:用户购买了厂商发售的一款手机,其摄像头(camera)的当前驱动版本1,能支持该camera拍摄最高12M(1200万)像素的照片。然而发布后一周,厂商迫于竞争压力,需要马上更新该camera的驱动版本,使该camera能拍摄最高48M(4800万)像素的照片。经过分析,最终厂商决定修改camera驱动的代码,通过算法插值的方式来支持该camera拍摄出更高像素的照片。
一种程序更新的实现方式中,如图1中的(a)所示,该手机发布一周后,厂商开始研发camera驱动版本2,需要经过开发、测试、适配等固有周期,终于在3个月后,完成了camera驱动版本2的全量代码。该camera驱动版本2的容量为300MB。
此时用户需要下载该容量大小为300MB的camera驱动版本2并安装,才能使得在3个多月之前购买的手机能支持拍摄48M像素的照片。
若用户的手机中下载了很多影视,没有300MB的空闲容量了,会导致驱动下载失败而无法安装该camera驱动版本2。此时用户还需要删除掉一些收集保存的影视内容,使手机空出大于300MB的容量,才能下载安装该camera驱动版本2,完成camera对48M像素的支持。
而很有可能3个月前用户的朋友在其他厂商购买的同价位的手机中camera早已支持48M像素,使用户这几个月以来心灵饱受煎熬,怀疑自己的眼光不如朋友。
因此,采用该实现方式中的程序更新方式,不仅更新周期长,而且需要下载容量很大的程序包才能安装更新得到更新的功能,使得用户体验较差,对厂商产生不好的印象。
而采用本申请实施例中的程序更新方法,如图1中的(b)所示,该手机发布一周后,厂商开始研发camera驱动版本2,此时不需要经过开发、测试、适配等过长的周期去得到camera驱动版本2的全量代码。仅在3天后,就可以完成使camera支持48M像素的插值算法的逻辑部分代码,其中可以包括生成48M像素的插值算法,可以不包括camera驱动中与提升拍摄相片像素值无关的代码,将其作为更新程序A。该更新程序A的容量仅有1MB。
此时用户仅需下载该容量大小为1MB的更新程序A,手机就会将该更新程序A添加到手机中的独立分区。在手机的主逻辑程序中预置的高像素选择函数的引导下,在需要执行像素算法时,手机会选择执行独立分区中存储的支持48M像素的更新程序A去执行,从而使得camera支持48M像素。
这样,在需要更新手机的camera支持更高的像素时,厂商仅在3天后就可以开发完成相关更新程序A。即手机中camera也仅需要几天后就可以从仅支持12M像素更新到支持48M像素。更新速度快,且需要下载的程序包容量也很小,极大的提升了用户体验。
下面首先介绍本申请实施例提供的示例性电子设备100。
图2是本申请实施例提供的电子设备100的结构示意图。
下面以电子设备100为例对实施例进行具体说明。应该理解的是,电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
SIM接口可以被用于与SIM卡接口195通信,实现传送数据到SIM卡或读取SIM卡中数据的功能。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
内部存储器121可以包括一个或多个随机存取存储器(random access memory,RAM)和一个或多个非易失性存储器(non-volatile memory,NVM)。
随机存取存储器可以包括静态随机存储器(static random-access memory,SRAM)、动态随机存储器(dynamic random access memory,DRAM)、同步动态随机存储器(synchronous dynamic random access memory,SDRAM)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,DDR SDRAM,例如第五代DDR SDRAM一般称为DDR5 SDRAM)等;
非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。
快闪存储器按照运作原理划分可以包括NOR FLASH、NAND FLASH、3D NAND FLASH等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,SLC)、多阶存储单元(multi-level cell,MLC)、三阶储存单元(triple-level cell,TLC)、四阶储存单元(quad-level cell,QLC)等,按照存储规范划分可以包括通用闪存存储(英文:universalflash storage,UFS)、嵌入式多媒体存储卡(embedded multi media Card,eMMC)等。
随机存取存储器可以由处理器110直接进行读写,可以用于存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,可以提前加载到随机存取存储器中,用于处理器110直接进行读写。
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。
需要说明的是,电子设备100会通过分区表将内部存储器121划分为多个功能和大小不同的分区,用来存储各种功能不同的程序或数据。
示例性的,如图3中的(a)所示,为一个分区表的示例性示意图。其中,该分区表包括Xloader/preloader分区、Lk分区、Dtbo分区、Boot分区、Odm分区、Vendor分区和System分区:
xloader/preloader分区:和芯片相关,为芯片加载的引导分区。它是在系统上电之后,加载完整镜像到内存后最先开始执行的用户程序,主要是对系统时钟以及外部随机存取存储器(SDRAM)进行初始化,初始化完成之后就跳转到lk分区执行相关代码逻辑。
可以理解的是,从xloader/preloader分区跳转到lk分区执行相关代码逻辑,相当于一种函数调用关系。例如在xloader/preloader分区顺序执行的多个函数中(函数X1、X2、X3、X4),其中一个函数X2是调用执行lk分区中某个函数L1。则在xloader/preloader分区执行完函数x1,执行函数X2时会跳转到lk
lk(little kernel,小内核)分区:主要作用是初始化硬件,并且启动引导程序(bootLoader)。包括读取dtbo分区中设备树配置以加载设备树,以及读取boot分区中boot.img文件以启动内核,然后读取odm分区、vendor分区和system分区中相关文件以初始化和启动相关系统功能,并启动安卓操作系统。其中,设备树配置为一种描述硬件的数据结构,包括一些硬件细节配置。例如,支持屏幕点亮、camera正常打开的软硬件接口通用型输入输出(general-purpose input/output,GPIO)配置等,都包含在设备树配置中。
可以理解的是,lk分区中包括一些顺序执行的代码块以实现其功能,例如函数L1、L2、L3、L4等,分别实现不同的功能,这些函数可以被xloader/preloader分区中的函数调用。每个函数中也可以包含多个顺序执行的子函数。例如,函数L1中可以包含包括顺序执行的子函数lz1,lz2,lz3,lz4等,这些函数可以调用dtbo分区或boot分区中的函数以实现其功能。例如,若lz2函数是通过调用加载dtbo分区中的屏幕点亮配置函数D1到设备树中,以实现点亮电子设备屏幕。则在lk分区中函数L1被调用,顺序执行其中的子函数lz1,执行到子函数lz2时,可以跳转到dtbo分区执行该屏幕点亮配置函数D1。在dtbo分区执行完该屏幕点亮配置函数D1后,会返回到lk分区中函数L1中继续按顺序执行后续子函数lz3,lz4等。
可以理解的是,其他分区中以及分区间代码块或函数跳转执行的方式与此类型,后续不再赘述。
dtbo(device tree binary overlay)分区:用于存放设备树配置的分区,主要包含厂商外设驱动的配置。例如,支持屏幕点亮、camera正常打开的软硬件接口GPIO配置等。
boot分区:用于存放boot.img文件,其中包括内核kernel。kernel即linux内容镜像,其中包括保障屏幕和camera等外设器件正常驱动的内核代码。
odm分区:存放原始设计制造商(original design manufacturer,ODM)特定的板级支持包,为一些二进制库函数,其主要包含系统功能实现的可加载内核模块、原生库、安全上下文策略、系统属性、应用及系统文件。例如,屏幕的效果参数(例如实现屏幕色彩饱和度的参数、实现屏幕清晰度的参数等)和camera效果参数(例如像素算法、夜景算法等)等。
vendor分区:存放芯片厂商和手机厂商对于芯片配置的修改(例如,时钟、频率和供电配置等)。另外,手机厂商编译的驱动文件也会包含在vendor分区(例如,完成设备识别号写入、相关特性日志打印和存储),还包含厂商私有的可执行程序、库和系统服务等。
system分区:这个分区基本包含了整个安卓操作系统,主要包括安卓用户界面、安卓核心程式库、所有预装的系统应用程序、JNI(Java Native Interface)和HAL(HardwareAbstraction Layer)层依赖的动态链接库。
下面以安卓Android系统启动的流程为例,描述各分区间信息的读取过程:
1、启动电源以及系统启动:
当电源键按下时根据xloader/preloader分区中的数据,引导芯片代码从预定义的地方开始执行。加载lk分区中的引导程序BootLoader到RAM中,然后执行。
2、引导程序BootLoader:
引导程序是在Android操作系统开始运行前的一个小程序,它的主要作用是用来启动内核,同时还有操作板子上硬件的驱动,例如串口打印、擦除和烧写flash、加载屏幕和camera器件的基本硬件配置等。
3、加载设备树:
lk分区中的引导程序会读取boot分区中的boot.img以加载内核,同时也会读取dtbo分区中设备树配置以加载设备树。将加载后的设备树物理地址传递给内核,内核再去配置各种硬件信息,如支持屏幕点亮、camera正常打开的软硬件接口配置。
4、内核启动(boot):
内核是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能和驱动加载,例如加载屏幕和camera的驱动。当内核完成系统设置时,启动init进程。
5、init进程启动:
init进程是Android系统中用户控件的第一个进程,它负责创建和挂载启动所需的分区(这其中就包含vendor分区、system分区、odm分区),读取vendor分区、system分区、odm分区中的相关代码,初始化和启动系统功能和服务,并负责启动Zygote进程。
6、Zygote进程启动:
在Android系统中,Zygote是Android系统上所有应用进程的父进程,我们系统上app的进程都是由这个Zygote分裂出来的,它负责创建java虚拟机并为java虚拟机注册JNI方法,创建服务器端Socket,启动SystemServer进程。
7、SystemServer进程启动:
SystemServer进程进而启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。至此,完成整个开机流程。
而本申请实施例中,相比于图3中的(a)所示的分区表,在对内部存储器121分区时,可以预先额外多分一个独立分区。
示例性的,如图3中的(b)所示,为本申请实施例中一个分区表的示例性示意图。其中,该分区表包括Xloader/preloader分区、Lk分区、Dtbo分区、Boot分区、独立分区、Odm分区、Vendor分区和System分区。
该独立分区:出厂时为空,不存储程序;后续可以存储功能更新的程序。
在其他的分区中(例如Xloader/preloader分区、Lk分区等分区中),在一些调用其他分区的代码块以实现功能的功能代码中,可以预置有选择函数,根据该选择函数确定的结果不同,可以继续按原代码逻辑执行调用预设分区中相应代码块的函数(例如跳转到odm分区中执行相应代码块),或者执行调用独立分区中的相应代码块的函数(即跳转到独立分区中执行相应代码块)。执行完该相应代码块后,会再返回原分区的功能代码中继续执行后续代码逻辑。
而选择函数的选择可以基于来源不同的数据。
例如,一个功能代码A中预置的选择函数A,其可以基于该功能代码A中预置的标志位A的值,来进行选择。当该标志位A的值为1时,该选择函数可以确定执行调用预设分区中相应代码块的函数,当该标志位A的值为0时,该选择函数可以确定执行调用独立分区中的相应代码块的函数。
再如,一个功能代码A中预置的选择函数A,其可以基于某个数据记录B,来进行判断。当该数据记录B中记录的期望值为5,而选择函数A确定执行调用预设分区中相应代码块的函数后得到的结果为3,而执行调用独立分区中的相应代码块的函数后得到的结果为5时,该选择函数A可以确定执行调用独立分区中的相应代码块的函数。
该选择函数的选择还可以基于其他来源的数据,此处不作限定。
在一些实施例中,选择函数选择依据的数据来源可以由该分区中预置的其他的函数(例如优选函数)确定后,存储在电子设备的特定分区中。例如,在分区表后还可以包括一个store分区,用于存储各分区中选择函数进行选择依据的数据来源的值。在执行该功能代码A之前可以执行优选函数Y,该优选函数Y比对独立分区与其他分区中的代码后,可以将该功能代码A中标志位A的值存储在分区表后store分区中,或者将数据记录B中记录的期望值存储在该store分区中。在执行到功能代码A后,选择函数A就可以通过读取该store分区中标志位A的值或数据记录B的值来进行选择。
需要说明的是,一些厂商会将Boot分区后的一些分区,包括Odm分区、Vendor分区和System分区等统一包括到一个Super分区中,将该Super分区设定为一个动态分区。借助动态分区,厂商可以无需担心各分区的大小,随意调配Super分区中各镜像的大小。例如,从谷歌Q版本开始,安卓系统中就都是使用Super分区的方式。
在图3中的(b)所述的分区表中,独立分区设置在boot分区之后,Super分区之前。可以理解的是,在本申请的一些实施例中,该独立分区也可设置在其他位置(例如Xloader/preloader分区之后,Lk分区之前;再如Lk分区之后,Dtbo分区之前等),此处不作限定。
本申请实施例中,该内部存储器121在各分区中存储的程序为计算机程序代码,该计算机程序代码包括计算机指令,该处理器110通过调用该计算机执行可以使得该电子设备100执行本申请实施例中的程序更新方法。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图4是本申请实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将系统分为四层,从上至下分别为应用程序层,应用程序框架层,运行时(Runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序(也可以称为应用)。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话界面形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
运行时(Runtime)包括核心库和虚拟机。Runtime负责系统的调度和管理。
核心库包含两部分:一部分是编程语言(例如,jave语言)需要调用的功能函数,另一部分是系统的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的编程文件(例如,jave文件)执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维(2-Dimensional,2D)和三维(3-Dimensional,3D)图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现3D图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,虚拟卡驱动。
下面结合捕获拍照场景,示例性说明电子设备100软件以及硬件的工作流程。
当触摸传感器180K接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,该单击操作所对应的控件为相机应用图标的控件为例,相机应用调用应用框架层的接口,启动相机应用,进而通过调用内核层启动摄像头驱动,通过摄像头193捕获静态图像或视频。
可以理解的是,本申请实施例中,电子设备100执行内部存储器121的Xloader/preloader分区存储的计算机指令后,会引导Boot分区加载,此时kernel启动,则软件框架中内核层的功能可以被启用。待引导System分区加载成功后,软件框架中系统库、应用程序框架层以及应用程序层的功能也可以被启用。
若在内部存储器121的独立分区中更新一些程序包,则根据该程序包的作用不同,该软件框架中不同层的一些功能模块会发生相应的替换。例如,若更新进独立分区的为一个显示驱动的程序包,则在电子设备100确定执行独立分区的程序后,该软件框架中内核成的显示驱动会被新的显示驱动替换掉。
下面结合上述示例性电子设备100的软硬件结构、以及图1中的(b)所示的场景,对本申请实施例中方法进行具体描述:
图5为本申请实施例中程序更新方法一个流程示意图。
S501、电子设备使用摄像头拍摄照片,得到像素值为12M的照片A;
示例性的,如图6a所示,为该电子设备100的内部存储器121的分区表的一个示例性示意图。电子设备100出厂时,其内部存储器121的分区表中可预置一个空白的独立分区。在odm分区中包括有最高支持生成12M像素的算法代码以及其他代码,例如夜景算法的代码等。在LK分区可以预置有优选函数,用于确定独立分区和odm分区中效果较好的代码。LK分区的代码逻辑中按顺序可以包括BootLoader、优选函数、夜景算法调用代码块、像素算法调用代码块等其他代码块。在该像素算法调用代码块中预置有像素选择函数、odm分区像素算法调用函数和独立分区像素算法调用函数,其中:
像素选择函数,用于通过判断执行odm分区像素算法调用函数还是独立分区像素算法调用函数,从独立分区和odm分区中选择支持像素最高的算法代码执行;
odm分区像素算法调用函数,用于调用odm分区中的像素算法函数;
独立分区像素算法调用函数,用于调用独立分区中的像素算法函数。
示例性的,如图6b所示,为电子设备100电源启动后一个示例性场景的信息流示意图。电子设备100电源启动后,从xloader/preloader分区引导加载LK分区的代码,并按BootLoader、优选函数、夜景算法调用代码块、像素算法调用代码块等代码块的代码逻辑顺序执行。在执行优选函数后,电子设备可以确定独立分区为空,没有效果较好的优选代码。电子设备可以直接将该结果传递给后续代码块(例如像素点算法调用代码块),也可以将该结果保存到store分区中。
执行完优选函数后,电子设备跳转回LK分区继续按顺序执行夜景算法调用代码块,该代码块通过调用了ODM分区中的夜景算法代码来实现其功能。电子设备跳转到ODM分区中执行夜景算法代码,执行完成后跳转回LK分区继续按顺序执行像素算法调用代码块。该像素算法调用代码块中预置的像素选择函数会通过判断当前独立分区和odm分区中哪个中有支持像素最高的算法代码,从而确定选择执行odm分区像素算法调用函数还是选择执行独立分区像素算法调用函数。
可以理解的是,本申请实施例中的示例中仅以像素算法调用代码块中预置有选择函数(例如像素选择函数)进行说明,在实际应用中夜景算法调用代码块中也可以设置有选择函数(例如夜景算法选择函数),并且当代码执行到夜景算法调用代码块的选择函数时,其也可以基于优选函数确定的结果,确定执行ODM分区或独立分区中的代码,此处不作限定。
该像素选择函数通过读取优选函数确定的结果,或该像素选择函数根据优选函数向下传递来的确定的结果(例如像素算法标志位的值),可以确定电子设备期望可实现的最高像素12M的实现代码在odm分区,而独立分区为空。因此,该像素选择函数选择执行odm分区像素调用函数,跳转到odm分区执行加载该支持生成12M像素的算法代码到内存。执行完成后再跳转回LK分区继续按顺序执行后续代码块。
由于加载了ODM分区中支持生成12M像素的算法代码,因此在电子设备100完成系统启动后,该电子设备100的摄像头即可具备支持拍摄最高12M像素的照片的能力。此时若电子设备100使用摄像头拍摄照片,可得到像素值为12M的照片A。
可以理解的是,该优选函数确定ODM分区和独立分区中效果较好的优选代码可以通过多种方式。
例如,在一些实施例中,该优选函数可以将独立分区中代码功能效果与其他分区中代码功能效果均进行比较,从而确定各功能的优选代码。例如,该优选函数发送信息上报指示给独立分区和ODM分区,要求上报其中包括的代码的效果,然后进行比对,选择各功能的效果较好的代码作为优选代码。例如ODM上报支持夜景算法代码的1.0版本和支持生成12M像素的算法代码,独立分区上报为空,则优选函数可以确定夜景算法的优选代码在ODM分区中,像素算法的优选代码也在ODM中。再例如ODM上报支持夜景算法代码的1.0版本和支持生成12M像素的算法代码,独立分区上报支持48M像素的算法代码,则优选函数可以确定夜景算法的优选代码在ODM分区中,像素算法的优选代码在独立分区中。上述实施例仅以ODM分区中包含有夜间算法代码和像素算法代码为例进行说明,实际应用中ODM分区中还可以包含有其他算法代码,不予限定。当ODM包含有多个算法代码时,ODM可以将包含的算法代码均上报给优选函数。
再如,在一些实施例中,该优选函数可以先获取独立分区中具有的代码功能效果,再确定其他分区中相同功能的代码是否有更好的效果。如果其他分区中相同功能的代码有更好的效果,则确定其为该功能的优选代码。例如,该优选函数可以先发送信息上报指示给独立分区,要求独立分区上报其中包含的代码的效果。若独立分区上报为空,则该优选函数可以确定各功能的优选代码均为在原预设分区中。若对独立分区上报包括支持生成48M像素的算法代码,则该优选函数向原预设存储像素算法代码的odm分区发送像素算法代码的信息上报指示。若该odm分区反馈其仅支持生成12M像素的算法代码,则该优选函数可以确定像素算法功能的优选代码在独立分区中。
优选函数还可以有很多其他的方式实现其结果,此处不作限定。
可以理解的是,优选函数执行的结果可以以多种方式保存:
在一些实施例中,各功能代码块中可以预置有功能标志位,例如,在像素算法调用代码块中可以包含像素算法标志位。当优选函数确定像素算法功能的优选代码在独立分区时,可以将该像素算法标志位的值置为1。当优选函数确定像素算法功能的优选代码在odm分区时,可以将该像素算法标志位的值置为0。可以理解的是,像素算法标志位的值可以在开机时和/或开机后暂存在内存中,也可以存储到store分区,此处不作限定。
在一些实施例中,优选函数可以直接将函数执行的结果作为记录保存。例如当优选函数确定像素算法功能的优选代码在独立分区(独立分区包含最高支持生成48M像素的算法代码)时,可以保存像素算法功能的优选代码在独立分区的记录,或保存像素算法功能的期望像素值为48M的记录。当优选函数确定像素算法功能的优选代码在odm分区(odm分区包含最高支持生成12M像素的算法代码)时,可以保存像素算法功能的优选代码在odm分区的记录,或保存像素算法功能的期望像素值为12M的记录。可以理解的是,优选函数的执行的结果记录可以在开机时和/或开机后暂存在内存中,也可以存储到store分区,此处不作限定。
该优选函数执行的结果还可以以很多其他的方式保存,此处不作限定。在一些实施例中,该优选函数执行的结果可以被称为记录结果,其中可以包括第一记录结果、第二记录结果等。
S502、电子设备下载更新程序A,该更新程序A为一种像素算法程序,其中包括支持生成48M像素的算法代码;
电子设备100可以通过系统推送下载该更新程序A,也可以通过下载链接下载该更新程序A,还可以通过本地USB拷贝下载该更新程序A,此处不作限定。
S503、电子设备将该更新程序A添加到独立分区;
电子设备100下载该更新程序A后,可以将该更新程序A添加到独立分区。
在一些实施例中,该独立分区中可以划分有不同分区,由于更新程序A包括支持生成48M像素的算法代码,而像素处理的算法代码存储在odm分区。因此,可以将该更新程序A添加到独立分区中的odm-ext分区。示例性的,如图7a所示,为此时该电子设备100的内部存储器121的分区表的一个示例性示意图。独立分区中的odm-ext分区中包括支持生成48M像素的算法代码。
S504、电子设备启动时,确定独立分区中包含有比odm分区支持生成更高像素值的像素算法代码;
示例性的,结合图7a所示的分区表,如图7b所示,为电子设备100电源启动后另一个示例性场景的信息流示意图。电子设备100电源启动后,从xloader/preloader分区引导加载LK分区的代码,并按Boot Loader、优选函数、夜景算法调用代码块、像素算法调用代码块等代码块的代码逻辑顺序执行。在执行优选函数后,电子设备可以确定独立分区中像素算法代码支持48M,而odm分区中像素算法代码支持12M,因此像素算法功能的优选代码为独立分区中该支持生成48M像素的算法代码。电子设备保存像素算法功能的期望效果为48M的记录到store分区中,或保存像素算法功能的优选代码为独立分区的记录到store分区中,或将像素算法调用代码块中预置的像素算法标志位的值置为1。
S505、电子设备确定加载执行独立分区中该支持生成48M像素的算法代码;
结合图7b所示的信息流向示意图,在执行完优选函数后,电子设备跳转回LK分区继续按顺序执行夜景算法调用代码块,该代码块通过调用了ODM分区中的夜景算法代码来实现其功能。电子设备跳转到ODM分区中执行夜景算法代码,执行完成后跳转回LK分区继续按顺序执行像素算法调用代码块。该像素算法调用代码块中预置的像素选择函数会通过判断当前独立分区和odm分区中哪个中有支持像素最高的算法代码,从而确定选择执行odm分区像素算法调用函数还是选择执行独立分区像素算法调用函数。
在一些实施例中,该像素选择函数通过读取store分区中保存的优选函数确定的结果,确定电子设备的像素算法功能的期望效果为48M。该像素选择函数先选择执行odm分区像素算法调用函数,跳转到odm分区执行其中支持生成12M像素的算法代码的第一部分,确定其仅支持生成12M像素,与期望的48M像素不符。然后选择执行独立分区像素算法调用函数,跳转到独立分区执行其中支持生成48M像素的算法代码,确定其支持生成48M像素,与期望相符,将该支持生成48M像素的算法代码执行加载到内存。执行完成后再跳转回LK分区继续按顺序执行后续代码块。
在一些实施例中,该像素选择函数通过读取store分区中保存的优选函数确定的结果,确定电子设备的像素算法功能的优选代码在独立分区。该像素选择函数直接选择执行独立分区像素算法调用函数,跳转到独立分区执行加载其中支持生成48M像素的算法代码到内存。执行完成后再跳转回LK分区继续按顺序执行后续代码块。
在一些实施例中,该像素选择函数根据该像素算法调用代码块中出厂时预置的像素算法标志位来确定此时需执行独立分区像素算法调用函数还是odm分区像素算法调用函数。示例性的,由于步骤S504中优选函数将该预置的像素算法标志位的值置为了1,而像素选择函数中预设有像素算法标志位的值为1时需执行独立分区像素算法调用函数的规则,因此该像素选择函数可以确定此时需执行独立分区像素算法调用函数,跳转到独立分区执行加载其中支持生成48M像素的算法代码到内存。执行完成后再跳转回LK分区继续按顺序执行后续代码块。
由于加载了独立分区中支持生成48M像素的算法代码,因此在电子设备100完成系统启动后,该电子设备100的摄像头即可具备支持拍摄最高48M像素的照片的能力。此时若电子设备100使用摄像头拍摄照片,可得到像素值为48M的照片B。
S506、电子设备使用摄像头拍摄照片,得到像素值为48M的照片B。
由于在系统启动过程中,电子设备100加载执行了独立分区中支持生成48M像素的算法代码,使得完成系统启动后,该电子设备100的摄像头具备支持拍摄最高48M像素的照片的能力。因此此时电子设备使用摄像头拍摄照片,可得到像素值为48M的照片B。
本申请实施例中,电子设备100的内部存储器121的分区表中可以预设独立分区。在需要进行功能更新时,电子设备100可以下载更新程序并添加到该独立分区中。在执行已有功能代码时,预置在其他分区中的选择函数可以根据预设条件选择调整执行独立分区中的更新程序中的功能代码。在执行完独立分区中的功能代码后还可跳转回原功能代码继续执行后续代码。这样一方面使得厂商在进行功能更新时只需要发布与现有代码不同的功能代码,而不需要等待所有的代码全部封装测试完成后再发布,节省了程序更新和版本发布的时间。另一方面,由于发布的更新程序中可以仅包括与现有代码不同的功能代码,极大的缩减了更新程序的容量,使得用户仅需要下载容量很小的更新程序包即可使用更新的功能。
可以理解的是,本申请上述示例仅是以像素算法调用代码块中预置有选择函数为例进行说明的,而在实际应用中,开发者可以根据需求为更多的代码块或不同的代码块设置选择函数。例如在上述实施例中,夜景算法调用代码块中如果也设置有选择函数,则在执行到夜景算法调用代码块时也可以通过该选择函数确定执行odm分区还是独立分区中的相关夜景算法。采用这种方式,也可以满足通过独立分区对夜景算法进行升级更新的需求。
在本申请一些实施例中,示例中支持生成48M像素的算法代码也可以被称为第一代码块,夜景算法调用代码块也可以被称为独立分区外的第二代码块,支持生成12M像素的算法代码也可以被称为独立分区中的第三代码块。
在本申请一些实施例中,可以将支持生成48M像素的算法代码以及支持生成12M像素的算法代码的功能(像素算法)称为第一功能,可以将支持生成48M像素的算法代码的性能(生成48M像素)称为第一性能,将支持生成12M像素的算法代码的性能(生成12M像素)称为第二性能。
在本申请一些实施例中,LK分区可以被称为第一分区,odm分区可以被称为第二分区。
在本申请一些实施例中,可以将优选函数执行的结果称为记录结果,其中可以包括第一记录结果、第二记录结果等。
下面结合另一个示例性场景对本申请实施例中的程序更新方法进行说明:
示例场景:用户购买了厂商发售的一款手机,该手机装配的是显示屏A,安装的系统为用户版本1,可以支持该显示屏A正常使用。一周后,厂商更换显示屏的供应商。该厂商后续手机都将装配显示屏B,其不再有显示屏A的存货。几天后,用户不小心将手机摔在地上,显示屏A碎屏,只能更换为显示屏B。然而更换为显示屏B后,无法点亮屏幕。
如图8中的(a)所示,若采用一种实现方式中的程序更新方式,厂商自从更换显示屏供应商后,就开始适配该显示屏B的新系统的开发工作,需要经过开发、测试、适配等过程,三个多月后,才完成了支持显示屏B点亮的用户版本2的开发。用户需要下载该容量大小为1GB的用户版本2,安装该用户版本2后才能点亮该显示屏B,使得该装配显示屏B、安装有用户版本2的系统的手机又能正常使用。而此时用户无法使用该手机已有3个多月。
如图8中的(b)所示,若采用本申请实施例中的程序更新方法,示例性的,厂商在更换显示屏供应商3天后,就可以完成可点亮显示屏B的屏幕更新程序B。该屏幕更新程序B中可以不包含用户版本中的其他代码,仅包含支持该显示屏B使用的且与原用户版本1中支持显示屏A使用的代码不同的代码。用户仅需下载该容量大小为20MB的屏幕更新程序B放入独立分区即可点亮该显示屏B,该装配有显示屏B、安装有用户版本1以及屏幕更新程序B的手机正常使用。用户更换显示屏B后可能都不需要等待或者仅需要等待几天即可。
下面结合上述示例性电子设备100的软硬件结构、以及图8中的(b)所示的场景,对本申请实施例中方法进行具体描述:
图9为本申请实施例中程序更新方法一个流程示意图。
S901、电子设备无法点亮显示屏B;
示例性的,电子设备100的内部存储器121中安装的是用户版本1,各分区中存储有驱动显示屏A的代码,而没有驱动显示屏B的代码,预设的独立分区为空。因此,电子设备100从显示屏A更换为显示屏B后,电子设备100无法点亮显示屏B。
S902、电子设备下载屏幕更新程序B,该屏幕更新程序B为一种显示屏驱动程序,其中包括驱动显示屏B显示的代码和效果参数;
例如,该驱动显示屏B显示的效果参数可以包括实现屏幕色彩饱和度的参数、实现屏幕清晰度的参数等。
可以理解的是,该屏幕更新程序B可以被理解为一种更新程序,其中包括多个代码块,为驱动显示屏B显示的代码和效果参数。
屏幕更新程序B中的一个代码块可以调用用户版本1中某个分区中某个代码块。该屏幕更新程序B中一个代码块也可以被用户版本1中某个分区中某个代码块调用。这样,在执行这些代码块时,可以实现在原用户版本中的代码块与独立分区中的产线版本中的代码块间跳转执行。
S903、电子设备将该屏幕更新程序B添加到独立分区;
电子设备100下载屏幕更新程序B后,可以将该屏幕更新程序B添加到内部存储器121中预设的独立分区中。
在一些实施例中,根据屏幕更新程序B中代码块功能的不同,按照这些代码块在独立分区外各分区的位置,独立分区中也可以包括多个不同的分区,可以将这些代码块分别添加到该独立分区中各不同的分区中。
示例性的,如图10所示,为此时该电子设备100的内部存储器121的分区表的另一个示例性示意图。独立分区中包括有lk-ext、dtbo-ext、boot-ext、patch-ext这4个分区,电子设备可以将该屏幕更新程序B中相关代码块分别添加到独立分区中各分区,其中:
lk-ext:包含lk加载和校验dtbo-ext、boot-ext的逻辑;
dtbo-ext:包含外设驱动设备树配置和GPIO配置,用于和硬件进行数据交互;
boot-ext:包含外设驱动内核方案和节点配置;
patch-ext:包含vendor/odm/product分区(super分区)中涉及的器件效果配置参数和算法文件。
S904、电子设备根据loader/preloader分区预置的标志位A,确定当前装配的不是预置屏幕,执行独立分区中的屏幕更新程序B;
可以理解的是,标志位A可以有两个值,两个值分别对应不同的代码执行逻辑。
示例性的,可以设定,当标志位A的值为true时,可以执行独立分区的代码逻辑;当标志位A的值为false时,可以执行原有正常代码逻辑。
示例性的,可以设定,当标志位A的值为1时,可以执行独立分区的代码逻辑;当标志位A的值为0时,可以执行原有正常代码逻辑。
还可以有其他不同的标志位的值与执行代码逻辑的对应关系,此处不作限定。
而标志位的值可以由预置的相关函数或状态信息来确定与修改。示例性的,显示屏专属的两个GPIO可以拼接出idpin的值,每个GPIO有高电平、低电平、空置三种状态,假设使用10表示高电平、01表示低电平、00表示空置。通过这两个GPIO不同状态的拼接,就可以组成一个显示屏专属对应的idpin。例如显示屏A,GPIO1为高电平,GPIO2为空置,则其专属对应的idpin为1000;显示屏B,GPIO1为空置,GPIO2为低电平,则其专属对应的idpin为0001。loader/preloader分区可以预置有lcd_xxx_get_lcd_type函数,不同显示屏连接主板后,在开机时,lcd_xxx_get_lcd_type函数会通过获取芯片硬件管脚电压状态确定显示屏的两个GPIO状态,从而确定该显示屏的idpin值。再根据该显示屏的idpin值来识别具体是哪个屏幕。可以设定,若lcd_xxx_get_lcd_type函数识别出连接的显示屏为显示屏A,则将标志位A的值置为false,执行lk分区中的代码块;若lcd_xxx_get_lcd_type函数识别出连接的显示屏为其他显示屏,例如显示屏B,则将标志位A的值置为ture,执行独立分区中lk-ext中的代码块。可以理解的是,lk-ext中的代码块执行完成后,可以根据该代码块中的函数调用指示,或者上一级代码块中函数调用指示,跳转到独立分区外的其他分区,例如lk分区或dtbo分区等执行下一步的代码块。
需要说明的是,电子设备100的内部存储器121的其他各分区的代码块中,还可以设定有其他的标志位,例如标志位B、标志位C等。这些标志位可以与标志位A类似,根据不同的函数或设备状态反馈的信息,置为不同的值。而标志位不同的值可以使电子设备100执行不同分区中的代码块,此处不作限定。
示例性的,结合图10所示的分区表,如图11所示,为本申请实施例中电子设备100电源启动后另一个示例性场景的信息流示意图。在电子设备100的各分区中可以预置有多个标志位,例如标志位A、标志位B、标志位C和标志位D。在电子设备100中装配的是默认的显示屏A时,这些标志位的值均为false。在电子设备100启动后,可以顺序执行各分区中的代码块A、代码块B1、代码块D1、代码块E1、代码块F1、代码块G1、代码块H1、代码块I、代码块J、代码块K1、代码块L等代码块,正常启动系统,点亮显示屏A。当更换显示屏为显示屏B后,在lcd_xxx_get_lcd_type函数根据主板连接的显示屏自身返回的idpin值,确定电子设备100当前装配的显示屏不是默认的显示屏A时,电子设备100可以将各标志位的值更改为ture。此时,在电子设备100启动时,会按照代码块A,代码块B2、代码块D2、代码块E2、代码块F2、代码块G1、代码块H2、代码块I、代码块J、代码块K2、代码块L的顺序执行代码,正常启动系统,点亮装备在电子设备100上的显示屏B。
可以理解的是,添加到独立分区中的代码块B2、代码块D2、代码块E2、代码块F2、代码块H2以及代码块K2为支持点亮显示屏B的所有代码块中与支持点亮显示屏A的所有代码块不同的代码块。例如,点亮显示屏B也需要执行代码块I、代码块J、代码块L等代码块,但由于在用户版本1中这些支持点亮显示屏A的代码块已经存在,因此为节省时间,厂商在生成屏幕更新程序B时,可以将这些代码块不包含在屏幕更新程序B中,而仅在屏幕更新程序B中包含支持显示屏B点亮且在原用户版本1中不存在的代码块。这样,就可以极大的提高得到屏幕更新程序B的效率,并极大的减小要添加到独立分区的屏幕更新程序B的容量大小。
需要说明的是,图11中的各代码块仅仅是为便于描述的一种示例,在实际应用中,用户版本1中可以包括比此要多得多的可复用的代码块。
S905、电子设备点亮显示屏B。
由于屏幕更新程序B中包括支持显示屏B点亮的必要代码块,电子设备100执行屏幕更新程序B相应的逻辑代码后,可以点亮显示屏B。
可选的,在一些实施例中,可能不便于在用户版本1存在的情况下,直接将屏幕更新程序B添加到独立分区中。这种情况下,厂商可以先得到包含该屏幕更新程序B的产线版本B,使用该产线版本B对电子设备100进行升级时,可将该屏幕更新程序B添加到电子设备100的独立分区中,再使用用户版本1对该电子设备100进行升级。使用用户版本1对该电子设备100进行升级时,独立分区中的所有数据均不进行擦除,直接保留,这样就可以与用户版本1中已经预留好的标志位以及代码块接口搭配,共同点亮显示屏B。
可选的,在一些实施例中,在厂商研发完成完整的用户版本2后,电子设备100可以下载该用户版本2,使用用户版本2对电子设备100进行升级。该用户版本2的独立分区可以为空,其其他分区中包含支持点亮显示屏B的代码块。使用用户版本2对电子设备100升级时,可以对独立分区进行擦除。
结合上述实施例,下面对本申请实施例中程序更新方法进行进一步描述:
请参阅图12,为本申请实施例中程序更新方法另一个流程示意图。
S1201、电子设备获取更新程序,其中包括第一代码块;
该第一代码块用于以第一性能实现第一功能。
示例性的,在一些实施例中,图5所述实施例中的支持生成48M像素的算法代码可以被称为第一代码块。
示例性的,在一些实施例中,图9所述实施例中更新程序B中任一个代码块均可以被称为第一代码块。
电子设备获取第一代码块的方式可以为根据系统推送下载,触发下载链接下载,高维USB写入等方式,此处不作限定。
在一些实施例中,电子设备可以获取更多的代码块,例如第二代码块、第三代码块、第四代码块等等,此处不作限定。
S1202、该电子设备将该第一代码块添加到存储器中的独立分区;
电子设备可以将获取的代码块添加到存储器中的独立分区,该独立分区为预设在该电子设备的存储器中的不影响该电子设备正常启动的一个分区。
可选的,在一些实施例中,该独立分区中可以再划分为多个不同的分区,例如lk-ext分区、dtbo-ext分区、boot-ext分区、patch-ext分区等,可以根据代码块的功能不同,将添加到独立分区的各代码块添加到该独立分区中的不同分区中,此处不作限定。
S1203、在电子设备执行该独立分区外第二代码块后,确定第一标志位是否为第一预设值;
电子设备的独立分区外为支持电子设备正常启动的一些分区,可以包括第一分区、第二分区、第三分区等,例如Xloader/preloader分区、Lk分区、Dtbo分区、Boot分区、Odm分区、Vendor分区和System分区。该第二代码块可以为独立分区外的任一代码块,该第二代码块后可以预置有一个第一标志位。该第一标志位的值可以由电子设备根据预置函数的反馈值或者电子设备的状态修改。例如,如图9所示实施例中的步骤S907中的描述,若该第一标志位为标志位A,可以根据预置的lcd_xxx_get_lcd_type函数修改标志位A的值为false还是ture。
在执行完该第二代码块后,根据该第一标志位是否为第一预设值,电子设备可以执行不同的代码块。
可以理解的是,在该独立分区外的一些其他的代码块后,也可以包含有其他的标志位,例如第二标志位、第三标志位等等,此处不作限定。这些标志位的值可以由按照相同的条件进行修改,也可以按照不同的条件进行修改,此处不作限定。
S1204、当该第一标志位为第一预设值时,电子设备执行该独立分区外的第三代码块;
该第三代码块为正常顺序执行逻辑中该第二代码块之后的一个代码块。该第三代码块用于以第二性能实现该第一功能,该第二性能与该第一性能不同。
示例性的,在一些实施例中,图5所述实施例中的支持生成12M像素的算法代码可以被称为第一代码块。
示例性的,在一些实施例中,图9所述实施例中代码块B1、代码块D1、代码块E1、代码块F1、代码块K1中任一个代码块均可以被称为第一代码块。
一般的,若独立分区为空,或独立分区中没有与该第三代码块功能相同的代码块时,该第一标志位都会是第一预设值。
可以理解的是,在一些实施例中,该第三代码块之后还可以有另一个标志位,例如第二标志位,根据该第二标志位是否为第二预设值,电子设备可以确定执行独立分区外的代码块还是执行独立分区中的代码块,此处不作限定。
S1205、当该第一标志位不为该第一预设值时,该电子设备执行该独立分区中的第一代码块。
需要说明的是,由于该第一标志位与该第一代码块具有对应关系,因此该第一标志位不为该第一预设值时,该电子设备会执行该独立分区中的第一代码块,而不是执行独立分区中的其他代码块。
第一标志位与该第一代码块之间的对应关系可以有很多种表现形式,例如第一标志位中携带有第一代码块的标识、第一标志位中包括第一代码块的地址信息、第一标志位调用第一代码块中的函数或电子设备中存储有第一标志位和第一代码块的对应关系表等等,此处不作限定。
可以理解的是,电子设备执行该独立分区中的第一代码块后,再执行哪个代码块,由该第一代码块确定。例如,若第一代码块指示输出数据的到独立分区外的第四代码块,则在执行完该第一代码块后,会执行独立分区外的第四代码块。
本申请实施例中,电子设备中可以预设有独立分区,且电子设备独立分区外的代码中包含标志位。在电子设备需要进行功能更新时,可以下载包含有第一代码块的更新程序,将第一代码块添加到独立分区中。电子设备可以根据标志位的值,确定执行独立分区外的代码块还是跳转执行独立分区中的代码块。在执行独立分区中的代码块后,也可以根据该代码块的指示调整执行独立分区外的代码块。这样,更新程序中包含的代码块可以仅包含与电子设备中已有的代码块不同的必要代码块,一方面极大的提升了开发效率,另一方面减小了更新程序的容量大小。
需要说明的是,上述示例的步骤S503-S504中通过第一标志位是否为第一预设值来确定电子设备执行独立分区中的代码块还是独立分区外的代码块仅仅是一种可选方式。在一些实施例中,在电子设备执行该独立分区外第二代码块后,电子设备可以确定第一记录结果是否符合第一预设跳转条件,在该第一记录结果不符合该第一预设跳转条件的情况下,该电子设备可以执行该独立分区外的第三代码块;在该第一记录结果符合该第一预设跳转条件的情况下,该电子设备可以执行该独立分区中的该第一代码块。
根据实际应用中需求的不同,该第一预设跳转条件可以不同。例如,在一些实施例中,该第一预设跳转条件为第一记录结果中是否包含独立分区的标识;在第一记录结果中包含独立分区的标识时,确定第一记录结果符合第一预设跳转条件;在第一记录结果中不包含独立分区的标识时,确定第一记录结果不符合第一预设跳转条件。再如,在一些实施例中,该第一预设跳转条件为第一标志位的值是否为第一预设值;当确定第一标志位的值为第一预设值时,确定第一记录结果符合第一预设跳转条件;当确定第一标志位的值不为第一预设值时,确定第一记录结果不符合第一预设跳转条件。
而在一些实施例中,该第一记录结果可以是优选函数执行的结果中的一个记录结果。该第一记录结果可以以多种方式体现,例如作为记录存储,或设置标志位的值。
示例性的,在图5所示的实施例中,该第一预设跳转条件可以为store分区的记录结果中有独立分区的标识。在图9所示的实施例中,该第一预设跳转条件可以为相关标志位的值为1。
优选函数可以根据第一预设选择条件得到该记录结果。根据实际应用中需求的不同,该第一预设选择条件可以不同。例如,在一些实施例中,该第一预设选择条件为选择独立分区外其他分区中与独立分区中实现相同功能时性能更优的代码块。再如,在一些实施例中,该第一预设跳转条件为选择与电子设备上安装的物理器件匹配的代码块。
示例性的,在图5所示的实施例中,该第一预设选择条件可以为选择odm分区中与独立分区中实现第一功能时性能更优的代码块。在图9所示的实施例中,该第一预设选择条件可以为电子设备装配的不是预置屏幕。
在一些实施例中,该更新程序中还可以包括第四代码块,该第四代码块用于以第三性能实现第二功能;该电子设备可以将该第四代码块添加到该独立分区;在执行该第一代码块或该第三代码块后,该电子设备可以确定第二记录结果是否符合第二预设跳转条件;在该第二记录结果不符合该第二预设跳转条件的情况下,该电子设备可以执行该独立分区外的第五代码块,该第五代码块用于以第四性能实现该第二功能;该第四性能与该第三性能不同;在该第二记录结果符合该第二预设跳转条件的情况下,该电子设备可以执行该独立分区中的该第四代码块。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。

Claims (18)

1.一种程序更新方法,其特征在于,包括:
电子设备获取更新程序,其中包括第一代码块,所述第一代码块用于以第一性能实现第一功能;
所述电子设备将所述第一代码块添加到所述电子设备的存储器中的独立分区;所述独立分区为不影响所述电子设备正常启动的一个分区;
在执行所述独立分区外的第二代码块后,所述电子设备确定第一记录结果是否符合第一预设跳转条件;
在所述第一记录结果不符合所述第一预设跳转条件的情况下,所述电子设备执行所述独立分区外的第三代码块,所述第三代码块用于以第二性能实现所述第一功能,所述第二性能与所述第一性能不同;
在所述第一记录结果符合所述第一预设跳转条件的情况下,所述电子设备执行所述独立分区中的所述第一代码块。
2.根据权利要求1所述的方法,其特征在于,所述存储器中还包括第一分区和第二分区;所述第一分区中包括所述第二代码块,所述第二分区中包括所述第三代码块。
3.根据权利要求2所述的方法,其特征在于,所述第一分区中还包括优选函数,所述优选函数用于根据第一预设选择条件得到记录结果,其中包括所述第一记录结果;所述第一记录结果用于标识所述第一代码块和所述第三代码块中符合所述第一预设选择条件的代码块。
4.根据权利要求3所述的方法,其特征在于,所述第一预设选择条件为选择所述第二分区与所述独立分区中实现相同功能时性能更优的代码块。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述优选函数发送第一信息上报指示给所述独立分区和所述第二分区,所述第一信息上报指示用于指示所述独立分区和所述第二分区上报其中包括的代码块的功能和性能;
所述优选函数接收所述独立分区和所述第二分区上报的其中包括的代码块的功能和性能,其中包括所述第一代码块实现所述第一功能、性能为所述第一性能,所述第二代码块实现所述第一功能、性能为所述第二性能;
所述优选函数确定所述独立分区和所述第二分区中实现相同功能时性能更优的代码块为优选代码块,并将其保存为所述记录结果,其中包括所述第一记录结果;所述第一记录结果用于标识所述第一代码块和所述第三代码块中实现所述第一功能时性能更优的代码块。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述优选函数发送第二信息上报指示给所述独立分区,所述第二信息上报指示用于指示所述独立分区上报其中包括的代码块的功能和性能;
所述优选函数接收所述独立分区上报的其中包括的代码块的功能和性能,其中包括所述第一代码块实现所述第一功能、性能为所述第一性能;
所述优选函数发送第三信息上报指示给所述第二分区,所述第三信息上报指示用于指示所述第二分区上报独立分区同功能代码块的性能,所述独立分区同功能代码块为与所述独立分区上报的代码块实现相同功能的代码块;
所述优选函数接收所述第二分区上报的独立分区同功能代码块的性能,其中包括同样实现所述第一功能的第三代码块的性能为所述第二性能;
所述优选函数确定所述独立分区上报的其中包括的代码块与所述第二分区上报的独立分区同功能代码块中实现相同功能时性能更优的代码块为优选代码块,并将其保存为所述记录结果,其中包括所述第一记录结果;所述第一记录结果用于标识所述第一代码块和所述第三代码块中实现所述第一功能时性能更优的代码块。
7.根据权利要求3所述的方法,其特征在于,所述第一预设选择条件为选择与所述电子设备上安装的物理器件匹配的代码块。
8.根据权利要求3所述的方法,其特征在于,所述第一记录结果暂存在内存中,或所述第一记录结果存在存储器中的第四分区。
9.根据权利要求3至8中任一项所述的方法,其特征在于,所述在执行所述独立分区外的第二代码块后,所述电子设备确定第一记录结果是否符合第一预设跳转条件,具体包括:
在执行所述第一分区中的所述第二代码块后,所述电子设备确定所述第一记录结果中是否包含所述独立分区的标识;
在所述第一记录结果中包含所述独立分区的标识时,所述电子设备确定所述第一记录结果符合所述第一预设跳转条件;
在所述第一记录结果中不包含所述独立分区的标识时,所述电子设备确定所述第一记录结果不符合所述第一预设跳转条件。
10.根据权利要求3至8中任一项所述的方法,其特征在于,所述第一分区中还包括第一标志位,所述第一记录结果为第一标志位的值;所述方法还包括:
当所述优选函数确定所述第一代码块性能更优时,所述电子设备将所述第一标志位设置为第一预设值;
当所述优选函数确定所述第三代码块性能更优时,所述电子设备将所述第一标志位设置为与所述第一预设值不同的其他值。
11.根据权利要求10所述的方法,其特征在于,所述第一标志位与所述第一功能相关联;所述第一分区中还包括第一选择函数,所述第一选择函数为所述第一功能的选择函数;
所述方法还包括:
所述电子设备将所述第一标志位的值传递给所述第一选择函数;
所述在执行所述独立分区外的第二代码块后,所述电子设备确定第一记录结果是否符合第一预设跳转条件,具体包括:
在执行所述第一分区中的所述第二代码块后,所述第一选择函数确定所述第一标志位的值是否为所述第一预设值;
当确定所述第一标志位的值为所述第一预设值时,所述第一选择函数确定所述第一记录结果符合所述第一预设跳转条件;
当确定所述第一标志位的值不为所述第一预设值时,所述第一选择函数确定所述第一记录结果不符合所述第一预设跳转条件。
12.根据权利要求10所述的方法,其特征在于,所述在执行所述独立分区外的第二代码块后,所述电子设备确定第一记录结果是否符合第一预设跳转条件,具体包括:
在执行所述第一分区中的所述第二代码块后,所述电子设备确定第一标志位的值是否为所述第一预设值;
当确定所述第一标志位的值为所述第一预设值时,所述电子设备确定所述第一记录结果符合所述第一预设跳转条件;
当确定所述第一标志位的值不为所述第一预设值时,所述电子设备确定所述第一记录结果不符合所述第一预设跳转条件。
13.根据权利要求1至10中任一项所述的方法,其特征在于,所述第一分区和所述第二分区为与所述电子设备正常启动相关的分区。
14.根据权利要求1至13中任一项所述的方法,其特征在于,所述更新程序中还包括第四代码块,所述第四代码块用于以第三性能实现第二功能;所述方法还包括:
所述电子设备将所述第四代码块添加到所述独立分区;
在执行所述第一代码块或所述第三代码块后,所述电子设备确定第二记录结果是否符合第二预设跳转条件;
在所述第二记录结果不符合所述第二预设跳转条件的情况下,所述电子设备执行所述独立分区外的第五代码块,所述第五代码块用于以第四性能实现所述第二功能;所述第四性能与所述第三性能不同;
在所述第二记录结果符合所述第二预设跳转条件的情况下,所述电子设备执行所述独立分区中的所述第四代码块。
15.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器和存储器;
所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1-14中任一项所述的方法。
16.一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1-14中任一项所述的方法。
17.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法。
18.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法。
CN202110603262.7A 2021-05-31 2021-05-31 程序更新方法和电子设备 Active CN113885928B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110603262.7A CN113885928B (zh) 2021-05-31 2021-05-31 程序更新方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110603262.7A CN113885928B (zh) 2021-05-31 2021-05-31 程序更新方法和电子设备

Publications (2)

Publication Number Publication Date
CN113885928A true CN113885928A (zh) 2022-01-04
CN113885928B CN113885928B (zh) 2022-10-11

Family

ID=79010138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110603262.7A Active CN113885928B (zh) 2021-05-31 2021-05-31 程序更新方法和电子设备

Country Status (1)

Country Link
CN (1) CN113885928B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114546269A (zh) * 2022-02-15 2022-05-27 京东科技信息技术有限公司 存储挂载方法、装置及电子设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866334A (zh) * 2014-12-12 2015-08-26 北汽福田汽车股份有限公司 一种控制器软件代码分区方法及其运行方法
CN105183501A (zh) * 2015-08-10 2015-12-23 珠海格力电器股份有限公司 防止在线程序烧写出错的方法
CN105573864A (zh) * 2015-12-15 2016-05-11 广州视源电子科技股份有限公司 终端系统恢复方法及其系统
CN105867947A (zh) * 2016-04-25 2016-08-17 青岛海信电器股份有限公司 预置应用程序升级后的数据处理方法及装置
CN106775650A (zh) * 2016-11-25 2017-05-31 珠海我爱拍科技有限公司 一种基于定制Android系统的升级方法
CN107967141A (zh) * 2017-11-27 2018-04-27 北京小米移动软件有限公司 操作系统升级方法、装置及终端
CN108595113A (zh) * 2018-03-22 2018-09-28 维沃移动通信有限公司 一种分区调整的方法及终端
CN109634630A (zh) * 2018-10-29 2019-04-16 平安科技(深圳)有限公司 应用程序更新方法、装置、电子设备及存储介质
CN110399152A (zh) * 2019-07-22 2019-11-01 浙江鸿泉车联网有限公司 一种设备系统双备份升级方法及装置
CN110580167A (zh) * 2018-06-11 2019-12-17 海能达通信股份有限公司 一种系统升级方法、智能设备及服务器
CN111796848A (zh) * 2020-07-08 2020-10-20 中国第一汽车股份有限公司 Bootloader软件更新方法、装置、嵌入式控制器以及存储介质
CN112115017A (zh) * 2020-08-07 2020-12-22 航天科工空间工程发展有限公司 一种星载软件程序的逻辑代码监控方法和装置

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866334A (zh) * 2014-12-12 2015-08-26 北汽福田汽车股份有限公司 一种控制器软件代码分区方法及其运行方法
CN105183501A (zh) * 2015-08-10 2015-12-23 珠海格力电器股份有限公司 防止在线程序烧写出错的方法
CN105573864A (zh) * 2015-12-15 2016-05-11 广州视源电子科技股份有限公司 终端系统恢复方法及其系统
CN105867947A (zh) * 2016-04-25 2016-08-17 青岛海信电器股份有限公司 预置应用程序升级后的数据处理方法及装置
CN106775650A (zh) * 2016-11-25 2017-05-31 珠海我爱拍科技有限公司 一种基于定制Android系统的升级方法
CN107967141A (zh) * 2017-11-27 2018-04-27 北京小米移动软件有限公司 操作系统升级方法、装置及终端
CN108595113A (zh) * 2018-03-22 2018-09-28 维沃移动通信有限公司 一种分区调整的方法及终端
CN110580167A (zh) * 2018-06-11 2019-12-17 海能达通信股份有限公司 一种系统升级方法、智能设备及服务器
CN109634630A (zh) * 2018-10-29 2019-04-16 平安科技(深圳)有限公司 应用程序更新方法、装置、电子设备及存储介质
CN110399152A (zh) * 2019-07-22 2019-11-01 浙江鸿泉车联网有限公司 一种设备系统双备份升级方法及装置
CN111796848A (zh) * 2020-07-08 2020-10-20 中国第一汽车股份有限公司 Bootloader软件更新方法、装置、嵌入式控制器以及存储介质
CN112115017A (zh) * 2020-08-07 2020-12-22 航天科工空间工程发展有限公司 一种星载软件程序的逻辑代码监控方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
周斐: "基于以太网的嵌入式设备数据更新加载系统", 《电声技术》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114546269A (zh) * 2022-02-15 2022-05-27 京东科技信息技术有限公司 存储挂载方法、装置及电子设备

Also Published As

Publication number Publication date
CN113885928B (zh) 2022-10-11

Similar Documents

Publication Publication Date Title
CN112783564B (zh) 一种加速应用程序启动的方法及电子设备
CN113553130B (zh) 应用执行绘制操作的方法及电子设备
CN114461588B (zh) 调节预读窗口的方法及电子设备
CN113704205A (zh) 日志存储的方法、芯片、电子设备和可读存储介质
CN112667306A (zh) 安装插件的方法、装置和存储介质
CN113885928B (zh) 程序更新方法和电子设备
CN114546969A (zh) 一种文件共享方法、装置及电子设备
CN113741993A (zh) 编译插件dex文件的方法及装置
CN117130541A (zh) 存储空间配置方法及相关设备
WO2022111664A1 (zh) 打补丁的方法、相关设备及系统
CN114443109B (zh) 补丁修复方法、电子设备及存储介质
CN116665751A (zh) 测试方法及电子设备
CN113485709B (zh) 应用优化方法、装置以及电子设备
CN113590346B (zh) 处理业务请求的方法和电子设备
CN113784331B (zh) 更新用户身份识别模块卡系统数据的方法及装置
CN112783418B (zh) 一种存储应用程序数据的方法及移动终端
CN113741911A (zh) 功能包的加载方法、装置、服务器和电子设备
CN114489471A (zh) 一种输入输出处理方法和电子设备
CN113467821A (zh) 应用程序的修复方法、装置、设备及可读存储介质
CN116795476B (zh) 一种删除壁纸的方法及电子设备
CN116841575B (zh) 生成镜像文件的方法及相关装置
CN114996162B (zh) 测试方法及相关装置
CN117009023B (zh) 显示通知信息的方法及相关装置
CN117707563A (zh) 应用资源处理方法及相关设备
CN115952564A (zh) 数据写入方法和终端设备

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