Mobile phones and other mobile devices are configured with software, such as Operating System (OS) software, modem communication software and other device specific software that is typically installed within a hard drive or other non-volatile storage location, such as an eMMC (embedded multimedia card), during a process called ‘flashing.’
Device flashing can be performed by an OEM (Original Equipment Manufacturer) prior to distribution, by an intermediary vendor subsequent to distribution, and/or by end users.
During flashing, a mobile device is physically tethered to a computing system, referred to herein as a workbench or workbench computing system, which contains the software to be installed on the mobile device. A USB cable is typically used to physically tether the mobile device to the workbench during flashing. It is also possible to use a USB hub to physically tether multiple devices to a single workbench for concurrent flashing of multiple devices during a single flashing session.
The software to be installed on the device(s) is first formatted into an appropriate image file and is transmitted through the physical tether to the device. There are various file formats that can be used for transmitting software images during flashing, such as a .WIM (Windows Image) format, a .VHD/.VHDX (Virtual Hard Disk) format, a .FFU (Full Flash Update) format, and other formats.
The flashed images (irrespective of file formatting) are typically segmented prior to transmission and are incrementally transmitted and written to the hard drive, eMMC, or other persistent storage of the device during a flashing session. In such instances, a subsequent segment image/file is only transmitted upon receiving confirmation that the previous segment has been successfully written to the persistent storage of the device (e.g., the eMMC of the device). If a particular segment is not successfully transmitted and/or written to the persistent storage of the device, due to one or more transmission or writing errors, that particular segment will be retransmitted.
Upon fully installing each of the transmitted segments of the image file to the persistent storage of the device, the device can be de-tethered from the workbench computing system and a new/next device can be tethered and flashed from the workbench. The tether time that necessarily occurs during flashing, represents a limitation experienced by OEMs and vendors in efficiently flashing multiple devices.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced.
The disclosed embodiments include systems, methods and storage devices configured for facilitating flashing of mobile devices. Some disclosed embodiments include burst flashing of mobile devices in such a way as to facilitate a reduction in time required for tethering the mobile devices that are tethered during the flashing session and by transmitting all data required for flashing the device to the volatile memory of the mobile device and de-tethering the mobile device prior to all of the transmitted data being written to the non-volatile memory of the mobile device.
In some instances, a workbench computing system is configured for burst flashing a mobile device. This is accomplished, for example, by the workbench computing system identifying a payload to be flashed to a non-volatile memory of a mobile device and segmenting the payload into a full set of payload segments for transmission to a mobile device and that is tethered to the workbench computing system. The workbench computing system sends the full set of payload segments to the mobile device which is tethered to the workbench computing system, wherein the full set of payload segments is transmitted to the mobile device with one or more payload transmissions. The full set of payload segments is initially written to volatile memory of the device, concurrently or in stages, prior to being written to the non-volatile memory of the mobile device. Then, the workbench computing system obtains confirmation that the full set of payload segments has been received by the mobile device, while at least some portion of the full set of payload segments still remains within the volatile memory of the mobile device. Once all of the payload segments have been transmitted to the mobile device, the mobile device can be de-tethered from the workbench computing system, even while one or more of the segments remain within the volatile memory of the device and prior to the full set of payload segments having been written to the non-volatile memory of the mobile device.
From the perspective of the mobile device during burst flashing, the mobile device receives the full set of payload segments to be flashed from the workbench computing system while the mobile device is tethered to the workbench computing system. Then, the mobile device writes the full set of payload segments to volatile memory of the mobile device while the mobile device is still tethered to the workbench computing system. Thereafter, the payload segments are written from the volatile memory to the non-volatile memory of the mobile device. Confirmation is made by the mobile device that the full set of payload segments has been received by the mobile device prior to writing all of the full set of payload segments to the non-volatile memory of the mobile device. One or more receipt acknowledgements are also sent, in some embodiments, to the workbench computing system corresponding to receipt of the full set of payload segments, and prior to the full set of payload segments being written to the non-volatile memory of the mobile device, for providing notice that the mobile device can be de-tethered from the workbench computing system (even prior to all of the segments having been written to the non-volatile memory of the mobile device).
In some embodiments, a method for flashing mobile devices includes tethering a mobile device to a workbench and using the workbench computing system to access a payload to be flashed to non-volatile memory of the mobile device. The method also includes using the workbench computing system to segment the payload into a full set of payload segments that are transmitted by the mobile device to the mobile device in one or more payload transmissions. Each of the payload segments is initially written to volatile memory of the device, prior to being written to the non-volatile memory of the mobile device. This method also includes obtaining a confirmation that the full set of payload segments has been received by the mobile device, while at least some portion of the full set of payload segments still remains within the volatile memory of the mobile device, and prior to the full set of payload segments being written to the non-volatile memory of the mobile device. Finally, the mobile device is de-tethered from the workbench and, in some instances, prior to each of the payload segments being written to the non-volatile memory of the mobile device.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Additional features and advantages will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the teachings herein. Features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. Features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description of the subject matter briefly described above will be rendered by reference to specific embodiments which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments and are not therefore to be considered to be limiting in scope, embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
The disclosed embodiments include systems, methods and storage devices for facilitating flashing of mobile devices in a manner that is referred to herein as ‘burst flashing.’
Burst flashing is performed, according to some embodiments, in such a manner as to facilitate a reduction in time required for tethering of mobile devices that are being flashed, at least relative to currently known slower flashing techniques. This represents a significant technical benefit in the industry of mobile device manufacture and distribution. For instance, in some embodiments, the disclosed burst flashing can significantly improve the efficacy and speed of flashing mobile devices.
This workbench computing system can be an isolated and stand-alone computing system or an integrated computing system that is connected to one or more distributed systems 130 through a corresponding network 140. These distributed systems 130 can be remotely located from the workbench computing system 120 or locally located relative to the workbench computing system 120.
The bursting workbench computing system 120 is physically tethered to the mobile device(s) 110 during the flashing session with one or more interface component(s)/system(s), such as a USB cable or another similar interface cable between the workbench 120 and the mobile device(s) 110. In some instances, one or more an intermediary USB hubs and/or other computing components are connectively positioned between the workbench 120 and the mobile device(s) with the USB cable.
The workbench computing system 120 includes various components for facilitating the flashing that is disclosed herein. For instance, the computing system 120 includes one or more processing module(s) 122 having stored computer-executable instructions that are executable by one or more hardware processor(s) 124 for implementing the methods and other functionality disclosed herein. The workbench computing system 120 also includes I/O components such as displays, keyboards, and UI interfaces that are configured to receive input and to generate output.
The workbench computing system 128 also includes one or more storage device 128 that includes one or more volatile and/or non-volatile memories. The storage device 128 stores processing module(s), interfaces and other stored data that is used for performing the flashing that is disclosed herein. This stored data also includes the actual files/images that are transmitted to the mobile devices during the flashing, as well as interfaces that are operable to monitor progress of the flashing and that otherwise facilitate interfacing of the workbench 120 with the mobile device(s) 110 and other systems disclosed herein.
Each of the mobile devices 110 being flashed is also configured with corresponding I/O components, processing modules, hardware processors, and storage devices for facilitating the flashing that is disclosed herein. For instance, the mobile devices 110 include communication components for communicating with the workbench 120, processing components for reading and writing data (including the flashed images), volatile memory (e.g., RAM), non-volatile memory (e.g., eMMC) and so forth. While there may be any number of components included within the mobile device(s) 110, these components are collectively illustrated as the three boxes of mobile device 112.
In some embodiments, the mobile devices are pre-configured with a suitable Basic Input/Output System (BIOS) or Unified Extensible Firmware Interface (UEFI) that is capable of facilitating USB discovery and data transfer and writing of received data to the non-volatile storage of the mobile device. When the mobile devices are not preconfigured with suitable BIOS or UEFI, then the disclosed methods further include installing the BIOS or UEFI onto the mobile device prior to the flashing session or as part of the flashing session.
During flashing, one or more files are formatted into an appropriate image format and transmitted through the USB tether and/or other intermediary components to the mobile device(s) 110. Transfer of an image is further illustrated with respect to
As shown in
In some instances, the FFU file 220 is compressed prior to being transmitted to the mobile device although, this is not required. In some instances, the FFU file comprises a digitally signed and compressed version of a Virtual Hard Drive file (.VHD file) which is composed of one or more separate .spkg files 240, such as the illustrated operating system package file, the modem package file, or another device specific package file that is executable by the hardware/processor(s) of the mobile device 210.
As suggested above, the operating system .spkg file 442, the modem .spkg file 444 and/or other device specific .spkg file(s) 446 can be converted into a single consolidated .VHD file 430 prior to being digitally signed and converted into a corresponding FFU file 420 that is later segmented. However, in some alternative embodiments, the specific files 440 are individually or collectively transmitted to the mobile device 410, as whole files and/or as segmented files, without first being converted into a VHD file and/or FFU image file format.
Attention will now be directed to
Once the workbench 520 receives this acknowledgment, and if one or more additional segment(s) remain enqueued for flashing to the mobile device 510, the workbench sends the next segment(s) in queue to the mobile device 510. Importantly, the transmission of the next segment(s) occurs prior to any acknowledgement of the segment(s) being written to non-volatile storage and, in some instances, prior to the segment(s) even being written to the non-volatile storage. This facilitates transmission of the next segment(s) in queue from the workbench without having to wait for the previous segments to be written to non-volatile storage. The mobile device 510 can then be de-tethered from the workbench as soon as acknowledgement is made that the mobile device 510 has received the last segment(s) to be flashed.
The mobile device 510 writes the received segment(s) 521 to non-volatile storage (e.g., the eMMC) in a corresponding sequence, as reflected by the computing environment/flow of
The foregoing process, as further described herein, is generally referred to as ‘burst flashing.’ It will be appreciated that this ‘burst flashing’ can significantly reduce the time that is required to keep mobile devices tethered during a flashing session and can, thereby, expedite the availability of the workbench and USB cable for flashing a ‘next’ device and to, thereby, increase overall flashing throughput of a workbench.
A specific example will now be provided to illustrate the efficiency gains that can be accomplished with burst flashing. In this example, a 2000 Mbyte image is flashed from the workbench to the mobile device through a USB data cable. The transfer rate of the USB cable is 40 Mbytes/second and the eMMC write performance of the mobile device is 10 Mbytes/second. Accordingly, the total transfer time of the image to the mobile device is about 50 seconds (2000 Mbytes/40 Mbytes/sec) and the total write time for writing the image to the eMMC non-volatile storage is 200 seconds (2000 Mbytes/10 Mbytes/sec).
In traditional flashing systems, the transfer and writing of the image segments is discontinuous, such that the total flashing time is greater than either the total transfer time or the total write time. For instance, in traditional flashing, a workbench will incrementally transmit a next image segment to a mobile device only upon verifying a successful write of a preceding segment to the eMMC of the mobile device. The mobile device is also only de-tethered upon verifying that the last segment of the image file is successfully written to the eMMC. Accordingly, this type of traditional flashing would require at least 250 seconds to fully flash the 2000 Mbyte image to the eMMC, as described above, (e.g., (2000 Mbytes/40 Mbytes/sec)+(2000 Mbytes/10 Mbytes/sec)). This 250 seconds of tethering time is significantly more than the amount of tethering time that is required by implementing the burst flashing techniques described herein. For instance, according to some embodiments, the mobile device is able to be de-tethered immediately upon verifying that the image data has been transferred to the mobile device and/or is written to the volatile RAM of the mobile device. This would take approximately 50 seconds according to the foregoing example, or only about 20% of the time required by traditional flashing.
Efficiency gains can also be realized even for hybrid scenarios in which the mobile device remains tethered to the workbench until the image data is fully written to the eMMC, but in which the writing of the image data is triggered by and performed continuously upon receiving the first image segment, and without requiring the workbench to pause transmissions the subsequent segment(s) while waiting for the acknowledgement(s) regarding successful writes of the segment(s) to the eMMC. In this hybrid scenario, the workbench will transmit the image to the mobile device RAM substantially continuously, only pausing/waiting (if at all) for acknowledgement(s) that the mobile device has received and/or written the segment(s) to the volatile RAM of the mobile device.
In this hybrid scenario, it will take approximately 50 seconds to fully transfer the image data to the mobile device RAM and approximately 200 seconds to write the image from the RAM to the eMMC. However, since the writing to the eMMC was initiated upon receiving the first image into the RAM and performed continuously thereafter, the total time required to flash the image to the eMMC will only be approximately 200 seconds (e.g., the total write time), which is still significantly less than the 250 seconds that would be required when applying traditional flashing techniques.
An illustration representing the hybrid burst flashing technique is shown in the computing environment/flow 600 of
In the hybrid burst flashing technique, an acknowledgement of the image data having been fully written to the eMMC can also be used to notify the user that the mobile device 610 can be de-tethered 690.
The notification that the mobile device can be de-tethered from the workbench is generated and rendered at the mobile device (e.g., by rendering a visual and/or audio notice with display/speaker hardware of the mobile device), the workbench (e.g., by rendering a visual and/or audio notice with display/speaker hardware of the workbench) and/or at one of the intermediary component(s)/system(s) (150) or distributed system(s) (130) described above (e.g., by rendering a visual and/or audio notice with display/speaker hardware of the corresponding component(s)/system(s)). In one specific implementation, the notification is visual prompt displayed on an interface of the workbench that indicates the image data has been transferred and/or written to the mobile device. In another implementation, the notification is an interface display rendered at the mobile device. In yet another implementation, the notification is the illumination of a light on the USB cable hub or other physical component connected to the cables between the workbench and the mobile device.
Attention will now be directed to
Each of the flowcharts 700, 800 and 900 includes a plurality of acts that are performed during implementation of the corresponding method(s). These acts are illustrated and sometimes described as being performed in a particular order. It will be appreciated, however, that no particular ordering is required for performing the acts of the disclosed methods or any of the other related methods covered by the scope of this disclosure, unless specifically stated, or unless specifically required because an act is dependent on another act being completed prior to the act being performed.
As illustrated in
Next, the workbench computing system sends the full set of payload segments to the mobile device while the device remains tethered to the workbench computing system (730). As indicated previously, the full set of payload segments is transmitted to the mobile device in one or more payload transmissions (with one or more image segments being included within each payload transmission).
The full set of payload segments is initially written to volatile memory of the device, concurrently or in stages, prior to being written to the non-volatile memory of the mobile device.
After the payload is transmitted to the mobile device, the workbench computing system obtains confirmation that the full set of payload segments has been received by the mobile device (740). This confirmation occurs, in some instances, while at least some portion of the full set of payload segments still remains within the volatile memory of the mobile device (e.g., one or more segments are still maintained in RAM and prior to being fully written to the eMMC of the device). The confirmation may be determined by the workbench and/or by the mobile device. A corresponding notification is also generated, in some instances, as described above.
Importantly, once all of the payload segments have been transmitted to the mobile device, before or after the confirmation and notification, the mobile device can be de-tethered from the workbench computing system, even while one or more of the segments remain within the volatile memory of the device and prior to the full set of payload segments having been written to the non-volatile memory of the mobile device. As described above, this represents a substantial reduction in the time that would otherwise be required for tethering the device during traditional flashing. This is true, whether the device is immediately de-tethered, according to the optimized burst flashing technique, and even when the device is only de-tethered after the payload is fully written to the non-volatile storage (e.g., eMMC), according to the hybrid burst flashing technique.
The mobile device will then send one or more receipt acknowledgements to the workbench computing system (950), corresponding to the receipt of the full set of payload segments (e.g., in response to the detected confirmation). This may also include sending separate receive receipts for each of the different image segments when they are received.
The confirmation is also used, in some embodiments, to trigger the generation of a notification (960) that is operable to notify a user that the full set of payload segments has been received by the mobile device and that it is safe to de-tether the mobile device. The mobile device is then de-tethered, when desired (970).
In some instances, the generation of a same and/or different user notification may also be triggered by verifying that the full set of payload segments has been written to at least the volatile memory of the mobile device (960). Accordingly, while act 980 is shown to follow act 960, it is also possible for act 980 to precede act 960. In some instances, other acts can also be performed in different ordering, as described above. Likewise, the disclosed methods can also include additional acts that are not explicitly illustrated. For instance, the one or more notification(s) that are generated are displayed at the mobile device, the workbench and/or another component, as described above, even though not explicitly illustrated.
As described above, the disclosed embodiments for burst flashing and hybrid burst flashing can be utilized to obtain significant savings in the time that is required for a mobile device to be tethered during flashing. Other advantages and technical benefits of the present disclosure are also evident from the foregoing description.
With regard to the foregoing disclosure and recited methods, it will be appreciated that the methods may be practiced by a computer system including one or more processors and computer readable media such as computer memory. In particular, the computer memory may store computer executable instructions that when executed by one or more processors cause various functions to be performed, such as the acts recited in the embodiments.
Embodiments of the present invention may comprise or utilize a special purpose or general-purpose computer including computer hardware, as discussed in greater detail below. Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system. Computer-readable media that store computer-executable instructions are physical storage media. Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments of the invention can comprise at least two distinctly different kinds of computer-readable media: physical computer readable storage media and transmission computer readable media.
Physical computer readable storage media includes RAM, ROM, EEPROM, CD-ROM or other optical disk storage (such as CDs, DVDs, etc.), magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
A “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmissions media can include a network and/or data links which can be used to carry or desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above are also included within the scope of computer-readable media.
Further, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission computer readable media to physical computer readable storage media (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile computer readable physical storage media at a computer system. Thus, computer readable physical storage media can be included in computer system components that also (or even primarily) utilize transmission media.
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims.
Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, switches, and the like. The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices.
Alternatively, or in addition, the functionally described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Program-specific Integrated Circuits (ASICs), Program-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.
The present invention may be embodied in other specific forms without departing from its spirit or characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.