Method for increasing the number of applications in a device with limited memory

By receiving control signals in smart cards or other electronic devices, the problem of limited memory space is solved, and the flexibility to store and load more applications in smart cards or other electronic devices is achieved.

CN114691030BActive Publication Date: 2025-06-13STMICROELECTRONICS (GRAND OUEST) SAS
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202111622655.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-12-21
Filing Date
2021-12-28
Publication Date
2025-06-13
Estimated Expiration
2041-12-28

AI Technical Summary

Technical Problem

In smart cards or other electronic devices, limited memory space leads to technical challenges when loading multiple applications into the device during manufacturing.

Method used

By receiving the control signal, multiple compression applications stored in the nonvolatile memory are selected and decompressed, and the decompressed application overwrites the partially stored compression applications to optimize storage space usage.

Benefits of technology

This enables storage and loading of more applications in limited memory space, providing flexibility to select installation or activation applications based on different purposes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114691030B_ABST
    Figure CN114691030B_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to a method for increasing the number of applications in a device with limited memory. A method includes receiving, by the device, a control signal that identifies a first application from a plurality of compressed applications stored in a non-volatile memory of the device. The first application is stored in a first location in the non-volatile memory. The device decompresses the first application. Decompressing includes storing the decompressed first application at least partially in the first location in the non-volatile memory and in a second location of a second compressed application among the plurality of applications. The decompressed first application overwrites at least a portion of the second compressed application. The method may be performed as part of custom processing of an integrated circuit that includes a non-volatile memory.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the field of electronic devices and, more particularly, to a method for storing one or more applications in a memory of an electronic device. Background Art

[0002] The functionality of a smart card or other electronic device including an integrated circuit is typically provided by a computer program or an application installed in the memory of the device. These applications are typically loaded by an operating system when installing the software image of the system. In some cases, it may be desirable to store or load multiple applications in the memory during the manufacturing or production of the device to provide a retailer or end user with the option of installing or activating one or more applications according to the intended use (whether in an automated payment system, in identification, in a telephone, etc.).

[0003] However, the memory available on these devices is limited in size, and loading a large number of applications into the device during manufacturing thus causes technical problems. Summary of the Invention

[0004] There is a need for a method and apparatus that facilitate solving all or part of the disadvantages of known solutions.

[0005] One embodiment provides a method that includes:

[0006] receiving, by the device, a control signal for selecting a first application from a plurality of compressed applications stored in a non-volatile memory of the device, the first application being stored in a first location; and

[0007] decompressing, by the device, the first application and storing the decompressed first application in the memory, at least in part:

[0008] in the first location; and

[0009] in a second storage location of a second compressed application among the plurality of applications, the first decompressed application overwriting at least a portion of the second compressed application.

[0010] According to one embodiment, the first compressed application includes a plurality of segments stored at consecutive memory addresses in the first location, and decompressing the first application includes:

[0011] decompressing at least a first segment that is at least partially located at an address adjacent to the location of the second compressed application;

[0012] storing at least a portion of the first decompressed segment in the location of the second compressed application;

[0013] decompressing a second segment of the first application that is at least partially located at an address adjacent to the first compressed segment of the first application; and

[0014] Store a second decompressed segment of the first application at at least one address adjacent to the first decompressed segment.

[0015] According to one embodiment, a control signal for selecting a first application to be decompressed includes instructions for decompressing a subset of a plurality of applications, and the size of the subset of decompressed applications is at most equal to the size of the memory storing the plurality of compressed applications.

[0016] According to one embodiment, the applications of the subset of applications selected by the selection control signal are decompressed in the order in which they are stored in the non-volatile memory of the device.

[0017] According to one embodiment, each compressed application of the selected subset of applications is stored at least in part at an address adjacent to a compressed application that does not belong to the subset.

[0018] According to one embodiment, the method includes:

[0019] Receiving, by the device, another selection control signal including instructions for decompressing another subset of the plurality of applications; and

[0020] Generating, by the device, an alert signal indicating that decompression of the another subset is not allowed.

[0021] According to one embodiment, the method includes: prior to receiving the selection control signal, storing a plurality of compressed applications in a non-volatile memory by a programming device, the selection control signal being sent by a selection device.

[0022] One embodiment provides a device that includes:

[0023] A non-volatile memory; and

[0024] A data processing device arranged to:

[0025] Receive a control signal for selecting a first application from a plurality of compressed applications stored in the non-volatile memory, the first application being stored in a first location; and

[0026] Decompress the first application and store the first decompressed application at least in part in a first storage location and a second storage location of the plurality of applications in the memory.

[0027] According to one embodiment, the size of the non-volatile memory cannot decompress a plurality of applications.

[0028] An embodiment provides an integrated circuit card including the device.

[0029] In one embodiment, a method includes: receiving, by a device, a control signal that identifies a first application from a plurality of compressed applications stored in a non-volatile memory of the device, the first application being stored in a first location; and decompressing, by the device, the first application. The decompressing includes storing at least a portion of the decompressed first application in the non-volatile memory at the following locations: at the first location; and at a second location storing a second compressed application of the plurality of applications, where the decompressed first application overwrites at least a portion of the second compressed application.

[0030] In one embodiment, a device includes a non-volatile memory and data processing circuitry coupled to the non-volatile memory. The data processing circuitry, in operation: responds to a control signal that identifies a subset of compressed applications from a plurality of compressed applications stored in the non-volatile memory by decompressing the identified subset of compressed applications to produce decompressed applications, the compressed applications being stored in a first location of the non-volatile memory. The decompressing of the compressed applications includes storing at least a portion of the decompressed applications at: the first location; and at a second location of the non-volatile memory, the second location storing another compressed application of the plurality of compressed applications.

[0031] In one embodiment, a system includes an interface and an integrated circuit coupled to the interface. The integrated circuit includes a non-volatile memory storing a plurality of compressed applications at respective locations, and data processing circuitry coupled to the non-volatile memory. In operation, the data processing circuitry responds to a customization signal that identifies a subset of compressed applications from a plurality of compressed applications stored in the non-volatile memory by decompressing the identified subset of compressed applications. The decompressing of the identified subset of compressed applications includes storing at least a portion of the decompressed applications at: the respective location of the compressed applications; and at a second location of the non-volatile memory, the second location storing the plurality of compressed applications not included in the identified subset.

[0032] In one embodiment, the content of a non-transitory computer-readable medium causes processing circuitry to perform a method. The method includes identifying a subset of a plurality of compressed applications stored at respective locations in a non-volatile memory of an integrated circuit, and decompressing the identified subset of the plurality of compressed applications. The decompressing of the identified subset of compressed applications includes storing at least a portion of the decompressed applications at: the respective location storing the compressed applications; and at a second location of the non-volatile memory, the second location storing the plurality of compressed applications not included in the identified subset. BRIEF DESCRIPTION OF THE DRAWINGS

[0033] The foregoing features and advantages, as well as other features and advantages, will be given in the following description of specific embodiments with reference to the accompanying drawings in an illustrative rather than restrictive manner, in which:

[0034] Figure 1 An example of an electronic device is schematically shown;

[0035] Figure 2A Is a flowchart showing operations of a method of installing an application into an electronic device according to an embodiment of the present disclosure;

[0036] Figure 2B Shows a compression operation of a plurality of applications according to an embodiment of the present disclosure;

[0037] Figure 2C Shows a decompression operation of a plurality of applications according to an embodiment of the present disclosure;

[0038] Figure 3 A system including an electronic device and a programming device is schematically shown;

[0039] Figure 4 Is a flowchart showing operations of a method of loading a compressed application into an electronic device according to an embodiment of the present description;

[0040] In Figure 5 Examples of decompression methods of applications according to two selected examples are shown;

[0041] Figure 6 Is shown in more detail Figure 5 A decompression method of an application according to one of the selected examples;

[0042] Figure 7 A system including an electronic device and a selection device according to an embodiment of the present disclosure is schematically shown; and

[0043] Figure 8 Is a timing diagram showing operations of a decompression method according to an embodiment of the present disclosure. Detailed Description

[0044] Unless otherwise specified in the context, the same features are denoted by the same reference numerals in the respective drawings. In particular, common structural and / or functional features in the respective embodiments may have the same reference numerals, and the same or similar structures, dimensions, and material properties may be provided.

[0045] For clarity, only the steps and elements useful for understanding the embodiments described herein are shown and described in detail. In particular, the different compression and decompression algorithms that may be used are not described in detail, and the described embodiments and implementation modes are compatible with common application compression and decompression algorithms.

[0046] Unless otherwise specified, when referring to two elements connected together, this means a direct connection without any intermediate elements other than conductors, and when referring to two elements connected together, this means that the two elements can be connected or they can be coupled via one or more other elements.

[0047] In the following disclosure, unless otherwise specified, when referring to absolute position determiners such as the terms "front", "rear", "top", "bottom", "left", "right", etc., or relative position determiners such as the terms "above", "below", "upper", "lower", etc., or orientation determiners such as "horizontal", "vertical", etc., it refers to the orientation shown in the figure.

[0048] Unless otherwise specified, the expressions "about", "approximately", "substantially", and "within" mean within 10%, for example within 5%.

[0049] Figure 1 An example of an electronic device 100 including an integrated circuit 101 is schematically shown. In some embodiments, the device 100 is an integrated circuit card, such as a bank card, an identification card, or a SIM ("Subscriber Identity / Identification Module") card of a cellular phone. In other embodiments, the device 100 is a networked device, such as a networked watch, which has, for example, a payment application using near field communication (NFC) technology.

[0050] The integrated circuit 101 includes, for example, at least one input / output interface (I / O interface) 102, which includes, for example, a contact (wired) interface and / or a non-contact interface. For example, the interface 102 includes a near field communication interface, such as an NFC interface. The interface 102 is coupled, for example, via a bus 108 to a processor (CPU) 103, a memory (RAM) 104 (which is, for example, a random access memory), and a non-volatile memory (NVMEM) 106 (which is, for example, a flash memory). The non-volatile memory 106 at least partially contains applications APP1 to APPN stored in the memory space 200, where N is the number of applications. For example, N is an integer in the range from two to several tens, for example 4 - 10. These applications have been loaded during the manufacture of the circuit 101.

[0051] Applications APP1 to APPN correspond, for example, to applications that are not yet installed in integrated circuit 101 but are intended to be installed during the customization operation of device 100. This operation is, for example, implemented by an intermediate entity (such as a retailer) before the device is acquired by its end user. During this operation, for example, only the applications corresponding to the intended use of the device are installed. Although non-volatile memory 106 may not contain applications before the customization operation and may only load the desired applications during this customization operation, loading applications during manufacturing has advantages. In fact, for security reasons, it may be desirable for the device manufacturer to perform the loading. In addition, the manufacturer can also ensure that the applications to be installed are compatible with the operating system.

[0052] Applications APP1 to APPN are not intended to all be installed or activated during the device customization operation. The subset of installed applications depends, for example, on the end use of the device. However, the memory available on these devices remains limited, and loading a large number of applications into the device during the manufacturing of integrated circuit 101 to maintain flexibility regarding the final use of device 100 causes technical problems.

[0053] Figure 1 The device 100 shown in is an example and may of course include other components in addition to Figure 1 those shown in, such as other integrated circuits in addition to circuit 101, and each of these integrated circuits may also include a processor. According to another example, device 100 also includes a user interface (not shown). In addition, circuit 101 may contain other elements, such as a direct memory access (DMA) controller.

[0054] Figure 2A is a flowchart showing the operations of a method for installing applications in an electronic device according to an embodiment of the present description.

[0055] In operation 202 (compressing the storage of APP), multiple compressed applications are stored in space 200 of memory 106 ( Figure 1 ).

[0056] According to one embodiment, the compression of multiple applications is performed outside integrated circuit 101, for example, on a computing device such as a computer outside the integrated circuit. Once the compression operation is performed, the multiple compressed applications are loaded for storage in, for example, space 200 of memory 106.

[0057] According to another embodiment, the compression of multiple applications is directly performed by integrated circuit 101. For example, the applications are loaded one by one into integrated circuit 101, and integrated circuit 101 itself performs the compression of the applications one by one via processor 103 and still stores them one by one into memory 106.

[0058] In operation 204 (in-place decompression), a selected subset of applications is decompressed, for example, by an intermediate entity during customization of device 100. This "in-place" decompression corresponds to decompression performed by processor 103 with the help of memory 104 based on control signals originating outside the circuit via input / output interface 102.

[0059] According to another embodiment, the execution of decompression of applications is performed by memory 104. However, the size of memory 104 of integrated circuit 101 is typically limited, and then the decompression of each application can be performed in segments. In other words, the first segment of the first application to be decompressed will first be copied into memory 104, and this first segment will be decompressed. Thereafter, before the same operation is applied to the second part of the application as was applied to the first segment, the first segment will be copied into memory 106, and so on.

[0060] Figure 2B An example of the compression operation 202 of Figure 2A multiple applications is shown. Storage space 200 has a size wA, for example, in the range of several kilobytes to several tens of megabytes. Storage space 200 represents, for example, all of the entire storage space of non-volatile memory 106 or a part of the storage reserved for applications. Each application is stored, for example, at consecutive memory addresses in space 200 or at consecutive memory addresses of space 200. Figure 2B An example of four applications is shown: APP1 to APP4 respectively have sizes w1 to w4, which are intended to be stored in space 200. The sizes of the four applications are such that, for example:

[0061] Math 1

[0062] w1 + w2 + w3 + w4 ≥ wA

[0063] This cannot load the four applications into space 200. However, by compressing them according to an adapted compression rate (for example, a compression rate in the range from 30% to 40%), they can be stored in storage space 200. In this example, the sum of the sizes of the compressed applications APP1' to APP4' corresponding to applications APP1 to APP4 after compression is equal to the size wA of storage space 200. In other cases, the sum of the sizes of the compressed applications is less than size wA. For example, the compression rate is selected such that the required number of applications are stored in space 200 in compressed version without changing them after decompression.

[0064] Figure 2C An example of the decompression operation 204 of Figure 2A is shown. For example, once multiple compression operations have been loaded into space 200, and for example, during the customization operation of the device, this operation is performed outside a secure environment during the production or manufacturing phase.

[0065] According to one embodiment, the selection control signal discussed below in conjunction with Figure 7 will enable selection of a subset of the applications to be decompressed from among multiple compressed applications in space 200.

[0066] The addresses of space 200 are, for example, consecutive, which means that the memory addresses of space 200 for loading multiple compressed applications are consecutive, and each compressed application is stored at a physically consecutive memory address.

[0067] According to one embodiment, the compressed applications are stored in space 200 such that each application to be decompressed is stored adjacent to the memory address of at least one compressed application that will not be decompressed. For example, the applications to be decompressed include multiple subsets of applications available for installation, and the selection control signal (discussed below in conjunction with Figure 7 ) is capable of selecting a subset of the subsets of applications to be decompressed. Each compressed application in each subset is, for example, stored at a memory address adjacent to at least one compressed application in another subset. In the Figure 2C example shown, applications APP1′ and APP4′ are selected for decompression.

[0068] According to one embodiment, decompression of a subset of the compressed applications is performed by increasing the storage order. In the Figure 2C example, application APP1′ is stored in the first memory address of space 200 and is thus decompressed before application APP4′. First, application APP1′ is decompressed, for example, by "in-place" execution, into the memory address it occupies and at least partially into at least a portion of the memory address of compressed application APP2′. According to one embodiment, once application APP1 is decompressed, it is stored in the first consecutive memory address of storage space 200. Then, application APP4′ is decompressed, for example, by "in-place" execution, into an address adjacent to the memory address of decompressed application APP1. In other words, according to the space occupied by application APP1, it enters the memory addresses of application APP2′ and / or APP3′.

[0069] In the Figure 2C example, it is also possible to first decompress application APP4′. Application APP4 will then be stored, for example, at the last address of space 200, and application APP1′ will then be decompressed and stored at an address before application APP4.

[0070] In the Figure 2C example shown, the sizes of decompressed applications APP1 and APP4 are less than the size wA of space 200, and a memory region of size wR is left empty by applications APP1 and APP4.

[0071] Mathematics 2

[0072] w1 + w4 < wA and wA - (w1 + w4) = wR

[0073] The space not occupied by the non - decompression application (of size wR in the Figure 2C example) can be kept such that it is occupied by at least a part of at least one compression application, which can be overwritten by another application or considered available for allocation to another need not necessarily linked to an application. In the Figure 2C example, this space is occupied by a part of application APP4′, which is not executable itself.

[0074] Figure 3 A system including an integrated circuit device 100 and a programming device (programming means) 300 is shown. The programming device 300 is configured to implement Figure 2A operation 202, in which a plurality of compression applications are stored in space 200 of the memory 106.

[0075] This loading is performed, for example, in a secure environment. Further, for example, the loading is performed during the manufacture of the integrated circuit 101, enabling the manufacturer to ensure, in particular, the compatibility of the application with the chip operating system.

[0076] For example, device 300 is a computer connected by wire bonding to the input / output interface 102 of the integrated circuit 101. In another example, device 300 is connected to device 100 via a near - field communication (NFC) interface 102 ( Figure 1 ), in which case the interface 102 includes at least one antenna and device 300 is a reader allowing the near - field transmission of a plurality of compression applications.

[0077] In the case where a plurality of applications have been pre - compressed, they are directly stored into the storage space 200. In the case where a plurality of applications are not compressed, compression is performed, for example, by the processor 103 before storing into space 200.

[0078] Figure 4 is a flowchart showing operations of a method for loading compression applications into an electronic device according to an embodiment of the present disclosure.

[0079] In step 402 (compression of applications), a plurality of applications are compressed. This operation can be directly performed by the integrated circuit 101 itself. This operation can also be pre - performed on a different programming device. In some cases, a plurality of compression applications can also be encrypted.

[0080] In step 404 (defining the order of compressed applications), the order in which applications are stored in space 200 is selected to facilitate decompression in device 101. For example, multiple subsets of applications are defined, each subset being related to the ultimate use of device 100. For example, the order of the applications is selected such that for each given subset, each compressed application of that subset is located at an address adjacent to at least one application of another subset of applications that will not be decompressed.

[0081] In step 406 (loading the compressed applications), multiple applications are stored in space 200 and in the order defined in step 404.

[0082] Figure 5 An example of a method for decompressing applications according to a selection example is shown.

[0083] For each application selected to be decompressed, decompression is performed, for example, segment by segment. A segment is a part of an application stored at one or more consecutive memory addresses. For example, a segment has a fixed size corresponding to the size of one or more memory addresses, and each memory address has the size of a word of one or more bytes. In one example, an application occupying six consecutive memory addresses can be divided into three segments, each segment occupying two consecutive memory addresses. Since applications do not all have the same size, the number of segments of each application may not be constant. Similarly, the size of the parts can vary within the same application and / or according to the application.

[0084] In Figure 5 two compressed applications are shown: application APP1′ stored at the first memory address of space 200 and application APP2′ stored directly after application APP1′. Each application is divided into three parts ( Figure 5 not shown in

[0085] In Figure 5 the left - hand side shows decompressing application APP1′ at least partially into the memory addresses occupied by application APP2′. Decompression is performed "bottom - up", that is, first the third and last segment stored at the last address of application APP1′ is decompressed. This decompression is performed at least partially on the addresses occupied by application APP2′ without encroaching on the memory addresses occupied by the first two segments of application APP1′. Then, the second segment occupying the memory address before the last segment before decompression is decompressed and stored in the memory address directly before the third decompressed segment. Finally, the first segment is decompressed in the same manner as the other two segments. The size of application APP1 after decompression is known before the decompression operation, and the operation is performed such that there is still enough space for the storage of the first decompressed segment. In some cases, the first memory address of application APP1 is the first memory address of space 200.

[0086] On the right hand side of Figure 5 is shown the at least partial decompression of application APP2′ into the memory address of application APP1′. The decompression is performed "from top to bottom", i.e., first the first segment stored in the first address of application APP1′ is decompressed. This decompression is performed on the first address occupied by application APP1′ without encroaching on the memory addresses occupied by the two other segments of application APP2′. Then, the second segment, which occupied the memory address following the first segment before decompression, is decompressed and stored on the memory address directly following the third decompressed segment. Finally, the last segment is decompressed in the same manner as the other two segments.

[0087] In Figure 6 a more detailed example of "bottom-up" decompression is shown. Figure 6 The example of

[0088] shows a first application APPA and a second application APPB. These two applications are compressed and loaded into consecutive addresses ADD0 to ADD13 of space 200.

[0089] In Figure 6 the example, application APPB is not decompressed and application APPA is decompressed and at least partially stored into the memory addresses occupied by at least a part of what forms part of application APPB. Application APPB is stored after application APPA and the decompression of application APPA is performed "bottom-up", i.e., the parts are decompressed in descending order of their storage addresses. In Figure 6 the example of Figure 5 and in the example on the left hand side of

[0090] The size of the decompressed application APPA is known and, for example, an indication of this size is stored in the memory 106. For example, the decompression rate is such that each segment will occupy three memory addresses after decompression. In other words, after decompression, the application APPA will occupy addresses ADD0 to ADD11. Addresses ADD12 and ADD13 will remain occupied by the last part B2 of the compressed application APP2. The application will no longer be executable and, depending on the selected embodiment, the overlay segment B2 will be appropriate or not.

[0091] The first segment of the application APPA to be decompressed is segment A3, which occupies addresses ADD6 and ADD7. Decompressing segment A3 into the last three addresses that the decompressed application APPA will occupy, i.e., in this example, addresses ADD9, ADD10, and ADD11 occupied by segment B1 and a part of segment B0 after decompression. The decompressed segment A3 is labeled A3' and it occupies memory addresses ADD9, ADD10, and ADD11. According to one embodiment, segment A3 is not overwritten and still occupies addresses ADD6 and ADD7. Once this operation is performed, the previous segment is decompressed in the order of the addresses, i.e., segment A2. Segment A2 is decompressed into segment A2', which occupies the previous addresses adjacent to segment A3', i.e., memory addresses ADD6, ADD7, and ADD8, which were once occupied by the remaining part of segment B0 and by the whole of segment A3. Thus, going retrospectively, until segment A0 is decompressed into segment A0' that occupies consecutive memory addresses ADD0, ADD1, and ADD2. The decompressed application APPA in this way occupies addresses ADD0 to ADD11 and consists of four segments A0', A1', A2', and A3', each segment occupying three memory addresses.

[0092] According to other embodiments, the application can be decompressed differently from the Figure 6 example shown. For example, the application APPA can be decompressed such that it occupies addresses ADD2 to ADD13 after decompression. Then addresses ADD0 and ADD1 will remain occupied by the compressed segment A1.

[0093] The order of decompressing the segments of the selected application depends on the location of the addresses where the decompressed application will be stored. As Figure 5 shown on the right hand side, if the address at which decompression is performed is before the address of the compressed application, the application is decompressed, for example, "from bottom to top". In the case where the address at which decompression is performed follows the address of the compressed application, as Figure 5 as well as Figure 6 shown on the left hand side in, the application is decompressed, for example, "from top to bottom".

[0094] Figure 7A system including an integrated circuit 101 and a selection device or configuration device (configuration device) 700 used during decompression operations is schematically shown. During the step of customizing the device 100, for example, outside the secure environment of Figure 3 the selection device 700 sends a decompression control signal indicating the application to be decompressed to the device 100. For example, the control signal selects a subset from among multiple application subsets for decompression. This transmission control is performed via the input / output interface (I / O interface) 102. Then the decompression control signal is transmitted via the bus 108 to the processor (CPU) 103 for processing.

[0095] As a variant, when an application is accessed for the first time, implicit decompression (as opposed to the explicit decompression described in the previous paragraph) can be provided.

[0096] The non-volatile memory 106 contains the compressed applications APP1' to APPN' stored in the space 200. The decompression of the application involved is performed, for example, by the processor (CPU) 103, and according to one embodiment, can be performed in multiple parts, or in another embodiment, can be performed by using the memory 104 (RAM).

[0097] Figure 8 is a flowchart showing the steps of a decompression method according to an embodiment of the present disclosure. Once a communication interface is established between the integrated circuit 101 and the selection device 700, the method is performed, for example, by Figure 7 the system of.

[0098] In operation 801 (request application selection), the selection device 700 prompts the user to perform a selection of the application to be decompressed. This invitation is transmitted, for example, by opening a dialog box on the display of the selection device 700 or on a screen connected to the selection device 700. Automatic execution by means of a request from an external server without interacting with the user interface can also be provided. In certain embodiments, operation 801 can be omitted.

[0099] In operation 802 (selection), a control signal for selecting the application to be decompressed is sent from the selection device to the integrated circuit 101. For example, the control signal is generated based on the selection made by the user. In Figure 8 the example shown, the selection is performed from among M application subsets. For example, the selection of subset 1 is performed for the electronic payment use of the device 100, while the selection of subset 2 is performed for telephone use, etc.

[0100] In operation 803 (selection confirmed?), the device 700 verifies that the selection performed in operation 802 is valid. For example, if the sum of the sizes of the selected applications after decompression is greater than the size wA of the space 200, the selection cannot be valid. In the case of invalid selection (N), in operation 804 (error message), the device 700 notifies the user of it through an error message, for example, by opening a window, and the method continues with the selection operation 802 (selection).

[0101] In the case where the selection performed in operation 802 is verified by operation 803 (Y), the selected subset of applications is decompressed. For example, if subset 1 has been selected, the corresponding application is decompressed in operation 811 (decompression of subset 1). If subset M has been selected, the corresponding application is decompressed in operation 81M (decompression of subset M).

[0102] According to one embodiment, a subset of applications for a particular end use of device 100 is already programmed in device 700, and a user or other selection device is sufficient to select the desired use.

[0103] An advantage of the described embodiments is that they enable a greater number of applications to be stored in the memory of the device in order to offer a choice of applications to the retailer or end user of the device, depending on the usage provided.

[0104] Various embodiments and variations have been described. It will be appreciated by those skilled in the art that certain features of these various embodiments and variations may be combined, and other variations will occur to those skilled in the art. In addition, it will be readily apparent to those skilled in the art that, although examples of decompression on directly adjacent applications have been given, the order of decompression of applications may be implemented in different ways.

[0105] Finally, based on the functional indications given above, the actual implementation of the described embodiments and variants is within the capabilities of a person skilled in the art.

[0106] A method can be summarized as including: receiving a control signal by a device (100), the control signal being used to select a first application from a plurality of compressed applications stored in a non-volatile memory (106) of the device, the first application being stored in a first location; and decompressing the first application by the device (100) and storing at least a portion of the decompressed first application in a first location in the memory (106); and in a second storage location of a second compressed application of the plurality of applications, the first decompressed application overwriting at least a portion of the second compressed application.

[0107] The first compression application includes a plurality of segments stored at consecutive memory addresses in the first location, and wherein decompression of the first application can include decompressing a first segment at an address that is at least partially adjacent to the location of a second compression application; storing at least a portion of the first decompressed segment into the location of the second compression application; decompressing a second segment of the first application at an address that is at least partially adjacent to the first compressed segment of the first application; and storing the second decompressed segment of the first application at at least one address adjacent to the first decompressed segment.

[0108] A control signal for selecting the first application to be decompressed can include instructions for decompressing a subset of a plurality of applications, the size of the subset of decompressed applications being at most equal to the size of the memory storing the plurality of compressed applications.

[0109] The applications of the subset of applications selected by the selection control can be decompressed in the order in which they are stored in the non-volatile memory (106) of the device (100).

[0110] Each compressed application of the selected subset of applications can be stored at least partially at an address adjacent to a compressed application that does not belong to the subset.

[0111] The method can include receiving, by the device (100), another selection control signal including instructions for decompressing another subset of a plurality of applications; and generating, by the device, an alert signal indicating that decompression of the another subset is not allowed.

[0112] The method can include, before receiving the selection control signal, storing, by a programming device (300), a plurality of compressed applications into the non-volatile memory (106), the selection control signal being sent by a selection device (700).

[0113] A device can be generally described as including: a non-volatile memory (106); and a data processing device (103) arranged to receive a control signal for selecting a first application from a plurality of compressed applications stored in the non-volatile memory (106), the first application being stored in a first location; and decompressing the first application and storing the at least partially first decompressed application into a first storage location and a second storage location of the plurality of applications in the memory (106).

[0114] The non-volatile memory (106) can have a size that is not capable of decompressing a plurality of applications.

[0115] An integrated circuit card can include the device.

[0116] In one embodiment, a method includes: receiving, by a device, a control signal that identifies a first application from a plurality of compressed applications stored in a non-volatile memory of the device, the first application being stored at a first location; and decompressing, by the device, the first application. The decompressing includes storing at least a portion of the decompressed first application to the non-volatile memory: at the first location; and at a second location storing a second compressed application of the plurality of applications, the decompressed first application overwriting at least a portion of the second compressed application. In one embodiment, the first compressed application includes a plurality of segments stored at contiguous memory addresses at the first location, and wherein decompressing the first application includes: decompressing a first segment that is at least partially located at an address adjacent to a location of the second compressed application; storing at least a portion of the decompressed first segment to the second location storing the second compressed application; decompressing a second segment of the first application that is at least partially located at an address adjacent to the first compressed segment of the first application; and storing the decompressed second portion of the first application to at least one address adjacent to the decompressed first segment. In one embodiment, the control signal identifies a subset of the plurality of compressed applications to be decompressed, and a decompression size of the identified subset of the plurality of compressed applications is at most equal to a size of the memory storing the plurality of compressed applications. In one embodiment, the method includes decompressing the identified subset of compressed applications in an order in which the identified subset of compressed applications is stored in the non-volatile memory of the device. In one embodiment, each compressed application of the identified subset of compressed applications is at least partially stored at an address adjacent to a compressed application that is not in the identified subset. In an embodiment, the method includes: receiving, by the device, another control signal that identifies another subset of the plurality of compressed applications to be decompressed; determining whether decompression of the another subset of the plurality of compressed applications is allowed; and generating, by the device in response to the determination indicating that decompression of the another subset of the plurality of compressed applications is not allowed, an alarm signal indicating that decompression of the another subset is not allowed. In an embodiment, the method includes: storing, under control of a programming device, the plurality of compressed applications to the non-volatile memory; and subsequently receiving, by the device, the control signal sent by a configuration device. In one embodiment, the device includes an integrated circuit that includes a non-volatile memory; and decompression is performed during a custom integrated circuit.

[0117] In one embodiment, a device includes: a non-volatile memory; and data processing circuitry coupled to the non-volatile memory, wherein the data processing circuitry in operation: in response to a control signal, identifies a subset of compressed applications from among a plurality of compressed applications stored in the non-volatile memory by decompressing the compressed applications in the identified subset, the compressed applications being stored in a first location of the non-volatile memory; generates decompressed applications, wherein decompressing the compressed applications includes storing the decompressed applications at least in part: to the first location; and to a second location in the non-volatile memory that stores another one of the plurality of compressed applications. In one embodiment, the size of the non-volatile memory is less than the decompressed size of the plurality of compressed applications. In one embodiment, the compressed applications include a plurality of segments stored at contiguous memory addresses in the first location, and wherein the processing circuitry in operation decompresses the compressed applications by: decompressing a first segment that is at least in part located at an address adjacent to the location of another one of the compressed applications; storing the decompressed first segment at least in part to the second location that stores another compressed application; decompressing a second segment of the compressed applications that is at least in part located adjacent to the address of the first compressed segment of the compressed applications; and storing the decompressed second segment of the compressed applications to at least one address adjacent to the decompressed first segment. In one embodiment, the subset includes two or more of the plurality of compressed applications, and the decompressed size of the identified subset of the plurality of compressed applications is at most equal to the size of a portion of the non-volatile memory that stores the plurality of compressed applications. In one embodiment, the data processing circuitry in operation decompresses the identified subset of compressed applications based on the order in which the identified subset of compressed applications is stored in the non-volatile memory of the device. In one embodiment, each of the compressed applications in the identified subset of compressed applications is stored at least in part at an address adjacent to a compressed application among the plurality of compressed applications that is not in the identified subset. In one embodiment, the data processing circuitry in operation: responds to another control signal that identifies another subset of the plurality of compressed applications to be decompressed by determining whether decompression of the another subset of the plurality of compressed applications is allowed; and responds to the determination that indicates that decompression of the another subset of the plurality of compressed applications is not allowed by generating a warning signal indicating that decompression of the another subset is not allowed. In one embodiment, the device includes an integrated circuit that includes the non-volatile memory and the data processing circuitry, wherein the data processing circuitry performs decompression as part of a process for a custom integrated circuit.

[0118] In one embodiment, a system includes: an interface; and an integrated circuit coupled to the interface, the integrated circuit including: a non-volatile memory storing a plurality of compressed applications at respective locations; and data processing circuitry coupled to the non-volatile memory, wherein the data processing circuitry in operation responds to a customization signal by decompressing an identified subset of the compressed applications, the customization signal identifying the subset from the plurality of compressed applications stored in the non-volatile memory, wherein decompressing the identified subset of compressed applications includes at least partially storing the decompressed application: at the respective location of the compressed application; and at a second location of the non-volatile memory storing the compressed applications not included in the subset. In one embodiment, the size of the non-volatile memory is less than the decompressed size of the plurality of compressed applications. In one embodiment, the data processing circuitry, in operation: responds to a second customization signal identifying a second subset of the plurality of compressed applications to be decompressed by determining whether decompression of the second subset of the plurality of compressed applications is allowed; and in response to the determination, generates an alert signal indicating that decompression of the second subset of the plurality of compressed applications is not allowed.

[0119] In one embodiment, the content of a non-transitory computer-readable medium causes processing circuitry to perform a method that includes: identifying a subset from a plurality of compressed applications stored at respective locations in a non-volatile memory of an integrated circuit; and decompressing the identified subset of the plurality of compressed applications, wherein decompressing the identified subset of compressed applications includes at least partially storing the decompressed application: in the respective location storing the compressed application; and in a second location of the non-volatile memory storing the compressed applications not included in the subset. In one embodiment, the content includes instructions executable by the processing circuitry. In one embodiment, the processing circuitry is included in an integrated circuit.

[0120] Some embodiments may take the form of a computer program product or include a computer program product. For example, according to one embodiment, a computer-readable medium is provided that includes a computer program adapted to execute one or more of the above methods or functions. The medium may be a physical storage medium such as a read-only memory (ROM) chip, or a disk such as a digital versatile disk (DVD-ROM), a compact disc (CD-ROM), a hard disk, a memory, a network, or a portable media article to be read by an appropriate drive or via an appropriate connection, including one or more barcodes or other related codes encoded on one or more such computer-readable media and readable by an appropriate reader device.

[0121] In addition, in some embodiments, some or all of these methods and / or functions may be implemented or provided in other ways, such as at least partially implemented or provided in firmware and / or hardware, including but not limited to one or more application specific integrated circuits (ASICs), digital signal processors, discrete circuits, logic gates, standard integrated circuits, controllers (e.g., by executing appropriate instructions and including microcontrollers and / or embedded controllers), field programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), etc., as well as devices employing RFID technology and various combinations thereof.

[0122] The various embodiments described above may be combined to provide additional embodiments. If desired, aspects of the embodiments may be modified to incorporate concepts from various patents, applications, and publications to provide additional embodiments.

[0123] Based on the foregoing detailed description, these and other changes may be made to the embodiments. In general, in the following claims, the terms used should not be construed as limiting the claims to the specific embodiments disclosed in the specification and claims, but should be construed to include all possible embodiments and the full scope of equivalents to which these claims are entitled. Accordingly, the claims are not limited by the present disclosure.

Claims

1. A method for increasing the number of applications in a device, comprising: receiving, by the device, a control signal that identifies a first application from a plurality of compressed applications stored in a non-volatile memory of the device, the first application being stored in a first location; and decompressing, by the device, the first application, the decompressing including storing the decompressed first application at least partially in the non-volatile memory: stored in the first location; and stored in a second location storing a second compressed application of the plurality of applications, the decompressed first application overwriting at least a portion of the second compressed application.

2. The method according to claim 1, wherein the compressed first application includes a plurality of segments stored at consecutive memory addresses in the first location, and wherein the decompression of the first application comprises: decompressing a first segment that is at least partially located at an address adjacent to the location of the second compressed application; storing the decompressed first segment at least partially in the second location storing the second compressed application; decompressing a second segment of the first application that is at least partially located at an address adjacent to the first segment of the first application; and storing the decompressed second segment of the first application at at least one address adjacent to the decompressed first segment.

3. The method according to claim 1, wherein the control signal identifies a subset of the plurality of compressed applications to be decompressed, and the decompression size of the identified subset of the plurality of compressed applications is at most equal to the size of the memory storing the plurality of compressed applications.

4. The method according to claim 3, comprising: decompressing the identified subset of compressed applications in an order in which the identified subset of compressed applications is stored in the non-volatile memory of the device.

5. The method according to claim 4, wherein each compressed application of the identified subset of compressed applications is at least partially stored at an address adjacent to a compressed application that does not belong to the identified subset.

6. The method according to claim 3, comprising: receiving, by the device, another control signal that identifies another subset of the plurality of compressed applications to be decompressed; determining whether decompression of the another subset of the plurality of compressed applications is allowed; and generating, in response to the determination indicating that decompression of the another subset of the plurality of compressed applications is not allowed, an alarm signal by the device indicating that decompression of the another subset is not allowed.

7. The method according to claim 1, comprising: storing the plurality of compressed applications in the non-volatile memory under the control of a programming device; and subsequently receiving, by the device, the control signal transmitted by a configuration device.

8. The method according to claim 1, wherein, the device includes an integrated circuit that includes the non-volatile memory; and the decompression is performed during customization of the integrated circuit.

9. An electronic device, comprising: a non-volatile memory; and A data processing circuit device, coupled to the non-volatile memory, wherein the data processing circuit device in operation: In response to a control signal identifying a subset of a plurality of compressed applications stored in the non-volatile memory, decompress the compressed applications in the identified subset, the compressed applications being stored in a first location of the non-volatile memory, generating decompressed applications, wherein the decompression of the compressed applications includes at least partially performing the following operations on the decompressed compressed applications: Storing into the first location; and Storing into a second location of the non-volatile memory storing another compressed application of the plurality of compressed applications.

10. The electronic device according to claim 9, wherein the size of the non-volatile memory is less than the decompressed size of the plurality of compressed applications.

11. The electronic device according to claim 9, wherein the compressed application includes a plurality of segments stored at consecutive memory addresses in the first location, and wherein the data processing circuit device in operation decompresses the compressed application by: Decompressing at least a first segment located at an address adjacent to the location of the other compressed application; Storing at least a portion of the decompressed first segment into the second location storing the other compressed application; Decompressing a second segment of the compressed application located at an address adjacent to the first segment of the compressed application; And Storing the decompressed second segment of the compressed application into at least one address adjacent to the decompressed first segment.

12. The electronic device according to claim 9, wherein the subset includes two or more compressed applications of the plurality of compressed applications, and the decompressed size of the identified subset of the plurality of compressed applications is at most equal to the size of the portion of the non-volatile memory storing the plurality of compressed applications.

13. The electronic device according to claim 12, wherein the data processing circuit device in operation decompresses the identified subset of the compressed applications based on the order in which the identified subset of the compressed applications is stored in the non-volatile memory of the device.

14. The electronic device according to claim 13, wherein each compressed application in the identified subset of the compressed applications is at least partially stored at an address adjacent to a compressed application of the plurality of compressed applications that does not belong to the identified subset.

15. The electronic device according to claim 12, wherein the data processing circuit device in operation: Responds to another control signal identifying another subset of the plurality of compressed applications to be decompressed by determining whether to allow decompression of the another subset of the plurality of compressed applications; and Responds to the determination indicating that decompression of the another subset is not allowed by generating a warning signal indicating that decompression of the another subset of the plurality of compressed applications is not allowed.

16. The electronic device according to claim 9, Comprising: An integrated circuit, including the non-volatile memory and the data processing circuitry, wherein the data processing circuitry performs the decompression as part of a process of customizing the integrated circuit.

17. An electronic system, comprising: an interface; and an integrated circuit, coupled to the interface, the integrated circuit comprising: a non-volatile memory storing a plurality of compressed applications in respective locations; and data processing circuitry, coupled to the non-volatile memory, wherein the data processing circuitry in operation responds to a customization signal by decompressing an identified subset of the compressed applications, the customization signal identifying a subset of the plurality of compressed applications stored in the non-volatile memory, wherein the decompression of the identified subset of compressed applications includes at least partially performing the following operations on the decompressed compressed applications: storing to respective locations of the compressed applications; and storing to a second location of the non-volatile memory storing compressed applications that are not included in the identified subset among the plurality of compressed applications.

18. The electronic system according to claim 17, wherein a size of the non-volatile memory is less than a decompressed size of the plurality of compressed applications.

19. The electronic system according to claim 17, wherein the data processing circuitry in operation: responds to a second customization signal identifying a second subset of the plurality of compressed applications to be decompressed by determining whether to allow decompression of the second subset of the plurality of compressed applications; and responds to the determination indicating that decompression of the second subset of the plurality of compressed applications is not allowed by generating an alert signal.

20. A non-transitory computer-readable medium having content that causes processing circuitry to perform a method, the method comprising: identifying a subset of a plurality of compressed applications stored in respective locations of a non-volatile memory of an integrated circuit; and decompressing the identified subset of the plurality of compressed applications, wherein the decompression of the identified subset of compressed applications includes at least partially performing the following operations on the decompressed compressed applications: storing to respective locations storing the compressed applications; and storing to a second location of the non-volatile memory storing compressed applications that are not included in the identified subset among the plurality of compressed applications.

21. The non-transitory computer-readable medium according to claim 20, wherein the content includes instructions executed by the processing circuitry.

22. The non-transitory computer-readable medium according to claim 20, wherein the processing circuitry is included in the integrated circuit. ​

Citation Information

Patent Citations

  • Method and apparatus for compressing memory of electronic device

    CN104737137A

  • Data compression and decompression device and data compression method

    CN111384961A