The present invention relates generally to embedded electronic devices, and more particularly, to the configuration of embedded systems.
Embedded systems are ubiquitous components that can be incorporated, for example, into consumer electronic devices. Numerous consumer electronic devices such as mobile phones, computers, printers, digital video recorders, televisions and set-top boxes, for example, incorporate embedded systems. Embedded systems typically are self-contained processing systems designed to perform a specific function or set of functions.
Consumer electronic devices have continued to evolve at a rapid pace often with more and more new, different or improved features being packed into the devices. As a result, some embedded systems utilized in consumer electronic devices have become vastly more complex. Since many embedded systems are incorporated into another electronic device, this presents additional challenges when maintaining or upgrading these embedded systems.
The present invention advantageously addresses the above and other needs.
The present invention advantageously addresses the needs above as well as other needs through the provision of methods, apparatuses, and systems for use in booting an embedded system from an off-board memory. An apparatus, according to some embodiments, includes a circuit board comprising a processor, a memory, an operating system stored in the memory and utilized at least in part to control processor operation and an external memory access. The external memory access comprises a first port onboard the circuit board, a local off-board non-volatile memory coupled to the first port onboard the circuit board and a root file system stored in the off-board non-volatile memory. The root file system stored in the off-board non-volatile memory is used while booting the operating system.
Some methods and apparatuses further provide for booting an embedded system from an off-board memory by activating a circuit board; copying an operating system from an onboard non-volatile memory into an onboard active memory; initiating execution of the operating system; directing the operating system to use a first root file system located in a local off-board memory; accessing the local off-board memory; and booting the operating system using the root file system in the local off-board memory.
Some methods and apparatuses of present embodiments further provide a consumer electronic device comprising an embedded system; a first port; at least one data bus enabling communication between the embedded system and the port; an external memory access configured to allow access to an off-board first root file system and a first local off-board memory coupled to the first port. The operating system at least is part controls the operation of the processor. The first local off-board memory comprises a first off-board root file system used by the operating system while booting the embedded system.
A better understanding of the features and advantages of the present invention will be obtained by reference to the following detailed description of the invention and accompanying drawings which set forth an illustrative embodiment in which the principles of the invention are utilized.
The above and other aspects, features and advantages of the present invention will be more apparent from the following more particular description thereof, presented in conjunction with the following drawings wherein:
Corresponding reference characters indicate corresponding components throughout the several views of the drawings. Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of various embodiments of the present invention. Also, common but well-understood elements that are useful or necessary in a commercially feasible embodiment are often not depicted in order to facilitate a less obstructed view of these various embodiments of the present invention.
The present embodiments provide apparatuses, systems and methods for use in booting an embedded system from an off-board memory. A number of embodiments are provided herein for illustrative purposes only and should not be construed to limit the scope of the present invention.
The onboard read-only non-volatile memory 270 further comprises a monitor 228 and the onboard read-write non-volatile memory 275 further comprises an operating system 224. The operating system controls the basic operation of the embedded system. The monitor 228 is typically implemented as software or firmware executed by the controller 260 when the embedded system is powered up or reset. The monitor 228 loads the operating system of the embedded system and initializes the execution of the operating system. The controller 260 may be implemented, for example, through a microprocessor, a microcontroller and/or a system-on-a-chip (SOC). One skilled in the art will recognize that the controller is not limited to these embodiments and that the controller may comprise substantially any electronic component with means for controlling the processing and execution of at least the monitor and operating system software utilized onboard the embedded system.
The external memory access 290 provides the embedded system 120 with the ability to access off-board memory. The external memory access in some embodiments comprises an interface 291 integrated into the controller 260 and a port 292. The external memory access provides access to a local off-board memory 210 containing a root file system 230 that the operating system of the embedded system uses while booting. The root file system includes configuration files that determine the functionality of the operating system and may also include application programs to be utilized by and/or executed by the operating system once the operating system boots up.
In some embodiments, the external memory access 290 comprises a USB port (port 292) and USB interface integrated into a controller or system-on-a-chip device 260. In other embodiments, the external memory access 290 additionally and/or alternatively comprise an onboard bus port (port 292) and bus port drivers to provide an interface to the bus port located in the onboard non-volatile memory 220.
The local off-board memory is a memory external to the embedded system 120, but accessible to the embedded system 120 via the external memory access 290. In some embodiments, the local off-board memory is directly coupled to a port 292 on the embedded system. In other embodiments, the consumer electronic device 110 comprises the local off-board memory 210 and the embedded system 120 accesses the local off-board memory 210 via the external memory access 290. The local off-board memory 210 may comprise a volatile memory such as RAM or a non-volatile memory such as a flash memory. In some embodiments, the local off-board memory 210 may be a USB flash drive directly coupled to the port 292 implemented through a USB port onboard the embedded system. In other embodiments, the consumer electronic device 110 may comprise one or more USB ports and the off-board memory is a USB flash drive coupled to one of the consumer electronic devices USB ports (see
In some embodiments, the local off-board memory 210 is powered by the port to which it is coupled. For example, in some embodiments, the external memory access 290 comprises a USB port (port 292). USB ports typically provide a 5 volt output that devices connected to the port may use as a power source. USB flash drives, for example, typically contain no onboard power supply and thus depend upon the USB port to which the flash drive is coupled to provide power. The present embodiments are not limited to USB flash drives. One skilled in the art would recognize that substantially any memory that receives power from the port could be substituted for a USB flash drive. For example, in some embodiments, the external memory comprises a Sony Memory Stick™.
When the embedded system is powered up or reset, the monitor stored in the onboard non-volatile memory 220 is executed by the controller in order start the bootstrap process for the embedded system. The monitor creates a copy of the operating system 254 in the onboard active memory 280 using the operating system 224 in onboard non-volatile memory 220. The monitor initializes the operating system execution by the controller 260 in the onboard active memory 280 and directs the operating system to access the root file system 230 through the external memory access 290. The operating system then uses the root file system 230 located in the local off-board memory 210 while booting. The root file system 230 contains files to configure the function of the operating system which in turn determines the function of the embedded system 120. The function of the embedded system 120 can be substantially modified by booting the operating system with a different file system such as a different file system on a different flash memory.
In alternate embodiments, other types of interfaces may be substituted in place of the USB interface 340. For example, a PCI bus interface coupled to a port 292 (such as a bus port or other such port) on the embedded system 120 at least in part implements the external memory access 290 in conjunction with bus port drivers that are part of the operating system 224.
The function of the embedded system 120 is typically configurable based upon the root file system provided to the operating system. The root file system contains configuration files that determine and/or dictate the operation of the operating system and may also contain one or more software applications that the operating system launches to perform various functions.
The embedded system 120 is configurable to utilize the root file system 230 stored on the local off-board memory 210 or use the copied default root file system 235. The monitor 228 checks the parameter 520 in the onboard non-volatile memory 220 to determine whether the monitor 228 should copy a root file system from the onboard read-write non-volatile memory 275 or to access and use the root file system 230 of the local off-board memory 210. In alternate embodiments, the embedded device 120 includes a switch 540 instead of or in addition to the parameter 520 that is utilized to indicate that the operating system is to use root file system 230 from the local off-board memory 210 or the copied default root file system 235. In some embodiments, the switch 540 comprises one or more physical switches, such as one ore more DIP switches, that allow for the configuration of the embedded system 120. For example, in some embodiments, the switch 540 is set to a default value at the time of manufacture to indicate that the monitor 228 should obtain a root file system from the local off-board memory 210 whenever the embedded system boots yet allow a technician to flip the switch to access the default root file system 235. The switch 540 can additionally or alternatively be implemented in software, for example, that a service technician triggers the software switch through a user interface. For example, some embedded system embodiments comprise a set of buttons that control a menu system through which the service technician configures and tests the embedded system.
In some embodiments, the switch 540 provides service technicians with the ability to diagnose problems with the consumer electronic device 110 or the embedded system 120. The service technician can set the switch to indicate that the monitor 228 shall direct the copied operating system 254 to boot using the root file system 230 of the local off-board memory with a known configuration. The embedded system 120 then boots into a known state in order to facilitate diagnostic testing. After setting switch 540, the service technician reboots the embedded system 120 and performs diagnostics on the system in order to determine if the embedded system is functioning as expected. The root file system 230 may also contain diagnostic applications that further facilitate testing.
When the embedded system 120 is configured to obtain a root file system from the onboard non-volatile memory 220, the monitor 228 copies the default root file system 226 from the onboard non-volatile memory 220 into the onboard active memory 280 to create the copied default root file system 235. Otherwise, when the embedded system 120 is configured to use and/or obtain a root file system from the local off-board memory 210, the monitor initiates the execution of the copied operating system 254 in the onboard active memory 280 and then directs the operating system to access the root file system 230 through the external memory access 290. The operating system then uses the root file system 230 located in the local off-board memory 210 while booting instead of the copied default root file system 235 in the onboard active memory 280.
In some embodiments, when the embedded system 120 is configured to access and use a root file system from off-board memory, the monitor accesses the local off-board memory 210 though the external memory access 290 and copies the root file system 230 from the off-board memory into the onboard active memory 280 to create the copied default root file system 235. The monitor also copies the operating system 224 from the onboard non-volatile memory 220 into the onboard active memory 280. The monitor then initiates the execution of the copied operating system 254 in the onboard active memory 280 and directs the operating system to use the copied default root file system 235 also in the onboard active memory 280. The operating system then boots utilizing the copies root file system and begin to control, at least in part, the execution of the controller 260 to perform the designated function of the embedded system 120.
The present embodiment provides a system and method for booting an embedded system using a root file system from an external memory device. The result is a highly flexible system that can be readily reconfigured by replacing the root file system in the external memory device. More specifically, the root file system provides files used to configure the operating system of the embedded system and may also include application programs to be executed by the operating system once the embedded system is initialized. The operating system configuration and the application programs typically determine the function of the operating system.
In some embodiments, the hardware and the onboard operating system of the embedded system can be substantially standardized in the present embodiments. Software customization often determines much of the functionality of an embedded system. As a result, a variety of electronic devices can use the same“standard” embedded system hardware with differing root file systems that are tailored to configure the embedded system hardware for specific operations and/or host electronic devices. For example, a digital video recorder and a set-top box may include a similar or duplicate embedded system as a component, but the function of the embedded system would be particularized for each of these devices by providing an appropriate root file system.
The ability to use standard hardware and operating systems in the embedded systems minimizes manufacturing and maintenance costs of both the embedded systems and the consumer electronic devices utilizing the embedded systems. Some implementations of some present embodiments, for example, provide for cost-effective maintenance, since the operation of the embedded system can be readily modified by issuing a replacement file system containing altered and/or new operating system configuration files or application programs. Replacement file systems could be issued, for example, to correct identified or known problems of an embedded system or provide updated or new functionality. The present embodiments advantageously allow for the correction of software and configuration problems, and/or allow for the enhancing and/or reconfiguring of embedded systems. For example, a root file system containing updated device drivers can be obtained and/or downloaded from the manufacturer's website onto a USB flash drive and the embedded system rebooted with the downloaded root file system on the USB flash drive.
The present embodiments also advantageously address shortcomings inherent to some other embedded system implementations. For example, some implementations of embedded systems are typically limited to obtaining a root file system from an onboard non-volatile memory. Such implementations typically do not provide the option to go off-board to obtain the root file system. Updating the root file system in the onboard non-volatile memory is cumbersome and typically requires specialized equipment including a host computer configured to copy a new root file system into the onboard non-volatile memory of the embedded system.
Some existing computer system implementations utilize a Network File System (NFS) protocol to access an off-board memory containing a root file system. The NFS is a distributed file system protocol that enables remote file systems to be accessed over a network, enabling the file system contents to be accessed as if the file system were local. However, practical limitations inherent to NFS typically confine NFS-enabled systems to prototyping systems under development. For example, NFS typically requires that a system have network access to a host configured as an NFS server. Embedded systems are generally stand-alone devices that perform a specified function as a component of some other electronic device. As such, NFS is generally not practical for use in embedded systems. Furthermore, the local off-board memory 210 in at least some embodiments is powered by the port to which the local off-board memory 210 is coupled. Typically, NFS servers are computers that require more power than a port can provide. For example, in some present embodiments the port 292 to which the local off-board memory is coupled is a USB port. The typical USB port provides a 5 volt output, which is insufficient to satisfy the power requirements of a typical computer configured as an NFS server.
The present embodiments enable embedded systems to boot from an external memory device. Advantageously, the present embodiments enable updating of the root file system used to boot the embedded system without the burden of updating the root file system in the onboard non-volatile memory. Furthermore, the present embodiments can be utilized in the production version of embedded systems, thereby making it possible to update the root file system for embedded systems in the field, such as those incorporated into a consumer electronic device. For example, a consumer experiencing a problem with his/her consumer electronic device can receive and/or download a root file system containing one or more revised and/or new device drivers for the consumer electronic device from the manufacturer's website onto a USB flash drive. The consumer or technician then plugs the USB flash drive containing the new root file system into a port on the consumer electronic device and the embedded system in the consumer electronic device boots using the new root file system. In addition, some present embodiments provide the ability to download additional new functionality to a functional embedded system. For example, the manufacturer might provide a subscription plan on its website wherein consumers could subscribe for a specific set of services. Once subscribed, the consumers then receive or download the appropriate root file system and reboot the consumer electronic device in order to activate the embedded system using the subscribed functionality.
In step 630, the monitor accesses parameter 520 in onboard non-volatile memory 220. The value of parameter 520 indicates whether the monitor should go off-board to utilize a root file system for the operating system of the embedded system to use while booting or whether the monitor should obtain a root file system for the operating system from onboard non-volatile memory 220. The monitor 228 checks the value of parameter 520 in step 631. In step 640, if parameter 520 is set to indicate that the monitor 228 should obtain a root file system off-board, then the monitor initializes the operating system and directs the operating system to use the root file system 230 in the local off-board memory 210. In step 642, the operating system accesses the root file system 230 in the local off-board memory 210 through the external memory access 290. In step 643, the operating system mounts the root file system 230 in the local off-board memory 210 in order to make the contents of the file system accessible to the operating system as if they were local (in onboard memory). The operating system then boots in the onboard active memory 280 using the root file system 230 in the local off-board memory 210 in step 644.
Alternatively, if the value of parameter 520 indicates that a file system should be obtained from an onboard memory, for example, the monitor then copies a default root file system 226 from non-volatile memory 220 into onboard active memory 280 to create copied default root file system 235 in step 660. In step 662, the monitor 228 activates the operating system and directs the operating system to use the copied default root file system 235 in onboard active memory 280. The operating system then accesses the onboard active memory 280 in step 664 in order to locate the copied default root file system 235. The operating system then mounts the copied default root file system 235 in order to make the files available to the operating system in step 668. In step 670, the operating system boots in the onboard active memory 280 using the copied default root file system 235.
In step 695, the copied operating system 254 begins controlling the execution at least in part of the controller 260. Finally, in step 696, the operating system initializes the execution of application programs included as part of the root file system in order to perform one or more designated functions of the embedded system 120.
In step 720, the embedded system 120 is activated (powered up or reset) causing the board to begin initializing itself for operation. Step 720 includes the controller 260 beginning execution of the monitor 228 which initializes the operating system of embedded system 120. In step 730, the monitor 228 copies the operating system 224 from the onboard non-volatile memory into the onboard active memory 280. In step 740, the monitor 228 activates the operating system and directs the operating system to use the new or alternate off-board root file system 230 in the local off-board memory 210. In step 745, the operating system mounts the root file system in the off-board memory in order to make the contents of the file system available to the operating system as if they were in local memory. In step 750, the operating system accesses the off-board memory 210 through the external memory access 290 in order to locate the root file system 230. Then in step 760, the copied operating system 254 boots using the root file system 230 of the local off-board memory to configure itself. In step 770, the copied operating system 254 begins controlling at least part of the execution of the controller 260. Finally, in step 780, the operating system initializes one or more application programs that are part of the root file system and that the operating system was configured to initialize in order to perform one or more designated functions of the embedded system 120.
The present embodiment demonstrates that the embedded system may be configured to boot from a root file system accessed on an external memory device coupled to a port either internal to or external to the consumer electronic device. For example, the consumer electronic device may comprise one or more internal ports 810 (such as USB ports, bus ports or other such ports) and one or more embedded systems 120 with similar or duplicate hardware. Each embedded system is then configured to access a specific port in order to access a root file system for booting the embedded system. At least some of the functions of each of the embedded systems are determined by coupling, for example, a USB flash drive containing an appropriate root file system containing configuration files for the operating system in addition to application programs for the operating system to execute. Consumer electronic device manufacturers may realize significant cost savings from the present embodiments because the device can be constructed from“standard” embedded system components and USB flash memories with specialized root file systems for determining the function of the embedded system components.
The present embodiment comprises two embedded systems 120, a local off-board memory 910 and a data bus 950. The local off-board memory includes a read-only root file system that the operating systems of each of the embedded systems 120 access while booting. The off-board memory further includes a writeable memory or portion of memory 930 usable by the embedded systems. Each of the embedded systems in some implementations is allocated a block of memory where the operating system of the embedded system can write data. The blocks of writeable memory are allocated exclusively to each embedded system in order to prevent conflicts between the simultaneously running embedded systems. A benefit of the present embodiment is that each of the embedded systems in the electronic device 900 could utilize the same read-only file system in a read-only memory or portion of memory 920 if the embedded systems perform the same function. As a result, if the root file system used by the embedded systems were to be updated, only a single external memory device would have to be replaced to provide a new root file system or the root file system onboard a single external memory device would have to be updated.
While the invention herein disclosed has been described by means of specific embodiments and applications thereof, numerous modifications and variations could be made thereto by those skilled in the art without departing from the scope of the invention set forth in the claims.