The present application is a national phase entry under 35 U.S.C. § 371 of International Application No. PCT/CN2014/080587, filed Jun. 24, 2014, entitled “FIRMWARE SENSOR LAYER”, which designated, among the various States, the United States of America. The Specification of the PCT/CN2014/080587 Application is hereby fully incorporated by reference.
Embodiments of the present disclosure are related to the field of computing devices, and in particular, to providing firmware sensor support for operating system-absent operation of the computing device.
The background description provided herein is for the purpose of generally presenting the context of the disclosure. Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Virtually all computing devices go through a booting (initialization) process during power on or reset. Typically, during the booting (initialization) process, a power-on self-test is performed, and then peripheral devices are located and initialized, ending with the loading and starting of an operating system. Modern computing platforms contain an abundance of sensors that may continuously collect sensor information. Under the current state of the art, however, the sensor information is accessible only through a sensor layer of an operating system of the computing device. As such, usage of sensor data during the boot process of a computing device, or on a computing device without an operating system, is not available.
Computing devices, methods, and storage media for a sensor layer and sensor usages in an operating system (OS)-absent environment are disclosed herein. In embodiments, a computing device may have a firmware sensor layer configured to receive sensor data produced by a variety of sensors, including during OS-absent operation, such as a boot process of the computing device or in an OS-absent operational mode. The firmware sensor layer may selectively provide the sensor data to one or more usage modules via an interface of the firmware sensor layer that abstracts the various sensors. In embodiments, the usage modules may be configured to act upon the sensor data in various ways, including, e.g., but not limited to, utilizing sensor data concerning environmental factors in deciding whether or not to terminate the boot process, utilizing the sensor data to seal data to the computing device, utilizing sensor data to verify the sensor or calibrate the sensor during the boot process.
In the following detailed description, reference is made to the accompanying drawings that form a part hereof wherein like numerals designate like parts throughout, and in which is shown, by way of illustration, embodiments that may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of embodiments is defined by the appended claims and their equivalents.
Various operations may be described as multiple discrete actions or operations in turn, in a manner that is most helpful in understanding the claimed subject matter. However, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations may not be performed in the order of presentation. Operations described may be performed in a different order than the described embodiment. Various additional operations may be performed and/or described operations may be omitted in additional embodiments.
For the purposes of the present disclosure, the phrase “A and/or B” means (A), (B), or (A and B). For the purposes of the present disclosure, the phrase “A, B, and/or C” means (A), (B), (C), (A and B), (A and C), (B and C), or (A, B, and C). The description may use the phrases “in an embodiment,” or “in embodiments,” which may each refer to one or more of the same or different embodiments. Furthermore, the terms “comprising,” “including,” “having,” and the like, as used with respect to embodiments of the present disclosure, are synonymous.
Hardware 100 may include one or more sensors 108 coupled with host controller 110. Sensors 108 may include any number or type of sensor including, but not limited to, image sensor; audio sensor; touch sensors; global positioning system (GPS); accelerometer; gyroscope; altimeter; moisture sensors; humidity sensors; light sensors; pressure sensors; signal related sensors, such as infrared, Bluetooth, or Wi-Fi; or any combination thereof. Host controller 110 may be configured to control various low-level data transmissions, including transmission of data packets to and from sensors 108, for example.
In embodiments, driver stack 104 may include one or more host controller drivers 112, one or more bus drivers 114, and one or more class drivers 116, all of which are referred to singularly hereinafter. Host controller driver 112 may, in some embodiments, be communicatively coupled with host controller 110 and bus driver 114. Host controller driver 112 maybe configured to provide a generic interface between bus driver 114 and host controller 110. Host controller driver 112 may include any type of customary host controller driver such as, but not limited to, an enhanced host controller interface (EHCI) driver, an open host controller interface (OHCI) driver, a universal host controller interface (UNCI), driver, or any combination thereof.
Bus driver 114 may be communicatively coupled with host controller driver 112 and class driver 116 and may be configured to interface between class driver 116 and host controller driver 112. Bus driver 114 may be configured to provide an array of services, such as, for example, handling connection of one or more pieces of hardware (e.g., sensor(s) 108) to the computing device as well as disconnection therefrom. Bus driver 114 may also provide basic initialization of the one or more pieces of hardware, driver selection for the one or more pieces of hardware, and/or higher-level management of communication channels with the one or more pieces of hardware. Communication bus driver 114 may be, for example, a universal serial bus (USB) driver, a Bluetooth driver, or any other suitable bus or communication driver.
Class driver 116 may be communicatively coupled with bus driver 114 and sensor layer 118 and may be configured to interface between sensor layer 118 and communication bus driver 114. Class driver 116 may be configured to implement an array of functionality utilizing a set of standardized protocols common to a class of hardware devices. Class driver 116 may, in some embodiments, provide sufficient functionality for the operation of hardware devices that fall within the class. In other embodiments, a separate driver that corresponds with a given hardware device may be utilized in place of, or in addition to, class driver 116. Class driver 116 may be any type of customary class driver, such as, for example, any of the USB class drivers, including, but not limited to, a human interface device (HID) class driver, physical interface device (PID) class driver, content security class driver, personal healthcare class driver, diagnostic device class driver, wireless controller class driver, etc.
Sensor layer 118 may be communicatively coupled with class driver 116 and one or more firmware usage modules (e.g., usage modules 120-126) and may be configured to interface between class driver 116 and the one or more firmware usage modules. In embodiments, sensor layer 118 may be configured to receive and aggregate sensor data produced by any number of sensors (e.g., sensor(s) 108) coupled with the computing device and may be configured to provide the data to the firmware usage modules via an interface that abstracts the sensors to the one or more firmware usage modules. This abstraction may obfuscate sensor-specific information, allowing the firmware usage modules access to data produced by individual sensors without needing to be aware of the specifics of the sensor hardware. In some embodiments, while obfuscating sensor-specific information, sensor layer 118 may also be configured to provide sensor-specific information upon request, such as that discussed in reference to the example process flows of
As discussed above, sensor layer 118 may be configured to provide sensor data to one or more usage modules, such as provisioning module 120, environmental factor boot module 122, sensor calibration module 124, and data security module 126. Usage modules 120-126 are merely meant to be illustrative and should not be viewed as limiting of this disclosure. In embodiments, usage modules 120-126 may be implemented as firmware to be executed in OS-absent contexts, such as during the boot process of the computing device or in an OS-absent operational mode, (e.g., the UEFI shell runtime discussed elsewhere herein), and may be configured to act upon sensor data collected and provided to the individual usage modules by sensor layer 118.
Provisioning module 120 may, in some embodiments, be configured to receive requests for sensor data from one or more requesters that may not have direct access to sensor layer 118, and provisioning module 120 may be configured to provide data from sensor layer 118 to these requesters. In some embodiments, provisioning module 120 may only provide the requested data if one or more predefined conditions are met by the requester and/or the sensor data. In other embodiments, provisioning module 120 may be configured to enable or disable one or more features of the computing device if one or more predefined conditions are met. These conditions may be defined within provisioning module 120 or may be defined by another firmware module that may be accessible to provisioning module 120. The conditions may include any condition based upon sensor data provided to provisioning module 120 by sensor layer 118. As an example, if provisioning module 120 detects from the sensor data that the computing device is booting in a low light environment, then provisioning module 120 may provision a backlight for a keyboard attached to the computing device.
Environmental factor boot module 122 may, in some embodiments, be configured to receive sensor data from sensor layer 118 and apply one or more policies based at least in part on the sensor data. These policies may be defined within environmental factor boot module 122 or may be defined by another firmware module that may be accessible to environmental factor boot module 122. In embodiments, the sensor data may be associated with environmental factors defined by the one or more policies. These environmental factors may include, but are not limited to, data concerning temperature, moisture, humidity, altitude, sound pressure level, audio frequency, vibration, velocity, acceleration, and/or lighting.
In some embodiments, the one or more policies may include termination of the boot process based upon one or more environmental factors. For instance, environmental factor boot module 122 may be configured to terminate the boot process, or cause the boot process to be terminated, if one or more of sensors 108 indicate that the computing device is booting in an inhospitable environment for the computing device. As an example, if the computing device is booting in an environment that is too hot for the computing device to function properly, environmental factor boot module 122 may be configured to terminate the boot process or cause the boot process to terminate.
In other embodiments, environmental factor boot module 122 may be configured to selectively instantiate, or cause to be instantiated, one or more drivers based at least in part on one or more environmental factors associated with the sensor data. For instance, and merely as an example, one driver, or set of drivers, may be selected for instantiation in low light conditions while another driver or set of drivers may be selected for instantiation in other higher light conditions. Such lighting conditions may be determined utilizing sensor data from a light sensor of the environment in which the computing device is operated.
Sensor calibration module 124 may be configured to receive sensor data from sensor layer 118 and validate or calibrate at least a portion of the sensor data. To validate the portion of the sensor data, the sensor calibration module 124 may utilize known reference data to compare with sensor data received from sensor layer 118 and may validate the sensor data received against the reference value. In some embodiments, the reference value may be previously stored sensor data. In other embodiments, the reference value may be sensor data provided by a reference sensor. In still other embodiments, the reference value may be a reference value provided by the sensor through sensor layer 118. In some embodiments, the sensor calibration module 124 may then verify the validation to an operating system, upon initiation of the operating system, to attest to the accuracy of the validated sensor data.
To calibrate the portion of the sensor data, the sensor calibration module 124 may seek to validate the received sensor data against a reference value, as discussed above, and may seek to calibrate the sensor data in the event the validation fails. In some embodiments, sensor calibration module 124 may interact with sensor layer 118 to adjust the sensor that produced the received sensor data to cause data produced by the sensor to match the reference value. In other embodiments, sensor calibration module 124 may directly manipulate the received data to cause the data to match the reference value. In such an embodiment, manipulated data may then be provided to a requester or a measure of the manipulation may be reported to a requester. For instance, sensor calibration module 124 may provide a measure of the manipulation to an application that may utilize the measure of the manipulation to calibrate data provided to the application by sensor layer 118 or directly from the respective sensor.
Data security module 126 may be configured to secure, or seal, data to the computing device. In embodiments, data security module 126 may be configured to seal data to the computing device by encrypting the data utilizing local sensor information, which may then prevent the data from being decrypted without the local sensor information. The process for this is described in greater detail in reference to
After initialization of the basic firmware, the process may proceed to block 206 where a UEFI phase may be initiated. The UEFI phase may initiate a driver execution environment (DXE) in which various processes may be performed, including the discovery of sensors at block 208. The sensors may be, for example, any type of sensor discussed herein. Once the sensors have been discovered, any usage modules may be loaded at block 210. These usage modules may include, for example, provisioning module 212, data security module 214, calibration module 216, and environmental factor boot module 218. Each of these usage modules may be configured to perform the functionality described elsewhere herein. The usage modules may be loaded by loading a set of instructions for implementing the individual usage modules into a memory of the computing device for execution thereof by a processor coupled with the memory.
The usage modules may also be initialized at block 210. This may include resetting any values associated with the individual usage modules that may not be persisted. For example, if a previous boot had triggered termination of the boot process by, or at the request of, environmental factor boot module 218, this may be carried out by a boot termination value, stored within environmental factor boot module 218 or within a memory accessible by environmental factor boot module 218, being set to a termination value, such as “1” to indicate that the termination value is true. In such a scenario, this termination value may be reset to a default value, such as “0” to indicate that the termination value is false.
After the usage modules have been loaded and initialized, the process may proceed to block 220 where it may be determined whether the computing device is within a sensor polling interval. If the computing device is within the sensor polling interval, the process may proceed to block 222 where a determination may be made as to whether any sensors are available. If there are no sensors available, the process may proceed to block 224 where a local report is generated and the process may loop back to block 220. If there are sensors available, the process may proceed to block 226 where the sensor data is collected and logged by a sensor layer, such as that described elsewhere herein. From block 226, the process may proceed to block 228 where the usage modules, e.g., usage modules 212-218 may be executed to perform any of the processes or functionalities described herein. Block 228 may be, for example, where the termination value, discussed above, is changed from false to true by environmental factor boot module 218 to cause the termination of the boot process based on one or more environmental factors. After block 228 is complete, the process may loop back to block 220 where this process may repeat.
If, at block 220, the computing device is not in a sensor polling interval, then the process may enter the BDS phase and proceed to block 230 where a determination may be made as to whether or not it is time to load and start the operating system (OS). If it is not time to initialize the OS, the process may proceed to block 224 where a local report is generated and the process may then loop back to block 220. If it is time to initialize the OS at block 230, then the process may proceed to block 232 where a determination is made as to whether the conditions for initialization are satisfied. Block 232 is where a variable such as the termination value may be evaluated to determine whether the boot process should proceed or be terminated. If block 232 is resolved in the negative, then the process may proceed to block 234 where the boot process may be terminated. As an example, if the termination value discussed above is true, then the result of block 232 may be negative and the boot process may be terminated at block 234. If block 232 is resolved in the affirmative, then the process may proceed to block 236 where the sensor information may be passed to the OS. In embodiments, where calibration module 216 verifies the results of one or more sensors or calibrates the one or more sensors, this verification or the calibration information may be passed to the OS at block 236 as well. At block 238, the computing device may enter the OS runtime environment and the process may end.
In an alternate embodiment, such as, for example, where the computing device may be an internet of things (IOT) edge device, a full operating system may not be necessary for the proper functioning of the computing device and the computing device may operate in an OS-absent operational mode. In another embodiment OS-absent mode may include when the main OS is suspended, such as via the invocation of a system management interrupt (SMI) leading to passing control of the main CPU's into system management mode (SMM). In such embodiments, the functionality depicted within block 240 may be replaced with the functionality depicted in block 242. In such an embodiment, if the sensor polling interval is finished, then the process may proceed to block 244 where a determination may be made as to whether or not it is time to initialize the unified extensible firmware interface (UEFI) operating environment (e.g., a UEFI Shell runtime). If it is not time to initialize the UEFI shell operating environment, the process may proceed to block 224 where a local report is generated and the process may then loop back to block 220. If it is time to initialize the UEFI shell operating environment at block 244, then the process may proceed to block 246 where a determination is made as to whether the conditions for initialization of the UEFI shell operating environment are satisfied. Block 246 is where a variable such as the termination value may be evaluated to determine whether the boot process should proceed or be terminated. If block 246 is resolved in the negative, then the process may proceed to block 234, discussed above, where the boot process may be terminated. As an example, if the termination value discussed above is true, then the result of block 246 may be negative and the boot process may be terminated at block 234. If block 246 is resolved in the affirmative, then the process may proceed to block 248 where the UEFI shell operating environment may be initialized. In embodiments, where calibration module 216 verifies the results of one or more sensors or calibrates the one or more sensors, this verification or the calibration information may be passed to the UEFI shell operating environment at block 248 as well. At block 250, the computing device may enter the UEFI shell runtime and the process may end.
The SEC phase 302 may hand off to a pre-extensible firmware interface (PEI) phase 304. In the PEI phase 304, a PEI module may be executed, or caused to be executed, at 316 by the BIOS. The PEI module may initialize, or cause the initialization of, the CPU of the computing device at 318, a chipset of the computing device at 320, and a motherboard of the computing device at 322. The PEI phase 304 may prepare the computing device for the driver execution environment (DXE) phase 306. Boot services and runtime services along with driver execution environment (DXE) dispatcher may be executed, or caused to executed, by the BIOS at 326 and 324, respectively. PEI phase 304 may hand off to DXE phase 306.
During DXE phase 306, firmware may be executed, such as DXE dispatcher at 324, which may be responsible for searching for and initializing drivers that provide device support during the boot process. As such, the DXE dispatcher may initialize a series of device, bus, and service drivers in blocks 328, such as drivers 112-116 of
The boot dispatcher may implement a platform boot policy and may execute, or cause the execution of, transient OS boot loader at 332 and/or may execute, or cause the execution of, final OS boot loader at 338 during transient system toad (TSL) phase 310. In one embodiment, during TSL phase 310, transient OS boot loader at 332 may initiate execution of the UEFI shell at 334, which in turn may initiate execution of OS-absent application(s) at 336. The final OS boot loader may finalize the OS environment at 342, at which point the BIOS may hand over control of the computing device to the OS of the computing device. During the runtime phase the finalized OS environment may execute OS-present application(s) at 340.
In other embodiments, process 300 may be carried out independent of an OS in an OS-absent environment. An OS-absent environment may be implemented, for example, on an internet of things (IOT) edge device or any other computing device that does not require the full functionality provided by an OS. In such an environment, TSL phase 310 and RT phase 312 may be omitted and replaced with UEFI shell runtime phase 346 depicted in block 344 which may cause the computing device to achieve a UEFI operational state. In such an embodiment, boot dispatcher 330 may implement a platform boot policy and may execute, or cause the execution of, UEFI shell boot loader 346. UEFI shell boot loader 346 may initiate execution of the UEFI Shell runtime at 350 which may in turn initiate execution of one or more UEFI shell applications at 352. As such, the UEFI shell may maintain control of the computing device. The above mentioned UEFI shell applications may include, for example, the firmware sensor layer and/or sensor usages discussed above. As an example, firmware, such as provisioning module 120 of
Each of these elements may perform its conventional functions known in the art. In particular, system memory 604 and firmware storage 606 may be employed to store a working copy and a permanent copy of programming instructions implementing the operations described earlier, e.g., but not limited to, operations associated with a firmware sensor layer and/or sensor usage modules, generally referred to as computational logic 622. The various operations may be implemented by assembler instructions supported by processor(s) 602 or high-level languages, such as, for example, C, that may be compiled into such instructions.
The permanent copy of the programming instructions may be placed into firmware storage 606 in the factory, or in the field, through, for example, a distribution medium (not shown), such as a compact disc (CD), or through communication interface 612 (from a distribution server (not shown)). That is, one or more distribution media having an implementation of a firmware sensor layer and/or one or more sensor usage modules may be employed to distribute the sensor layer and/or one or more sensor usage modules to various computing devices.
The number, capability, and/or capacity of these elements 610-614 may vary, depending on the intended use of example computing device 600, e.g., whether example computing device 600 is a laptop, a netbook, a notebook, an ultrabook, a smartphone, a tablet, a personal digital assistant, an ultra-mobile personal computer, a mobile phone, a desktop computer, a server, an internet of things device, or a set-top box. The constitutions of these elements 610-614 are otherwise known, and accordingly will not be further described.
Referring back to
For the purposes of this description, a computer-usable or computer-readable medium can be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be volatile or non-volatile memory. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable storage medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W), and DVD.
Embodiments of the disclosure can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. In various embodiments, software may include, but is not limited to, firmware, resident software, microcode, and the like. Furthermore, the disclosure can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent implementations may be substituted for the specific embodiments shown and described, without departing from the scope of the embodiments of the disclosure. This application is intended to cover any adaptations or variations of the embodiments discussed herein. Therefore, it is manifestly intended that the embodiments of the disclosure be limited only by the claims and the equivalents thereof.
According to various embodiments, the present disclosure describes a number of examples. Example 1 is a computing device for computing, comprising: a processor; and firmware to be operated by the processor that includes one or more modules and a sensor layer to: receive, in an operating system (OS)-absent firmware environment, sensor data produced by a plurality of sensors, wherein the plurality of sensors are of the computing device or operatively coupled with the computing device; and selectively provide the sensor data to the one or more modules via an interface of the sensor layer that abstracts the plurality of sensors.
Example 2 may include the subject matter of Example 1, further comprising an operating system to be instantiated on the computing device, wherein the firmware is independent of the operating system.
Example 3 may include the subject matter of Example 1, wherein the one or more modules includes an environmental factor boot module to: receive a portion of sensor data from the sensor layer through the interface of the sensor layer; and apply one or more policies based at least in part on the portion of sensor data, wherein the portion of sensor data is associated with one or more environmental factors defined by the one or more policies
Example 4 may include the subject matter of Example 3, wherein to apply one or more policies is to terminate a boot process, of the computing device, when a determination is made that the one or more policies are violated, based at least in part on the portion of sensor data associated with the one or more environmental factors.
Example 5 may include the subject matter of Example 3, wherein to apply one or more policies is to selectively instantiate one or more drivers based at least in part on the portion of sensor data associated with the environmental factors.
Example 6 may include the subject matter of any one of Examples 3-5, wherein the environmental factors include one or more of temperature, moisture, humidity, altitude, sound pressure level, audio frequency, vibration, velocity, acceleration, or lighting.
Example 7 may include the subject matter of Example 1, wherein the one or more firmware modules includes a sensor calibration module to: validate a sensor of the plurality of sensors based at least in part on the portion of sensor data produced by the sensor; or calibrate a sensor of the plurality of sensors based at least in part on the portion of sensor data produced by the sensor.
Example 8 may include the subject matter of Example 7, wherein the sensor calibration module is to validate a sensor of the plurality of sensors and is further to verify to an operating system of the computing device the validity of the sensor data produced by the sensor.
Example 9 may include the subject matter of Example 7, wherein the sensor calibration module is to calibrate the sensor of the plurality of sensors through: interaction with the sensor layer to cause the sensor data produced by the sensor to match a reference value; or manipulation of the sensor data to cause the sensor data to match the reference value.
Example 10 may include the subject matter of Example 1, wherein the one or more firmware modules includes a data security module to: receive data to be encrypted; generate an encryption key based at least in part on local sensor information received from the sensor layer; encrypt the data utilizing the encryption key; and persist the local sensor information in a memory of the computing device as encryption information.
Example 11 may include the subject matter of Example 10, wherein the data security module is to further: receive a request to decrypt the data; receive additional local sensor information from the sensor layer; retrieve the encryption information; generate a decryption key based at least in part on the additional local sensor information when the additional local sensor information matches the encryption information; and decrypt the information utilizing the decryption key.
Example 12 may include the subject matter of either of Examples 10 or 11, wherein the local sensor information includes one or more of sensor readings, sensor state, or sensor calibration.
Example 13 may include the subject matter of Example 1, wherein the OS-absent firmware environment is a unified extensible firmware interface (UEFI) environment of a boot process.
Example 14 may include the subject matter of Example 13, wherein the OS-absent firmware environment is a driver execution environment (DXE) of the UEFI environment.
Example 15 may include the subject matter of Example 13, wherein the computing device is independent of an operating system and the boot process is to instantiate an extensible firmware interface operating environment to result in the computing device achieving an OS-absent operational state.
Example 16 may include the subject matter of any one of Examples 1-15, wherein one or more sensors of the plurality of sensors are disposed on the computing device, and operatively coupled with the processor via a bus interface.
Example 17 may include the subject matter of any one of Examples 1-15, wherein one or more sensors of the plurality of sensors are communicatively coupled with the computing device via a human interface device, HID, driver.
Example 18 may include the subject matter of any one of Example 1 or 3-15, wherein the computing device is an internet of things edge device comprising the plurality of sensors.
Example 19 may include the subject matter of any one of Examples 1-15, wherein the computing device is selected from a group consisting of a laptop, a netbook, a notebook, an ultrabook, a smartphone, a tablet, a personal digital assistant, an ultra-mobile personal computer, a mobile phone, a desktop computer, a server, an internet of things device, or a set-top box.
Example 20 is a method for computing, comprising: instantiating, by an operating system (OS)-absent firmware environment of a computing device, a sensor layer having an interface that provides an abstraction of a plurality of sensors; receiving, by the sensor layer in the OS-absent firmware environment, sensor data produced by a plurality of sensors; and selectively providing, by the sensor layer, the sensor data to one or more firmware modules via the interface of the sensor layer.
Example 21 may include the subject matter of Example 20, wherein the operating system (OS)-absent firmware environment is part of a boot process to result in the instantiation of an operating system on the computing device, and wherein the firmware environment is independent of the operating system.
Example 22 may include the subject matter of Example 20, wherein the one or more firmware modules include an environmental factor boot module and further comprising: receiving, by the environmental factor boot module, a portion of sensor data from the sensor layer through the interface of the sensor layer; and applying, by the environmental factor boot module, one or more policies based at least in part on the portion of sensor data, wherein the portion of sensor data is associated with one or more environmental factors defined by the one or more policies
Example 23 may include the subject matter of Example 22, wherein applying the one or more policies further comprises: determining whether the one or more policies are violated based at least in part on the portion of sensor data associated with the one or more environmental factors; and terminating a boot process, of the computing device, based at least in part on a result of the determining.
Example 24 may include the subject matter of Example 22, wherein applying one or more policies further comprises selectively instantiating one or more drivers based at least in part on the portion of sensor data associated with the environmental factors.
Example 25 may include the subject matter of any one of Examples 22-24, wherein the environmental factors include one or more of temperature, moisture, humidity, altitude, sound pressure level, audio frequency, vibration, velocity, acceleration, or lighting.
Example 26 may include the subject matter of Example 20, wherein the one or more firmware modules include a sensor calibration module and further comprising: validating, by the sensor calibration module, a sensor of the plurality of sensors based at least in part on the portion of sensor data produced by the sensor; or calibrating, by the sensor calibration module, a sensor of the plurality of sensors based at least in part on the portion of sensor data produced by the sensor.
Example 27 may include the subject matter of Example 26, wherein validating a sensor of the plurality of sensors further comprises verifying to an operating system of the computing device the validity of the sensor data produced by the sensor.
Example 28 may include the subject matter of Example 26, wherein calibrating the sensor of the plurality of sensors further comprises: interacting with the sensor layer to cause the sensor data produced by the sensor to match a reference value; or manipulating the sensor data to cause the sensor data to match the reference value.
Example 29 may include the subject matter of Example 20, wherein the one or more firmware modules include a data security module and further comprising: receiving, by the data security module, data to be encrypted; generating, by the data security module, an encryption key based at least in part on local sensor information received from the sensor layer; encrypting, by the data security module, the data utilizing the encryption key; and persisting, by the data security module, the local sensor information in a memory of the computing device as encryption information.
Example 30 may include the subject matter of Example 29, further comprising: receiving, by the data security module, a request to decrypt the data; receiving, by the data security module, additional local sensor information from the sensor layer; retrieving, by the data security module, the encryption information; generating, by the data security module, a decryption key based at least in part on the additional local sensor information when the additional local sensor information matches the encryption information; and decrypting, by the data security module, the data utilizing the decryption key.
Example 31 may include the subject matter of either of Examples 29 or 30, wherein the local sensor information includes one or more of sensor readings, sensor state, or sensor calibration.
Example 32 may include the subject matter of Example 20, wherein the OS-absent firmware environment is a unified extensible firmware interface (UEFI) environment of a boot process of the computing device.
Example 33 may include the subject matter of Example 32, wherein the OS-absent firmware environment is a driver execution environment (DXE) of the UEFI environment.
Example 34 may include the subject matter of Example 32, wherein the computing device is independent of an operating system and further comprising instantiating, by the firmware environment, an extensible firmware interface operating environment resulting in the computing device achieving an OS-absent operational state.
Example 35 may include the subject matter of Example 20, wherein one or more sensors of the plurality of sensors are disposed on the computing device, and operatively coupled with the processor via a bus interface.
Example 36 may include the subject matter of Example 20, wherein one or more sensors of the plurality of sensors are communicatively coupled with the computing device via a human interface device, HID, driver.
Example 37 may include the subject matter of Example 20, wherein the computing device is an internet of things edge device comprising the plurality of sensors.
Example 38 may include the subject matter of Example 20, wherein the computing device is selected from a group consisting of a laptop, a netbook, a notebook, an ultrabook, a smartphone, a tablet, a personal digital assistant, an ultra-mobile personal computer, a mobile phone, a desktop computer, a server, or a set-top box.
Example 39 is one or more computer-readable media having a plurality of instructions stored thereon, the plurality of instructions, when executed by a processor of a computing device, cause the computing device to carry out the method of any one of Examples 20-38.
Example 40 is one or more computer-readable media having a plurality of instructions stored thereon, the plurality of instructions, when executed by a processor of a computing device, provide the computing device with a firmware environment that includes one or more modules and a sensor layer to, the sensor layer to: receive, in an operating system (OS)-absent environment, sensor data produced by a plurality of sensors, wherein the plurality of sensors are of the computing device or operatively coupled with the computing device; and selectively provide the sensor data to the one or more modules via an interface of the sensor layer that abstracts the plurality of sensors.
Example 41 may include the subject matter of Example 40, wherein the firmware is independent of an operating system of the computing device.
Example 42 may include the subject matter of Example 40, wherein the one or more modules includes an environmental factor boot module to: receive a portion of sensor data from the sensor layer through the interface of the sensor layer; and apply one or more policies based at least in part on the portion of sensor data, wherein the portion of sensor data is associated with one or more environmental factors defined by the one or more policies
Example 43 may include the subject matter of Example 42, wherein to apply one or more policies is to terminate a boot process, of the computing device, when a determination is made that the one or more policies are violated, based at least in part on the portion of sensor data associated with the one or more environmental factors.
Example 44 may include the subject matter of Example 42, wherein to apply one or more policies is to selectively instantiate one or more drivers based at least in part on the portion of sensor data associated with the environmental factors.
Example 45 may include the subject matter of any one of Examples 42-44, wherein the environmental factors include one or more of temperature, moisture, humidity, altitude, sound pressure level, audio frequency, vibration, velocity, acceleration, or lighting.
Example 46 may include the subject matter of Example 39, wherein the one or more firmware modules includes a sensor calibration module to: validate a sensor of the plurality of sensors based at least in part on the portion of sensor data produced by the sensor; or calibrate a sensor of the plurality of sensors based at least in part on the portion of sensor data produced by the sensor.
Example 47 may include the subject matter of Example 46, wherein the sensor calibration module is to validate a sensor of the plurality of sensors and is further to verify to an operating system of the computing device the validity of the sensor data produced by the sensor.
Example 48 may include the subject matter of Example 46, wherein the sensor calibration module is to calibrate the sensor of the plurality of sensors through: interaction with the sensor layer to cause the sensor data produced by the sensor to match a reference value; or manipulation of the sensor data to cause the sensor data to match the reference value.
Example 49 may include the subject matter of Example 40, wherein the one or more firmware modules includes a data security module to: receive data to be encrypted; generate an encryption key based at least in part on local sensor information received from the sensor layer; encrypt the data utilizing the encryption key; and persist the local sensor information in a memory of the computing device as encryption information.
Example 50 may include the subject matter of Example 49, wherein the data security module is to further: receive a request to decrypt the data; receive additional local sensor information from the sensor layer; retrieve the encryption information; generate a decryption key based at least in part on the additional local sensor information when the additional local sensor information matches the encryption information; and decrypt the data utilizing the decryption key.
Example 51 may include the subject matter of either of Examples 49 or 50, wherein the local sensor information includes one or more of sensor readings, sensor state, or sensor calibration.
Example 52 may include the subject matter of Example 40, wherein the OS-absent firmware environment is a unified extensible firmware interface (UEFI) environment of a boot process.
Example 53 may include the subject matter of Example 40, wherein the OS-absent firmware environment is a driver execution environment (DXE) of the UEFI environment.
Example 54 may include the subject matter of Example 52, wherein the boot process is to instantiate an extensible firmware interface operating environment that results in the computing device achieving an operational state.
Example 55 may include the subject matter of Example 40, wherein one or more sensors of the plurality of sensors are disposed on the computing device, and operatively coupled with the processor via a bus interface.
Example 56 may include the subject matter of Example 40, wherein one or more sensors of the plurality of sensors are communicatively coupled with the computing device via a human interface device, HID, driver, and wherein the sensor layer is further to utilize the HID device driver to communicate with the plurality of sensors.
Example 57 may include the subject matter of Example 40, wherein the computing device is an internet of things edge device comprising the plurality of sensors.
Example 58 may include the subject matter of Example 40, wherein the computing device is selected from a group consisting of a laptop, a netbook, a notebook, an ultrabook, a smartphone, a tablet, a personal digital assistant, an ultra-mobile personal computer, a mobile phone, a desktop computer, a server, or a set-top box.
Example 59 is a computing device for computing comprising: means for instantiating, in an operating system (OS)-absent firmware environment, a sensor layer having an interface that provides an abstraction of a plurality of sensors; means for receiving, in the OS-absent firmware environment, data produced by a plurality of sensors, wherein the plurality of sensors are of the computing device or operatively coupled with the computing device; and means for selectively providing the sensor data to one or more firmware modules via the interface of the sensor layer.
Example 60 may include the subject matter of Example 59, wherein the OS-absent firmware environment is part of a boot process to result in the instantiation of an operating system on the computing device.
Example 61 may include the subject matter of Example 59, wherein the one or more firmware modules include an environmental factor boot module, the environmental factor boot module comprising: means for receiving a portion of sensor data from the sensor layer through the interface of the sensor layer; and means for applying one or more policies based at least in part on the portion of sensor data, wherein the portion of sensor data is associated with one or more environmental factors defined by the one or more policies
Example 62 may include the subject matter of Example 61, wherein means for applying the one or more policies further comprises: means for determining whether the one or more policies are violated based at least in part on the portion of sensor data associated with the one or more environmental factors; and means for terminating a boot process, of the computing device, based at least in part on a result of the determining.
Example 63 may include the subject matter of Example 61, wherein means for applying one or more policies further comprises means for selectively instantiating one or more drivers based at least in part on the portion of sensor data associated with the environmental factors.
Example 64 may include the subject matter of any one of Examples 61-63, wherein the environmental factors include one or more of temperature, moisture, humidity, altitude, sound pressure level, audio frequency, vibration, velocity, acceleration, or lighting.
Example 65 may include the subject matter of Example 59, wherein the one or more firmware modules include a sensor calibration module, the sensor calibration module comprising: means for validating a sensor of the plurality of sensors based at least in part on the portion of sensor data produced by the sensor; or means for calibrating a sensor of the plurality of sensors based at least in part on the portion of sensor data produced by the sensor.
Example 66 may include the subject matter of Example 65, wherein means for validating a sensor of the plurality of sensors further comprises means for verifying to an operating system of the computing device the validity of the sensor data produced by the sensor.
Example 67 may include the subject matter of Example 65, wherein means for calibrating the sensor of the plurality of sensors further comprises: means for interacting with the sensor layer to cause the sensor data produced by the sensor to match a reference value; or means for manipulating the sensor data to cause the sensor data to match the reference value.
Example 68 may include the subject matter of Example 59, wherein the one or more firmware modules include a data security module, the data security module comprising: means for receiving data to be encrypted; means for generating an encryption key based at least in part on local sensor information received from the sensor layer; means for encrypting the data utilizing the encryption key; and means for persisting the local sensor information in a memory of the computing device as encryption information.
Example 69 may include the subject matter of Example 68, wherein the data security module further comprises: means for receiving a request to decrypt the data; means for receiving additional local sensor information from the sensor layer; means for retrieving the encryption information; means for generating a decryption key based at least in part on the additional local sensor information when the additional local sensor information matches the encryption information; and means for decrypting the data utilizing the decryption key.
Example 70 may include the subject matter of either of Examples 68 or 69, wherein the local sensor information includes one or more of sensor readings, sensor state, or sensor calibration.
Example 71 may include the subject matter of Example 59, wherein the OS-absent firmware environment is a unified extensible firmware interface (UEFI) environment of a boot process.
Example 72 may include the subject matter of Example 71, wherein the OS-absent firmware environment is a driver execution environment (DXE) of the UEFI environment.
Example 73 may include the subject matter of Example 71, wherein the computing device is independent of an operating system and further comprising means for instantiating an extensible firmware interface operating environment resulting in the computing device achieving an operational state.
Example 74 may include the subject matter of Example 59, wherein one or more sensors of the plurality of sensors are disposed on the computing device.
Example 75 may include the subject matter of Example 59, wherein one or more sensors of the plurality of sensors are communicatively coupled with the computing device via a human interface device, HID, driver.
Example 76 may include the subject matter of Example 59, wherein the computing device is an internet of things edge device comprising the plurality of sensors.
Example 77 may include the subject matter of Example 59, wherein the computing device is selected from a group consisting of a laptop, a netbook, a notebook, an ultrabook, a smartphone, a tablet, a personal digital assistant, an ultra-mobile personal computer, a mobile phone, a desktop computer, a server, or a set-top box.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/CN2014/080587 | 6/24/2014 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2015/196347 | 12/30/2015 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
7844866 | Austen et al. | Nov 2010 | B2 |
8271202 | Fernandez | Sep 2012 | B1 |
9141803 | Klyuchevskyy | Sep 2015 | B2 |
9519306 | Kishiro | Dec 2016 | B2 |
9575791 | Martinez | Feb 2017 | B2 |
20050285789 | Velhal | Dec 2005 | A1 |
20050289403 | Rothman | Dec 2005 | A1 |
20060150183 | Chinya | Jul 2006 | A1 |
20080046546 | Parmar et al. | Feb 2008 | A1 |
20080294295 | Chiu | Nov 2008 | A1 |
20090184849 | Nasiri | Jul 2009 | A1 |
20090241182 | Jaber | Sep 2009 | A1 |
20110103583 | Yoon | May 2011 | A1 |
20110215952 | Aria | Sep 2011 | A1 |
20120214515 | Davis | Aug 2012 | A1 |
20120254878 | Nachman et al. | Oct 2012 | A1 |
20120260323 | San Vicente | Oct 2012 | A1 |
20130159223 | Bahl | Jun 2013 | A1 |
20130227261 | Anderson | Aug 2013 | A1 |
20130238535 | Leppanen | Sep 2013 | A1 |
20140153724 | Kim | Jun 2014 | A1 |
20160061469 | Albonesi | Mar 2016 | A1 |
20160198018 | Choi | Jul 2016 | A1 |
20170060574 | Malladi | Mar 2017 | A1 |
Number | Date | Country |
---|---|---|
1445668 | Oct 2003 | CN |
101311899 | Nov 2008 | CN |
103221919 | Jul 2013 | CN |
2014509765 | Apr 2014 | JP |
WO 2011103652 | Sep 2011 | WO |
WO2013126411 | Aug 2013 | WO |
WO2014043056 | Mar 2014 | WO |
WO2014063330 | May 2014 | WO |
Entry |
---|
International Search Report and Written Opinion dated Mar. 23, 2015 for International Application No. PCT/CN2014/080587, 13 pages. |
Partial Supplementary European Search Report dated Jan. 31, 2018 for European Patent Application No. 14895738.4, 16 pages. |
Srividya G. Kedlaya et al., “Design and Implementation of GPIO Enumeration Library and Application for UEFI-BIOS”, International Journal of Scientific Engineering and Technology, May 1, 2014, pp. 524-528. |
Office Action dated Dec. 19, 2017 for Japanese Patent Application No. 2016-567585, 4 pages. |
Office Action dated Dec. 4, 2017 for Korean Patent Application No. 10-2016-7032443, 9 pages. |
Extended European Search Report dated May 3, 2018 for European Patent Application No. 14895738.4, 12 pages. |
Srividya G Kedlaya et al., “Design and Implementation of GPIO Enumeration Library and Application for UEFI-BIOS”, May 1, 2014, 5 pages, International Journal of Scientific Engineering and Technology, vol. No. 3, Issue No. 5. |
Number | Date | Country | |
---|---|---|---|
20160216974 A1 | Jul 2016 | US |