CN107544804A - 嵌入式***终端开发模式的启动方法及装置 - Google Patents
嵌入式***终端开发模式的启动方法及装置 Download PDFInfo
- Publication number
- CN107544804A CN107544804A CN201710778024.3A CN201710778024A CN107544804A CN 107544804 A CN107544804 A CN 107544804A CN 201710778024 A CN201710778024 A CN 201710778024A CN 107544804 A CN107544804 A CN 107544804A
- Authority
- CN
- China
- Prior art keywords
- debugging
- embedded system
- system terminal
- bootloader
- debugging instruction
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式***终端开发模式的启动方法及装置,属于终端开发领域。其中,嵌入式***终端具备硬件开关用于触发调试指令,调试指令用于指示嵌入式***终端进入开发模式,所述方法包括:建立全局变量,用于控制嵌入式***终端的启动装载BootLoader的调试功能;接收调试指令;修改全局变量以启动BootLoader的调试功能;linux***内核读取BootLoader发送的启动字符串Bootargs,启动字符串含有调试指令的状态信息;根据状态信息启动linux***内核的调试功能。本发明可以通过外部硬件开关来控制进入嵌入式***终端的开发模式,可以大大节省终端维护的运维成本。
Description
技术领域
本发明涉及终端开发领域,特别涉及一种嵌入式***终端开发模式的启动方法及装置。
背景技术
目前,嵌入式操作***终端对外(用户)、对内(研发公司)软件一般分为两个版本,即发布版和开发版。发布版被用户所使用,用户只能使用该终端的功能但无法对其进行调试;开发版是开发人员进行测试及调试的版本。
基于上述介绍,对于使用对象的不同,在生产嵌入式***终端,例如android设备的时候需要根据发行对象的不同选择烧录不同版本的软件。即提供给用户的终端烧录的是发布版,提供给开发人员的终端烧录的是开发版。
根据上述介绍,现有技术至少存在以下问题:
1、对于生产嵌入式***终端的时候要区分不同的软件版本;
2、终端进行维修时,需要将发布版重新烧录成开发版进行测试调试进行维修,大大增加了时间成本,人力成本;
3、多次烧录存在数据丢失的风险。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种嵌入式***终端开发模式的启动方法及装置。为了实现本发明的方法及装置,所述嵌入式***终端需要具备硬件开关用于触发调试指令,所述调试指令用于指示所述嵌入式***终端进入开发模式,所述技术方案如下:
第一方面,根据本发明的实施例提供了一种嵌入式***终端开发模式的启动方法,所述方法包括:
建立全局变量,用于控制所述嵌入式***终端的启动装载BootLoader的调试功能;
接收调试指令;
修改所述全局变量以启动所述BootLoader的调试功能;
linux***内核读取所述BootLoader发送的启动字符串Bootargs,所述启动字符串含有所述调试指令的状态信息;
根据所述状态信息启动所述linux***内核的调试功能。
其中,所述状态信息可以为电平数值和/或电平状态,例如以0/1信号表示高低电平。
此外,所述调试指令为低电平信号,这样可以有效避免非开发人员开启终端的开发模式功能。
在启动开发模式的过程中,应用程序根据所述调试指令启动其调试功能。
进一步的,所述应用程序为操作***的原生应用程序。
第二方面,根据本发明的实施例还提供了一种嵌入式***终端开发模式的启动装置,所述装置包括:
控制模块,用于建立全局变量来控制所述嵌入式***终端的启动装载BootLoader的调试功能;
接收模块,用于接收调试指令;
修改模块,用于修改所述全局变量以启动所述BootLoader的调试功能;
读取模块,用于linux***内核读取所述BootLoader发送的启动字符串Bootargs,所述启动字符串含有所述调试指令的状态信息;
第一启动模块,用于根据所述状态信息启动所述linux***内核的调试功能。
其中,所述状态信息为电平数值和/或电平状态。
其中,所述调试指令为低电平信号。
此外,本装置还包括第二启动模块,用于根据所述调试指令启动应用程序的调试功能。
进一步,所述应用程序为原生应用程序。
本发明实施例提供的技术方案带来的有益效果是:
通过构建全局变量,并通过启动字符串传递调试指令的状态信息实现通过终端外部的硬件开关来启动终端软件进入开发模式。这样只需要烧录一个版本软件,根据需要选择打开开发模式进行调试即可,避免了多次烧录造成的运维成本浪费及数据丢失风险,此外在生产终端时也不需要区分软件版本大大提高了终端生产的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例提供的嵌入式***终端开发模式的启动方法的流程图;
图2是根据本发明实施例提供的嵌入式***终端开发模式的启动方法的示例性流程图;
图3是根据本发明实施例提供的嵌入式***终端开发模式的启动装置框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
此外,为了更准确及清楚的理解本发明的技术方案,首先对本发明技术方案中常用的技术性名词进行介绍:
1、Bootloader,在嵌入式操作***,例如android***中,内核运行之前运行的引导程序,负责设备的初始化和引导嵌入式android***内核的启动,常见的BootLoader为U-Boot。在嵌入式操作***中,BootLoader是在操作***内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将***的软硬件环境带到一个合适状态,以便为最终调用操作***内核准备好正确的环境。在嵌入式***中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个***的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式***中,***在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是***的BootLoader程序;
2、Bootargs,bootloader引导内核kernel启动时,传给kernel的参数统称。bootargs是bootloader传递给内核的启动字符串;
3、Linux kernel,linux***内核,android和嵌入式操作***一般均采用linux***内核,内核提供了设备驱动和操作***核心功能。
目前例如android终端的嵌入式操作***设备中,开发版和发布版软件大部分是分为两套软件;而BootLoader和内核又属于烧录在主板上的固件;因此针对不同版本的终端需要烧录不同的软件。
本发明提出了一种嵌入式操作***终端中通过一个硬件的调试开关,由bootloader和kernel这种在硬件设备上的固件通过获取开关状态,来决定bootloader和kernel是否进入开发模式的方法。
根据本发明的实施例,提供了一种嵌入式***终端开发模式的启动方法,需要说明的是,本发明中的嵌入式***终端具备硬件开关用于触发调试指令,所述调试指令用于指示所述嵌入式***终端进入开发模式。
如图1所示,根据本发明实施例的嵌入式***终端开发模式的启动方法,包括:
步骤S101,建立全局变量,用于控制所述嵌入式***终端的启动装载BootLoader的调试功能;
步骤S103,接收调试指令;
步骤S105,修改所述全局变量以启动所述BootLoader的调试功能;
步骤S107,linux***内核读取所述BootLoader发送的启动字符串Bootargs,所述启动字符串含有所述调试指令的状态信息;
步骤S109,根据所述状态信息启动所述linux***内核的调试功能。
通过本发明的上述方案,能够实现通过硬件的调试开关,由bootloader和kernel这种在硬件设备上的固件通过获取开关状态,来启动bootloader和kernel进入开发模式,因此嵌入式***终端只需烧录一种版本软件即可,有效的节省了嵌入式***终端的运维成本,大大提高了数据的稳定性,避免重复烧录带来的风险。
为了进一步理解本发明的技术方案,以下举另一具体实施例来进行说明。
如图2所示,一般嵌入式***终端的启动流程为,终端启动后最先由bootloader启动,然后bootloader引导内核kernel启动,在引导kernel启动的同时也会传给内核bootargs作为启动参数,最终内核启动后,各个应用程序APP运行在操作***内核之上。在实现本发明实施例的过程中,首先需要要求终端具备一硬件开关,用于触发调试指令,该调试指令用于指示嵌入式***终端进入开发模式,鉴于目前市面上大多数嵌入式***终端并不具备该硬件开关,并且由于市面上的嵌入式***终端均需录入不同软件版本以应对不同发行对象的需求,因此本领域技术人员并不能想到需要在终端上设置硬件开关用于触发启动终端的开发模式,因此为了实现本发明的技术方案,在终端硬件设备上设置一用于触发启动开发模式调试指令的硬件开关也是本发明的重要发明点之一。
继续参照图2所示的实施例,首先建立一个全局变量用来控制嵌入式***终端的启动装载BootLoader的所有调试功能。在需要进入开发模式时,打开开关,用以发送调试指令。BootLoader接收到该调试指令后修改全局变量以启动BootLoader的调试功能,并通过启动字符串bootargs将调试指令的状态信息传送给linux内核;linux内核根据传入的启动字符串所携带的调试指令的状态信息打开***内核的调试功能,具体的,通过内核的debug和printk模块进行调试。
由于开发模式对于普通用户而言需具备一定的隐秘性,因此,可以将调试指令设定为一个逆向电平信号,例如以低电平信号来触发调试操作,这样可以有效避免非开发人员开启终端的开发模式功能。Bootargs所携带的状态信息可以为电平数值和/或电平状态,例如以1/0信号表示高低电平,内核可以根据电平信息来判断是否打开调试功能。
此外,在启动开发模式的过程中,应用程序可以根据调试指令启动其调试功能。对于嵌入式***终端而言,应用程序可以为操作***的原生应用程序。
综上所述,本发明的技术方案可以实现通过硬件开关开启嵌入式***终端的开发模式,通过软件获取硬件开关的方式决定设备的调试状态;也就是将设备的调试模式和发布模式由硬件开关决定,而不再烧录不同的软件。减少了根据不同的设备用途烧录不同软件的问题避免多次烧录带来的不良影响例如信息丢失,其次对维修的设备,可以更方便快捷的进行调试。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
如图3所示,本发明的嵌入式***终端开发模式的启动装置,包括:
控制模块31,用于建立全局变量来控制所述嵌入式***终端的启动装载BootLoader的调试功能;
接收模块32,用于接收调试指令;
修改模块33,用于修改所述全局变量以启动所述BootLoader的调试功能;
读取模块34,用于linux***内核读取所述BootLoader发送的启动字符串Bootargs,所述启动字符串含有所述调试指令的状态信息;
第一启动模块35,用于根据所述状态信息启动所述linux***内核的调试功能。
其中,所述状态信息为电平数值和/或电平状态。
其中,所述调试指令为低电平信号。
此外,本装置还包括第二启动模块(未示出),用于根据所述调试指令启动应用程序的调试功能。
进一步,所述应用程序为原生应用程序。
需要说明的是:上述实施例提供的嵌入式***终端开发模式的启动装置在提供启动开发模式服务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的嵌入式***终端开发模式的启动装置与其对应提供的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
应当理解的是,在本文中提及的“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种嵌入式***终端开发模式的启动方法,其中,所述嵌入式***终端具备硬件开关用于触发调试指令,所述调试指令用于指示所述嵌入式***终端进入开发模式,其特征在于,包括:
建立全局变量,用于控制所述嵌入式***终端的启动装载BootLoader的调试功能;
接收调试指令;
修改所述全局变量以启动所述BootLoader的调试功能;
linux***内核读取所述BootLoader发送的启动字符串Bootargs,所述启动字符串含有所述调试指令的状态信息;
根据所述状态信息启动所述linux***内核的调试功能。
2.根据权利要求1所述的方法,其特征在于,所述状态信息为电平数值和/或电平状态。
3.根据权利要求1所述的方法,其特征在于,所述调试指令为低电平信号。
4.根据权利要求1所述的方法,其特征在于,进一步包括:
根据所述调试指令启动应用程序的调试功能。
5.根据权利要求4所述的方法,其特征在于,包括:
所述应用程序为原生应用程序。
6.一种嵌入式***终端开发模式的启动装置,其中,所述嵌入式***终端具备硬件开关用于触发调试指令,所述调试指令用于指示所述嵌入式***终端进入开发模式,其特征在于,包括:
控制模块,用于建立全局变量来控制所述嵌入式***终端的启动装载BootLoader的调试功能;
接收模块,用于接收调试指令;
修改模块,用于修改所述全局变量以启动所述BootLoader的调试功能;
读取模块,用于linux***内核读取所述BootLoader发送的启动字符串Bootargs,所述启动字符串含有所述调试指令的状态信息;
第一启动模块,用于根据所述状态信息启动所述linux***内核的调试功能。
7.根据权利要求6所述的装置,其特征在于,所述状态信息为电平数值和/或电平状态。
8.根据权利要求6所述的装置,其特征在于,所述调试指令为低电平信号。
9.根据权利要求6所述的装置,其特征在于,进一步包括:
第二启动模块,用于根据所述调试指令启动应用程序的调试功能。
10.根据权利要求9所述的装置,其特征在于,包括:
所述应用程序为原生应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710778024.3A CN107544804A (zh) | 2017-09-01 | 2017-09-01 | 嵌入式***终端开发模式的启动方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710778024.3A CN107544804A (zh) | 2017-09-01 | 2017-09-01 | 嵌入式***终端开发模式的启动方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107544804A true CN107544804A (zh) | 2018-01-05 |
Family
ID=60958615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710778024.3A Pending CN107544804A (zh) | 2017-09-01 | 2017-09-01 | 嵌入式***终端开发模式的启动方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107544804A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246120A (zh) * | 2018-09-29 | 2019-01-18 | 中国船舶重工集团公司第七〇九研究所 | 一种嵌入式设备的远程调试方法及其*** |
CN111209059A (zh) * | 2020-01-14 | 2020-05-29 | 中国北方车辆研究所 | 一种嵌入式软件多版本控制***及方法 |
CN113767893A (zh) * | 2021-09-22 | 2021-12-10 | 西安京维智网科技有限公司 | 一种智能驱鸟器及其远程监控与升级方法 |
CN113961495A (zh) * | 2021-10-21 | 2022-01-21 | 青岛海信宽带多媒体技术有限公司 | 一种Linux***串口功能禁用的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673959A (zh) * | 2004-03-27 | 2005-09-28 | 鸿富锦精密工业(深圳)有限公司 | 加载***及方法 |
CN101267623A (zh) * | 2008-04-11 | 2008-09-17 | 上海闻泰电子科技有限公司 | 一种手机启动引导的构建方法 |
CN102708001A (zh) * | 2012-04-26 | 2012-10-03 | 深圳市九思泰达技术有限公司 | Linux嵌入式设备及其用户模式与工程模式切换的方法 |
CN104484592A (zh) * | 2014-12-31 | 2015-04-01 | 广州视源电子科技股份有限公司 | 移动设备工厂模式的启动方法及*** |
-
2017
- 2017-09-01 CN CN201710778024.3A patent/CN107544804A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673959A (zh) * | 2004-03-27 | 2005-09-28 | 鸿富锦精密工业(深圳)有限公司 | 加载***及方法 |
CN101267623A (zh) * | 2008-04-11 | 2008-09-17 | 上海闻泰电子科技有限公司 | 一种手机启动引导的构建方法 |
CN102708001A (zh) * | 2012-04-26 | 2012-10-03 | 深圳市九思泰达技术有限公司 | Linux嵌入式设备及其用户模式与工程模式切换的方法 |
CN104484592A (zh) * | 2014-12-31 | 2015-04-01 | 广州视源电子科技股份有限公司 | 移动设备工厂模式的启动方法及*** |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246120A (zh) * | 2018-09-29 | 2019-01-18 | 中国船舶重工集团公司第七〇九研究所 | 一种嵌入式设备的远程调试方法及其*** |
CN109246120B (zh) * | 2018-09-29 | 2021-04-27 | 中国船舶重工集团公司第七一九研究所 | 一种嵌入式设备的远程调试方法及其*** |
CN111209059A (zh) * | 2020-01-14 | 2020-05-29 | 中国北方车辆研究所 | 一种嵌入式软件多版本控制***及方法 |
CN111209059B (zh) * | 2020-01-14 | 2023-03-03 | 中国北方车辆研究所 | 一种嵌入式软件多版本控制***及方法 |
CN113767893A (zh) * | 2021-09-22 | 2021-12-10 | 西安京维智网科技有限公司 | 一种智能驱鸟器及其远程监控与升级方法 |
CN113961495A (zh) * | 2021-10-21 | 2022-01-21 | 青岛海信宽带多媒体技术有限公司 | 一种Linux***串口功能禁用的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107544804A (zh) | 嵌入式***终端开发模式的启动方法及装置 | |
CN105573800B (zh) | 一种基于zynq的单板或多板***及在线更新方法 | |
CN103853586B (zh) | 一种在uefi层实现无线网卡驱动的方法 | |
CN104156234B (zh) | 启动多核处理器、bootloader大小端模式自适应的方法及装置 | |
US8924769B2 (en) | Software burning system and burning control method | |
CN102565671B (zh) | 一种集成电路测试仪在线编程的动态配置方法 | |
CN109783340B (zh) | SoC的测试代码烧写方法、IP测试方法及装置 | |
CN110209419A (zh) | 一种基于can总线的嵌入式dsp设备升级方法及装置 | |
CN103678067A (zh) | 一种智能卡掉电测试方法、测试设备和被测设备 | |
CN112000351B (zh) | Bmc固件的更新方法、更新装置、更新设备及存储介质 | |
CN101267623A (zh) | 一种手机启动引导的构建方法 | |
CN109782153A (zh) | 一种芯片测试的方法、装置、芯片及计算机存储介质 | |
CN109800032A (zh) | Bootrom多核加载方法及装置 | |
CN109408122A (zh) | 一种设备启动方法、电子设备和计算机存储介质 | |
CN110119623A (zh) | 一种利用tpcm实现固件主动度量的可信主板实现方法 | |
CN115184764A (zh) | 一种芯片测试方法、装置、电子设备及存储介质 | |
CN109783378A (zh) | GPU在Ubnutu***的兼容性测试方法、装置、终端及存储介质 | |
CN116009921A (zh) | 一种嵌入式操作***升级方法、装置及其介质 | |
CN101950265B (zh) | Cpu板卡程序下载及硬件在线检测的方法及插件 | |
CN104035757A (zh) | 基于MIPS处理器的u-boot移植的实现方法 | |
CN109460359A (zh) | 一种用于嵌入式设备的软件版本测试方法及*** | |
CN114201360B (zh) | 一种aer功能管理方法、装置、服务器和存储介质 | |
CN100592257C (zh) | 可通过不同接口加载启动程序以启动主板的***及其方法 | |
CN102880479B (zh) | 一种远程修改bios属性参数的方法及装置 | |
CN111176757B (zh) | 基于JTAG的SoC启动方法和装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180105 |