Sign In to Follow Application
View All Documents & Correspondence

System And Method For Updating Flash Memory Of Microcontroller

Abstract: Systems and methods for updating flash memory of microcontroller is disclosed. According to an embodiment, A system for updating flash memory of microcontroller in a wireless network, said system comprising: one or more interfacing devices configured to interface with one or more microcontrollers; and a control engine to: receive one or more attributes associated with the one or more interfacing devices and the one or more microcontrollers; authenticate at least one of the one or more interfacing devices and at least one of the one or more microcontrollers interfaced with the authenticated interfacing device; responsive to the authentication of the at least one interfacing device, establish a communication channel between the authenticated at least one interfacing device and the computing device for transmission of a third set of data packets to the at least one interfacing device for updating of the flash memory of the authenticated at least one of the one or more microcontrollers interfaced with the authenticated interfacing device.

Get Free WhatsApp Updates!
Notices, Deadlines & Correspondence

Patent Information

Application #
Filing Date
11 August 2018
Publication Number
07/2020
Publication Type
INA
Invention Field
COMPUTER SCIENCE
Status
Email
info@khuranaandkhurana.com
Parent Application

Applicants

Inventrom Private Limited
Gurupushpa, Plot No 14, Bamon Bhat, Post St Cruz, Merces, North Goa-403005, Goa, India.

Inventors

1. JOSHI, Vinayak Shantaram
#79, First Floor, 5th Main Road, 11th Cross Road, Binnamangala, Stage 1, Indiranagar, Bengaluru -560038, Karnataka, India.
2. PAI VERNEKAR, Pranav
#79, First Floor, 5th Main Road, 11th Cross Road, Binnamangala, Stage 1, Indiranagar, Bengaluru -560038, Karnataka, India.
3. KUNDAIKAR, Pranav
#79, First Floor, 5th Main Road, 11th Cross Road, Binnamangala, Stage 1, Indiranagar, Bengaluru -560038, Karnataka, India.

Specification

DESC:TECHNICAL FIELD
[0001] The present disclosure related to the field of wireless communication. More particularly, the present disclosure provides systems and methods for updating flash memory of microcontrollers.

BACKGROUND
[0002] The background description includes information that may be useful in understanding the present invention. It is not an admission that any of the information provided herein is prior art or relevant to the presently claimed invention, or that any publication specifically or implicitly referenced is prior art.
[0003] Over-the-Air Programming (OTA) refers to various methods of distributing new software, configuration settings, and even updating encryption keys to devices like cell phones, set-top boxes or secure voice communication equipment (encrypted 2-way radio). One important feature of OTA is that one central location can send an update to all the users, who are unable to refuse, defeat, or alter that update, and that the update applies immediately to everyone on the channel. A user could "refuse" OTA but the "channel manager" could also "kick them off" the channel automatically. More recently, with the new concepts of Wireless Sensor Networks and the Internet of Things, where the networks consist of hundreds or thousands of nodes, OTA is taken to a new direction: for the first time OTA is applied using unlicensed frequency bands (868 MHz, 900 MHz, 2400 MHz) and with low consumption and low data rate transmission using protocols such as 802.15.4 and ZigBee.
[0004] A reliable over-the-air system update process is required for many applications. A mechanism is needed to update system software/firmware remotely to fix bugs and make important software improvements. Critical applications, such as electrical metering, mobile phones, home automation appliances, industry automation, water tank filling, etc require extremely minimal system downtime during updates, must be tolerant of communication errors, and should have no risk of problems causing the system to cease to operate. The update process must be tolerant of difficult environments. In many applications with unreliable electrical power, the system update process must provide consistent operation in the presence of power loss. Updating system software remotely requires new code to be transmitted through a communication interface (for example, Wi-Fi, Zigbee®, UART, SPI, I2C, USB, Ethernet, OTA and so on). A software uploader program executing on the system must receive and program the code to local memory. Typically, in-factory programming is accomplished with a local debug connection like JTAG or Background Debug Mode (BDM), however, these connections are not possible remotely. It is economically infeasible to send a technician out to a system in the field for reprogramming. Therefore, a reliable over-the-air update process is mandatory. Along with the OTA process, Internet of things (IoT) also needs to be deployed for upgrading the firmware of microcontrollers remotely.
[0005] IoT is a growing and rapidly changing market with new product requirements, and new Bluetooth Low Energy (BLE) features being added regularly. Security threats and privacy breaches are some of the biggest factors driving these changes. To protect against new virus attacks, device firmware can incorporate fixes and more secure algorithms through the OTA firmware upgrade process. In any IoT system, there are two parts of hardware and firmware. In SoC-based implementations, OTA firmware upgrade functionality can update not only firmware but reconfigure on-chip hardware resources as well.
[0006] Traditional remote firmware updating systems rely on a bootloader application that executes on a system reset and selects the application to run or executes an application update routine. A remote server sends new firmware to the system to program into its local memory. In most cases, when the system update process is started, the main application is halted. The main application code is then erased and reprogrammed. There is only one copy of the main application, therefore if there were undetected errors when the new code was received and programmed, the system may not operate correctly and could stop operating until a new application is downloaded. The worst-case scenario is when the system is unresponsive and unable to be forced into bootloader mode for system updates.
[0007] Moreover, the loader programs, however, are subject to a number of limitations. They generally use hardwired connections. Moreover, during overwriting, if the loader program overwrites an inappropriate memory space or too much memory space, for example, by overwriting itself, it can render the microcontroller unprogrammable. This can destroy the ability to program it without major effort and expense, typically including removing the microcontroller from the appliance or field setting and reprogramming it in a factory or maintenance facility using a production-type programming tool, often having specially adapted capabilities to reprogram the microcontroller under these specific circumstances. Microcontrollers with loader programs also are limited in that they typically require an uninterrupted data stream to accomplish the reprogramming without errors or difficulties. If programming is interrupted at any stage, then the program function may be random, unpredictable or inoperative.
[0008] Further, the problem with existing techniques for OTA update arises from a fact that the microcontrollers use huge memory space that is available with the 32-bit controllers to download a new program and then copy the program into the working memory. For 8bit controllers, a user would have to interface external memory to the device. Also, this would not be regarded as a universal solution, and would only work for products which have the flexibility to include such large memories.
[0009] In recent years, 32-bit microcontrollers and 64-bit microcontrollers have acquired the market due to high storage capability and 8-bit microcontrollers have become obsolete from the market. Though 8-bit microcontrollers are very common for most smart consumer devices nowadays, still there is hardly any device in the market using an 8-bit microcontroller. In other cases, where wireless updation of firmware is possible for example Arduino and Pic based microcontrollers, the user's programming device has to be on the same sub-network as the target controller.
[00010] Further, most people who wish to develop products do their prototyping using 8-bit controllers as they are cheap, but have to shift on 32-bit or 64-bit microcontrollers due to lack of OTA capability. Using same 8-bit microcontrollers in final products as used in testing, can help to reduce the cost of final design thereby making product economical.
[00011] There is therefore a need in the art to provide systems and methods that can provide a platform for updating flash memory of microcontrollers over a wireless network that that seeks to overcome or at least ameliorate one or more of the above-mentioned problems and other limitations of the existing solutions and utilize techniques, which are robust, accurate, fast, efficient, cost-effective and simple.


OBJECTS OF THE PRESENT DISCLOSURE
[00012] Some of the objects of the present disclosure, which at least one embodiment herein satisfies are as listed herein below.
[00013] It is an object of the present disclosure to provide system and method for updating flash memory of microcontroller.
[00014] It is another object of the present disclosure to provide system and method for updating flash memory of microcontroller wirelessly over the internet.
[00015] It is another object of the present disclosure to provide system and method for updating flash memory of an 8-bit microcontroller.
[00016] It is another object of the present disclosure to provide system and method for updating flash memory of microcontroller that is secure, as the firmware or set of instructions being transmitted are encoded before transmission.
[00017] It is yet another object of the present disclosure to provide system and method for updating flash memory of microcontroller that is cost-effective and easy to implement.

SUMMARY
[00018] The present disclosure related to the field of wireless communication. More particularly, the present disclosure provides systems and methods for updating flash memory of microcontrollers.
[00019] In an aspect, the present disclosure provides a system for updating flash memory of microcontroller in a wireless network. The system includes: one or more interfacing devices configured to interface with one or more microcontrollers; and a control engine operatively coupled to the interfacing device, the control engine comprising one or more processors coupled to a memory, the memory storing instructions executable by the one or more processors to: receive, from a computing device associated with a user, a first set of data packets pertaining to one or more attributes associated with the one or more interfacing devices and the one or more microcontrollers; process a second set of data packets selected from the received first set of data packets to authenticate at least one of the one or more interfacing devices and at least one of the one or more microcontrollers interfaced with the authenticated interfacing device; responsive to the authentication of the at least one interfacing device, establish a communication channel between the authenticated at least one interfacing device and the computing device for transmission of a third set of data packets to the at least one interfacing device for updating of the flash memory of the authenticated at least one of the one or more microcontrollers interfaced with the authenticated interfacing device.
[00020] In an embodiment, the one or more attributes comprises, specifications of the microcontroller, a unique identifier associated with the interfacing device
[00021] In an embodiment, the microcontroller is an 8-bit programmable microcontroller
[00022] In an embodiment, the updating comprises any or a combination of erasing, modifying and adding information stored in flash memory of the microcontroller.
[00023] In an embodiment, the established communication channel is a continuous serial communication channel.
[00024] In an embodiment, a set of instructions stored on the computing device is transmitted to the interfacing device via the established channel.
[00025] In an embodiment, the set of instructions are encrypted before transmission.
[00026] In an embodiment, the third set of data packets comprises information pertaining to handshaking required to enable the flash memory to receive the set of instructions.
[00027] In an embodiment, the interface device comprises: a communication unit to enable communication with the control engine and the computing device; a memory unit; and an interface unit to interface the one or more microcontrollers.
[00028] It is another aspect of the present disclosure to provide a method for updating flash memory of microcontroller in a wireless network. The method includes: receiving, by one or more processors of a control engine, from a computing device associated with a user, a first set of data packets pertaining to one or more attributes associated with the one or more interfacing devices and the one or more microcontrollers; processing, by the control engine, a second set of data packets selected from the received first set of data packets to authenticate at least one of the one or more interfacing devices and at least one of the one or more microcontrollers interfaced with the authenticated interfacing device; responsive to the authentication of the at least one interfacing device, establishing, by the control engine, a communication channel between the authenticated at least one interfacing device and the computing device for transmission of a third set of data packets to the at least one interfacing device for updating of the flash memory of the authenticated at least one of the one or more microcontrollers interfaced with the authenticated interfacing device.
BRIEF DESCRIPTION OF THE DRAWINGS
[00029] In the figures, similar components and/or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label with a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
[00030] FIG. 1 illustrates an exemplary network architecture in which or with which proposed system can be implemented in accordance with an embodiment of the present disclosure.
[00031] FIG. 2 illustrates an exemplary module diagram for updating flash memory of microcontroller in accordance with an embodiment of the present disclosure.
[00032] FIG. 3 is a flow diagram illustrating a process for updating flash memory of microcontroller in accordance with an embodiment of the present disclosure.
[00033] FIG. 4 illustrates an exemplary computer system in which or with which embodiments of the present invention can be utilized in accordance with embodiments of the present disclosure.

DETAILED DESCRIPTION
[00034] In the following description, numerous specific details are set forth in order to provide a thorough understanding of embodiments of the present invention. It will be apparent to one skilled in the art that embodiments of the present invention may be practiced without some of these specific details.
[00035] Embodiments of the present invention may be provided as a computer program product, which may include a machine-readable storage medium tangibly embodying thereon instructions, which may be used to program a computer (or other electronic devices) to perform a process. The machine-readable medium may include, but is not limited to, fixed (hard) drives, magnetic tape, floppy diskettes, optical disks, compact disc read-only memories (CD-ROMs), and magneto-optical disks, semiconductor memories, such as ROMs, PROMs, random access memories (RAMs), programmable read-only memories (PROMs), erasable PROMs (EPROMs), electrically erasable PROMs (EEPROMs), flash memory, magnetic or optical cards, or other type of media/machine-readable medium suitable for storing electronic instructions (e.g., computer programming code, such as software or firmware).
[00036] Various methods described herein may be practiced by combining one or more machine-readable storage media containing the code according to the present invention with appropriate standard computer hardware to execute the code contained therein. An apparatus for practicing various embodiments of the present invention may involve one or more computers (or one or more processors within a single computer) and storage systems containing or having network access to computer program(s) coded in accordance with various methods described herein, and the method steps of the invention could be accomplished by modules, routines, subroutines, or subparts of a computer program product.
[00037] If the specification states a component or feature "may", "can", "could", or "might" be included or have a characteristic, that particular component or feature is not required to be included or have the characteristic.
[00038] As used in the description herein and throughout the claims that follow, the meaning of "a," "an," and "the" includes plural reference unless the context clearly dictates otherwise. Also, as used in the description herein, the meaning of "in" includes "in" and "on" unless the context clearly dictates otherwise.
[00039] The recitation of ranges of values herein is merely intended to serve as a shorthand method of referring individually to each separate value falling within the range. Unless otherwise indicated herein, each individual value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g. "such as") provided with respect to certain embodiments herein is intended merely to better illuminate the invention and does not pose a limitation on the scope of the invention otherwise claimed. No language in the specification should be construed as indicating any non-claimed element essential to the practice of the invention.
[00040] Groupings of alternative elements or embodiments of the invention disclosed herein are not to be construed as limitations. Each group member can be referred to and claimed individually or in any combination with other members of the group or other elements found herein. One or more members of a group can be included in, or deleted from, a group for reasons of convenience and/or patentability. When any such inclusion or deletion occurs, the specification is herein deemed to contain the group as modified thus fulfilling the written description of all groups used in the appended claims.
[00041] Exemplary embodiments will now be described more fully hereinafter with reference to the accompanying drawings, in which exemplary embodiments are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. These embodiments are provided so that this disclosure will be thorough and complete and will fully convey the scope of the invention to those of ordinary skill in the art. Moreover, all statements herein reciting embodiments of the invention, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof. Additionally, it is intended that such equivalents include both currently known equivalents as well as equivalents developed in the future (i.e., any elements developed that perform the same function, regardless of structure).
[00042] Various objects, features, aspects and advantages of the inventive subject matter will become more apparent from the following detailed description of preferred embodiments, along with the accompanying drawing figures in which like numerals represent like components.
[00043] The present disclosure related to the field of wireless communication. More particularly, the present disclosure provides systems and methods for updating flash memory of microcontrollers.
[00044] In an aspect, the present disclosure provides a system for updating flash memory of microcontroller in a wireless network. The system includes: one or more interfacing devices configured to interface with one or more microcontrollers; and a control engine operatively coupled to the interfacing device, the control engine comprising one or more processors coupled to a memory, the memory storing instructions executable by the one or more processors to: receive, from a computing device associated with a user, a first set of data packets pertaining to one or more attributes associated with the one or more interfacing devices and the one or more microcontrollers; process a second set of data packets selected from the received first set of data packets to authenticate at least one of the one or more interfacing devices and at least one of the one or more microcontrollers interfaced with the authenticated interfacing device; responsive to the authentication of the at least one interfacing device, establish a communication channel between the authenticated at least one interfacing device and the computing device for transmission of a third set of data packets to the at least one interfacing device for updating of the flash memory of the authenticated at least one of the one or more microcontrollers interfaced with the authenticated interfacing device.
[00045] In an embodiment, the one or more attributes comprises, specifications of the microcontroller, a unique identifier associated with the interfacing device
[00046] In an embodiment, the microcontroller is an 8-bit programmable microcontroller
[00047] In an embodiment, the updating comprises any or a combination of erasing, modifying and adding information stored in flash memory of the microcontroller.
[00048] In an embodiment, the established communication channel is a continuous serial communication channel.
[00049] In an embodiment, a set of instructions stored on the computing device is transmitted to the interfacing device via the established channel.
[00050] In an embodiment, the set of instructions are encrypted before transmission.
[00051] In an embodiment, the third set of data packets comprises information pertaining to handshaking required to enable the flash memory to receive the set of instructions.
[00052] In an embodiment, the interface device comprises: a communication unit to enable communication with the control engine and the computing device; a memory unit; and an interface unit to interface the one or more microcontrollers.
[00053] It is another aspect of the present disclosure to provide a method for updating flash memory of microcontroller in a wireless network. The method includes: receiving, by one or more processors of a control engine, from a computing device associated with a user, a first set of data packets pertaining to one or more attributes associated with the one or more interfacing devices and the one or more microcontrollers; processing, by the control engine, a second set of data packets selected from the received first set of data packets to authenticate at least one of the one or more interfacing devices and at least one of the one or more microcontrollers interfaced with the authenticated interfacing device; responsive to the authentication of the at least one interfacing device, establishing, by the control engine, a communication channel between the authenticated at least one interfacing device and the computing device for transmission of a third set of data packets to the at least one interfacing device for updating of the flash memory of the authenticated at least one of the one or more microcontrollers interfaced with the authenticated interfacing device.
[00054] FIG. 1 illustrates an exemplary network architecture in which or with which proposed system can be implemented in accordance with an embodiment of the present disclosure.
[00055] As illustrated, in network implementation, a control engine 102 can be operatively coupled to interfacing devices 106-1, 106-2…….106-N (collectively referred to as interfacing devices 106 and individually referred to as interfacing device 106 hereinafter) through a network 104. The control engine 102 can be implemented using any or a combination of hardware components and software components such as a server 114, a computing system, a computing device, a security device and the like, such that embodiments of the present disclosure can be used for updating flash memory of microcontroller.
[00056] Further, the control engine 102 can interact with microcontrollers 108-1, 108-2…….108-N (collectively referred to as microcontrollers 108 and individually referred to as microcontroller 108 hereinafter), through the interfacing devices 106.
[00057] In an embodiment, the control engine 102 can be operatively coupled with a computing device 110, through the network 104. Further, the control engine 102 can interact with user 112, through the computing device 110 or through applications residing on the computing device 110. In an implementation, the control engine 102 can be accessed by applications residing on any operating system, including but not limited to, AndroidTM, iOSTM, and the like. Examples of the computing device 110 can include, but are not limited to, a portable computer, a personal digital assistant, a handheld device, and a workstation.
[00058] The network 104 can be a wireless network, a wired network or a combination thereof that can be implemented as one of the different types of networks, such as Intranet, Local Area Network (LAN), Wide Area Network (WAN), Internet-of-Things, over-the-air (OTA), bolt cloud and the like. Further, the network 104 can either be a dedicated network or a shared network. The shared network can represent an association of the different types of networks that can use a variety of protocols, for example, Hypertext Transfer Protocol (HTTP), Transmission Control Protocol/Internet Protocol (TCP/IP), Wireless Application Protocol (WAP), and the like.
[00059] In an embodiment, the control engine 102 can enable registration of the user 112. The registration can be based on details such as name, address, e-mail address, phone number, and the like. Also, the control engine 102 can utilize a unique identifier such as PAN card, Aadhar Card, Voter ID, and the like, provided by the user 112, to verify the authenticity of the user 112. Also, in an embodiment, said unique identifier can avoid multiplicity of registration of the same user.
[00060] In an embodiment, the control engine 102 enables the user 112 to initiate a request for updating flash memory of the microcontroller 108 using his/her computing device 110. The control engine 102 based on the received request can require the user 112 to provide a first set of data packets pertaining to one or more features associated with the interfacing device 106 and the microcontroller 108. The one or more features can include but are not limited to any or a combination of a unique identifier associated with the interfacing device 106, specifications of the microcontroller 108 and the like.
[00061] In an embodiment, the control engine 102 authenticates the microcontroller based on the received one or more features. In response to the authenticated of the microcontroller, a communication channel can be established between the computing device 110 and the microcontroller 108. The established channel enables the transmission of data signals. In an embodiment, the control engine 102 can enable transmission of a set of instructions to flash memory of the microcontroller 108. It would be appreciated by the person skilled in the art that the prior art provides teaching about establishing one or more channels with a host device. However, the current invention enables establishing of the data channel to facilitate the transmission of the set of instructions over the network 104. In another embodiment, the set of instructions can be temporarily stored on the control engine to enable transmission of the set of instructions to one or more microcontrollers 108 or the server 114 operatively coupled to the control engine 102.
[00062] In an embodiment, when the data channel is established, a third set of data packets can be transmitted from the computing device 112 to the interfacing device 106. The third set of data packets can include a set of instructions that can be used for updating the flash memory of the microcontroller 108. The third set of data packets can include protocol instructions that need to be followed by the interfacing device to enable the flash memory to be updated. Updating of the flash memory can include
[00063] In an embodiment, the set of instructions can be encrypted at the computing device 110. The computing device can include various operating platforms such as AVRdude for encrypting the set of instructions before transmitting. It would be appreciated by the person skilled in the art that since the transmission happens wirelessly it remains insecure. Hence, to enhance security the set of instructions are encrypted.
[00064] In an embodiment, the control engine 102 can be configured to monitor the transmission of the set of instructions from the computing device 110 to the microcontroller 108. In response to completion of the set of instruction, the control engine 102 can terminate the established data channel. In an embodiment, the updating of the flash memory can include any or a combination of erasing, modifying and adding information stored in the flash memory of the microcontroller 108.
[00065] In an embodiment, the interfacing device 106 can include: a communication unit to enable communication with the control engine and the computing device; a memory unit to store the set of instructions temporarily or permanently before transmitting to the microcontroller; and an interface unit to interface the one or more microcontrollers. In an embodiment, the interfacing device 106 can have a capability to establish a communication channel with the control engine and receive the set of instructions for updating the microcontroller 108.
[00066] It would be appreciated by the person skilled in the art that even thou the embodiments have been explained in terms of updating the microcontroller. However, updating the flash memory of microprocessors and other chips is well within the scope of the invention.
[00067] FIG. 2 illustrates an exemplary module diagram for updating flash memory of microcontroller in accordance with an embodiment of the present disclosure.
[00068] In an aspect, the control engine 102 may comprise one or more processor(s) 202. The one or more processor(s) 202 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, logic circuitries, and/or any devices that manipulate data based on operational instructions. Among other capabilities, the one or more processor(s) 202 are configured to fetch and execute computer-readable instructions stored in a memory 204 of the control engine 102. The memory 204 may store one or more computer-readable instructions or routines, which may be fetched and executed to create or share the data units over a network service. The memory 204 may comprise any non-transitory storage device including, for example, volatile memory such as RAM, or non-volatile memory such as EPROM, flash memory, and the like.
[00069] The control engine 102 may also comprise an interface(s) 206. The interface(s) 206 may comprise a variety of interfaces, for example, interfaces for data input and output devices, referred to as I/O devices, storage devices, and the like. The interface(s) 206 may facilitate communication of control engine 102. The interface(s) 206 may also provide a communication pathway for one or more components of the control engine 102. Examples of such components include, but are not limited to, processing engine(s) 208 and data 210.
[00070] The processing engine(s) 208 may be implemented as a combination of hardware and programming (for example, programmable instructions) to implement one or more functionalities of the processing engine(s) 208. In examples described herein, such combinations of hardware and programming may be implemented in several different ways. For example, the programming for the processing engine(s) 208 may be processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the processing engine(s) 208 may comprise a processing resource (for example, one or more processors), to execute such instructions. In the present examples, the machine-readable storage medium may store instructions that, when executed by the processing resource, implement the processing engine(s) 208. In such examples, the control engine 102 may comprise the machine-readable storage medium storing the instructions and the processing resource to execute the instructions, or the machine-readable storage medium may be separate but accessible to control engine 102 and the processing resource. In other examples, the processing engine(s) 208 may be implemented by electronic circuitry.
[00071] The data 210 may comprise data that is either stored or generated as a result of functionalities implemented by any of the components of the processing engine(s) 208 or the control engine 102.
[00072] In an exemplary embodiment, the processing engine(s) 208 may include an authentication engine 212, a channel allocation engine 214, an updation engine 216, and other engine(s) 220.
[00073] In an embodiment, the authentication engine 212 receives one or more features from a computing device 110 associated with the user 112. The user 112 can include an individual, a small entity, a large entity, an enterprise and the like. The received one or more features relates to information pertaining to an interfacing device and/or a microcontroller. The one or more features can include a unique identifier associated with the interfacing device, a unique key associated with the interfacing device, specifications of the microcontroller that can include if the microcontroller is 8-bit, 16-bit, etc.
[00074] The received one or more features are used for authentication of the interfacing device and the microcontroller. The received one or more features are compared with features of the interfacing device 106 and the microcontroller 108 to authenticate them.
[00075] In an embodiment, the microcontroller 106 is authenticated because the set of instructions or firmware that is being updated to the flash memory of the microcontroller is very specific for the type or kind of microcontroller. Further, the interfacing devices 106 are authenticated to enable selection of the interfacing device 106 from a group of the interfacing devices 106.
[00076] In an embodiment, the channel allocation engine 214 is configured to allocate or establish a channel between the authenticated interfacing device 106 and the computing device 110. In response to authentication of the interfacing device 106, the channel allocation engine establishes a channel between the authenticated interfacing device 106 and the computing device 110. The established channel is a continuous communication channel. The established channel facilitates serial communication.
[00077] It would be appreciated by the person skilled in the art that one or more channels can be established previously. However, the established one or more channels does not support data transmission. The current invention enables establishing a data channel to facilitate the transmission of the set of instructions over the network 104. The data channel is established by providing a continuous communication channel between the computing device 110 and the interfacing device 106. Since, the established channel is continuous, data can be easily transmitted over the established channel.
[00078] In an embodiment, the updation engine 216 can be configured for updating flash memory of the microcontroller 108. The set of instructions or firmware being transmitted from the computing device 110 to the microcontroller 108 interfaced with the interfacing device 106 can be encoded by the updation engine 216 before the firmware is transmitted over the communication stream, in order to protect it against attacks as the system is accessed by different nodes and shared by different resources. Further, private keys and public keys can be used to encode and decode the firmware respectively. It would be appreciated that the public keys and private keys pertain to numbers that have been paired together but may not be identical. While the public key can be shared with organizations/ enterprises/ applications that require retrieving location of the target microcontroller controller 108, the private key can be kept secret by the user 112. The private key can be used to encrypt the generated firmware and the encrypted firmware can then be stored in the database. Similarly, the microcontroller can be configured to decode the encoded firmware while retrieving and updating on the microcontroller 108. The applications/ enterprises/ organizations can then retrieve the firmware for the microcontroller 108 by performing decoding using the public key. Thus, the control engine 102 provides security as only organizations/ applications/ enterprises with a public key would be able to retrieve firmware for the microcontroller 108.
[00079] FIG. 3 is a flow diagram illustrating a process for updating flash memory of microcontroller in accordance with an embodiment of the present disclosure.
[00080] In an aspect, the proposed method may be described in general context of computer-executable instructions. Generally, computer-executable instructions can include routines, programs, objects, components, data structures, procedures, modules, functions, etc., that perform particular functions or implement particular abstract data types. The method can also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, computer-executable instructions may be located in both local and remote computer storage media, including memory storage devices.
[00081] The order in which the method as described is not intended to be construed as a limitation, and any number of the described method blocks may be combined in any order to implement the method or alternate methods. Additionally, individual blocks may be deleted from the method without departing from the spirit and scope of the subject matter described herein. Furthermore, the method may be implemented in any suitable hardware, software, firmware, or combination thereof. However, for ease of explanation, in the embodiments described below, the method may be considered to be implemented in the above-described system.
[00082] In context of a flow diagram, block 302 pertains to receiving from a computing device associated with a user, a first set of data packets pertaining to one or more attributes associated with the one or more interfacing devices and the microcontroller. Further block 304 pertains to processing a second set of data packets selected from the received first set of data packets to authenticate at least one of the one or more interfacing devices, and authenticate the microcontroller that is interfaced with the authenticated interfacing device.
[00083] Further, at block 306 in response to the authentication of the at least one interfacing device, establishing a communication channel between the authenticated interfacing device and the computing device for transmission of a third set of data packets to the at least one interfacing device for updating the flash memory of the authenticated microcontrollers interfaced with the authenticated interfacing device
[00084] FIG. 4 illustrates an exemplary computer system in which or with which embodiments of the present invention can be utilized in accordance with embodiments of the present disclosure.
[00085] As shown in FIG. 4, computer system 400 includes an external storage device 410, a bus 420, a main memory 430, a read only memory 440, a mass storage device 450, communication port 460, and a processor 470. A person skilled in the art will appreciate that the computer system may include more than one processor and communication ports. Examples of processor 470 include, but are not limited to, an Intel® Itanium® or Itanium 2 processor(s), or AMD® Opteron® or Athlon MP® processor(s), Motorola® lines of processors, FortiSOC™ system on a chip processors or other future processors. Processor 470 may include various modules associated with embodiments of the present invention. Communication port 460 can be any of an RS-232 port for use with a modem-based dialup connection, a 10/100 Ethernet port, a Gigabit or 10 Gigabit port using copper or fiber, a serial port, a parallel port, or other existing or future ports. Communication port 460 may be chosen depending on a network, such a Local Area Network (LAN), Wide Area Network (WAN), or any network to which computer system connects.
[00086] Memory 430 can be Random Access Memory (RAM), or any other dynamic storage device commonly known in the art. Read only memory 440 can be any static storage device(s) e.g., but not limited to, a Programmable Read Only Memory (PROM) chips for storing static information e.g., start-up or BIOS instructions for processor 470. Mass storage 450 may be any current or future mass storage solution, which can be used to store information and/or instructions. Exemplary mass storage solutions include, but are not limited to, Parallel Advanced Technology Attachment (PATA) or Serial Advanced Technology Attachment (SATA) hard disk drives or solid-state drives (internal or external, e.g., having Universal Serial Bus (USB) and/or Firewire interfaces), e.g. those available from Seagate (e.g., the Seagate Barracuda 7200 family) or Hitachi (e.g., the Hitachi Deskstar 7K1000), one or more optical discs, Redundant Array of Independent Disks (RAID) storage, e.g. an array of disks (e.g., SATA arrays), available from various vendors including Dot Hill Systems Corp., LaCie, Nexsan Technologies, Inc. and Enhance Technology, Inc.
[00087] Bus 420 communicatively couples processor(s) 470 with the other memory, storage and communication blocks. Bus 420 can be, e.g. a Peripheral Component Interconnect (PCI) / PCI Extended (PCI-X) bus, Small Computer System Interface (SCSI), USB or the like, for connecting expansion cards, drives and other subsystems as well as other buses, such a front side bus (FSB), which connects processor 470 to software system.
[00088] Optionally, operator and administrative interfaces, e.g. a display, keyboard, and a cursor control device, may also be coupled to bus 420 to support direct operator interaction with computer system. Other operator and administrative interfaces can be provided through network connections connected through communication port 460. External storage device 410 can be any kind of external hard-drives, floppy drives, IOMEGA® Zip Drives, Compact Disc - Read Only Memory (CD-ROM), Compact Disc - Re-Writable (CD-RW), Digital Video Disk - Read Only Memory (DVD-ROM). Components described above are meant only to exemplify various possibilities. In no way should the aforementioned exemplary computer system limit the scope of the present disclosure.
[00089] Thus, it will be appreciated by those of ordinary skill in the art that the diagrams, schematics, illustrations, and the like represent conceptual views or processes illustrating systems and methods embodying this invention. The functions of the various elements shown in the figures may be provided through the use of dedicated hardware as well as hardware capable of executing associated software. Similarly, any switches shown in the figures are conceptual only. Their function may be carried out through the operation of program logic, through dedicated logic, through the interaction of program control and dedicated logic, or even manually, the particular technique being selectable by the entity implementing this invention. Those of ordinary skill in the art further understand that the exemplary hardware, software, processes, methods, and/or operating systems described herein are for illustrative purposes and, thus, are not intended to be limited to any particular named.
[00090] While embodiments of the present invention have been illustrated and described, it will be clear that the invention is not limited to these embodiments only. Numerous modifications, changes, variations, substitutions, and equivalents will be apparent to those skilled in the art, without departing from the spirit and scope of the invention, as described in the claim.
[00091] In the foregoing description, numerous details are set forth. It will be apparent, however, to one of ordinary skill in the art having the benefit of this disclosure, that the present invention may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, to avoid obscuring the present invention.
[00092] As used herein, and unless the context dictates otherwise, the term "coupled to" is intended to include both direct coupling (in which two elements that are coupled to each other contact each other)and indirect coupling (in which at least one additional element is located between the two elements). Therefore, the terms "coupled to" and "coupled with" are used synonymously. Within the context of this document terms "coupled to" and "coupled with" are also used euphemistically to mean "communicatively coupled with" over a network, where two or more devices are able to exchange data with each other over the network, possibly via one or more intermediary device.
[00093] It should be apparent to those skilled in the art that many more modifications besides those already described are possible without departing from the inventive concepts herein. The inventive subject matter, therefore, is not to be restricted except in the spirit of the appended claims. Moreover, in interpreting both the specification and the claims, all terms should be interpreted in the broadest possible manner consistent with the context. In particular, the terms "comprises" and "comprising" should be interpreted as referring to elements, components, or steps in a non-exclusive manner, indicating that the referenced elements, components, or steps may be present, or utilized, or combined with other elements, components, or steps that are not expressly referenced. Where the specification claims refers to at least one of something selected from the group consisting of A, B, C …. and N, the text should be interpreted as requiring only one element from the group, not A plus N, or B plus N, etc.
[00094] While the foregoing describes various embodiments of the invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof. The scope of the invention is determined by the claims that follow. The invention is not limited to the described embodiments, versions or examples, which are included to enable a person having ordinary skill in the art to make and use the invention when combined with information and knowledge available to the person having ordinary skill in the art.

ADVANTAGES OF THE PRESENT DISCLOSURE
[00095] The present disclosure provides system and method for updating flash memory of microcontroller.
[00096] The present disclosure provides system and method for updating flash memory of microcontroller wirelessly over the internet.
[00097] The present disclosure provides system and method for updating flash memory of an 8-bit microcontroller.
[00098] The present disclosure provides system and method for updating flash memory of microcontroller that is secure, as the firmware or set of instructions being transmitted are encoded before transmission.
[00099] The present disclosure provides system and method for updating flash memory of microcontroller that is cost-effective and easy to implement.
,CLAIMS:1. A system for updating flash memory of microcontroller in a wireless network, said system comprising:
one or more interfacing devices configured to interface with one or more microcontrollers; and
a control engine operatively coupled to the interfacing device, the control engine comprising one or more processors coupled to a memory, the memory storing instructions executable by the one or more processors to:
receive, from a computing device associated with a user, a first set of data packets pertaining to one or more attributes associated with the one or more interfacing devices and the one or more microcontrollers;
process a second set of data packets selected from the received first set of data packets to authenticate at least one of the one or more interfacing devices and at least one of the one or more microcontrollers interfaced with the authenticated interfacing device;
responsive to the authentication of the at least one interfacing device, establish a communication channel between the authenticated at least one interfacing device and the computing device for transmission of a third set of data packets to the at least one interfacing device for updating of the flash memory of the authenticated at least one of the one or more microcontrollers interfaced with the authenticated interfacing device.
2. The system as claimed in claim 1, wherein the one or more attributes comprises, specifications of the microcontroller, a unique identifier associated with the interfacing device
3. The system as claimed in claim 1, wherein the microcontroller is an 8-bit programmable microcontroller
4. The system as claimed in claim 1, wherein the updating comprises any or a combination of erasing, modifying and adding information stored in flash memory of the microcontroller.
5. The system as claimed in claim 1, wherein the established communication channel is a continuous serial communication channel.
6. The system as claimed in claim 1, wherein a set of instructions stored on the computing device is transmitted to the interfacing device via the established channel.
7. The system as claimed in claim 7, wherein the set of instructions are encrypted before transmission.
8. The system as claimed in claim 1, wherein the third set of data packets comprises information pertaining to handshaking required to enable the flash memory to receive the set of instructions.
9. The system as claimed in claim 1, wherein the interface device comprises:
a communication unit to enable communication with the control engine and the computing device;
a memory unit; and
an interface unit to interface the one or more microcontrollers.
10. A method for updating flash memory of microcontroller in a wireless network, said method comprising:
receiving, by one or more processors of a control engine, from a computing device associated with a user, a first set of data packets pertaining to one or more attributes associated with the one or more interfacing devices and the one or more microcontrollers;
processing, by the control engine, a second set of data packets selected from the received first set of data packets to authenticate at least one of the one or more interfacing devices and at least one of the one or more microcontrollers interfaced with the authenticated interfacing device;
responsive to the authentication of the at least one interfacing device, establishing, by the control engine, a communication channel between the authenticated at least one interfacing device and the computing device for transmission of a third set of data packets to the at least one interfacing device for updating of the flash memory of the authenticated at least one of the one or more microcontrollers interfaced with the authenticated interfacing device.

Documents

Application Documents

# Name Date
1 201821030265-STATEMENT OF UNDERTAKING (FORM 3) [11-08-2018(online)].pdf 2018-08-11
2 201821030265-PROVISIONAL SPECIFICATION [11-08-2018(online)].pdf 2018-08-11
3 201821030265-FORM FOR SMALL ENTITY(FORM-28) [11-08-2018(online)].pdf 2018-08-11
4 201821030265-FORM FOR SMALL ENTITY [11-08-2018(online)].pdf 2018-08-11
5 201821030265-FORM 1 [11-08-2018(online)].pdf 2018-08-11
6 201821030265-EVIDENCE FOR REGISTRATION UNDER SSI(FORM-28) [11-08-2018(online)].pdf 2018-08-11
7 201821030265-EVIDENCE FOR REGISTRATION UNDER SSI [11-08-2018(online)].pdf 2018-08-11
8 201821030265-DRAWINGS [11-08-2018(online)].pdf 2018-08-11
9 201821030265-DECLARATION OF INVENTORSHIP (FORM 5) [11-08-2018(online)].pdf 2018-08-11
10 201821030265-FORM-26 [10-11-2018(online)].pdf 2018-11-10
11 201821030265-Proof of Right (MANDATORY) [28-01-2019(online)].pdf 2019-01-28
12 201821030265-ORIGINAL UR 6(1A) FORM 1-040219.pdf 2019-06-07
13 201821030265-DRAWING [10-08-2019(online)].pdf 2019-08-10
14 201821030265-COMPLETE SPECIFICATION [10-08-2019(online)].pdf 2019-08-10
15 Abstract1.jpg 2019-09-16
16 201821030265-ORIGINAL UR 6(1A) FORM 26-261118.pdf 2019-11-20
17 201821030265-Request Letter-Correspondence [16-12-2019(online)].pdf 2019-12-16
18 201821030265-CORRESPONDENCE(IPO)-(CERTIFIED COPY OF WIPO DAS)-(17-12-2019).pdf 2019-12-17
19 201821030265-FORM 3 [07-02-2020(online)].pdf 2020-02-07
20 201821030265-FORM 18 [12-07-2022(online)].pdf 2022-07-12
21 201821030265-FER.pdf 2022-10-19
22 201821030265-RELEVANT DOCUMENTS [11-04-2023(online)].pdf 2023-04-11
23 201821030265-POA [11-04-2023(online)].pdf 2023-04-11
24 201821030265-OTHERS [11-04-2023(online)].pdf 2023-04-11
25 201821030265-Information under section 8(2) [11-04-2023(online)].pdf 2023-04-11
26 201821030265-FORM 3 [11-04-2023(online)].pdf 2023-04-11
27 201821030265-FORM 13 [11-04-2023(online)].pdf 2023-04-11
28 201821030265-FER_SER_REPLY [11-04-2023(online)].pdf 2023-04-11
29 201821030265-CORRESPONDENCE [11-04-2023(online)].pdf 2023-04-11
30 201821030265-CLAIMS [11-04-2023(online)].pdf 2023-04-11
31 201821030265-US(14)-HearingNotice-(HearingDate-24-06-2025).pdf 2025-05-21
32 201821030265-Correspondence to notify the Controller [23-06-2025(online)].pdf 2025-06-23

Search Strategy

1 ssE_19-10-2022.pdf
2 ssamendedAE_26-02-2024.pdf