CN116302141B - 串口切换方法、芯片及串口切换系统 - Google Patents
串口切换方法、芯片及串口切换系统 Download PDFInfo
- Publication number
- CN116302141B CN116302141B CN202310536665.3A CN202310536665A CN116302141B CN 116302141 B CN116302141 B CN 116302141B CN 202310536665 A CN202310536665 A CN 202310536665A CN 116302141 B CN116302141 B CN 116302141B
- Authority
- CN
- China
- Prior art keywords
- serial port
- operating system
- port switching
- target
- chip
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 151
- 238000004458 analytical method Methods 0.000 claims description 47
- 238000001514 detection method Methods 0.000 claims description 42
- 230000006870 function Effects 0.000 claims description 41
- 230000006854 communication Effects 0.000 claims description 34
- 238000004891 communication Methods 0.000 claims description 32
- 238000013507 mapping Methods 0.000 claims description 31
- 230000002618 waking effect Effects 0.000 claims description 23
- 230000004044 response Effects 0.000 abstract description 12
- 238000005516 engineering process Methods 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 23
- 230000002093 peripheral effect Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 238000012795 verification Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 230000001976 improved effect Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000007958 sleep Effects 0.000 description 4
- 230000004622 sleep time Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008093 supporting effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/4406—Loading of operating system
-
- 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/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/387—Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial port, e.g. RS232C
-
- 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
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Hardware Redundancy (AREA)
Abstract
本申请公开了一种串口切换方法、芯片及串口切换系统,其中,该方法包括:通过第一操作系统检测是否接收到串口切换指令,其中,串口切换指令中携带有待切换至的目标串口的信息;在接收到串口切换指令的情况下,则通过第一操作系统将串口切换指令发送至第二操作系统,其中,第二操作系统的业务响应速度大于第一操作系统的业务响应速度;通过第二操作系统依据串口切换指令执行串口切换,本申请解决了相关技术中芯片需要借助CPLD或FPGA等硬件设备实现串口切换,导致串口切换成本较高的技术问题。
Description
技术领域
本申请涉及串口切换技术领域,具体而言,涉及一种串口切换方法、芯片及串口切换系统。
背景技术
目前各种产品上的设备日益增多,有许多智能设备都包含了串口输出,其中,有系统串口、BMC串口、智能网卡串口以及其它智能设备的串口,为了方便开发人员和运维人员定位问题,一般的做法是将这些串口的TX和RX接在CPLD(Complex Programmable LogicDevice,复杂可编程逻辑器件)或FPGA(现场可编程逻辑门阵列)上,然后通过CPLD或FPGA中的内部硬件逻辑进行切换,达到方便使用的目的。使用CPLD或FPGA作为串口切换的媒介的这种方式一方面需要增加CPLD或FPGA硬件成本,另一方面由于是通过硬件实现对串口的切换,导致扩展性比较差。
针对上述相关技术中芯片需要借助CPLD或FPGA等硬件设备实现串口切换,导致串口切换成本较高的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种串口切换方法、芯片及串口切换系统,以至少解决相关技术中芯片需要借助CPLD或FPGA等硬件设备实现串口切换,导致串口切换成本较高的技术问题。
根据本申请实施例的一个方面,提供了一种串口切换方法,所述串口切换方法应用于芯片,所述芯片至少包括处理器,所述处理器中运行有第一操作系统、第二操作系统,包括:在检测到所述第二操作系统接收到串口切换指令的情况下,通过所述第二操作系统将所述串口切换指令发送至所述第一操作系统;通过所述第一操作系统依据所述串口切换指令执行串口切换。
在一可选的实施例中,所述串口切换指令中至少包括:待切换至的目标串口的串口号,在通过所述第一操作系统依据所述串口切换指令执行串口切换之前,所述方法还包括:通过所述第一操作系统从目标存储器中获取所述串口切换指令的解析规则;依据所述解析规则对所述串口切换指令中的目标串口的串口号进行解析,确定所述串口号对应的目标设备,其中,所述目标串口为所述目标设备的串口,所述目标串口连接于所述芯片中。
在一可选的实施例中,通过所述第一操作系统依据所述串口切换指令执行串口切换包括:通过所述第一操作系统确定所述目标设备的串口地址;依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口。
在一可选的实施例中,所述芯片包括:串行数据总线,在通过所述第一操作系统确定所述目标设备的串口地址之前,所述方法还包括:确定与所述串行数据总线的串口连接的多个设备;通过所述串行数据总线将每个设备的串口映射至所述芯片的内存中,以得到每个设备的串口地址。
在一可选的实施例中,在依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口之后,所述方法还包括:若所述目标输出接口与目标智能网卡连接,通过所述智能网卡检测是否接收到对所述目标串口的访问请求;若接收到对所述目标串口的访问请求,则通过所述智能网卡将所述访问请求转发至所述目标串口。
在一可选的实施例中,在依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口之后,所述方法还包括:通过所述第一操作系统获取所述串口切换指令的执行结果,其中,所述执行结果为以下之一:切换成功和切换失败;通过所述第一操作系统将所述执行结果发送至所述第二操作系统。
在一可选的实施例中,在通过所述第二操作系统下发所述串口切换指令至所述第一操作系统之后,所述方法还包括:通过所述第二操作系统接收所述串口切换指令的执行结果,其中,所述执行结果由所述第一操作系统发送至所述第二操作系统,所述执行结果为以下之一:串口切换成功和串口切换失败。
在一可选的实施例中,在通过所述第二操作系统接收所述串口切换指令的执行结果之后,所述方法还包括:若所述执行结果为执行失败,则重复执行通过所述第二操作系统下发串口切换指令至所述第一操作系统的步骤,直至所述执行结果为成功,或者,执行串口切换的次数超过预设次数。
在一可选的实施例中,若执行串口切换的次数超过预设次数,所述方法还包括:通过所述第二操作系统触发提示信号,其中,所述提示信号用于提示串口切换失败。
在一可选的实施例中,所述处理器还包括第一处理器核心和第二处理器核心,所述第一处理器核心用于运行所述第一操作系统,所述第二处理器核心用于运行所述第二操作系统,在通过所述第一操作系统检测是否存在串口切换指令之前,所述方法还包括:在所述芯片上电的情况下,唤醒所述第二处理器核心;通过所述第二处理器核心唤醒所述第一处理器核心,以通过所述第一处理器核心启动所述第一操作系统;在所述第一操作系统启动的情况下,通过所述第二处理器核心启动所述第二操作系统。
在一可选的实施例中,通过所述第二处理器核心唤醒所述第一处理器核心包括:通过所述第二处理器核心对二级程序加载器进行校验,得到校验结果;在所述校验结果为校验通过的情况下,通过所述第二处理器核心唤醒所述第一处理器核心。
在一可选的实施例中,通过所述第二处理器核心启动所述第二操作系统包括:通过所述第二处理器核心启动引导加载功能;通过所述引导加载功能加载所述第二操作系统的内核,以启动所述第二操作系统。
在一可选的实施例中,所述处理器还包括第一处理器核心和第二处理器核心,所述第一处理器核心用于运行所述第一操作系统,所述第二处理器核心用于运行所述第二操作系统,在检测到所述第一操作系统检测接收到串口切换指令之前,所述方法还包括:在所述第二操作系统启动完成后,所述第二处理器核心触发第一中断,并发送第一信号至所述第一操作系统;通过所述第一操作系统依据所述第一信号检测所述芯片中的多个串口的运行状态,得到检测结果;通过所述第一处理器核心触发第二中断,并将所述检测结果通过第二信号发送至所述第二操作系统;通过所述第二操作系统接收所述检测结果,以确定所述芯片中的运行正常的串口数量。
在一可选的实施例中,在通过所述第二处理器核心触发第一中断,并发送第一信号至所述第一操作系统之后,所述方法还包括:检测所述第一操作系统是否接收到所述第一信号;若所述第一操作系统接收到第一信号,则通过所述第一操作系统检测所述芯片中多个串口的运行状态,得到检测结果。
在一可选的实施例中,所述方法还包括:在所述第二操作系统运行存在异常的情况下,通过服务终端将所述串口切换指令下发至所述第一操作系统;通过所述第一操作系统依据所述串口切换指令执行串口切换。
根据本申请实施例的另一方面,还提供了一种芯片,包括:处理器,所述处理器中运行有第一操作系统、第二操作系统,其中,在检测到所述第二操作系统接收到串口切换指令的情况下,通过所述第二操作系统将所述串口切换指令发送至所述第一操作系统;通过所述第一操作系统依据所述串口切换指令执行串口切换。
在一可选的实施例中,所述芯片还包括:串行数据总线,其中,所述串行数据总线中包括多个串口,每个串口与对应的设备的串口连接,通过所述串行数据总线为所述设备的串口设置地址,在所述第一操作系统执行串口切换时,通过所述串行数据总线获取目标设备的串口地址,以将所述目标设备的串口映射到所述芯片的目标输出接口。
在一可选的实施例中,所述芯片还包括:第一存储器,其中,所述第一存储器用于存储所述串口切换指令的解析规则,其中,在所述第一操作系统执行串口切换时,所述第一操作系统从所述第一存储器中获取所述串口切换指令的解析规则,依据所述解析规则对所述串口切换指令中的目标串口的串口号进行解析,得到所述串口号对应的目标设备,以将所述目标设备的串口映射到所述芯片的目标输出接口。
根据本申请实施例的另一方面,还提供了一种串口切换系统,包括:芯片,其中,所述芯片中的同一个处理器中运行有第一操作系统、第二操作系统;第二存储器,其中,所述第二存储器用于存储所述串口切换指令的解析规则;其中,在检测到所述第二操作系统接收到串口切换指令的情况下,通过所述第二操作系统发送所述串口切换指令至所述第一操作系统,通过所述第一操作系统依据所述串口切换指令从所述第二存储器中获取所述串口切换指令的解析规则,依据所述解析规则对所述串口切换指令中的目标串口的串口号进行解析,得到所述串口号对应的目标设备,通过所述串行数据总线获取所述目标设备的串口地址,以将所述目标设备的串口映射到所述芯片的目标输出接口。
根据本申请实施例的另一方面,还提供了一种串口切换装置,包括:第一检测单元,在检测到第二操作系统接收到串口切换指令的情况下,通过所述第二操作系统将所述串口切换指令发送至所述第一操作系统;第一执行单元,用于通过所述第一操作系统依据所述串口切换指令执行串口切换。
在一可选的实施例中,所述串口切换指令中至少包括:待切换至的目标串口的串口号,所述装置还包括:第一获取单元,用于在通过所述第一操作系统依据所述串口切换指令执行串口切换之前,通过所述第一操作系统从目标存储器中获取所述串口切换指令的解析规则;解析单元,用于依据所述解析规则对所述串口切换指令中的目标串口的串口号进行解析,确定所述串口号对应的目标设备,其中,所述目标串口为所述目标设备的串口,所述目标串口连接于所述芯片中。
在一可选的实施例中,所述执行单元包括:第一确定模块,用于通过所述第一操作系统确定所述目标设备的串口地址;映射模块,用于依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口。
在一可选的实施例中,所述芯片包括:串行数据总线,所述装置还包括:确定单元,用于在通过所述第一操作系统确定所述目标设备的串口地址之前,确定与所述串行数据总线的串口连接的多个设备;映射单元,用于通过所述串行数据总线将每个设备的串口映射至所述芯片的内存中,以得到每个设备的串口地址。
在一可选的实施例中,所述装置还包括:第二检测单元,用于在依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口之后,若所述目标输出接口与目标智能网卡连接,通过所述智能网卡检测是否接收到对所述目标串口的访问请求;转发单元,用于若接收到对所述目标串口的访问请求,则通过所述智能网卡将所述访问请求转发至所述目标串口。
在一可选的实施例中,所述装置还包括:第二获取单元,用于在依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口之后,通过所述第一操作系统获取所述串口切换指令的执行结果,其中,所述执行结果为以下之一:切换成功和切换失败;发送单元,用于通过所述第一操作系统将所述执行结果发送至所述第二操作系统。
在一可选的实施例中,所述装置还包括:第一接收单元,用于在通过所述第二操作系统下发所述串口切换指令至所述第一操作系统之后,通过所述第二操作系统接收所述串口切换指令的执行结果,其中,所述执行结果由所述第一操作系统发送至所述第二操作系统,所述执行结果为以下之一:串口切换成功和串口切换失败。
在一可选的实施例中,所述装置还包括:第二执行单元,用于在通过所述第二操作系统接收所述串口切换指令的执行结果之后,若所述执行结果为执行失败,则重复执行通过所述第二操作系统下发串口切换指令至所述第一操作系统的步骤,直至所述执行结果为成功,或者,执行串口切换的次数超过预设次数。
在一可选的实施例中,若执行串口切换的次数超过预设次数,所述装置还包括:第一触发单元,用于通过所述第二操作系统触发提示信号,其中,所述提示信号用于提示串口切换失败。
在一可选的实施例中,所述处理器还包括第一处理器核心和第二处理器核心,所述第一处理器核心用于运行所述第一操作系统,所述第二处理器核心用于运行所述第二操作系统,所述装置还包括:第一唤醒单元,用于在通过所述第一操作系统检测是否存在串口切换指令之前,在所述芯片上电的情况下,唤醒所述第二处理器核心;第二唤醒单元,用于通过所述第二处理器核心唤醒所述第一处理器核心,以通过所述第一处理器核心启动所述第一操作系统;启动单元,用于在所述第一操作系统启动的情况下,通过所述第二处理器核心启动所述第二操作系统。
在一可选的实施例中,所述第二唤醒单元包括:校验模块,用于通过所述第二处理器核心对二级程序加载器进行校验,得到校验结果;唤醒模块,用于在所述校验结果为校验通过的情况下,通过所述第二处理器核心唤醒所述第一处理器核心。
在一可选的实施例中,所述启动单元包括:启动模块,用于通过所述第二处理器核心启动引导加载功能;加载模块,用于通过所述引导加载功能加载所述第二操作系统的内核,以启动所述第二操作系统。
在一可选的实施例中,所述处理器还包括第一处理器核心和第二处理器核心,所述第一处理器核心用于运行所述第一操作系统,所述第二处理器核心用于运行所述第二操作系统,所述装置还包括:第二触发单元,用于在检测到所述第一操作系统检测接收到串口切换指令之前,在所述第二操作系统启动完成后,所述第二处理器核心触发第一中断,并发送第一信号至所述第一操作系统;第三检测单元,用于通过所述第一操作系统依据所述第一信号检测所述芯片中的多个串口的运行状态,得到检测结果;第三触发单元,用于通过所述第一处理器核心触发第二中断,并将所述检测结果通过第二信号发送至所述第二操作系统;接收单元,用于通过所述第二操作系统接收所述检测结果,以确定所述芯片中的运行正常的串口数量。
在一可选的实施例中,所述装置还包括:第四检测单元,用于在通过所述第二处理器核心触发第一中断,并发送第一信号至所述第一操作系统之后,检测所述第一操作系统是否接收到所述第一信号;第五检测单元,用于若所述第一操作系统接收到第一信号,则通过所述第一操作系统检测所述芯片中多个串口的运行状态,得到检测结果。
在一可选的实施例中,所述装置还包括:下发单元,用于在所述第二操作系统运行存在异常的情况下,通过服务终端将所述串口切换指令下发至所述第一操作系统;第三执行单元,用于通过所述第一操作系统依据所述串口切换指令执行串口切换。
为了实现上述目的,根据本申请的另一方面,还提供了一种计算机可读存储介质,所述存储介质存储程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述任意一项所述的串口切换方法。
为了实现上述目的,根据本申请的一个方面,提供了一种电子设备,电子设备包括一个或多个处理器和存储器,存储器用于存储一个或多个处理器实现上述任意一项所述的串口切换方法。
在本申请实施例中,采用在检测到第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令发送至第一操作系统;通过第一操作系统依据串口切换指令执行串口切换,解决了相关技术中芯片需要借助CPLD或FPGA等硬件设备实现串口切换,导致串口切换成本较高的技术问题。在本方案中,通过运行于同一个处理器中的第一操作系统和第二操作系统来代替CPLD或FPGA实现串口切换软件功能,在第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令转发至第一操作系统中,第一操作系统根据串口切换指令实现串口的切换,避免了采用硬件的方式来实现串口切换,减少了硬件成本,并且第一操作系统接收到串口切换指令之后,可以迅速在很短的时间内完成串口切换,因此,通过本方案提出的技术方法既可以有效降低串口切换成本,还可以有效提高串口切换的效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的计算机终端的示意图;
图2是现有技术中利用CPLD实现串口切换的示意图;
图3是根据本申请实施例提供的串口切换方法的流程图;
图4是根据本申请实施例提供的芯片的示意图;
图5是根据本申请实施例提供的串口切换的示意图;
图6是根据本申请实施例提供的可选的串口切换方法的流程图;
图7是根据本申请实施例提供的双系统启动的流程图;
图8是根据本申请实施例提供的芯片的示意图;
图9是根据本申请实施例提供的可选的BMC芯片的示意图一;
图10是根据本申请实施例提供的可选的BMC芯片的示意图二;
图11是根据本申请实施例提供的串口切换系统的示意图;
图12是根据本申请实施例提供的串口切换装置的示意图;
图13是根据本申请实施例提供的计算机终端的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据,电子病历等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
根据本申请实施例,还提供了一种串口切换方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现串口切换方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端(或移动设备)10可以包括处理器集合102(处理器集合102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置、以及处理器集合102可以包括处理器集合,图1中采用102a,102b,……,102n来示出)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB,Universal Serial Bus)端口(可以作为BUS总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的串口切换方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的串口切换方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
在相关技术中,为了方便开发人员和运维人员定位问题,一般的做法是将这些串口的TX和RX接在CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)或FPGA(现场可编程逻辑门阵列)上,然后通过CPLD或FPGA中的内部硬件逻辑进行切换,达到方便使用的目的。例如,CPLD串口切换硬件原理图如图2所示,当前存在三路串口,分别是BMC UART、SYS UART和NIC UART。三路UART都接到CPLD,采用单刀单掷开关结构实现硬件三选一,最终输出其中一路UART给SOL,使用CPLD或FPGA作为串口切换的媒介的这种方式一方面需要增加CPLD或FPGA硬件成本,另一方面由于是通过硬件实现对串口的切换,导致扩展性比较差。
为了解决上述问题,本申请提供了如图3所示的串口切换方法。该串口切换方法应用于芯片,芯片中的同一个处理器中运行有第一操作系统、第二操作系统,图3是根据本申请实施例提供的串口切换方法的流程图。
本申请提供的串口切换方法应用于一种芯片中,这个芯片可以是BMC(BaseboardManager Controller,基板管理控制器)芯片。BMC,执行伺服器远端管理控制器,BMC可以在机器未开机的状态下,对机器进行固件升级、查看机器设备等一些操作。如图4所示,在本申请中提出的执行串口切换方法的芯片至少运行第一操作系统和第二操作系统,第一操作系统用于执行和实现串口切换的工作,第二操作系统用于实现芯片的一些基础功能,例如,如果这个芯片是BMC芯片,那么对应的就通过第一操作系统行最基本的BMC业务程序。
需要说明的是,为了提高软件切换串口的效率,第一操作系统的业务响应速度大于第二操作系统的业务响应速度,例如,第一操作系统的空闲计算资源大于预设阈值,这个预设阈值用于表征第一操作系统响应串口切换指令时所需的最大计算资源值。通过第一操作系统可以快速响应串口切换指令,并且在极短的时间内完成切换工作,并且在执行串口切换时,还可以通过第二操作系统正常执行芯片原有的基础功能。
可选地,如何利用第一操作系统和第二操作系统实现串口切换的步骤如下:
步骤S301,在检测到第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令发送至第一操作系统。
可选地,在用户发起串口切换的时,可以通过第二操作系统检测是否接收到用户发起的串口切换指令。需要说明的是,串口切换指令中需要包括待切换至的目标串口的信息,例如,串口切换指令包括待切换至的目标串口的串口号。
在一可选的实例中,串口切换指令的格式可以是<switch_command_app –nnumber –t sleep_time>,switch_command_app表征切换指令程序,-n代表切换的目标串口号,number的取值可以为1、2、3,-t代表从指令发起后休眠多久后执行切换动作,sleep_time单位为秒。
需要说明的是,在实现串口切换时可以为当前可以进行串口切换的串口进行编号,以便后续在进行串口切换时,通过串口号实现对目标串口的切换。
在一可选的实施例中,当前可以进行串口切换的串口包括:BMC Linux系统串口、服务器BIOS(Basic Input Output System,基本输入输出系统)串口以及SMART NIC(network interface controller,智能网络接口控制器)串口,对应的可以用1代表BMCLinux系统串口、2代表服务器BIOS串口,以及3代表SMART NIC串口。
步骤S302,通过第一操作系统依据串口切换指令执行串口切换。
可选地,在检测到第二操作系统接收到串口切换指令的情况下,第二操作系统会立刻将串口切换指令发送至第一操作系统中。需要说明的是,可以将第一操作系统与第二操作系统分别运行两个处理器核心中,然后第一操作系统与第二操作系统之间采用核间通信,这样可以有助于提高信号传递的可靠性。
在一可选的实施例中,第一操作系统与第二操作系统之间的核间通信可以通过下述步骤实现:步骤S1,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,其中,第一操作系统和第二操作系统在处理器上运行。
可选地,第一操心系统和第二操作系统可以是实时操作系统,也可以是非实时操作系统,第一操心系统和第二操作系统可以是单核操作系统,也可以是多核操作系统,目标数据为待发送的数据,目标虚拟通道是内存中的一段空闲存储空间,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道是指第一操作系统的CPU核将待发送数据写入目标虚拟通道。
步骤S2,向第二操作系统发送中断通知消息。
可选地,第一操作系统的CPU核向第二操作系统的CPU核发送中断通知消息,中断通知消息中可以携带目标虚拟通道的地址,用于通知第二操作系统从目标虚拟通道中获取目标数据,中断通知消息可以是软件触发的,也可以是硬件触发的。
步骤S3,第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据。
可选地,第二操作系统的CPU核响应中断通知消息,从中断通知消息中解析目标虚拟通道的地址,再根据解析的地址定位至内存中的目标虚拟通道,从目标虚拟通道获取目标数据,实现第一操作系统和第二操作的系统之间的数据交互。
通过上述步骤,在处理器上运行的多个操作系统需要互相传输数据时,发送数据的第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,并向第二操作系统发送中断通知消息,接收数据的第二操作系统响应中断通知消息从目标虚拟通道获取目标数据,解决了核间通信过程浪费资源,对操作系统的依赖性强的问题,达到减少核间通信过程对资源的浪费,对操作系统的依赖的效果。
在一可选的实施例中,第一操作系统与第二操作系统之间的核间通信可以通过下述以下内容实现:具体是非实时操作系统(即第二操作系统)向实时操作系统(第一操作系统)发送数据的过程。
首先,非实时操作系统的应用层把需要发送的数据按照对应的格式填充好,然后在系统的/dev路径生成一个设备文件ipidev,应用层需要从驱动层读写数据的时候,可以先使用系统自带的open函数打开设备/dev/ipidev,使用写函数把需要发送的数据从非实时操作系统的应用层发送到驱动层,非实时操作系统的驱动层把数据放在共享内存中,然后触发软中断通知另一个核的实时操作系统去读取数据。
可选地,共享内存区域划分为多个内存通道,每个内存通道对应一个通道结构体(IpiHeader),结构体数据用于记录内存通道的相关信息。非实时操作系统的驱动层首先根据要发送数据的大小使用接口GetEmptyChannel在所有的通道中的寻找满足以下两个条件的内存通道:一是通道结构体IpiHeader中的空闲标志Flag不等于0xA5A5A5A5;二是通道结构体IpiHeader中的通道的大小ChannelSize大于要发送数据的大小,寻找满足要求的空闲通道后,把该通道设置为非空,即设置通道结构体IpiHeader中的空闲标志Flag为0xA5A5A5A5,然后把需要发送的数据拷贝到空闲通道中,然后触发软中断通知另一个核的实时操作系统。
在一个示例性实施例中,实时操作系统收到中断,触发对应的中断处理函数,中断处理函数会发送任务通知唤醒对应的任务,该任务从共享内存中读取数据并解析。可选地,该任务首先使用接口GetNoEmptyChannel在所有的通道中寻找满足以下三个条件的通道:一是通道结构体IpiHeader中的空闲标志Flag等于0xA5A5A5A5;二是通道结构体中的TargetId等于当前CPU的ID;三是通道结构体中的TargetId不等于SrcId。寻找到满足要求的非空闲通道后,解析非空闲通道的数据,根据通道结构体IpiHeader中的NetFn和Cmd完成具体的功能,最后设置该通道为空,即设置通道结构体中的空闲标志Flag为0。
在一可选的实施例中,第一操作系统与第二操作系统之间的核间通信可以通过下述以下内容实现:具体是实时操作系统向非实时操作系统发送数据的过程。
首先,实时操作系统侧如果有需要发送的数据,从共享分内存中寻找空闲的通道,如果找到空闲通道,设置此通道为空,把需要发送的数据拷贝到寻找到的空闲通道,然后产生软中断,通知非实时操作系统侧,非实时操作系统侧调用对应的中断处理函数,中断处理函数会扫描所有的通道的结构体IpiHeader,根据结构体中的NetFn和Cmd字段判断发送信号给哪个应用层程序,同时把对应的通道ID发送给应用程序,需要说明的是,系统初始化的时候核间通信的应用层程序需要注册NetFn和Cmd以及应用层程序对应的PID到驱动程序,应用层收到信号后调用的对应的处理函数,打开设备/dev/ipidev读取数据,驱动程序根据通道ID在共享内存中找到对应的数据,返回给应用层数据和数据长度,设置此通道为空,即设置通道结构体中的空闲标志Flag为0。
通过上述的多核多操作系统的核间通信的方法,物理层交换数据采用共享内存的方式,同时增加了虚拟的通道对共享内存进行管理,当发送方的CPU核把需要发送的数据按照约定的协议格式放在共享内存中后,会触发一个软中断通知接收方的CPU核去读取数据,然后按照约定的协议格式解析数据,接收方的CPU核读取的数据后支持选择给发送方的CPU核回复应答或者不回复。核间通信采用共享内存、软中断的方式实现多核多操作系统的核间通信。使用虚拟通道管理共享内存的方法,以及虚拟通道结构体的格式。不使用额外的组件,使用开发简单,节省系统资源,同时只使用操作系统任务,信号量等通用功能,大大减弱了对操作系统的依懒性。
需要说明的是,第一操作系统对指令的响应速度远远快于第二操作系统对指令的响应速度,这样通过第一操作系统可以快速响应串口切换指令,并且在极短的时间内完成切换工作。
在一可选的实施例中,第一操作系统可以是RTOS(Real Time Operating System,实时操作系统)系统,RTOS系统实时性比较高,在收到切换指令会在很短的时间内实现串口切换。第二操作系统可以是linux(全称GNU/Linux,是一套类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统)系统。
综上,通过运行于同一个处理器中的第一操作系统和第二操作系统来代替CPLD或FPGA实现串口切换软件功能,在第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令转发至第一操作系统中,第一操作系统根据串口切换指令实现串口的切换,避免了现有技术中需要通过CPLD或者FPGA将各个串口连接起来,然后利用CPLD或者FPGA中的开关结构的方式来实现串口切换,减少了硬件成本,并且在第一操作系统接收到串口切换指令之后,可以迅速在很短的时间内完成串口切换,因此,通过本方案提出的技术方法既可以有效降低串口切换成本,还可以有效提高串口切换的效率。
为了第二操作系统能够实现串口切换,在本申请实施例一提供的串口切换方法中,串口切换指令中至少包括:目标串口的串口号,在通过第一操作系统依据串口切换指令执行串口切换之前,包括以下步骤:通过第一操作系统从目标存储器中获取串口切换指令的解析规则;依据解析规则对串口切换指令中的目标串口的串口号进行解析,确定串口号对应的目标设备,其中,目标串口为目标设备的串口,目标串口连接于芯片中。
通过第一操作系统依据串口切换指令执行串口切换包括:通过第一操作系统确定目标设备的串口地址;依据串口地址将目标串口映射至芯片的目标输出接口。
可选地,为了使得第一操作系统能够实现串口切换,第一操作系统需要对串口切换指令进行解析,进而能够得到目标串口对应的目标设备。
在一可选的实施例中,可根据芯片或者服务器主板的不同来定制对串口切换指令的解析规则,并将解析规则保存在目标存储器中,目标存储器可以是带电可擦可编程只读存储器(eeprom)、非易失性内存(flash)等存储介质。需要说明的是,目标存储器可以部署在芯片中,还可以不部署在芯片中。通过目标存储器存储解析规则,提高了数据的安全性,以及可根据芯片或服务器主板的不同来定制解析规则,使得可编程性和可扩展性比较好。
在第一操作系统接收到串口切换指令之后,从目标存储器中读取串口切换指令的解析规则,然后利用解析规则对串口切换指令中的目标串口的串口号进行解析,得到这个串口号对应的目标设备。
在得到串口号对应的目标设备之后,第一操作系统就可以通过目标设备的串口地址将目标串口映射至芯片的目标输出接口。将目标设备的串口地址映射到目标输出接口之后,就可以通过目标输出接口实现对目标设备的访问。
需要说明的是,串口切换指令和解析规则可以根据使用的芯片的型号以及第一操作系统、第二操作系统的类型进行设置。
在本申请实施例一提供的串口切换方法中,芯片包括:串行数据总线,在通过第一操作系统确定目标设备的串口地址之前,该方法还包括:确定与串行数据总线的串口连接的多个设备;通过串行数据总线将每个设备的串口映射至芯片的内存中,以得到每个设备的串口地址。
可选地,在上述的芯片中还包括串行数据总线,当前多个设备的串口的TX和RX与串行数据总线相连,如图5所示,当前的串口包括BMC Linux系统串口(UART1)、服务器BIOS串口(UART2)以及SMART NIC串口(UART3)。UART,Universal Asynchronous Receiver/Transmitter,通用异步收发传输器。串口数据总线会将UART1、UART2和UART3不同串口的TX和RX数据映射到BMC内存的不同地址空间中,也就是上述的通过串行数据总线将每个设备的串口映射至芯片的内存中。例如,图5中的UART1 TX和RX buffer 为串口UART1的串口地址,UART2TX和RX buffer 为串口UART2的串口地址,UART3 TX和RX buffer 为串口UART3的串口地址。
当用户下发串口切换指令时,第一操作系统(RTOS)选择UART映射的不同三段内存(三选一),将其中一段内存数据交互给客户,达到模拟CPLD硬件串口切换电路的目的。
需要说明的是,如果不能区分不同设备的串口,那么开发人员在维修时不能准确定位哪一个设备的串口是存在问题的,因此,需要通过串口切换实现对异常问题的定位。
在本申请实施例一提供的串口切换方法中,在依据串口地址将目标串口映射至芯片的目标输出接口之后,若目标输出接口与目标智能网卡连接,包括:通过智能网卡检测是否接收到对目标串口的访问请求;若接收到对目标串口的访问请求,则通过智能网卡将访问请求转发至目标串口。
可选地,在芯片的目标输出接口中还可以与目标智能网卡连接,然后通过智能网卡检测是否接收到用户对目标串口的访问请求,如果接收到对目标串口的访问请求,可以直接通过目标智能网卡实现对目标设备的串口访问,实现SOL(Serial over LAN,一种数据封包格式和协议的规范)功能。通过上述步骤,提高了对目标设备的串口访问效率。
在一可选的实施例中,在依据串口地址将目标串口映射至芯片的目标输出接口之后,在本申请实施例一提供的串口切换方法中,还包括以下步骤:通过第一操作系统获取串口切换指令的执行结果,其中,执行结果为以下之一:切换成功和切换失败;通过第一操作系统将执行结果发送至第二操作系统。
通过第二操作系统接收串口切换指令的执行结果,其中,执行结果由第一操作系统发送至第二操作系统,执行结果为以下之一:串口切换成功和串口切换失败。
可选地,在第一操作系统在切换完串口之后,会获取串口切换指令的执行结果,然后把串口切换指令的执行结果反馈到第二操作系统中,告知第二操作系统串口成功或者失败。
在一可选的实施例中,可以采用如图6所示的示意图完成串口切换,需要说明的是,第一操作系统为RTOS系统,第二操作系统为Linux系统,当前存在UART1、UART2、UART3三个串口。
步骤1:串口切换控制器程序(switch_control_app,运行在RTOS系统上)初始化UART1、UART2、UART3是否正常,即确定所有串口是否运行正常;
步骤2:用户切换指令程序(switch_command_app,运行在Linux系统上)发起串口切换指令,串口切换指令的命令格式为<switch_command_app –n number –t sleep_time>,-n代表切换的目标串口号,number取值为1(BMC UART)、2(SYS UART)、3(SMART NICUART),-t代表从指令发起后休眠多久后执行切换动作,sleep_time单位为秒;
步骤3:处理串口切换指令,RTOS系统通过核间通信接收到切换指令,通过读取eeprom进行指令解析,最终访问串口切换的目标设备;
步骤4:响应串口切换指令执行结果,成功或失败。
为了提高串口切换的成功率,在本申请实施例一提供的串口切换方法中,在通过第二操作系统接收串口切换指令的执行结果之后,还包括:若执行结果为执行失败,则重复执行通过第二操作系统下发串口切换指令至第一操作系统的步骤,直至执行结果为成功,或者,执行串口切换的次数超过预设次数。若执行串口切换的次数超过预设次数,通过第二操作系统触发提示信号,其中,提示信号用于提示串口切换失败。
可选地,如果串口切换指令的执行结果为执行失败,那么需要重复执行通过第二操作系统下发串口切换指令至第一操作系统的步骤,直至执行结果为成功,或者,执行串口切换的次数超过预设次数,预设次数可以设置为3次。如果执行串口切换的次数超过了预设次数,对应的第二操作系统触发提示信号,来提示串口切换失败,以便对这种情况及时处理。
在一可选的实施例中,在本申请实施例一提供的串口切换方法中,处理器还包括第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统,在通过第一操作系统检测是否存在串口切换指令之前,为了能够通过双系统实现对串口的切换,还包括以下步骤:在芯片上电的情况下,唤醒第二处理器核心;通过第二处理器核心唤醒第一处理器核心,以通过第一处理器核心启动第一操作系统;在第一操作系统启动的情况下,通过第二处理器核心启动第二操作系统。
通过第二处理器核心唤醒第一处理器核心包括:通过第二处理器核心对二级程序加载器进行校验,得到校验结果;在校验结果为校验通过的情况下,通过第二处理器核心唤醒第一处理器核心。
通过第二处理器核心启动第二操作系统包括:通过第二处理器核心启动引导加载功能;通过引导加载功能加载第二操作系统的内核,以启动第二操作系统。
可选地,在上述的芯片中包括:第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统,通过双核处理器运行第一操作系统和第二操作系统在一定程度上保证了操作系统的独立性。双核双系统的启动过程如图7所示,具体包括:步骤1,上电唤醒第二处理器核心(CPU1);步骤2,CPU1运行BootRom中的指定程序(即对二级程序加载器进行校验的校验程序),通过BootRom中的指定程序对二级程序加载器(SPL)进行校验,在校验通过的情况下,执行步骤3;步骤3:CPU1会首先会唤醒第一处理器核心(CPU0),让CPU0开始执行RTOS系统(即上述的第一操作系统),接着CPU1去特定地址执行uboot(Universal Boot Loader是一个遵循 GPL 协议的开源软件,可以看作是一个裸机综合例程)程序(即上述的引导加载功能),使linux内核(即上述的第二操作系统)运行起来,CPU1中的uboot阶段会加载linux内核,并启动BMC业务程序;步骤4,CPU0中的RTOS系统启动后会调起虚拟UART切换控制器程序,至此双系统启动完后。通过上述步骤可以快速启动双核双系统。
在一个可选的实施例中,提供了一种操作系统的启动控制过程,该过程包括如下步骤:
步骤A,通过处理器的第一处理器核心上运行的第一操作系统经由芯片的第一总线对目标设备的硬件控制器进行控制,以对目标设备的运行状态进行控制。
例如,目标设备为串行数据总线,现有技术中为了实现对串口的切换,需要借助CPLD的控制方式来实现,但是硬件控制成本高,并且拓展性比较差。
为了至少部分解决上述技术问题,可以采用多核多系统(例如,多核双系统)的启动控制方式,在处理器的不同处理器核心上运行嵌入式系统的不同操作系统,不同的操作系统的响应速度不同,对于第二操作系统未启动、重启或者其他无法对特定设备的运行状态进行控制的情况,可以由响应速度高于第二操作系统的第一操作系统对特定设备的运行状态进行控制,可以降低特定设备的运行状态不可控的情况,同时,由于不需要增加额外的成本,此外还具有很好的可扩展性。
在本实施方式中,在第二操作系统未启动、重启或者其他无法对目标设备的运行状态进行控制的情况下,可以通过第一操作系统经由第一总线对目标设备的硬件控制器进行控制,以对目标设备的运行状态进行控制。
例如,基于BMC双核实现双系统,RTOS系统和Linux系统,基于多核双系统实现串口的切换,利用RTOS系统实时性高的特性,在Linux系统启动的过程中,可以由RTOS系统代替CPLD等硬件实现串口的切换。
步骤B,引导在处理器的第二处理器核心上启动第二操作系统。
在系统上电时或者第二操作系统重启时,可以引导在处理器的第二处理器核心上启动第二操作系统,以使得第二操作系统在第二处理器核心上运行。这里,在第二处理器核心上启动第二操作系统是指将第二处理器核心调度给第二操作系统,操作系统的系统文件或者镜像文件可以存储在处理器所在芯片上或者芯片以外的存储器内,例如,外部RAM(Random Access Memory,随机存取存储器)内。
步骤C,在第二操作系统启动之后,通过第二操作系统经由第一总线接管硬件控制器,以接管目标设备的控制权。
在第二操作系统启动完成之后,可以一直由第一操作系统对目标设备的运行状态进行控制,考虑到在多核处理器上运行多个操作系统需要在多个操作系统之间进行数据交互,以及方便由一个操作系统进行设备的总体控制,也可以由第二操作系统接管目标设备的控制权。例如,可以通过第二操作系统经由第一总线接管硬件控制器。第二操作系统接管目标设备的控制权的方式可以是:在第二操作系统启动之后,由第二操作系统向第一操作系统发送设备接管请求,例如,通过第二总线发送中断请求,以请求接管目标设备的硬件控制器。第一操作系统可以接收第二操作系统发送的设备接管请求,将目标设备的控制权转交给第二操作系统,还可以执行与目标设备的控制权交接相关的操作,例如,停止运行用于对目标设备的运行状态进行控制的业务(进程)。
在一个示例性实施例中,通过处理器的第一处理器核心上运行的第一操作系统经由第一总线对目标设备的硬件控制器进行控制之前,还包括:在处理器所在的芯片上电之后,通过处理器唤醒第一处理器核心;通过第一处理器核心运行第一操作系统的引导加载程序,以引导第一操作系统在第一处理器核心上启动。
整个系统按照工作时段可以划分为两个阶段,初始启动阶段和实时运行阶段,本实施例中的启动控制方法可以是在初始启动阶段或者实时运行阶段执行的。对于初始启动阶段,初始启动阶段起于系统上电,即,处理器所在的芯片上电,系统上电后会唤醒一个核心去执行操作系统的引导动作,其余核心暂时处于休眠状态,被唤醒的核心可以是第一处理器核心。
可选地,上电后系统将首先执行一个预置的核心调度策略(启动引导策略),即,由处理器的一个处理器核心执行核心调度策略,核心调度策略可以存储在SOC片上的RAM或Norflash(非易失闪存)中,该调度策略可以根据不同的设计需求进行灵活配置,其主要功能包括:指定不同操作系统需要运行的初始处理资源(处理器核心),确定异构操作系统的引导过程,芯片上电可以是指SOC芯片层面的上电。
在第一处理器核心唤醒之后,可以通过引导加载程序在第一处理器核心上引导运行第一操作系统:可以由第一处理器核心通过引导加载程序引导第一操作系统在第一处理器核心上启动。引导加载(BootLoader)程序可以位于电脑或其他计算机应用上,其是指用于引导操作系统加载的程序,例如,BootRom里的固有程序,固有程序指的是引导操作系统启动的代码,属于BootLoader程序,BootRom是CPU片上的嵌入处理器芯片内的一小块掩模ROM(Read-Only Memory,只读存储器)或者写保护闪存。
在初始启动阶段,通过引导加载程序引导操作系统对应的处理器核心上启动,可以提高操作系统启动的成功率,同时为实时运行阶段做准备。
例如,可以由RTOS系统代替CPLD等硬件实现串口的切换。在系统刚上电时,可以唤醒第一处理器核心(例如,CPU0,第一处理器核心可以是被硬件唤醒的),第一处理器核心运行引导加载程序(例如,BootRom中的指定程序),加载第一操作系统启动。
在一个示例性实施例中,引导在处理器的第二处理器核心上启动第二操作系统,包括:通过第一处理器核心执行二级程序加载器,以由二级程序加载器唤醒第二处理器核心;通过第二处理器核心运行第二操作系统的通用引导加载器,以引导第二操作系统在第一处理器核心上启动。
在本实施方式中,在进行操作系统启动时,可以将二级程序加载器(SecondProgram Loader,简称为SPL)加载到内部内存中,例如,SOC内部的静态随机存取存储器(Static Random-Access Memory,SRAM),而SPL可以负责将通用引导加载程序(UniversalBoot Loader,简称为U-Boot)加载到随机存取存储器(Random-Access Memory,简称为RAM)中,二级程序加载器可以引导加载第二操作系统,还可以引导加载第一操作系统。
对于第二操作系统,可以通过第一处理器核心执行二级程序加载器,以由二级程序加载器唤醒第二处理器核心;通过第二处理器核心,可以运行第二操作系统的通用引导加载器(通用引导加载程序),从而引导第二操作系统在第一处理器核心上启动。这里,通过二级程序加载器引导加载第二操作系统的引导程序,第二操作系统的引导程序可以包括通用引导加载器。
需要说明的是,二级程序加载器为通用引导加载程序第一阶段执行的代码,可负责搬运通用引导加载程序第二阶段的代码到系统内存(System RAM,也叫片外内存)中运行。通用引导加载程序是一个遵循GPL(General Public License,通用公共许可协议)协议的开源软件,可以看作是一个裸机综合例程。
例如,系统上电后,处理器首先会唤醒CPU0核,以便可以让RTOS系统尽可能快地运行起来;然后利用BootRom中的程序引导RTOS系统启动;RTOS系统启动的过程中,会继续通过SPL加载U-Boot,由U-Boot引导在CPU1上启动第二操作系统直到Linux系统正常启动。
需要说明的是,Boot Rom是芯片(例如,SOC芯片)内部ROM固化程序,其是uboot的引导代码。Boot Rom读硬件的启动信息(例如,拨码开关设置),从指定启动介质(例如,SD、MMC等)中读取uboot-spl代码(即,SPL),SPL主要负责初始化外部RAM和环境,加载真正的uboot镜像到外部RAM中来执行,外部RAM可以是DDR(Double Data Rate SynchronousDynamic Random-Access Memory,双倍速率的同步动态随机存取内存),也可以是其他的RAM。
通过二级程序加载器唤醒第二处理器核心,再由第二处理器核心运行通用引导加载程序,从而引导在对应的处理器核心上第二操作系统,可以提高操作系统启动的便捷性和成功率。
在检测到第一操作系统检测接收到串口切换指令之前,在本申请实施例一提供的串口切换方法中还包括:在第二操作系统启动完成后,第二处理器核心触发第一中断,并发送第一信号至第一操作系统;通过第一操作系统依据第一信号检测芯片中的多个串口的运行状态,得到检测结果;通过第一处理器核心触发第二中断,并将检测结果通过第二信号发送至第二操作系统;通过第二操作系统接收检测结果,以确定芯片中的运行正常的串口数量。
在通第二处理器核心触发第一中断,并发送第一信号至第一操作系统之后,检测第一操作系统是否接收到第一信号;若第一操作系统接收到第一信号,则通过第一操作系统检测芯片中多个串口的运行状态,得到检测结果。
可选地,当第二操作系统启动完成之后,第二处理器核心触发第一中断(IPI中断,IPI,inter-processor interrupts,处理器间中断),来将第一信号发送到第一操作系统,第一操作系统通过第一信号可以得知第二操作系统已正常启动,可以和第二操作系统进行正常交互,并且第一操作系统会根据第一信号检测芯片中的多个串口的运行状态,确定所有的串口是否运行正常。
在第一操作系统检测得到检测结果之后,第一处理器核心会触发第二中断来将检测结果通过第二信号发送至第二操作系统,第二操作系统通过检测结果确定可切换的串口数量(即上述的运行正常的串口数量),以便后续对这些串口进行串口切换。同时为了第一操作系统能够更加快速的实现串口切换,在第一操作系统检测完成后,第一操作系统开始阻塞等待接收第二操作系统发出的串口切换指令。
在一可选的实施例中,第一操作系统为RTOS,当第二操作系统为Linux时,第一操作系统运行在CPU0,第二操作系统运行在CPU1,串口切换前的准备步骤包括:当CPU1上的Linux系统启动到特定的阶段时候,CPU1会触发一个IPI中断,通知CPU0上的RTOS系统,Linux已正常启动,可以和CPU1上的Linux进行正常交互,RTOS系统收到来自CPU1上的IPI中断后,会启动串口切换控制器程序,检查UART1、UART2、UART3是否正常,然后CPU0再触发一个IPI中断,通知CPU1上的Linux操作系统,RTOS系统已启动完成,同时上报的信息包含CPU0上的RTOS操作系统拥有可切换的串口数量,然后CPU0上的RTOS操作系统开始阻塞等待接收CPU1上的操作系统发出的切换指令。
在一可选的实施例中,在不同操作系统之间的数据交互可以是通过核间中断完成的,例如,SGI(Software Generated Interrupt,软件触发中断,Linux系统中的核间中断),一个操作系统可以通过IPI(Inter-Processor Interrupt,处理器间中断)向另一个操作系统发出资源抢占请求(例如,核心抢占请求)或者资源释放请求(例如,核心释放请求),以请求进行处理资源的抢占或者释放。以Linux系统为例,在Linux系统中可以基于自定义的中断向量表及异构操作系统间的中断事件实现核间通信。这里,IPI是在SOC(System onChip,系统级芯片,也称片上系统)内多个核心(core)之间触发的中断,有别于常见的外设中断,因此核心可以专门预留部分中断号给IPI,在ARM 64架构(一种CPU构架)上是0-15这16个中断号。
在一可选的实施例中,在本申请实施例一提供的串口切换方法中,在第二操作系统运行存在异常的情况下,通过服务终端将串口切换指令下发至第一操作系统;通过第一操作系统依据串口切换指令执行串口切换。
可选地,由于第二操作系统运行的功能较多、承担的业务量也比较大,因此,可以存在运行异常或者需要重启的情况,那么当第二操作系统运行存在异常时,可以直接通过服务终端将串口切换指令下发至第一操作系统,保证第一操作系统正常执行串口切换。需要说明的是,服务终端可以是芯片所处的服务器上的终端。
需要说明的是,第一操作系统的运行稳定性要优于第二操作系统,只要芯片处于上电状态,第一操作系统就可以处于运行状态。
通过上述步骤,保证了第一操作系统不依赖于第二操作系统来实现对串口的切换,提高了第一操作系统执行串口切换的独立性。
综上,在本申请实施例提供的串口切换方法中,通过在检测到第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令发送至第一操作系统;通过第一操作系统依据串口切换指令执行串口切换,解决了相关技术中芯片需要借助CPLD或FPGA等硬件设备实现串口切换,导致串口切换成本较高的技术问题。在本方案中,通过运行于同一个处理器中的第一操作系统和第二操作系统来代替CPLD或FPGA实现串口切换软件功能,在第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令转发至第一操作系统中,第一操作系统根据串口切换指令实现串口的切换,避免了采用硬件的方式来实现串口切换,减少了硬件成本,并且第一操作系统接收到串口切换指令之后,可以迅速在很短的时间内完成串口切换,因此,通过本方案提出的技术方法既可以有效降低串口切换成本,还可以有效提高串口切换的效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
根据本申请实施例,还提供了一种用于实施上述串口切换方法的芯片,如图8所示,该芯片包括:
处理器80,处理器80中运行有第一操作系统801、第二操作系统802,其中,在检测到第二操作系统802接收到串口切换指令的情况下,通过第二操作系统802将串口切换指令发送至第一操作系统801;通过第一操作系统801依据串口切换指令执行串口切换。
可选地,如图8所示,该芯片包括:处理器80,处理器80中运行有第一操作系统801、第二操作系统802,第一操作系统用于实现串口切换功能,第二操作系统用于实现芯片的目标业务功能。
例如,如果这个芯片是BMC芯片,那么对应的就通过第二操作系统行最基本的BMC业务程序,第一操作系统用于执行和实现串口切换的工作。
需要说明的是,第一操作系统的业务响应速度大于第二操作系统的业务响应速度,并且第一操作系统的空闲计算资源大于预设阈值,这个预设阈值用于表征第一操作系统响应串口切换指令时所需的最大计算资源值。通过第一操作系统可以快速响应串口切换指令,并且在极短的时间内完成切换工作,并且在执行串口切换时,还可以通过第二操作系统正常执行芯片原有的基础功能。
需要说明的是,第一操作系统的运行稳定性要优于第二操作系统,只要芯片处于上电状态,第一操作系统就可以处于运行状态。
该芯片还包括串行数据总线81,串行数据总线81中包括多个串口,每个串口与对应的设备的串口连接,通过串行数据总线为设备的串口设置地址,在第一操作系统执行串口切换时,通过串行数据总线获取目标设备的串口地址,以将目标设备的串口映射到芯片的目标输出接口。
如图8所示,串行数据总线81中包括多个串口,例如,UART1、UART2和UART3,其中,UART1作为BMC Linux系统串口,UART2作为服务器BIOS串口,UART3作为SMART NIC串口。在进行串口切换时,会在串行数据总线81中的UART1、UART2和UART3之间切换。串行数据总线81会为设备的串口设置地址,在第二操作系统执行串口切换时,通过串行数据总线获取目标设备的串口地址,以将目标设备的串口映射到芯片的目标输出接口。
为了提高第一操作系统切换串口的效率,该芯片还包括:第一存储器82,其中,第一存储器82用于存储串口切换指令的解析规则,其中,在第一操作系统执行串口切换时,第一操作系统从第一存储器中获取串口切换指令的解析规则,依据解析规则对串口切换指令中的目标串口的串口号进行解析,得到串口号对应的目标设备,以将目标设备的串口映射到芯片的目标输出接口。
可选地,如图8所示,该芯片还包括第一存储器82,第一存储器82为带电可擦可编程的存储器。通过第一存储器82来存储串口切换指令的解析规则,提高本申请提供的芯片的可扩展性和可编程性。在第二操作系统执行串口切换时,第一操作系统从目标存储器中获取串口切换指令的解析规则,依据解析规则对串口切换指令中的目标串口的串口号进行解析,得到串口号对应的目标设备,以将目标设备的串口映射到芯片的目标输出接口。
需要说明的是,上述的芯片中还可以包括第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统。
在一可选的实施例中,BMC芯片的示意图可以如图9所示,包括处理器80、硬件控制器904、第一总线906和第二总线908,其中,第一总线906的带宽高于第二总线908带宽,且第一总线906被配置为多主多从模式,第二总线908被配置为一主多从模式;至少两个操作系统基于处理器80运行;至少两个操作系统通过第一总线906进行通信;至少两个操作系统通过第二总线908实现对硬件控制器的控制。
其中,上述芯片可以是BMC芯片;上述处理器80可以是多核处理器,上述硬件控制器可以用于控制连接到对应的对外接口的外部设备;上述的第一总线被配置为多主多从模式,其可以是处理器的多个处理器内核之间进行通信所使用的总线,例如,AHB(AdvancedHigh Performance Bus,高级高性能总线),上述的第二总线被配置为一主多从模式,其可以是处理器对硬件控制器之间控制所使用的总线,例如,APB(Advanced Peripheral Bus,外围总线),第一总线的带宽高于第二总线带宽。
芯片可以包括至少两个操作系统,至少两个操作系统基于处理器运行,而处理器的处理资源被动态分配给至少两个操作系统,处理器的处理资源包括处理器核心,至少两个操作系统通过第一总线进行通信,至少两个操作系统通过第二总线实现对硬件控制器的控制,例如,实现上述的串口切换。
可选地,硬件控制器可以包括一种或多种,可以包括但不限于以下至少之一的芯片外设对应的控制器:I2C,USB(Universal Serial Bus,通用串行总线),UART(即上述的串行数据总线81),ADC(Analog to Digital Converter,模拟数字转换器),JTAG(Joint TestAction Group,联合测试工作组),RTC(Real_Time Clock,实时时钟),GPIO(GeneralPurpose Input/Output,通用输入输出),WDT(Watch Dog Timer,看门狗),虚拟UART(Virtual UART),超级I/O(Super I/O),SGPIO(Serial General Purpose Input/Output,串行通用输入输出),PWM(Pulse Width Modulation,脉冲宽度调制),FanTach(风扇调速),Timer(时钟),PECI(Platform Environment Control Interface,平台环境式控制接口),邮箱(MailBox),还可以包括其他类型的控制器。对外接口可以包括一种或多种,可以包括但不限于与上述任一控制器对应的对外接口。
例如,BMC芯片的一个示例可以如图10所示,BMC芯片的硬件可以但不限于包括SOC子模块和BMC带外子模块,其中,SOC子模块主要包含ARM核心(ARM Core 1, ARM Core2,..., ARM Core X),其还可以但不限于包括DDR(Double Data Rate,双倍速率)4控制器(内存控制器)、MAC(Media Access Control Address,媒体访问控制地址)控制器(网络控制器)、SD(Secure Digital,安全数字)Card/eMMC(Embedded Multi Media Card,嵌入式多媒体卡)控制器(存储控制器)、PCIe RC(Root Complex,根复合体)控制器、SRAM(StaticRandom-Access Memory,静态随机存取存储器)及SPI控制器。
上述核心与各控制器通过第一总线互连,实现核心与各控制器间的交互。同时,ARM核心间连接至第一总线(比如:可以通过AXI(Advanced eXtensible Interface,高级可扩展接口)桥(Bridge)连接),核心间的通信通过第一总线实现。此外,SOC子模块中还实现了第一总线与第二总线的互连互通(比如:通过APB桥(APB Bridge)的转换实现),这样为SOC子模块访问第二总线上的外设提供一条物理通路。
DDR4控制器可以通过DDR4 PHY(Physical Layer,物理层)接口与其他部件或者设备相连,MAC控制器通过RGMII(Reduced Gigabit Media Independent Interface,吉比特介质独立接口)与其他部件或者设备相连,SD卡/eMMC控制器通过SD 接口与其他部件或者设备相连,PCIe RC控制器通过PCIe PHY接口与其他部件或者设备相连。
BMC带外子模块主要包含PWM、GPIO、FanTech(风扇调速)、mailbox(邮箱)等芯片外设对应的控制器,通过这些控制器能够实现对BMC的PECI通信(比如使用GPIO模拟PECI)、风扇调控等带外管理功能。由图10可知,该BMC带外子模块可以但不限于通过第二总线实现与SOC子模块的交互。
BMC芯片通过AHB与第二总线实现片内ARM核、存储单元及控制器硬件资源间的互连。处理器资源的动态均衡调度主要涉及BMC芯片的ARM核心资源调度,核间通信指ARM核之间进行的通信。以Linux系统抢占RTOS系统核心为例,Linux系统首先在核2~N的某个核上通过片上第一总线向核1发送核间中断(中断号a)。如果此时RTOS系统处于空闲状态允许抢占,核1通过第一总线回复核间中断(中断号b),并释放当前核1映射的外设控制器资源(如,PWM/PECI),Linux系统收到核间中断,发起抢占流程,把核1加入Linux SMP调度中,同时获得了PWM/PECI外设的控制权,可以通过第二总线对其进行控制。
一方面,至少两个操作系统包括第一操作系统和第二操作系统,其中,芯片将通信值装载至第一总线,第一总线将携带有通信值的通信信号发送至第二操作系统对应的通信寄存器,以实现第一操作系统和第二操作系统之间的通信,其中,通信值用于指示第一操作系统和第二操作系统之间的通信内容。
另一方面,芯片将控制值装载至第二总线,第二总线将携带有控制值的控制信号发送至硬件控制器对应的寄存器,以实现操作系统对硬件控制器的控制,其中,控制值用于指示操作系统对硬件控制器的控制内容。
上述提及了第一总线被配置为多主多从模式,其可以是处理器的多个处理器内核之间进行通信所使用的总线,例如,AHB(Advanced High Performance Bus,高级高性能总线),第二总线被配置为一主多从模式,其可以是处理器对硬件控制器之间控制所使用的总线,例如,APB(Advanced Peripheral Bus,外围总线),第一总线的带宽高于第二总线带宽。以下对此进行展开说明。
AHB总线在AMBA2中就已经定义,AHB总线一开始主要是作为系统高速总线使用,适用于高性能,低功耗的系统设计,主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线。在AMBA协议中,AHB主要面向系统级高带宽高性能的系统互联设计,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多master,多slave的互联模式;可配置32位"128位总线宽度;支持字节、半字节和字的传输。AHB系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。基础结构则由仲裁器(arbiter)、主模块到从模块的多路器、从模块到主模块的多路器、译码器(decoder)、虚拟从模块(dummySlave)、虚拟主模块(dummy Master)所组成。
APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特点包括:
①可工作在高频下;
②协议简单:无复杂的时序;
③同步总线:总线上所有的transaction(读写操作)都依赖于时钟的上升沿;
④一主多从:一般情况下,APB挂在AHB总线系统下,通过AHB-APB Bridge将事务在AHB总线系统之间进行转化,此时Bridgre即为APB的master,其他的外围设备均为slave;
⑤接口简单:相对应AXI、AHB来说,接口比较简单;
⑥低功耗;
⑦可连接多种外围设备:I2C、SPI、Timer、Keypad、UART;
在一种可选的实施例中,在AHB的多主(master)多从(slave)模式下,Master会首先向仲裁发送发文请求,仲裁决定合适让master获取总线访问的权限,master获取权限之后会将数据与控制信号发送到仲裁器,仲裁器通过地址解析判断对应的slave通路,然后将请求发送到对应的目的端。同样响应的数据会通过Decoder解析,然后返回给对应的master。通过这种多路复用的机制实现多对多的访问。
在一种可选的实施例中,在APB的一主多从模式下,通常APB挂在AHB总线系统下,通过AHB-APB Bridge将事务在AHB总线系统之间进行转化,此时Bridgre即为APB的master,其他的外围设备均为slave。数据请求只能由Master发向slave,slave收到请求后返回相应的响应数据给master,此过程可以实现一对多的访问,且访问不涉及AHB总线中的仲裁和Decoder解析操作。
此外,AHB总线还具有高带宽特性,用于系统中高性能模块(CPU、DMA等)间的互联,APB总线带宽较低,用于系统中周边外设(UART、I2C等)之间的连接。 AHB总线逻辑电路和总线协议复杂,APB总线接口电路和总线协议相对简单。
可选地,针对RTOS休眠唤醒时CPU资源占用的情况,RTOS休眠后完全不占用CPU核心资源,当它被唤醒时(比如外设或唤醒定时器产生中断触发唤醒动作),会通过核间中断重新获取核心0的控制权。上述从休眠状态到重新获取核心控制权期间,RTOS系统都不需要核心的参与。
通过上述的BMC芯片,第一操作系统和第二操作系统基于处理器运行,并通过不同功能的总线实现操作系统间的通信和串口的控制。由于第一操作系统和第二操作系统均是基于同一个处理器运行,避免了硬件器件的增加和部署,降低了系统成本,并且合理利用处理器资源支持系统之间的运行,因此,可以解决操作系统的运行效率较低的技术问题,达到了提高操作系统的运行效率的技术效果。
综上,通过运行于同一个处理器中的第一操作系统和第二操作系统来代替CPLD或FPGA实现串口切换软件功能,通过第二操作系统接收串口切换指令并将串口切换指令转发至第一操作系统中,第一操作系统根据串口切换指令实现串口的切换,避免了采用硬件的方式来实现串口切换,减少了硬件成本,并且在本方案中第一操作系统的业务响应速度快于第二操作系统的业务响应速度,在第一操作系统接收到串口切换指令之后,可以迅速在很短的时间内完成串口切换,因此,通过本方案提出的技术方法既可以有效降低串口切换成本,还可以有效提高串口切换的效率。
需要说明的是,本申请上述实施例中涉及到的优选实施方案与实施例1提供的方案以及应用场景、实施过程相同,但不仅限于实施例1所提供的方案。
根据本申请实施例,还提供了一种用于实施上述串口切换方法的串口切换系统,如图11所示,该串口切换系统包括:
芯片1101,其中,芯片1101中的同一个处理器中运行有第一操作系统、第二操作系统;第二存储器1102,其中,第二存储器1102用于存储串口切换指令的解析规则;其中,在检测到第二操作系统接收到串口切换指令的情况下,通过第二操作系统发送串口切换指令至第一操作系统,通过第一操作系统依据串口切换指令从第二存储器中获取串口切换指令的解析规则,依据解析规则对串口切换指令中的目标串口的串口号进行解析,得到串口号对应的目标设备,通过串行数据总线获取目标设备的串口地址,以将目标设备的串口映射到芯片的目标输出接口。
可选地,本申请实施例三还提供了一种用于实施上述串口切换方法的串口切换系统,如图11所示,该串口切换系统包括:芯片1101和第二存储器1102,芯片1101可以使BMC芯片,第二存储器1102可以是eeprom,flash,共享内存等等均可。芯片1101中的同一个处理器中运行有第一操作系统和第二操作系统,第二存储器1102中存储有串口切换指令的解析规则。
需要说明的是,芯片1101还可以包括串行数据总线,串行数据总线中包括多个串口,每个串口与对应的设备的串口连接,通过串行数据总线为设备的串口设置地址。
在第二操作系统接收串口切换指令的情况下,首先,通过第二操作系统发送串口切换指令至第一操作系统,通过第一操作系统依据串口切换指令从第二存储器中获取串口切换指令的解析规则,然后,依据解析规则对串口切换指令中的目标串口的串口号进行解析,得到串口号对应的目标设备,最后,通过串行数据总线获取目标设备的串口地址,以将目标设备的串口映射到芯片的目标输出接口。
综上,通过运行于同一个处理器中的第一操作系统和第二操作系统来代替CPLD或FPGA实现串口切换软件功能,通过第二操作系统接收串口切换指令并将串口切换指令转发至第一操作系统中,第一操作系统根据串口切换指令实现串口的切换,避免了采用硬件的方式来实现串口切换,减少了硬件成本,并且在本方案中第一操作系统的业务响应速度快于第二操作系统的业务响应速度,在第一操作系统接收到串口切换指令之后,可以迅速在很短的时间内完成串口切换,因此,通过本方案提出的技术方法既可以有效降低串口切换成本,还可以有效提高串口切换的效率。
根据本申请实施例,还提供了一种用于实施上述串口切换方法的串口切换装置,如图12所示,该串口切换装置包括:
第一检测单元1201,用于在检测到第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令发送至第一操作系统;
第一执行单元1202,用于通过第一操作系统依据串口切换指令执行串口切换。
在本申请实施例提供的串口切换装置中,通过第一检测单元1201在检测到第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令发送至第一操作系统;第一执行单元1202通过第一操作系统依据串口切换指令执行串口切换,解决了相关技术中芯片需要借助CPLD或FPGA等硬件设备实现串口切换,导致串口切换成本较高的技术问题。在本方案中,通过运行于同一个处理器中的第一操作系统和第二操作系统来代替CPLD或FPGA实现串口切换软件功能,在第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令转发至第一操作系统中,第一操作系统根据串口切换指令实现串口的切换,避免了采用硬件的方式来实现串口切换,减少了硬件成本,并且第一操作系统接收到串口切换指令之后,可以迅速在很短的时间内完成串口切换,因此,通过本方案提出的技术方法既可以有效降低串口切换成本,还可以有效提高串口切换的效率。
在本申请实施例提供的串口切换装置中,串口切换指令中至少包括:待切换至的目标串口的串口号,该装置还包括:第一获取单元,用于在通过第一操作系统依据串口切换指令执行串口切换之前,通过第一操作系统从目标存储器中获取串口切换指令的解析规则;解析单元,用于依据解析规则对串口切换指令中的目标串口的串口号进行解析,确定串口号对应的目标设备,其中,目标串口为目标设备的串口,目标串口连接于芯片中。
在本申请实施例提供的串口切换装置中,执行单元包括:第一确定模块,用于通过第一操作系统确定目标设备的串口地址;映射模块,用于依据串口地址将目标串口映射至芯片的目标输出接口。
在本申请实施例提供的串口切换装置中,芯片还包括串行数据总线,装置还包括:确定单元,用于在通过第一操作系统确定目标设备的串口地址之前,确定与串行数据总线的串口连接的多个设备;映射单元,用于通过串行数据总线将每个设备的串口映射至芯片的内存中,以得到每个设备的串口地址。
在本申请实施例提供的串口切换装置中,该装置还包括:第二检测单元,用于在依据串口地址将目标串口映射至芯片的目标输出接口之后,若目标输出接口与目标智能网卡连接,通过智能网卡检测是否接收到对目标串口的访问请求;转发单元,用于若接收到对目标串口的访问请求,则通过智能网卡将访问请求转发至目标串口。
在本申请实施例提供的串口切换装置中,该装置还包括:第二获取单元,用于在依据串口地址将目标串口映射至芯片的目标输出接口之后,通过第一操作系统获取串口切换指令的执行结果,其中,执行结果为以下之一:切换成功和切换失败;发送单元,用于通过第一操作系统将执行结果发送至第二操作系统。
在本申请实施例提供的串口切换装置中,该装置还包括:第一接收单元,用于在通过第二操作系统下发串口切换指令至第一操作系统之后,通过第二操作系统接收串口切换指令的执行结果,其中,执行结果由第一操作系统发送至第二操作系统,执行结果为以下之一:串口切换成功和串口切换失败。
在本申请实施例提供的串口切换装置中,该装置还包括:第二执行单元,用于在通过第二操作系统接收串口切换指令的执行结果之后,若执行结果为执行失败,则重复执行通过第二操作系统下发串口切换指令至第一操作系统的步骤,直至执行结果为成功,或者,执行串口切换的次数超过预设次数。
在本申请实施例提供的串口切换装置中,若执行串口切换的次数超过预设次数,该装置还包括:第一触发单元,用于通过第二操作系统触发提示信号,其中,提示信号用于提示串口切换失败。
在本申请实施例提供的串口切换装置中,处理器还包括第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统,该装置还包括:第一唤醒单元,用于在通过第一操作系统检测是否存在串口切换指令之前,在芯片上电的情况下,唤醒第二处理器核心;第二唤醒单元,用于通过第二处理器核心唤醒第一处理器核心,以通过第一处理器核心启动第一操作系统;启动单元,用于在第一操作系统启动的情况下,通过第二处理器核心启动第二操作系统。
在本申请实施例提供的串口切换装置中,第二唤醒单元包括:校验模块,用于通过第二处理器核心对二级程序加载器进行校验,得到校验结果;唤醒模块,用于在校验结果为校验通过的情况下,通过第二处理器核心唤醒第一处理器核心。
在本申请实施例提供的串口切换装置中,启动单元包括:启动模块,用于通过第二处理器核心启动引导加载功能;加载模块,用于通过引导加载功能加载第二操作系统的内核,以启动第二操作系统。
在本申请实施例提供的串口切换装置中,处理器还包括第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统,该装置还包括:第二触发单元,用于在检测到第一操作系统检测接收到串口切换指令之前,在第二操作系统启动完成后,第二处理器核心触发第一中断,并发送第一信号至第一操作系统;第三检测单元,用于通过第一操作系统依据第一信号检测芯片中的多个串口的运行状态,得到检测结果;第三触发单元,用于通过第一处理器核心触发第二中断,并将检测结果通过第二信号发送至第二操作系统;接收单元,用于通过第二操作系统接收检测结果,以确定芯片中的运行正常的串口数量。
在本申请实施例提供的串口切换装置中,该装置还包括:第四检测单元,用于在通过第二处理器核心触发第一中断,并发送第一信号至第一操作系统之后,检测第一操作系统是否接收到第一信号;第五检测单元,用于若第一操作系统接收到第一信号,则通过第一操作系统检测芯片中多个串口的运行状态,得到检测结果。
在本申请实施例提供的串口切换装置中,该装置还包括:下发单元,用于在第二操作系统运行存在异常的情况下,通过服务终端将串口切换指令下发至第一操作系统;第三执行单元,用于通过第一操作系统依据串口切换指令执行串口切换。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
本申请的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行串口切换方法中以下步骤的程序代码:在检测到第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令发送至第一操作系统;通过第一操作系统依据串口切换指令执行串口切换。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:串口切换指令中至少包括:待切换至的目标串口的串口号,在通过第一操作系统依据串口切换指令执行串口切换之前,该方法还包括:通过第一操作系统从目标存储器中获取串口切换指令的解析规则;依据解析规则对串口切换指令中的目标串口的串口号进行解析,确定串口号对应的目标设备,其中,目标串口为目标设备的串口,目标串口连接于芯片中。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:通过第一操作系统依据串口切换指令执行串口切换包括:通过第一操作系统确定目标设备的串口地址;依据串口地址将目标串口映射至芯片的目标输出接口。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:芯片包括:串行数据总线,在通过第一操作系统确定目标设备的串口地址之前,该方法还包括:确定与串行数据总线的串口连接的多个设备;通过串行数据总线将每个设备的串口映射至芯片的内存中,以得到每个设备的串口地址。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:在依据串口地址将目标串口映射至芯片的目标输出接口之后,该方法还包括:若目标输出接口与目标智能网卡连接,通过智能网卡检测是否接收到对目标串口的访问请求;若接收到对目标串口的访问请求,则通过智能网卡将访问请求转发至目标串口。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:在依据串口地址将目标串口映射至芯片的目标输出接口之后,该方法还包括:通过第一操作系统获取串口切换指令的执行结果,其中,执行结果为以下之一:切换成功和切换失败;通过第一操作系统将执行结果发送至第二操作系统。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:在通过第二操作系统下发串口切换指令至第一操作系统之后,该方法还包括:通过第二操作系统接收串口切换指令的执行结果,其中,执行结果由第一操作系统发送至第二操作系统,执行结果为以下之一:串口切换成功和串口切换失败。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:在通过第二操作系统接收串口切换指令的执行结果之后,该方法还包括:若执行结果为执行失败,则重复执行通过第二操作系统下发串口切换指令至第一操作系统的步骤,直至执行结果为成功,或者,执行串口切换的次数超过预设次数。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:若执行串口切换的次数超过预设次数,方法还包括:通过第二操作系统触发提示信号,其中,提示信号用于提示串口切换失败。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:处理器还包括第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统,在通过第一操作系统检测是否存在串口切换指令之前,方法还包括:在芯片上电的情况下,唤醒第二处理器核心;通过第二处理器核心唤醒第一处理器核心,以通过第一处理器核心启动第一操作系统;在第一操作系统启动的情况下,通过第二处理器核心启动第二操作系统。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:通过第二处理器核心唤醒第一处理器核心包括:通过第二处理器核心对二级程序加载器进行校验,得到校验结果;在校验结果为校验通过的情况下,通过第二处理器核心唤醒第一处理器核心。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:通过第二处理器核心启动第二操作系统包括:通过第二处理器核心启动引导加载功能;通过引导加载功能加载第二操作系统的内核,以启动第二操作系统。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:处理器还包括第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统,在检测到第一操作系统检测接收到串口切换指令之前,方法还包括:在第二操作系统启动完成后,第二处理器核心触发第一中断,并发送第一信号至第一操作系统;通过第一操作系统依据第一信号检测芯片中的多个串口的运行状态,得到检测结果;通过第一处理器核心触发第二中断,并将检测结果通过第二信号发送至第二操作系统;通过第二操作系统接收检测结果,以确定芯片中的运行正常的串口数量。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:在通过第二处理器核心触发第一中断,并发送第一信号至第一操作系统之后,该方法还包括:检测第一操作系统是否接收到第一信号;若第一操作系统接收到第一信号,则通过第一操作系统检测芯片中多个串口的运行状态,得到检测结果。
上述计算机终端可以执行串口切换方法中以下步骤的程序代码:方法还包括:在第二操作系统运行存在异常的情况下,通过服务终端将串口切换指令下发至第一操作系统;通过第一操作系统依据串口切换指令执行串口切换。
可选地,图13是根据本申请实施例的一种计算机终端的结构框图。如图13所示,该计算机终端10可以包括:一个或多个(图13中仅示出一个)处理器102、存储器104。该计算机终端10还可以包括存储控制器,通过存储控制器对存储器104进行控制和管理;该计算机终端10还可以包括外设接口,通过外设接口连接射频模块、音频模块以及显示屏等。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的串口切换方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的串口切换方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在检测到第二操作系统接收到串口切换指令的情况下,通过第二操作系统将串口切换指令发送至第一操作系统;通过第一操作系统依据串口切换指令执行串口切换。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:串口切换指令中至少包括:待切换至的目标串口的串口号,在通过第一操作系统依据串口切换指令执行串口切换之前,该方法还包括:通过第一操作系统从目标存储器中获取串口切换指令的解析规则;依据解析规则对串口切换指令中的目标串口的串口号进行解析,确定串口号对应的目标设备,其中,目标串口为目标设备的串口,目标串口连接于芯片中。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:通过第一操作系统依据串口切换指令执行串口切换包括:通过第一操作系统确定目标设备的串口地址;依据串口地址将目标串口映射至芯片的目标输出接口。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:芯片包括:串行数据总线,在通过第一操作系统确定目标设备的串口地址之前,该方法还包括:确定与串行数据总线的串口连接的多个设备;通过串行数据总线将每个设备的串口映射至芯片的内存中,以得到每个设备的串口地址。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在依据串口地址将目标串口映射至芯片的目标输出接口之后,该方法还包括:若目标输出接口与目标智能网卡连接,通过智能网卡检测是否接收到对目标串口的访问请求;若接收到对目标串口的访问请求,则通过智能网卡将访问请求转发至目标串口。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在依据串口地址将目标串口映射至芯片的目标输出接口之后,该方法还包括:通过第一操作系统获取串口切换指令的执行结果,其中,执行结果为以下之一:切换成功和切换失败;通过第一操作系统将执行结果发送至第二操作系统。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在通过第二操作系统下发串口切换指令至第一操作系统之后,该方法还包括:通过第二操作系统接收串口切换指令的执行结果,其中,执行结果由第一操作系统发送至第二操作系统,执行结果为以下之一:串口切换成功和串口切换失败。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在通过第二操作系统接收串口切换指令的执行结果之后,该方法还包括:若执行结果为执行失败,则重复执行通过第二操作系统下发串口切换指令至第一操作系统的步骤,直至执行结果为成功,或者,执行串口切换的次数超过预设次数。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:若执行串口切换的次数超过预设次数,该方法还包括:通过第二操作系统触发提示信号,其中,提示信号用于提示串口切换失败。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:处理器还包括第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统,在通过第一操作系统检测是否存在串口切换指令之前,该方法还包括:在芯片上电的情况下,唤醒第二处理器核心;通过第二处理器核心唤醒第一处理器核心,以通过第一处理器核心启动第一操作系统;在第一操作系统启动的情况下,通过第二处理器核心启动第二操作系统。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:通过第二处理器核心唤醒第一处理器核心包括:通过第二处理器核心对二级程序加载器进行校验,得到校验结果;在校验结果为校验通过的情况下,通过第二处理器核心唤醒第一处理器核心。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:通过第二处理器核心启动第二操作系统包括:通过第二处理器核心启动引导加载功能;通过引导加载功能加载第二操作系统的内核,以启动第二操作系统。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:处理器还包括第一处理器核心和第二处理器核心,第一处理器核心用于运行第一操作系统,第二处理器核心用于运行第二操作系统,在检测到第一操作系统检测接收到串口切换指令之前,该方法还包括:在第二操作系统启动完成后,第二处理器核心触发第一中断,并发送第一信号至第一操作系统;通过第一操作系统依据第一信号检测芯片中的多个串口的运行状态,得到检测结果;通过第一处理器核心触发第二中断,并将检测结果通过第二信号发送至第二操作系统;通过第二操作系统接收检测结果,以确定芯片中的运行正常的串口数量。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在通过第二处理器核心触发第一中断,并发送第一信号至第一操作系统之后,该方法还包括:检测第一操作系统是否接收到第一信号;若第一操作系统接收到第一信号,则通过第一操作系统检测芯片中多个串口的运行状态,得到检测结果。
上述的处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在第二操作系统运行存在异常的情况下,通过服务终端将串口切换指令下发至第一操作系统;通过第一操作系统依据串口切换指令执行串口切换。
本领域普通技术人员可以理解,图13所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图13其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图13中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图13所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种计算机可读存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的串口切换方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (20)
1.一种串口切换方法,所述串口切换方法应用于芯片,所述芯片中至少包括处理器,所述处理器中运行有第一操作系统、第二操作系统,包括:
在检测到所述第二操作系统接收到串口切换指令的情况下,通过所述第二操作系统将所述串口切换指令发送至所述第一操作系统;
通过所述第一操作系统依据所述串口切换指令执行串口切换;
其中,所述芯片还包括硬件控制器、第一总线和第二总线,所述硬件控制器至少包括串行数据总线,所述串行数据总线用于连接的多个设备,所述处理器还包括第一处理器核心和第二处理器核心,所述第一处理器核心用于运行所述第一操作系统,所述第二处理器核心用于运行所述第二操作系统,所述第一总线用于所述第一操作系统与所述第二操作系统之间通信,所述第一操作系统和所述第二操作系统通过所述第二总线控制所述硬件控制器;
所述第一操作系统与所述第二操作系统之间采用核间通信;
所述第一操作系统与所述第二操作系统之间的核间通信通过下述步骤实现:
所述第一操作系统将目标数据发送至处理器内存中的目标虚拟通道;
向所述第二操作系统发送中断通知消息;
所述第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据;
所述串口切换指令至少包括:目标串口的串口号,在通过所述第一操作系统依据所述串口切换指令执行串口切换之前,所述方法还包括:
通过所述第一操作系统从目标存储器中获取所述串口切换指令的解析规则;
依据所述解析规则对所述串口切换指令中的目标串口的串口号进行解析,确定所述串口号对应的目标设备,其中,所述目标串口为所述目标设备的串口,所述目标串口连接于所述芯片;
通过所述第一操作系统依据所述串口切换指令执行串口切换包括:
通过所述第一操作系统确定所述目标设备的串口地址;
依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口。
2.根据权利要求1所述的方法,其中,所述芯片包括:串行数据总线,在通过所述第一操作系统确定所述目标设备的串口地址之前,所述方法还包括:
确定与所述串行数据总线的串口连接的多个设备;
通过所述串行数据总线将每个设备的串口映射至所述芯片的内存中,以得到每个设备的串口地址。
3.根据权利要求1所述的方法,其中,在依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口之后,所述方法还包括:
若所述目标输出接口与目标智能网卡连接,通过所述智能网卡检测是否接收到对所述目标串口的访问请求;
若接收到对所述目标串口的访问请求,则通过所述智能网卡将所述访问请求转发至所述目标串口。
4.根据权利要求1所述的方法,其中,在依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口之后,所述方法还包括:
通过所述第一操作系统获取所述串口切换指令的执行结果,其中,所述执行结果为以下之一:切换成功和切换失败;
通过所述第一操作系统将所述执行结果发送至所述第二操作系统。
5.根据权利要求1所述的方法,其中,在通过所述第二操作系统下发所述串口切换指令至所述第一操作系统之后,所述方法还包括:
通过所述第二操作系统接收所述串口切换指令的执行结果,其中,所述执行结果由所述第一操作系统发送至所述第二操作系统,所述执行结果为以下之一:串口切换成功和串口切换失败。
6.根据权利要求5所述的方法,其中,在通过所述第二操作系统接收所述串口切换指令的执行结果之后,所述方法还包括:
若所述执行结果为执行失败,则重复执行通过所述第二操作系统下发串口切换指令至所述第一操作系统的步骤,直至所述执行结果为成功,或者,执行串口切换的次数超过预设次数。
7.根据权利要求6所述的方法,其特征在于,若执行串口切换的次数超过预设次数,所述方法还包括:
通过所述第二操作系统触发提示信号,其中,所述提示信号用于提示串口切换失败。
8.根据权利要求1所述的方法,其中,所述处理器还包括第一处理器核心和第二处理器核心,所述第一处理器核心用于运行所述第一操作系统,所述第二处理器核心用于运行所述第二操作系统,在通过所述第一操作系统检测是否存在串口切换指令之前,所述方法还包括:
在所述芯片上电的情况下,唤醒所述第二处理器核心;
通过所述第二处理器核心唤醒所述第一处理器核心,以通过所述第一处理器核心启动所述第一操作系统;
在所述第一操作系统启动的情况下,通过所述第二处理器核心启动所述第二操作系统。
9.根据权利要求8所述的方法,其中,通过所述第二处理器核心唤醒所述第一处理器核心包括:
通过所述第二处理器核心对二级程序加载器进行校验,得到校验结果;
在所述校验结果为校验通过的情况下,通过所述第二处理器核心唤醒所述第一处理器核心。
10.根据权利要求9所述的方法,其中,通过所述第二处理器核心启动所述第一操作系统包括:
通过所述第二处理器核心启动引导加载功能;
通过所述引导加载功能加载所述第二操作系统的内核,以启动所述第二操作系统。
11.根据权利要求1所述的方法,其中,所述处理器还包括第一处理器核心和第二处理器核心,所述第一处理器核心用于运行所述第一操作系统,所述第二处理器核心用于运行所述第二操作系统,在检测到所述第一操作系统检测接收到串口切换指令之前,所述方法还包括:
在所述第二操作系统启动完成后,所述第二处理器核心触发第一中断,并发送第一信号至所述第一操作系统;
通过所述第一操作系统依据所述第一信号检测所述芯片中的多个串口的运行状态,得到检测结果;
通过所述第一处理器核心触发第二中断,并将所述检测结果通过第二信号发送至所述第二操作系统;
通过所述第二操作系统接收所述检测结果,以确定所述芯片中的运行正常的串口数量。
12.根据权利要求11所述的方法,其中,在所述第二处理器核心触发第一中断,并发送第一信号至所述第一操作系统之后,所述方法还包括:
检测所述第一操作系统是否接收到所述第一信号;
若所述第一操作系统接收到第一信号,则通过所述第一操作系统检测所述芯片中多个串口的运行状态,得到检测结果。
13.根据权利要求1所述的方法,其中,所述方法还包括:
在所述第二操作系统运行存在异常的情况下,通过服务终端将所述串口切换指令下发至所述第一操作系统;
通过所述第一操作系统依据所述串口切换指令执行串口切换。
14.一种芯片,所述芯片用于执行权利要求1至13中任意一项所述的串口切换方法,包括:
处理器,所述处理器中运行有第一操作系统、第二操作系统,其中,在检测到所述第二操作系统接收到串口切换指令的情况下,通过所述第二操作系统将所述串口切换指令发送至所述第一操作系统;通过所述第一操作系统依据所述串口切换指令执行串口切换。
15.根据权利要求14所述的芯片,其中,所述芯片还包括:
串行数据总线,其中,所述串行数据总线中包括多个串口,每个串口与对应的设备的串口连接,通过所述串行数据总线为所述设备的串口设置地址,在所述第一操作系统执行串口切换时,通过所述串行数据总线获取目标设备的串口地址,以将所述目标设备的串口映射到所述芯片的目标输出接口。
16.根据权利要求14所述的芯片,其中,所述芯片还包括:
第一存储器,其中,所述第一存储器用于存储所述串口切换指令的解析规则,其中,在所述第一操作系统执行串口切换时,所述第一操作系统从所述第一存储器中获取所述串口切换指令的解析规则,依据所述解析规则对所述串口切换指令中的目标串口的串口号进行解析,得到所述串口号对应的目标设备,以将所述目标设备的串口映射到所述芯片的目标输出接口。
17.一种串口切换系统,所述串口切换系统用于执行权利要求1至13中任意一项所述的串口切换方法,包括:
芯片,其中,所述芯片中至少包括处理器,所述处理器中运行有第一操作系统、第二操作系统;
第二存储器,其中,所述第二存储器用于存储串口切换指令的解析规则;
其中,在检测到所述第二操作系统接收到串口切换指令的情况下,通过所述第二操作系统发送所述串口切换指令至所述第一操作系统,通过所述第一操作系统依据所述串口切换指令从所述第二存储器中获取所述串口切换指令的解析规则,依据所述解析规则对所述串口切换指令中的目标串口的串口号进行解析,得到所述串口号对应的目标设备,通过串行数据总线获取所述目标设备的串口地址,以将所述目标设备的串口映射到所述芯片的目标输出接口。
18.一种串口切换装置,包括:
第一检测单元,用于在检测到第二操作系统接收到串口切换指令的情况下,通过所述第二操作系统将所述串口切换指令发送至第一操作系统;
第一执行单元,用于通过所述第一操作系统依据所述串口切换指令执行串口切换;
其中,芯片还包括硬件控制器、第一总线和第二总线,所述硬件控制器至少包括串行数据总线,所述串行数据总线用于连接的多个设备,处理器还包括第一处理器核心和第二处理器核心,所述第一处理器核心用于运行所述第一操作系统,所述第二处理器核心用于运行所述第二操作系统,所述第一总线用于所述第一操作系统与所述第二操作系统之间通信,所述第一操作系统和所述第二操作系统通过所述第二总线控制所述硬件控制器;
所述第一操作系统与所述第二操作系统之间采用核间通信;所述第一操作系统与所述第二操作系统之间的核间通信通过下述步骤实现:
所述第一操作系统将目标数据发送至处理器内存中的目标虚拟通道;向所述第二操作系统发送中断通知消息;所述第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据;
所述串口切换指令中至少包括:待切换至的目标串口的串口号,所述装置还包括:第一获取单元,用于在通过所述第一操作系统依据所述串口切换指令执行串口切换之前,通过所述第一操作系统从目标存储器中获取所述串口切换指令的解析规则;解析单元,用于依据所述解析规则对所述串口切换指令中的目标串口的串口号进行解析,确定所述串口号对应的目标设备,其中,所述目标串口为所述目标设备的串口,所述目标串口连接于所述芯片中;
所述执行单元包括:第一确定模块,用于通过所述第一操作系统确定所述目标设备的串口地址;映射模块,用于依据所述串口地址将所述目标串口映射至所述芯片的目标输出接口。
19.一种计算机可读存储介质,所述存储介质存储程序,其中,所述程序执行权利要求1至13中任意一项所述的串口切换方法。
20.一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至13中任意一项所述的串口切换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310536665.3A CN116302141B (zh) | 2023-05-12 | 2023-05-12 | 串口切换方法、芯片及串口切换系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310536665.3A CN116302141B (zh) | 2023-05-12 | 2023-05-12 | 串口切换方法、芯片及串口切换系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116302141A CN116302141A (zh) | 2023-06-23 |
CN116302141B true CN116302141B (zh) | 2023-09-05 |
Family
ID=86781814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310536665.3A Active CN116302141B (zh) | 2023-05-12 | 2023-05-12 | 串口切换方法、芯片及串口切换系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302141B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118227277A (zh) * | 2023-07-04 | 2024-06-21 | 苏州浪潮智能科技有限公司 | 芯片上操作的执行方法、装置、存储介质和电子设备 |
CN117149694B (zh) * | 2023-10-24 | 2024-02-23 | 南京芯驰半导体科技有限公司 | 基于多核异构的接口控制方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902014A (zh) * | 2019-02-28 | 2019-06-18 | 苏州浪潮智能科技有限公司 | 一种服务器系统共享串口的方法、装置、受控终端及存储介质 |
CN113157624A (zh) * | 2021-04-21 | 2021-07-23 | 科东(广州)软件科技有限公司 | 一种串口通信方法、装置、设备及存储介质 |
CN114866424A (zh) * | 2022-07-08 | 2022-08-05 | 苏州浪潮智能科技有限公司 | 服务器管理方法、装置、系统、电子设备及可读存储介质 |
CN114968375A (zh) * | 2021-02-18 | 2022-08-30 | Oppo广东移动通信有限公司 | 系统切换方法和装置、电子设备、可读存储介质 |
-
2023
- 2023-05-12 CN CN202310536665.3A patent/CN116302141B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902014A (zh) * | 2019-02-28 | 2019-06-18 | 苏州浪潮智能科技有限公司 | 一种服务器系统共享串口的方法、装置、受控终端及存储介质 |
CN114968375A (zh) * | 2021-02-18 | 2022-08-30 | Oppo广东移动通信有限公司 | 系统切换方法和装置、电子设备、可读存储介质 |
CN113157624A (zh) * | 2021-04-21 | 2021-07-23 | 科东(广州)软件科技有限公司 | 一种串口通信方法、装置、设备及存储介质 |
CN114866424A (zh) * | 2022-07-08 | 2022-08-05 | 苏州浪潮智能科技有限公司 | 服务器管理方法、装置、系统、电子设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
王兴欣.基于EFI和多核体系的软件运用架构.2011,第1-29页. * |
Also Published As
Publication number | Publication date |
---|---|
CN116302141A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10126954B1 (en) | Chipset and server system using the same | |
CN116302141B (zh) | 串口切换方法、芯片及串口切换系统 | |
TWI610167B (zh) | 改善平台管理的計算裝置建置方法、保持電腦可執行指令之非暫存媒體及配置為提供強化管理資訊之計算裝置 | |
US8301917B2 (en) | Method and apparatus for managing power from a sequestered partition of a processing system | |
US5495569A (en) | Circuit for ensuring that a local interrupt controller in a microprocessor is powered up active | |
WO2024221469A1 (zh) | 嵌入式系统的启动控制方法和装置、存储介质和电子设备 | |
WO2024221465A1 (zh) | 操作系统的运行控制方法和装置,以及嵌入式系统和芯片 | |
CN116244229B (zh) | 硬件控制器的访问方法、装置、存储介质和电子设备 | |
CN116521209B (zh) | 操作系统的升级方法及装置、存储介质及电子设备 | |
CN116541227B (zh) | 故障诊断方法、装置、存储介质、电子装置及bmc芯片 | |
CN116243996B (zh) | 业务的运行切换方法、装置、存储介质及电子装置 | |
CN116627520A (zh) | 基板管理控制器的系统运行方法以及基板管理控制器 | |
WO2024221463A1 (zh) | 硬件接口信号的生成方法、装置及电子设备 | |
CN117555760B (zh) | 服务器监测方法及装置、基板控制器及嵌入式系统 | |
WO2024221468A1 (zh) | 嵌入式系统的运行方法和装置、嵌入式系统及芯片 | |
CN116521324B (zh) | 中断虚拟化处理方法、装置及电子设备 | |
CN116881929B (zh) | 安全防护方法、装置、电子设备以及基板控制器芯片 | |
KR20240159788A (ko) | 하드웨어 인터페이스 신호의 생성 방법, 장치 및 전자 기기 | |
CN113867835B (zh) | 用于dsp动态加载的装置及方法 | |
CN117149471B (zh) | 通信方法、装置、嵌入式系统、存储介质以及电子设备 | |
CN214151686U (zh) | 一种自动切换更新基本输入输出的装置 | |
KR20240159791A (ko) | 운영체제 실행 제어 방법과 장치, 및 임베디드 시스템과 칩 | |
KR20240159789A (ko) | 임베디드 시스템 부팅 제어 방법과 장치, 저장 매체 및 전자 기기 | |
KR20240159790A (ko) | 임베디드 시스템의 실행 방법 및 장치, 임베디드 시스템 및 칩 | |
CN117724877A (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 |