Method for updating a program in a microcontroller

The method allows for efficient and secure updating of microcontroller programs by individually selecting programs and memory locations, addressing memory constraints and inflexibilities in existing update strategies.

FR3170665A1Pending Publication Date: 2026-06-26STMICROELECTRONICS INT NV

Patent Information

Authority / Receiving Office
FR · FR
Patent Type
Applications
Current Assignee / Owner
STMICROELECTRONICS INT NV
Filing Date
2024-12-20
Publication Date
2026-06-26

AI Technical Summary

Technical Problem

Current methods for updating microcontroller programs require significant memory space, which limits available memory for other functionalities and are inflexible in update strategies.

Method used

A method for updating microcontroller programs by individually selecting programs to execute, memory locations for updates, and updating version and dependency data, allowing for a dynamic and flexible update strategy without additional memory requirements.

Benefits of technology

Enables efficient updating of multiple images within the same program without additional memory space, while ensuring security and flexibility in update configurations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Method for updating a program in a microcontroller. This description relates to a method for updating one or more programs (222, 309) of a microcontroller (100), the method comprising individually updating different images of said one or more programs (222, 309), the update of each of these images comprising: - selecting one program to be executed, from among several programs, during a microcontroller startup; - selecting one or more memory locations of said one or more programs (222, 309), into which to load an image used for the update; and - updating version data, and image dependency data, of said one or more programs (222, 309), contained in an update program (ROT). Figure for the abstract: Fig. 4
Need to check novelty before this filing date? Find Prior Art

Description

Title of the invention: Method for updating a program in a microcontroller. Technical field

[0001] This description relates generally to methods for updating a program in a microcontroller and to microcontrollers implementing such methods. Previous technique

[0002] Some microcontrollers can implement an update of one or more of their programs. However, current methods for updating programs in microcontrollers require a significant amount of memory space. Summary of the invention

[0003] There is a need to provide a method for updating a microcontroller program that limits the memory space required.

[0004] An embodiment overcomes all or part of the drawbacks of known update methods.

[0005] An embodiment provides a method for updating one or more programs of a microcontroller, the method comprising the individual updating of different images of said one or more programs, the update of each of these images comprising: - the selection of a program to execute, from among several programs, when starting the microcontroller; - the selection of one or more memory locations of said one or more programs, into which to load an image used for the update; and - the updating of version data, and image dependency data, of said one or more programs, contained in an update program.

[0006] One embodiment provides for a microcontroller, comprising one or more programs, and an update program, the microcontroller being configured to implement the individual update of different images of said one or more programs, the update of each of these images comprising: - the selection of a program to execute, from among several programs, when starting the microcontroller; - the selection of one or more memory locations of said one or more programs, into which to load an image used for the update; and - the updating of version data, and image dependency data, of said one or more programs, contained in an update program.

[0007] According to one embodiment, the selection of the program to be executed when starting the microcontroller is made from one or more of said programs, one or more of said programs being an update loading program and another or more of said programs being an application program.

[0008] According to one embodiment, the update of each of the images further includes the selection of an update installation method to be used by the update program.

[0009] According to one embodiment, said one or more selected memory locations include a memory location of one or more images of said one or more programs.

[0010] According to one embodiment, the update of each of the images further includes the update of configuration data of the update program including data associated with: - the program to be executed; - to said one or more memory locations in which to load, before their installation, one or more image updates; - to image version and dependency data; and - to the selected update installation method.

[0011] According to one embodiment, the selection of the program to be executed during a restart of the microcontroller includes the selection of a respective entry point of one or more of said programs.

[0012] According to one embodiment, the application program and the update loading program have images in common.

[0013] According to one embodiment, the application program, the update loading program and the update program are stored in a non-volatile memory of the microcontroller.

[0014] According to one embodiment, a first memory location of said memory is configured to be accessible only by the update program, and to contain said configuration data of the installation program.

[0015] According to one embodiment, a second memory location of said memory is configured to be accessible for reading and writing by the application program and by the update loading program.

[0016] According to one embodiment, the updates to the configuration data of the update program are loaded into said second memory location and then installed into the first memory location by the update program.

[0017] According to one embodiment, a program, either the update loader program or the application program, is configured to: - download configuration data from the update program; - delete images from said one or more programs; - download updates to said one or more memory locations defined in the configuration data of the update program.

[0018] One embodiment provides a radio frequency system comprising an update unit, external to the microcontroller, and the microcontroller as described above, the microcontroller's update loading program being configured to download image updates from the update unit. Brief description of the drawings

[0019] These features and advantages, as well as others, will be described in detail in the following description of particular embodiments, given by way of non-limiting example, in relation to the accompanying figures, among which:

[0020] Fig. 1 illustrates in a very schematic way and in block form, a system of the type to which the embodiments apply;

[0021] [Fig.2] illustrates in a very schematic way and in block form, an example of a memory configuration of the microcontroller of [Fig.1];

[0022] [Fig.3] illustrates in a very schematic way and in block form, an example of a memory configuration of the microcontroller of [Fig.1];

[0023] [Fig.4] illustrates in a very schematic way and in block form, an example of a memory configuration of the microcontroller of [Fig.1] according to one embodiment;

[0024] Figure 5 illustrates a program update method according to one embodiment; and

[0025] [Fig.6] illustrates a program update method according to one embodiment. Description of the implementation methods

[0026] The same elements have been designated by the same reference numerals in the different figures. In particular, the structural and / or functional elements common to the different embodiments may have the same reference numerals and may have identical structural, dimensional and material properties.

[0027] For the sake of clarity, only the steps and elements useful for understanding the described embodiments have been represented and are detailed.

[0028] Unless otherwise specified, when referring to two interconnected elements, this means directly connected without intermediate elements other than conductors, and when referring to two connected (in English "coupled") elements between them, this means that these two elements can be connected or linked via one or more other elements.

[0029] In the following description, when reference is made to absolute position qualifiers, such as the terms "front", "back", "top", "bottom", "left", "right", etc., or relative position qualifiers, such as the terms "above", "below", "superior", "inferior", etc., or to orientation qualifiers, such as the terms "horizontal", "vertical", etc., reference is made, unless otherwise specified, to the orientation of the figures.

[0030] Unless otherwise specified, the expressions "approximately", "roughly", and "on the order of" mean to within 10% or 10°, preferably to within 5% or 5°.

[0031] Fig. 1 illustrates in a very schematic way and in block form, a system 80 of the type to which the embodiments apply.

[0032] The system 80 includes, for example, a microcontroller 100 capable of communicating wirelessly, or by wire, with an update unit 150 (PROGRAM UPLOAD UNIT).

[0033] The microcontroller 100 includes a non-volatile memory 104 (MEM WITH ROT), for example of the FLASH memory type or of the phase-change type, capable of communicating, via a communication bus 114, with a non-volatile memory interface 106 (MEM INTERFACE) configured to write or read data into and from the non-volatile memory 104. In one example, system programs and / or applications, such as boot programs, are implemented in the memory 104. The memory 104 includes, for example, a program configured to manage other programs stored within the memory 104. These other programs are, for example, applications developed by users of the microcontroller, or Wireless Protocol Stacks which, when executed, enable data communication with the update unit 150.Memory 104 may also include a program to implement an update of the data, programs or applications present, for example, in memory 104.

[0034] The microcontroller 100 further comprises, for example, a processing unit 110 (CPU) including one or more processors under the control of instructions stored, for example, in a system memory 112 (INSTR MEM) or in memory 104. The instruction memory 112 is, for example, a volatile random access memory (RAM). The processing unit 110 and memory 112 communicate, for example, via a system bus 140 (data, address, and instruction bus). Memory 104 is connected to system bus 140. via the non-volatile memory interface 106 and via bus 114.

[0035] The microcontroller 100 further includes an input / output interface 108 (I / O INTERFACE) connected to the system bus 140 for communicating with the outside.

[0036] The microcontroller 100 further includes, for example, another memory 120 (MEM2) of non-volatile type or of RAM type. This memory 120 is connected to the system bus 140 directly or via a memory interface (not shown) whose role is, for example, similar to interface 106.

[0037] The microcontroller 100 can integrate other circuits implementing other functions (for example, one or more volatile and / or non-volatile memories, other processing units), symbolized by a block 116 (FCT) in [Fig.1].

[0038] The microcontroller 100 can further integrate other circuits, such as wireless communication circuits 118 (RF) having for example impedance matching circuits and which are configured to be connected to one or more antennas.

[0039] It may be necessary to update the program(s) present in memory 104.

[0040] In addition, some local regulations, such as the RED (Radio Equipment Directive) in Europe, or some certification schemes like PSA© or SESIP, require secure update capabilities.

[0041] Figure 2 illustrates, in a very schematic and block-like manner, an example of a microcontroller memory. More specifically, the example shown illustrates memory 104 of microcontroller 100.

[0042] The example in [Fig. 2] allows for the implementation of, for example, an over-the-air (OTA) update. The example shown allows, for example, the implementation of an update of a program, called the main program, 222 (MAIN APPLICATION) stored in a memory space 212 of memory 104. In one example, the program 222 consists of one or more images, which are, for example, files, for example binary files, formed by sequences of instructions and / or data.

[0043] The memory 104 can be divided into several memory locations, which can be called primary or secondary. Primary locations, such as location 212, are locations containing images with code or data directly accessible by the main program 222. Secondary locations, such as a location 206 (DOWNLOAD SLOT), are locations for storing updates, that is, other versions, downloaded from the program 222, which can, for example, be installed in the primary location 212.

[0044] Memory 104 includes, for example, another memory space 204, in which a Root of Trust (ROT) program 214 is stored. The ROT program includes, for example, a Secure Boot program that verifies the authenticity of the program 222 before its execution. When the program 222 is composed of several images, the consistency of the program 222 is also verified using dependency information. The ROT program, which enables Secure Boot and the installation of updates, can, for example, be developed using the MCUBoot© library.

[0045] The ROT program is executed when the microcontroller 100 starts up and is also configured to detect any updates in secondary memory locations and, if necessary, install the updates. Installing an image from a memory location, referred to as "secondary," 206 to a memory location, referred to as "primary," 212 involves authenticating an update image 208 (APPLICATION UPDATE), verifying that the downloaded version is not an older version ("anti-rollback"), and optionally decrypting the update image. The decrypted image is then copied in place of the image 222 so that it can be used. This update image 208 of the program 222 is downloaded, for example, from the update unit 150, and loaded into memory space 206.

[0046] The example in [Fig.2] implies that the total memory space required for updating program 222 is approximately double the memory space occupied by program 222, which implies significant costs or a limitation of the memory available for program 222 and therefore a limitation of its functionality.

[0047] Figure 3 illustrates, in a very schematic and block-like manner, an example of a microcontroller memory. More specifically, the example shown illustrates memory 104 of microcontroller 100.

[0048] The example in [Fig.3] is similar to that in [Fig.2] except that the program 222 to be updated consists of several images, otherwise called services, 318 (Service A), 316 (Service B), 314 (Service C), 312 (Host stack), 310 (Link layer), stored in respective memory locations. The program 222 also includes an entry point 319 (Application entry point) which represents, for example, the instruction, or series of instructions, implemented first during the execution of the program 222. In an example, image 319 corresponds to the core of the application, image 316 corresponds to functions, for example, related to identification with respect to a remote portal (cloud), image 314 corresponds to a cryptography library, and images 312 and 310 correspond, for example, to the implementation of a wireless communication protocol.

[0049] In the example illustrated in [Fig.3], memory 104 further includes another program 309 (Autonomous OTA loader) which is a loading program of updates. Program 309 includes, for example, images 310, 312, and 314, as well as a loader entry point 308. The loader entry point 308 represents, for example, the instruction or series of instructions implemented first during the execution of program or application 308. Program 309's function, for example, is to retrieve an update from a remote location and download it. In the example in [Fig. 3], the version references of the different images of program 309, as well as their dependencies, are stored in each image. The images may also include a signature associated with encryption.

[0050] The program 309 illustrated in [Fig.3] runs for example without dependence on images 316, 318 and 319 which are specific to program 222.

[0051] In the example illustrated in [Fig.3], images 314, 312, and 310 are common to programs 222 and 309. This helps to limit the memory space used.

[0052] In an example not shown, other programs for example related to manufacturing, calibration or diagnostics can be incorporated into memory 104.

[0053] Using current update mechanisms, such as those in the MCUboot© library, secondary memory locations must be statically defined at the compilation of the ROT 214 update program. Thus, in the example of [Fig.3], additional memory locations 322, 324, 326, 328, and 330 must be reserved to handle the worst-case scenario in which it is necessary to download the updates for all images 308, 310, 312, and 314 of application 309 (OTA loader) before installing them and restarting application 309. This is costly in terms of memory space consumed. Furthermore, the MCUBoot© library only supports a single fixed entry point, 308 or 319, to be defined for starting the ROT 214 update program. Another drawback of this library is that it is not possible to reconfigure different writing modes depending on the images to be updated.For example, it is not possible for some images to be installed, during the update by the 214 ROT update program, with an install-in-place method, and for other images to be installed with another method, such as one based on swap / backup or one based on overwriting data.

[0054] Another limitation of current protocols arises from the fact that the dependency information for each image is stored within that same image. In other words, if a given first image depends on another image that has been updated, then the dependency information of the first image must also be updated, and therefore the first image must also be updated. This limits the efficiency of the update strategy.

[0055] In order to overcome the drawbacks of the examples in Figures 2 and 3, the embodiments provide a method for updating one or more programs of a microcontroller (such as, for example, application program 222 or program 309), the method comprising the individual updating of different images of said one or more programs, the update of each of these images comprising: - the selection of a program to execute, from among several programs, when starting the microcontroller; - the selection of one or more memory locations of said one or more programs, into which to load an image used for the update; and - the updating of version data, and image dependency data, of said one or more programs, contained in the update program.

[0056] According to one aspect, each image update further includes the selection of an update installation method to be used by the ROT update program.

[0057] In other words, the proposed method implements the updating, separately or independently, of one or more images composing one or more programs among, for example, programs 222, 309. The images to be updated are, for example, independent of each other.

[0058] Since the selection steps and the version and dependency data update step are implemented for each updated image, this allows them to be configured differently for each image. A dynamic update configuration is thus implemented, enabling a flexible update strategy.

[0059] This allows for a dynamic configuration of the ROT update program to implement the selection steps, and the version and dependency data update step, in a differentiated way for each image to be updated.

[0060] This also makes it possible to do without additional memory locations dedicated to updated images by reusing primary locations of updated images.

[0061] In the following examples, the memory locations selected, or configured, to receive an image used for the update are called secondary locations. The memory locations in which the images are initially stored, before being updated, are called primary locations.

[0062] The methods described in the embodiments also allow the independent updating of one or more images of a program comprising these images, within the same program without additional memory space.

[0063] Figure 4 illustrates, in a very schematic and block-like fashion, an example of the memory 104 of microcontroller 100 of [Fig.l] according to one embodiment.

[0064] In the example shown, memory 104 includes programs 222 and 309 similar to those in [Fig.3].

[0065] In this example, memory space 204, including the ROT program, includes a memory location 405 (ROT configuration) which includes the configuration of the ROT program.

[0066] In one example, primary memory location 405 contains the current configuration of ROT program 204 and is configured to be accessible only by this ROT update program. This location 405 contains, for example, the address of the active program to be checked and executed at startup, from among programs 222 and 309, for example. The cryptographic hardware associated with the ROT update program allows the update images, as well as the information for each system image, to be decrypted and authenticated. This information includes, for example: - data allowing verification of the integrity and / or authenticity of the image, such as a hash considered as the result of a hash type function (hash tag in English) or a signature; - image dependency data to ensure consistency between versions used; - the addresses of the primary and secondary (or additional) locations, where the image and its update are respectively located; and - the installation method.

[0067] Optionally, the memory 104 includes a secondary memory location 406 (ROT configuration-secondary slot), configured to be accessible for reading and writing by the program 222 and / or by the update loader program 309. A new configuration version of the ROT program is, for example, loaded into the memory location 406, with the program 222, and / or with the update loader program 309, before its installation by the ROT program in the memory space 405.

[0068] Using the example in [Fig. 4], it is possible to define a dynamic and sequential update strategy that allows images 314 and 316 to be updated consecutively, reusing only location 316 to store the update images (arrows in [Fig. 4]). Images 314 and 316 can be updated using a different installation method, without using dedicated secondary memory locations, as is the case with memory location 206, which can thus be removed or used to increase the size of program 222.

[0069] The example in [Fig.4] also allows the configuration of the ROT program to be defined dynamically to modify, for example at different stages of the updates of images 314 or 316, the selection of the program to be executed when restarting the microcontroller 100, and / or the selection of a memory location in which to load one or more updates, and / or the method of installing the updates by the ROT program.

[0070] Figure 5 illustrates a program update method according to one embodiment.

[0071] Figure 6 illustrates a program update method according to one embodiment.

[0072] Figures 5 and 6 together represent a possible example of the steps of the same process for sequentially updating the image 314 contained in programs 222 and 309, and the image 316 contained only in program 222.

[0073] In step 502, memory 104 is similar to that in the example in [Fig. 4] with memory location 406 initially empty. The RoT update program is configured to check the integrity, consistency, and authenticity of program 222 and verifies the set of images 310, 312, 314, 316, 318, and 319 that make up program 222. Once this is verified, program 222 is started by executing image 319 (represented by a dashed arrow).

[0074] In a step 504, subsequent to step 502, a first version (ROT cfg update 1) of the ROT program configuration data is loaded into memory location 406, for example, with program 222. The first version of the ROT program configuration data includes, for example, a first version of the dependency data for images 308, 310, 312, 314, and / or a first selection of the program 309 to be executed upon a reboot of the microcontroller 100, and / or a first selection of a secondary memory location into which to load one or more updates, and / or a first selection of the installation method for the loaded updates by the ROT program. In this first version of the ROT program configuration data, the update loading program 309 (OTA LOADER) is selected, in other words, configured, to be executed upon reboot of the microcontroller.The memory location of image 316, which is not used by the update loader program 309, is selected to load an update of image 314 (Service C update).

[0075] In steps 506 and 508, subsequent to step 504, the microcontroller 100 is restarted and the ROT update program verifies the authenticity and version of the image, optionally decrypts the image 406 (ROT cfg updatel), and then installs (ROT cfgl) the first configuration version in space 405. The program ROT updates checks the integrity, authenticity, and version of program 309 and starts it. Then the update loader program 309 erases image 316. It also downloads an image used to update image 314 and a second version (ROT cfg update2) of the ROT program configuration data to load them, respectively, into the memory location of the initial image 316 and into memory location 406.

[0076] In a step 510, subsequent to step 508, the microcontroller is restarted, and then the ROT update program installs (ROT cfg2) the image update 314 (Updated Service C) from the location of the initial image 316 to the memory location where the image 314 to be updated is stored, for example, by overwriting, or replacing, the image 314 to be updated. The ROT update program also installs (ROT cfg2) the second version of the ROT program configuration data in primary memory space 405, overwriting, or replacing, the first version of the ROT program configuration. Installing the new configuration (ROT cfg2) allows, in particular, setting the secondary location of image 316 to the same location as the primary location 316, as defined by the install-in-place method.It also allows updating the version and dependency information of program 309 to take into account the installation of the new Updated Service C image contained in program 309.

[0077] In a step 512, subsequent to step 510, the update loader program 309 downloads an image (Service B update) used to update the image 316 and a third version (ROT cfg update3) of the ROT program configuration data and loads them, respectively, into secondary memory locations 316 and 406.

[0078] In a step 514, subsequent to step 512, the microcontroller is restarted and then the ROT update program installs the image update 316 (Updated Service B) into the primary memory location of image 316 from the image used for updating image 316 downloaded previously, and then installs (ROT cfg3) the third version of the ROT program configuration data into memory space 405. In step 514, the third version of the ROT program configuration data includes the selection of program 222 as well as all the dependency information of the images used by program 222 so that program 222 is checked and executed on the next restart of the microcontroller.

[0079] According to an example of the process in Figures 5 and 6: - In the first step, a configuration of the ROT update installer is performed so that the first memory location 405 include a first ROT cfgl version of ROT installer configuration data, so that the update loader 309 is selected to be executed when the microcontroller 100 is restarted, and so that a memory location of a first image 316 of the application program 222 is selected to load a Service C update image used to update a second image 314 of the application program 222; - in a second step, the microcontroller is restarted and then the update loading program 309 downloads the Service C update image used to update the second image 314 as well as a second version of the ROT installer configuration data, respectively, into the memory location of the first image 316 in place of the first image, and into the second memory location 406, the second version ROT cfg2 of the ROT installer configuration data defining: the memory location where the first image 316 was stored is the same as the location of the Service C update image used to update the second image 314, the location of the second image 314 as being where to install the Updated Service C update of the second image 314, and the installation method with copy; - In a third step, the microcontroller is restarted and then the ROT installation program installs: the Updated Service C image, using the Service C update image used to update the second 314 image, instead of the second 314 image, and the second version ROT cfg2 of the ROT installer configuration data in the first memory space 405; - In a fourth step, the 309 update loader program downloads: a Service B update image used to update the first image 316, and a third ROT cfg3 version of the ROT update program configuration data, respectively, in the memory location where the first image 316 was stored, and in the second memory location 406, the third version ROT cfg3 of the configuration data includes the selection of application program 222 as well as dependency information for the images contained in application program 222; - In a fifth step, the 100 microcontroller is restarted, then the ROT update program installs the update of the first image, Updated Service B from and into the memory location of the first 316 image using the Service B update image used to update the first 316 image; installs the third version ROT cfg3 of the ROT installer configuration data in the first memory space 405; verifies the authenticity, integrity and consistency of the image versions contained in application program 222; and selects program 222 to run when microcontroller 100 is restarted.

[0080] The update method of Figures 5 and 6 allows the updating of several images of a program without additional memory space while respecting security.

[0081] The described microcontroller can be used in personal electronic devices, for example, to update applications to apply functional or security fixes, in 5G-enabled devices, or more generally in connected devices. The device is, for example, a smartphone or part of an Internet of Things (IoT) network. The microcontroller is, for example, integrated into a radio frequency communication product connected via 5G, NFC, Wi-Fi, UWB (ultra-wideband), NFC (Near Field Communication), LoRa, SIGFOX, or Bluetooth®. The product incorporating the microcontroller may include filters or protections against magnetic fields or electrical discharges. The described microcontroller can also be used in satellites.

[0082] Various embodiments and variations have been described. A person skilled in the art will understand that certain features of these various embodiments and variations could be combined, and other variations will become apparent to the person skilled in the art. In particular, even though the examples in Figures 5 and 6 show the updating of two images 316 and 314, a person skilled in the art will be able to use the teachings from the description to implement the updating of a single image or of more than two images of the same program with different update strategies.

[0083] Finally, the practical implementation of the described embodiments and variants is within the grasp of a person skilled in the art, based on the functional specifications given above. In particular, the download protocol for program 309, although described in the text as being configured for wireless updates, can be adapted for wired updates. In this case, communication with unit 150 will be via a wired connection.

Claims

Demands

1. A method for updating one or more programs (222, 309) of a microcontroller (100), the method comprising individually updating different images of said one or more programs (222, 309), the update of each of these images comprising: - selecting a program to be executed, from among several programs, at a start of the microcontroller; - selecting one or more memory locations of said one or more programs (222, 309), into which to load an image used for the update; and - updating version data, and image dependency data, of said one or more programs (222, 309), contained in an update program (ROT).

2. A method according to claim 1, wherein the selection of the program to be executed during a microcontroller startup is made from one or more of said programs (222, 309), one or more of said programs (222, 309) being an update loading program (309) and another of said programs (222, 309) being an application program (222).

3. A method according to claim 1 or 2, wherein the update of each of the images further includes the selection of an update installation method to be used by the update program (ROT).

4. A method according to any one of claims 1 to 3, wherein said one or more selected memory locations comprise a memory location of one or more images of said one or more programs (222, 309).

5. A method according to claim 3, or 4 in its dependence on claim 3, wherein the update of each of the images further includes the update of configuration data (ROT cfgl, ROT cfg2, ROT cfg3) of the update program (ROT) comprising data associated with: - the program to be executed; - said one or more memory locations into which to load, prior to their installation, one or more image updates; - to image version and dependency data; and - to the selected update installation method.

6. A method according to any one of claims 1 to 5, wherein the selection of the program to be executed upon restart of the microcontroller (100) includes the selection of a respective entry point (319, 308) of one or more of said programs (222, 309).

7. A method according to any one of claims 2, or 3 to 6 in their dependence on claim 2, wherein the application program (222) and the update loading program (309) have images in common.

8. A method according to any one of claims 2, or 3 to 7 in their dependence on claim 2, wherein the application program (222), the update load program (309) and the update program (ROT) are stored in a non-volatile memory (104) of the microcontroller.

9. A method according to claim 8 in its dependence on claim 5, wherein a first memory location (405) of said memory (104) is configured to be accessible only by the update program (ROT), and to contain said configuration data (ROT cfgl, ROT cfg2, ROT cfg3) of the update program (ROT).

10. A method according to claim 9, wherein a second memory location (406) of said memory (104) is configured to be readable and writable by the application program (222) and by the update loading program (309).

11. A method according to claim 10, wherein the updates (ROT cfg upload1, ROT cfg upload2, ROT cfg upload3) of the update program (ROT) configuration data are loaded into said second memory location (406), and then installed into the first memory location (405) by the update program (ROT).

12. A method according to any one of claims 5, or 6 to 11 in their dependence on claim 5, wherein a program from the update loader program (309) or the application program is configured to: - download update program configuration data (ROT); - delete images of said one or more programs (222, 309); - download updates into said one or more memory locations defined in the update program configuration data (ROT).

13. Microcontroller (100), comprising one or more programs (222, 309), and an update program (ROT), the microcontroller being configured to implement the method according to any one of claims 1 to 12.

14. Radio frequency system (80) comprising an update unit (150), external to the microcontroller (100), and the microcontroller (100) according to claim 13, the update loading program (309) of the microcontroller (100) being configured to download image updates from the update unit (150).