WO2011159263A1 - Embedded system providing bootloader selected execution of multiple independent modular programs - Google Patents

Embedded system providing bootloader selected execution of multiple independent modular programs Download PDF

Info

Publication number
WO2011159263A1
WO2011159263A1 PCT/TH2010/000020 TH2010000020W WO2011159263A1 WO 2011159263 A1 WO2011159263 A1 WO 2011159263A1 TH 2010000020 W TH2010000020 W TH 2010000020W WO 2011159263 A1 WO2011159263 A1 WO 2011159263A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
modular
user
memory
target system
Prior art date
Application number
PCT/TH2010/000020
Other languages
French (fr)
Inventor
Krisada Sangpetchsong
Original Assignee
The Thailand Research Fund
Royal Thai Naval Academy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by The Thailand Research Fund, Royal Thai Naval Academy filed Critical The Thailand Research Fund
Priority to PCT/TH2010/000020 priority Critical patent/WO2011159263A1/en
Publication of WO2011159263A1 publication Critical patent/WO2011159263A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded

Abstract

A target system includes an embedded processing unit, a selection interface, and a memory wherein a plurality of user defined modular programs, a plurality of predefined modular programs, and a bootloader reside. Based upon a set of selection signal values received or generated by way of the selection interface, the bootloader determines the starting address of a user defined modular program, a predefined modular program, or an in-application programming (IAP) program instruction set, and transfers target system execution to the identified starting address to selectively initiate the execution of a user defined modular program, a predefined modular program, or an IAP program instruction set. The memory can store a configuration table defining associations between sets of selection signal values and memory addresses at which user defined modular programs, predefined modular programs, and IAP program instruction sets begin. The target system can be programmed by way of a separate programming device.

Description

EMBEDDED SYSTEM PROVIDING BOOTLOADER SELECTED
EXECUTION OF MULTIPLE INDEPENDENT MODULAR PROGRAMS
Technical Field
Aspects of the present disclosure relate to an embedded or target system that can store and selectively execute multiple independent modular programs. More particularly, aspects of the present disclosure relate to a target system having a selection interface configured to receive user input, and a bootloader configured to determine a starting execution address of a modular program in response to such user input. Aspects of the present disclosure further relate to a programming device having a programming user interface configured to transfer a sequence of modular programs to the target system.
Background
Embedded systems can be defined as special purpose systems or devices that are used in a wide variety of instrumentation and automation applications, such as temperature measurement or control, antilock braking, robotic motion control, missile guidance, and many other applications. In general, for performance optimization and cost reduction purposes, a given embedded system is directed to a specific type of embedded application, and is programmed to perform specific or dedicated types of embedded application tasks.
The main component of an embedded system is typically a microcontroller or digital signal processor, which controls the instrumentation or automation application to which the embedded system is directed. Microcontrollers have to be programmed before they are implemented in an embedded application and increasingly, graphical programming languages such as National Instruments Labview (National Instruments Corporation, Austin TX, USA) or MatLAB / Simulink (The MathWorks, Inc., Natick MA, USA) are used to facilitate such programming as such programs substantially increase flexibility and simplicity. Programming the microcontrollers is done via a host or test platform such as a Personal Computer (PC). A microcontroller control program under development or testing is often referred to as a simulation model.
Most embedded systems store a single embedded program directed to implementing a specific set of embedded system functions, where the single embedded program is typically stored in flash memory. Any change to program functionality requires reprogramming the flash memory, which can occur via in-application programming (IAP) operations.
Certain embedded systems provide for the storage of multiple embedded programs in flash memory, and the selective execution of a given embedded program from among the multiple stored embedded programs. However, such systems are implemented in a manner that is inflexible with respect to overall embedded system design, or impose a significant overhead burden upon the embedded system with respect to managing and selectively executing the multiple stored programs. A need exists for a simple, efficient, minimal overhead embedded system architecture that can store and selectively execute multiple embedded programs.
Summary
In accordance with an aspect of the disclosure, a system for selectively executing program code corresponding to embedded applications includes a target system having an embedded processing unit, a selection interface coupled to the embedded processing unit and configured to receive user input, and a memory (e.g., an embedded memory that can reside on-chip with the processing unit, and possibly an off-chip or auxiliary memory) coupled to the processing unit. The memory can include a modular program memory for storing a plurality of modular programs, each modular program including program instructions executable by the processing unit to implement an embedded application. In several embodiments, the memory lacks an operating system; rather, the target system can depend upon modular programs themselves to manage or coordinate operations between target system resources. In various embodiments, the embedded processing unit, the selection interface, and at least a portion of the memory are carried by a common support structure (e.g., a common circuit board or housing).
The memory can further include a bootloader configured to selectively initiate the execution of a modular program stored within the memory in response to user input provided to the selection interface. The bootloader can determine as part of a system booting process or a system reset process a selected execution address in response to a set of signals output by the selection interface, where the selected execution address corresponds to a starting address of a modular program stored in the memory. In an embodiment, the bootloader can include a program selection module that determines the selected execution address. The memory can additionally include an in-application programming (IAP) module, which can be associated with (e.g., as a set of drivers) or form a portion of the bootloader, where the IAP module is configured to performing IAP operations directed to programming the memory. The bootloader can be configured to selectively determine as part of a system booting process or a system reset process a selected execution address in response to a set of signals output by the selection interface, where the selected execution address can correspond to a starting address of a modular program stored within the modular program memory or a program instruction set corresponding to the IAP module. The modular program memory can include a factory program memory in which a plurality of predefined modular programs ("factory programs") can reside, and a user program memory in which a plurality of user defined modular programs ("user programs") can reside. In certain embodiments, the factory program memory is configured to store a predetermined maximum number of predefined modular programs, and the user program memory is configured to stored a predetermined maximum number of user defined modular programs. Predefined modular programs can be stored in the factory program memory at uniformly spaced starting addresses, and/or user defined modular programs can be stored in the user program memory at uniformly spaced starting addresses. In several embodiments, at least one of the factory program memory and the user program memory can store a flexible or variable number of predefined modular programs or user defined modular programs, respectively, for instance, based upon modular program sizes. Thus, in multiple embodiments, at least some modular programs can be stored in the memory at non-uniformly separated starting addresses. For instance, user defined modular programs can be stored in the user program memory at starting addresses that vary in accordance with a set of user defined modular program sizes. For instance, for a first user defined modular program and a second user defined modular program that reside in the user program memory, the starting address of one of the first and second user defined modular programs can depend upon the size of the other of the first and second user defined modular programs.
In accordance with an aspect of the disclosure, the memory can further include a configuration table that defines an association between a plurality of unique selection signal values corresponding to user input receivable by way of the selection interface and a plurality of unique program instruction addresses to which the bootloader can transfer target system execution. The plurality of unique program instruction addresses can include a plurality of unique user defined modular program starting addresses, at least one and possibly multiple predefined modular program starting address, and at least one and possibly multiple IAP program instruction set starting address.
Depending upon embodiment details, a configuration table can include a predetermined maximum number of data fields corresponding to at least one of a predetermined maximum number of predefined modular programs that can be stored in the memory and a predetermined maximum number of user defined modular programs that can be stored in the memory. In several embodiments, a configuration table can include a flexible number of data fields that depends upon a number of user defined modular programs stored in the user program memory.
The bootloader can be configured to uniquely map a unique selection signal value set received or generated by way of user interaction with the selection interface to a unique starting address of a program instruction set corresponding to an IAP operation, a predefined modular program, or a user defined modular program. The bootloader can perform such selection signal value set mapping based upon one or more configuration tables.
In accordance with an aspect of the disclosure, the selection interface can include one or more of a set of jumpers, a set of switches, a set of touch sensitive elements, and a set of visual feedback elements. The selection interface can include one or more of a button, a keypad, a touchpad, a selection wheel, a slider bar, and a display window. In certain embodiments, the selection interface can include a configurable interface element that generates analog signal values.
In accordance with an aspect of the disclosure, the system can further include a programming device coupled to the embedded processing unit, where the programming device is separate from the target system. The programming device can be configured to provide a visual programming user interface that facilitates a transfer of modular programs from the programming device to the target system's modular program memory. In certain embodiments, the programming device includes a computer system configured to execute a graphical embedded system programming environment such as a Matlab / Simulink environment. In some embodiments, the programming device can itself be a type of embedded device that is configured for communication with each of the target system and a standalone computer system that is configured to execute a graphical embedded system programming environment.
In accordance with an aspect of the disclosure, the system can further include an adjunct user selection device that is couplable to the embedded processing unit, where the adjunct user selection device includes a processing unit; a user selection interface coupled to the processing unit; and a memory that includes a) an interface manager configured to manage communication between the adjunct user selection device and the target system, and b) at least one of a set of predefined modular programs and a set of user defined modular programs that are transferable to the target system's memory.
In accordance with an aspect of the disclosure, a process for selectively executing program code corresponding to a plurality of modular programs stored on a target system, where each modular program corresponds to an independently executable embedded application, includes receiving or generating a set of selection signal values by way of a user selection interface; determining during a target system booting or reset process a starting address of a unique program instruction set corresponding to the received set of selection signal values, where the unique program instruction set corresponds to one of a modular program within the plurality of target resident modular programs and an IAP program instruction set; and transferring target system execution to the starting address of the unique program instruction set.
Transferring target system execution to the starting address of the unique program instruction set can occur during the target system booting or reset process. In various embodiments, determining a starting address of a unique program instruction set and/or transferring target system execution to the starting address of the unique program instruction set is performed by a bootloader. The starting address of a unique program instruction set can correspond to a user defined modular program or at least one of a predefined modular program and an LAP program instruction set. For instance, the starting address of a unique program instruction set can uniquely correspond to a particular user defined modular program within a plurality of user defined modular programs stored in a target system memory; a particular predefined modular program within a plurality of predefined modular programs stored in the target system memory; or a particular IAP program instruction set stored within the target system memory. In certain embodiments, the memory can include a plurality of distinct IAP program instruction sets, where each distinct IAP program instruction set is directed to a distinct type of IAP operation (e.g., performed by way of a distinct type of communication interface).
In accordance with an aspect of the disclosure, determining a starting address of a unique program instruction set can include accessing a configuration table that defines an association between a plurality of unique selection signal values corresponding to user input receivable or generatable by way of a selection interface and a plurality of unique program instruction set addresses. The plurality of unique program instruction set addresses can include a plurality of unique user defined modular program addresses.
Determining a starting address of a unique program instruction set can further include determining whether a received set of selection signal values corresponds to an IAP operation, such as a first IAP operation within a plurality of selectable IAP operations; and transferring target system execution to an appropriate IAP program instruction set that corresponds to the receives set of selection signal values. Determining a starting address of a unique program instruction set can additionally or alternatively include determining whether a received set of selection signal values corresponds to a user defined modular program within a plurality of user defined modular programs; determining whether the received set of selection signal values corresponds to a predefined modular program; and selectively transferring target system execution to one of a user defined modular program and a predefined modular program in accordance with the received set of selection signal values. Receiving or generating a set of selection signal values can occur by way of a user selection interface that is carried by the target system, where the user selection interface can include one or more user selectable or user manipulable elements or devices such as those described herein. In certain embodiments, receiving or generating a set of selection signal values can occur by way of an adjunct user selection device that is separate from the target system.
In accordance with an aspect of the disclosure, a process for selectively executing program code corresponding to a plurality of modular programs stored on a target system can further include transferring a plurality of user defined modular programs to the target system by way of IAP operations between the target system and a programming device that is separate from the target system. The programming device can be configured to provide a visual programming interface. In certain embodiments, the programming device can be a computer system configured to execute a graphical embedded system programming environment, such as a Matlab / Simulink environment. In other embodiments, the programming device can itself be a type of embedded device that can be configured for communication (e.g., sequential or simultaneous communication) with each of the target system and a standalone computer system that is configured to execute a graphical embedded system programming environment. In accordance with an aspect of the disclosure, a computer readable medium can store program instructions directed to selectively executing program code corresponding to a plurality of modular programs that includes a plurality of user defined modular programs stored on a target system, each modular program corresponding to an independently executable embedded application. When executed, the program instructions perform operations that include determining during a target system booting or reset process a starting address of a unique program instruction set corresponding to a set of selection signal values received or generated by way of user interaction with a selection interface, the unique program instruction set selectively corresponding to a modular program within the plurality of modular programs or an IAP program instruction set; and transferring target system execution to the starting address of the unique program instruction set.
The program instructions stored on the computer readable medium can include a bootloader configured to determine the starting address of the unique program instruction set during a target system bootload or reset process. The bootloader can transfer target system execution to the starting address of the unique program instruction set during the target system bootload or reset process. The bootloader' s determining a starting address of a unique program instruction set corresponding to a set of selection signal values can include selectively determining whether the set of selection signal values corresponds to a user defined modular program within a plurality of user defined modular programs resident on the target system, or a predefined modular program within a plurality of predefined modular programs resident on the target system. Additionally, the bootloader' s determining of the starting address of a unique program instruction set corresponding to a set of selection signal values can include determining whether the set of selection signal values corresponds to a distinct IAP program instruction set within a plurality of distinct IAP program instruction sets stored on the target system, where each distinct IAP program instruction set is directed to performing a distinct type of IAP operation.
Program instructions directed to determining the starting address of a unique program instruction set can include program instructions directed to accessing one or more configuration tables stored on the target system. A configuration table can define an association between a plurality of unique selection signal values corresponding to user input receivable or generatable by way of a selection interface and a plurality of unique program instruction addresses that includes a plurality of user defined modular program starting addresses and/or predefined modular program starting addresses. Brief Description of the Drawings
FIG. 1 is a block diagram of a multi-configuration embedded system development architecture according to an embodiment of the disclosure.
o
FIG. 2A is a block diagram of a selective execution fixed memory map according to a representative embodiment of the disclosure.
FIG. 2B is a representative embodiment of a static configuration table according to an embodiment of the disclosure. FIG. 3A is a block diagram of a selective execution flexible memory map according to a representative embodiment of the disclosure.
FIG. 3B is a block diagram of a representative dynamic configuration table according to an embodiment of the disclosure.
FIG. 3C is a block diagram of a representative dynamic configuration table according to another embodiment of the disclosure. FIG. 3D illustrates a representative intermediary value scaling or mapping in accordance with an embodiment of the disclosure.
FIG. 3E is another representative intermediary value scaling or mapping in accordance with an embodiment of the disclosure.
FIG. 3F is an embodiment of a representative target mode selection list or table that can be provided to and/or displayed by a visual feedback element or display device in accordance with an embodiment of the disclosure. FIG. 4 is a block diagram of a representative adjunct, advanced, associate, or corollary user selection device according to an embodiment of the disclosure.
FIG. 5 is a block diagram of a representative target programming GUI provided by a programming user interface according to an embodiment of the disclosure.
FIG. 6 is a block diagram of a representative adjunct, associate, or corollary programming device according to an embodiment of the disclosure.
FIG. 7 is a flow diagram of a process for bootloader-based selective target system execution according to an embodiment of the disclosure. Detailed Description
Aspects of the present disclosure are directed to architectures, systems, devices, and processes for embedded system design, development, modeling, simulation, testing, verification, and/or operation in which a host system provides a graphical programming environment for developing modular programs and storing a plurality of such modular programs on a target system or target device that can be configured for selective modular program execution. Separate modular programs can correspond to separate or independently executable embedded applications (e.g., a given modular program can comprise an embedded application that can be executed independent of another modular program).
In general, the term embedded application can be defined as 1) a particular manner in which the target system is put to use; 2) a collection of target system functions or operations that categorize or define a given embedded system's capabilities; and/or 3) program instructions resident on the target system that serve as application program software that manages, controls, or implements such target system use or embedded system capabilities.
A given modular program when executed can implement a categorically distinct, related, or identical type of embedded application or embedded system with respect to the execution of another modular program that resides on the target system. A single target system or device in accordance with the present disclosure can facilitate the selective simulation, emulation, and/or implementation of multiple embedded applications or embedded systems by way of the selective execution of target resident modular programs.
A target system in accordance with the present disclosure can store multiple modular programs and selectively execute such modular programs based upon user input that facilitates or enables the identification of a selected execution address. A target system bootloader can utilize the selected execution address to initiate the execution of a corresponding selected modular program or a selected program instruction set. In various embodiments, a target system can include or be coupled to a selection interface or a corresponding user selection device that is responsive to user input, and which is configured to identify, determine, provide, and/or output the selected execution address. In multiple embodiments, the selection interface is configured to operate independent of a target resident operating system; a host computer; a particular model, family, or type of embedded system processor; and/or a particular modular program development platform or tool. A target system bootloader in accordance with embodiments of the disclosure can be configured to transfer target system execution control to a selected modular program or selected program instruction set corresponding to a selected execution address. In several embodiments, the bootloader can initiate the execution of a selected modular program independent of a target resident operating system; a host computer; a particular model, family, or type of embedded system processor; and/or a particular modular program development platform or tool.
Architectural Overview
FIG. 1 is a block diagram of a multi-configuration embedded system development architecture 10 according to an embodiment of the disclosure. In an embodiment, the architecture 10 includes a bootload-selective multi-configuration target system (hereafter target system) 100 that can be coupled to one or more types of programming devices 400. As further detailed below, a programming device 400 can include a communication unit 430 configured for managing signal transfer with the target system 100, and a programming user interface 440 configured for managing modular program transfer to the target system. In a number of embodiments, the programming user interface 440 is further configured for managing or tracking modular program starting memory addresses in a manner that facilitates the target system's execution of a selected modular program based upon user input. The programming user interface 440 can include one or more graphical or visual user interfaces. As further detailed below, in some embodiments, a programming device 400 can be a computer system (e.g., a personal computer) that includes a graphical development environment which provides a set of graphical programming interfaces for the development and simulation of modular programs, the downloading of multiple modular programs to the target system 100, and the management or tracking of starting memory addresses corresponding to such modular programs.
The target system 100 can optionally be coupled to an adjunctive user selection device 300. As further detailed below, an adjunctive user selection device 300 can facilitate user selection or identification of a modular program or program instruction set for target system execution. The target system 100 can additionally be coupled to a set of embedded application support devices 105, which can include one or more associate, corollary, or adjunct resources configured to enable or perform particular embedded system operations, such as sensing, signaling, and/or control operations. The set of embedded application support devices 105 can include, for instance, sensors and/or actuators, which can be external to or carried by a portion of the target system 100. In various embodiments, the target system 100 includes a processing unit or microcontroller unit (MCU) 110, a selection interface 200, and possibly an off-chip memory 210. The processing unit 110 and at least a portion of the selection interface 200 can be carried by a common support structure 102, such as a circuit board, set of circuit boards, or housing. Off- chip memory 210 can be similarly carried by the common support structure 102.
The MCU 110 includes an on-chip memory 120 in which a bootloader 130 as well as multiple modular programs 140 and one or more program instruction sets (e.g., an embedded application support routine such as a firmware driver) can reside. In multiple embodiments, based upon user input received by way of the selection interface 200 and/or an adjunct user selection device 300, the bootloader 130 can determine a selected execution address, and transfer execution control to a modular program 140 or program instruction set corresponding to the selected execution address, as further described in detail below.
Aspects of Representative Processing Unit Embodiments
In various embodiments, the processing unit 110 includes a microprocessor core or instruction processor 112; a timing unit 114; an on-chip memory 120; and one or more sets of communication and embedded application support resources. Each element of the processing unit 110 can be coupled by a set of buses 118. The instruction processor 112 can retrieve and execute stored program instructions, in a manner understood by one of ordinary skill in the art. Such stored program instructions can facilitate or effectuate the simulation or implementation of a type of embedded system functionality under consideration. Stored program instructions can correspond to a modular program, or a program instruction set such as an embedded system support program or routine, for instance, a bootloader and/or a routine (e.g., corresponding to a driver) that implements in-application programming (IAP) capabilities.
The on-chip memory 120 can include at least one register set 122; a run-time or execution memory 124; a bootloader 130 that includes a program selector or program selection module 132 and an In Application Programming (IAP) module 134; a set of modular programs 140, which can include predefined or factory provided modular programs (hereafter factory programs) 142 and/or user defined or customized modular programs (hereafter user programs) 144; and possibly one or more configuration tables 180, 182. A configuration table 180, 182 can reference or include a set of modular program starting addresses.
While the embodiment of FIG. 1 illustrates modular programs 140 residing within the on- chip memory 120, in some embodiments one or more modular programs 140 (e.g., user programs 144) can reside in the off-chip memory 210. Representative manners in which modular programs 140 can be organized within or mapped to the target system's memory 120, 210 are described in detail below with reference to FIGs. 2 A - 3C.
In certain embodiments, the memory 120 can include an operating system that serves as an interface between an executing modular program 140 and target hardware. In such embodiments, the modular program 140 can rely upon the operating system to manage or coordinate target processes, target task prioritization and scheduling, and target hardware allocation. However, in multiple embodiments, the target system 100 need not include an operating system. In such embodiments, an executing program module 140 is itself directly responsible for managing or coordinating essentially all primary aspects of target system operation. Target system embodiments that omit or exclude an operating system can provide one or more of reduced cost, reduced overhead, enhanced simplicity, better task timing control, and increased or maximal availability of target system resources for an embedded application under consideration. The memory 120 can include one or more of a cache memory, volatile and/or nonvolatile Random Access Memory (RAM), and Read Only Memory (ROM). The RAM can include, for instance, one or more types of Static RAM (SRAM), dynamic RAM (DRAM), and/or magnetoresistive RAM (MRAM). The ROM can include one or more types of programmable ROM (PROM), such as flash memory or electrically erasable PROM (EEPROM).
The processing unit's communication and embedded application support resources can include a set of input peripherals 190; a set of output peripherals 192; a set of data communication and General Purpose Input / Output (GPIO) peripherals 194; and/or other resources or elements corresponding to one or more types of embedded applications that the target system 100 is configured to support. Particular communication and embedded application support resources can include, for instance, an Analog to Digital Converter (ADC), a Digital to Analog Converter (DAC), pulse width modulation (PWM) circuitry, a Universal Synchronous / Asynchronous Receiver / Transmitter (USART), an RS-232 interface, an IEEE-485 interface, an Ethernet interface, an Inter-Integrated Circuit (I2C) interface, a Controller Area Network (CAN) interface, and/or other types of elements. Depending upon embodiment details, the target system 100 can include additional and/or other elements, for instance, particular types of digital signal, analog signal, mixed-signal, radio frequency (RF), or mathematical processing (e.g., encryption / decryption) elements or resources. Such additional or other elements can be internal or external to the processing unit 110.
The processing unit 110 can exhibit a Von Neumann, Harvard, Modified Harvard, reconfigurable, or other type of architecture, in a manner understood by one of ordinary skill in the art. The processing unit 110 can include or be, for instance, a microcontroller, a digital signal processor (DSP), a microprocessor, a System on a Chip (SoC), or a configurable / programmable logic device such as a Field Programmable Gate Array (FPGA). In a representative implementation, the processing unit 110 can be an STM8 or STM32 family microcontroller (STMicroelectronics, Geneva, Switzerland). In another representative implementation, the processing unit 110 can be a commercially available processor, microcontroller, or configurable / programmable logic device, such as produced by Atmel Corporation (San Jose, CA), Intel Corporation (Santa Clara, CA), Maxim Integrated Products (Sunnvale, CA), Microchip Technology Incorporated (Chandler, AZ), NXP Semiconductors Group (Eindhoven, the Netherlands), Nuvoton Technology Corp. (Hsinchu Science Park, Taiwan), Renesas Electronics Corporation (Kawasaki, Kanagawa Japan), Texas Instruments Incorporated (Dallas, TX), Xilinx, Inc. (San Jose, CA), or another company. Aspects of Representative Selection Interface Embodiments
In various embodiments, the selection interface 200 can include one or more user selectable, user manipulable, or user positionable elements or devices configured to receive user input. In multiple embodiments, the selection interface 200 can include one or more electromechanical interfaces or devices, such as a set of switches (e.g., a set of DIP switches or a rotary switch), a set of jumpers, a potentiometer, a knob, or a slider, which can be configured to provide, output, or route selection signals corresponding to one or more selection interface settings established by way of user input. In some embodiments, the selection interface 200 can include a visual or graphical display device, such as a liquid crystal display (LCD). Additionally or alternatively, the selection interface can include a touch sensitive device, screen, pad, panel, or interface (e.g., which can be distinct from or an integral portion of a visual display device). As further detailed below, a touch sensitive selection interface 200 can include one or more touch sensitive user selection elements such as a touch sensitive switch, button, knob, slider, or other element. In some embodiments, such touch sensitive selection elements can be visual or graphical elements.
The selection interface 200 can include a set of outputs coupled to a set of processing unit input pins (e.g., a set of boot pins or configuration pins), which can provide or carry the selection signals in a manner that enables the bootloader 130 to determine and/or transfer processing unit execution to a selected execution address based upon one or more selection signal values. For instance, in several embodiments, as part of a target system reset or booting process, the bootloader 130 can retrieve, receive, or read the values of selection signals carried by the relevant processing unit input pins; determine a selected execution address based upon such selection signal values; and jump to the selected execution address.
Aspects of Representative Bootloader Embodiments
In general, the bootloader 130 includes one or more program instruction sets to which target system execution control is immediately or directly transferred in response to a target system reset. Thus, the first program instructions that are executed after a target system reset are bootloader instructions. A target system reset can occur in response to an initial power-up condition, or in response to user input corresponding to a reset command (e.g., received by way of user interaction with a reset button carried by the target system 100). A first portion of the bootloader's execution can involve the initialization of particular target resources, and possibly the performance of target self-test operations. Following the first portion of the bootloader's execution, a second portion of the bootloader's execution can involve determining a selected execution address based upon a set of selection signal values, followed by transferring execution to a program instruction stored at the selected execution address, as further detailed hereafter.
As indicated in FIG. 1, the bootloader 130 can include a program selection module 132 and an IAP module 134. In several embodiments, the program selection module 132 includes program instructions directed to converting or mapping selection signals corresponding to user input received by way of the selection interface to a selected execution address that identifies the beginning of a) an embedded application support routine, such as a portion of the IAP module 134 (e.g., an IAP program instruction set); or b) a modular program 140. The program selection module 132 can further include a set of program instructions (e.g., one or more jump instructions) that transfers target system execution to a program instruction stored at the selected execution address. Thus, based upon a set of selection signal values, in various embodiments the program selection module 132 can transfer target system execution to a) program code within or associated with the bootloader 130, such as a program instruction sequence forming a portion of the IAP module 134; or b) a modular program 140.
The IAP module 134 includes program instructions directed to performing one or more types of IAP operations, which involve the transfer or download of program code (e.g., modular programs 140) from a programming device 400 to the target system's on-chip and/or off- chip memories 120, 210 by way of a communication or data transfer interface that is supported by each of the target system 100 and the programming device 400. In various embodiments, the target system 100 and the programming device 400 can support multiple types of data transfer interfaces, such as two or more of a US ART interface, a USB interface, an I2C interface, a CAN interface, or another interface. In several embodiments, the program selection module 132 can map particular selection signal values corresponding to or indicating an IAP request to distinct one or more functional portions or subroutines of the IAP module 134. Distinct functional portion of the IAP module 134 can facilitate or enable data communication by way of a distinct type of data transfer interface. In various embodiments, the bootloader 130 can include a primary, default, or factory provided bootloader that when executed initializes particular target system resources, and which possibly performs a set of target system self test operations. In such embodiments, the primary bootloader can include the IAP module 134. The program selection module 132 can be implemented as a secondary bootloader to which the primary bootloader transfers execution control. In some embodiments, the primary bootloader can transfer control to the secondary bootloader in response to determining that a set of selection signal values does not correspond to an IAP request, that is, the set of selection signal values corresponds to a modular program execution request. In other embodiments, the primary bootloader can transfer control to the secondary bootloader once target system initialization and/or self-test operations are complete, such that the secondary bootloader can determine whether the set of selection signal values corresponds to an IAP request or a modular program execution request. In certain embodiments, program code corresponding to a primary bootloader and a secondary bootloader can exist as a unified or single set of program instructions, which can be factory provided or user defined.
Aspects of Representative Modular Programs
As indicated above, modular programs 140 can include factory programs 142 and/or user programs 144. In various embodiments, the target system's set of modular programs 140 can include a predetermined number of factory programs 142, each of which is directed to a given embedded application. For instance, the target system 100 can include a factory program 142 that implements a USB-based mass storage device on the target system 100.
Depending upon embodiment details, modular programs 140 can be organized within the memory 120 in multiple manners. For instance, the organization of modular programs 140 within the memory 120 can depend upon whether some or all target resident modular programs 140 are sequentially stored at addresses based upon actual modular program sizes, or at predetermined address increments corresponding to a predetermined maximum modular program size. A manner in which modular programs 140 are organized within the memory 120 can define particular aspects of a memory map, as further described in detail hereafter. Aspects of Representative Fixed Memory Map Embodiments
In general, a memory map can be defined based upon a manner in which the bootloader 130, selectively executable modular programs 140, program instruction sets corresponding to one or more selectively executable embedded application support routines (e.g., the IAP module 134), and possibly one or more configuration tables 180, 182 are organized within the memory 120.
FIG. 2A is a block diagram of a selective execution fixed memory map (hereafter fixed memory map) 150 according to a representative embodiment of the disclosure. In an embodiment, the bootloader 130, which includes the program selection module 132 and the IAP module 134, is defined to reside within a first or bootloader region or portion 152 of the memory 120, spanning a bootloader address range. Hence, the bootloader' s starting and ending addresses are predetermined or known. Factory programs 142 are defined to reside within a second or factory program portion 154 of the memory 120, spanning a factory program address range; and user programs 144 are defined to reside in a third or user program portion 156 of the memory 120, spanning a user program address range.
In such an embodiment, factory programs 142 can be defined to have a maximum factory program size, and user programs 144 can be defined to have a maximum user program size. Separate factory programs 142 are sequentially stored at starting addresses that correspond to the maximum factory program size, whether any such factory program 142 actually occupies the maximum factory program size. Thus, separate factory programs 142 reside at uniformly spaced starting addresses within the memory's factory program portion 154. The starting address of any given factory program 142 is therefore fixed or predetermined, and can be defined by the starting address of a first factory program 142 (or the starting address of the factory program portion 154) plus an integral multiple (e.g., 0, 1, 2,...) of the maximum factory program size. In the fixed memory map 150, the maximum factory program size can therefore be defined as a fixed factory program starting address increment. Similarly, separate user programs 144 are sequentially stored at starting addresses that correspond to the maximum user program size. Separate user programs 144 reside at uniformly spaced starting addresses within the program memory's user program portion 144, whether any such user program 144 actually occupies the maximum user program size. The starting address of any given user program 144 is therefore fixed, and can be defined by the starting address of a first user program 144 (or the starting address of the user program portion 156) plus an integral multiple (0, 1, 2...) of the maximum user program size. In the fixed memory map 150, the maximum user program size can therefore be defined as a fixed user program starting address increment.
For purpose of illustration, in the representative embodiment of FIG. 2 A the bootloader's size is defined as 40K Bytes, the maximum factory program size is defined as 15K Bytes, and the maximum user program size is defined as 80K Bytes. Factory program starting addresses are separated from each other by a fixed increment of 15K Bytes, and user program starting addresses are separated from each other by a fixed increment of 80K Bytes. Additionally, the factory program portion 154 of the representative fixed memory map 150 can accommodate up to two factory programs 142a-b (e.g., the target system 100 can be preprogrammed with two factory programs), and the user program portion 156 can accommodate up to four user programs 144a-d. Representative hexadecimal starting addresses for the bootloader 130, a first and a second factory program 142a-b, and a first through a fourth user programs 144a-d are also illustrated in FIG. 2A. Other embodiments can provide for a different maximum factory program size, a different number of factory programs 142, a different maximum user program size, and/or a different number of user programs 144.
FIG. 2A additionally shows a representative embodiment of the selection interface 200 that includes three selection elements (e.g., switches or jumpers) 202a-c, each of which can be user configured to indicate a selection signal value of 0 or 1. Other embodiments can include other numbers of selection elements. In FIG. 2A, three selection signal values corresponding to the three selection elements 202a-c are provided to three input pins Al - A3 of the processing unit 110. Thus, the three input pins Al - A3 can be defined to carry a triplet of selection signal values (hereafter referred to as a selection signal triplet). The program selection module 132 can receive, read, or determine the selection signal values specified by a selection signal triplet; map such values to a selected execution address in accordance with the fixed memory map 150; and initiate the execution of program code corresponding to the selected execution address. In various embodiments, mapping operations performed by the program selection module 132 in accordance with the fixed memory map 150 can involve a table or data structure that associates distinct selection signal triplets with distinct selected execution addresses. A selected execution address can correspond to the starting address of a) an intra-bootloader or bootloader-based program instruction set (e.g., associated with the IAP module 134); b) a factory program 142; or c) a user program 144.
FIG. 2B is a representative embodiment of a static configuration table 180 that provides an illustrative mapping of selection signal values to selected execution addresses according to an embodiment of the disclosure. In an embodiment, in response to the detection of a selection signal triplet equal to (0, 0, 0), the program selection module 132 maps this selection signal triplet to a first starting execution address, which corresponds to a bootloader-based program instruction set that performs IAP operations by way of a USB port (hereafter referred to as IAP - USB). The program selection module 132 accordingly transfers processing unit execution control to the IAP - USB program instruction set that begins at the first starting execution address.
Similarly, in response to the detection of a selection signal triplet equal to (0, 0, 1), the program selection module 132 maps this selection signal triplet to a second starting execution address, which corresponds to a bootloader-based program instruction set that performs IAP operations by way of a USART port (hereafter referred to as IAP - USART). The program selection module 132 accordingly transfers execution control to the IAP - USART program instruction set that begins at the second starting execution address. In response to the detection of a selection signal triplet equal to (0, 1, 0), the program selection module 132 maps this selection signal triplet to a third starting execution address, which corresponds to an address at which a first factory program 142a begins. The program selection module 132 accordingly transfers processing unit execution control to the first factory program 142a. Similarly, in response to the detection of a selection signal triplet equal to (0, 1, 1), the program selection module 132 maps this selection signal triplet to a fourth starting execution address that corresponds to an address at which a second factory program 142b begins. The program selection module 132 additionally transfers processing unit execution control to the second factory program 142b. In response to the detection of a selection signal triplet equal to (1, 0, 0), the program selection module 132 maps this selection signal triplet to a fifth starting execution address that corresponds to an address at which a first user program 144a begins. The program selection module 132 then transfers processing execution control to the first user program 144a. Similarly, in response to the detection of a selection signal triplet equal to (1, 0, 1), the program selection module 132 maps this selection signal triplet to a sixth starting execution address that indicates an address at which a second user program 144b begins. The program selection module 132 accordingly transfers processing unit execution control to the second user program 144b. In response to the detection of a selection signal triplet equal to (1, 1, 0), the program selection module 132 maps (1, 1, 0) to a seventh starting execution address that indicates the beginning of a third user program 144c, and transfers processing unit execution control to the third user program 144c. Finally, in response to a selection signal triplet equal to (1, 1, 1), the program selection module 132 maps (1, 1, 1) to an eighth starting execution address that indicates the beginning of a fourth user program 144d, and transfers processing unit execution control to the fourth user program 144d.
In addition or as an alternative to the above, in some embodiments any given address determination or mapping by the program selection module 132 in accordance with the fixed memory map 150 can correspond to a predetermined reference or base address, such as the starting address of the bootloader 130 or the starting address of a first factory program 142a, to which an appropriate address offset can be added to yield an appropriate selected execution address. Thus, an alternate static configuration table 180 can map selection signal triplets to address offsets, which the program selection module 132 can add to a reference address to generate starting execution addresses. In such embodiments, the reference or base address can also reside in the static configuration table 180.
In embodiments that involve a fixed memory map 150, the set of starting execution addresses is fixed or predetermined. Thus, in several embodiments, a static configuration table 180 can be stored as an array of constants within the bootloader' s source code. In a representative implementation, the program selection module 132 includes program code corresponding to a set of switch-case or multiway branch statements, where branching or processing unit execution is selectively controlled in accordance with selection signal values that can be mapped, converted, or transformed into selected execution addresses (e.g., in accordance with the static configuration table 180).
Aspects of Representative Flexible Memory Map Embodiments
In various embodiments, a total number of factory programs 142 and/or user programs 144 stored in the target system's memory 120, 210 can be flexibly defined, configured, expanded, or adjusted. Additionally, factory programs 142 and/or user programs 144 can be sequentially stored in the memory 120 such that the starting address of any given factory program 142 and/or user program 144 is respectively based upon the actual amount of memory occupied by other factory programs 142 and/or user programs 144 within the memory 120.
In some embodiments, one or more default factory programs 142 can be provided or made available (e.g., on a computer readable medium) to a user, and particular individual factory programs 142 can be selectively transferred from a programming device 200 to the target system 100 in response to user input. In a number of embodiments, a number of factory programs 142 and their organization within the memory 120 can be fixed, while a number and/or organization of user programs 144 can be flexible, configurable, or expandable. In certain embodiments, particular factory programs 142 can be pre-loaded in the target system 100, and their starting addresses can remain fixed thereafter. For ease of understanding, the following description considers a set of pre-loaded factory programs 142 having fixed, predetermined, or static starting addresses within the memory 120, and flexibly configurable user programs 144 having starting memory addresses that depend upon actual user program size(s). User programs 144 can be flexibly mapped, allocated, tracked, referenced, or accessed within the on-chip memory 120, and in some embodiments also the off-chip memory 210, by way of a modifiable configuration data structure. In the description that follows, a reference to the on-chip memory 120 can therefore include or encompass portions of the off-chip memory 210. FIG. 3 A is a block diagram of a selective execution flexible memory map (hereafter flexible memory map) 160 according to a representative embodiment of the disclosure. In an embodiment, a dynamic configuration table 182 is defined to reside within a first portion or region 162 of the memory 120, within a configuration table address range. The bootloader 130 is defined to reside within a second or bootloader portion 164 of the memory 120, spanning a bootloader address range; factory programs 142 are defined to reside within a third or factory program portion 166 of the memory, spanning a factory program address range; and user programs 144 are defined to reside within a fourth or user program portion 168 of the memory 120, spanning a flexible or configurable user program address range. The representative flexible memory map 160 of FIG. 3 A illustrates two factory programs 142a-b and two user programs 144a-b residing within the memory 120. FIG. 3 A illustrates representative starting addresses corresponding to the dynamic configuration table 182, the bootloader 130, the first and second factory programs 142a-b, and the first and second user programs 144a-b. The memory 120 includes a fifth, spare, or available portion or region 169, to which user programs can be flexibly allocated (e.g., by way of IAP operations). In some embodiments, the fifth or spare memory portion 169 can include addresses that map to the off-chip memory 210. FIG. 3B is a block diagram of a representative dynamic configuration table 182a according to an embodiment of the disclosure. In an embodiment, the dynamic configuration table 182a includes a data field that stores a user program count identifying a total number of user programs 144 currently stored in the memory 120; and a set of data fields storing or referencing the starting address of each user program 144 within the memory 120. The location of the starting address of each user program 144 can be defined as an offset from the starting address of the dynamic configuration table 182a itself. For instance, the starting address of a given user program 144 can be defined at the memory address at which the dynamic configuration table 182a begins, plus a multiple of a predetermined offset from the dynamic configuration table's starting address. The predetermine offset can be, for instance, a multiple of a number of bytes or a number of words, depending upon the architecture of the processing unit 110 being used. For instance, a first user program 144a can begin at a one word offset from the dynamic configuration table's starting address, a second user program 144b can begin at a two word (i.e., 2 x 1 word) offset from the dynamic configuration table's starting address, and so on. For the flexible memory map 160 of FIG. 3 A, the user program count equals 2, and thus the dynamic configuration table 182a includes a starting address of the first user program 144a and a starting address of the second user program 144b. In a number of embodiments, a dynamic configuration table 182 can include additional or other information or data than described above in relation to FIG. 3B. FIG. 3C is a block diagram of a representative dynamic configuration table 182b according to another embodiment of the disclosure. In an embodiment, the dynamic configuration table 182b includes a data field that stores the current user program count; and, for each user program 144 stored in the memory 120, the dynamic configuration table 182b includes a data field storing or referencing a user program starting address, a data field storing a user program size, and an array of data fields storing a user program identifier or name. The dynamic configuration table 182b in FIG. 3C assumes an array of User Program Name/Descriptor of size 10 words. In some embodiments, a user program identifier or name can be user specified by way of a programming user-interface 440, as further detailed below.
Depending upon embodiment details, a dynamic configuration table 182 can be defined to have a predetermined maximum size (e.g., 2K Bytes), or the dynamic configuration table 182 can be a dynamically allocated array that the bootloader 130 loads or generates based upon a number of user programs and user program sizes transferred to the target system 100 during IAP operations. In some embodiments, the dynamic configuration table 182b can be populated or updated by program instructions associated with or corresponding to a portion of the bootloader 130 during or following IAP operations.
In a manner analogous to that described above with reference to FIGs. 2A and 2B, some embodiments that include a dynamic configuration table 182 can also include a static configuration table 180 that references or stores static or fixed starting addresses, such as a set of starting addresses corresponding to bootloader-based program code (e.g., one or more portions of the IAP module 134) and starting addresses corresponding to one or more factory programs 142a-b. Thus, the program selection module 132 can access a static configuration table 180 or a dynamic configuration table 182 based upon the value of a selection signal to determine an appropriate selected execution address. Other embodiments can include a single or unified configuration table having static as well as dynamic portions, which the program selection module 132 can accordingly access based upon the selection signal value. In embodiments in which the number and/or organization of factory programs 142 can be user configured within the memory 120 in addition to the number and organization of user programs 144, a dynamic configuration table 182 can include a set of data fields storing the starting address of each factory program 142 resident on the target system 100, and possibly a data field storing a current count of such factory programs 142 and/or a set of data fields storing an identifier or descriptor corresponding to each factory program 142. In accordance with various embodiments described herein, the program selection module 132 can utilize multiway branch statements and/or one or more portions of a data structure such as a static configuration table 180, a dynamic configuration table 182, or a unified configuration table to map selection signal values generated or received by way of user interaction with the selection interface 200 to a selected execution address that corresponds to a program instruction that initiates a) a given type of IAP operation (e.g., IAP-USP or LAP-USART); b) the execution of a particular factory program 142a-b; or c) the execution of a particular user program 144a-b. For instance, in a representative implementation, the program selection module 132 can map a selection signal value corresponding to 0 or 1 to an address at which a program instruction that initiates IAP - USB operations resides, or an address at which a program instruction that initiates IAP - US ART operations resides, respectively. The program selection module 132 can respectively map a selection signal value corresponding to 2 or 3 to an address at which a first factory program 142a begins or an address at which a second factory program 142b begins. Analogously, the program selection module 132 can map a selection signal value of 4, 5, or higher to an address at which a first user program begins 144a, an address at which a second user program begins 144b, or an address at which another user program begins, respectively.
Thus, for a plurality of unique selection signal value sets (e.g., 000, 001, 010, 011, 100, 101, etc., where each triplet of binary values represents a distinct selection signal value set) that can be received or generated based upon user interaction with the selection interface 200, the program selection module 132 can associate each unique selection signal value set with a starting address of a unique program instruction set. Each unique program instruction set can correspond to a particular type of IAP operation, a distinct factory program 142, or a distinct user program 144.
FIG. 3A additionally shows a representative embodiment of the selection interface 200 that includes a configurable selection element 204. In some embodiments, the configurable selection element 204 can include a potentiometer that provides a selection signal to a processing unit input pin. In such embodiments, the selection signal can be an analog signal that can exhibit a variable, flexible, or graduated range of values, in a manner that corresponds to the number of modular programs 140 currently stored in the memory 120. An analog selection signal can be provided to an ADC input pin, and an on-chip ADC can convert or quantize the analog selection signal to a digital signal value that is accessible to the program selection module 132. Depending upon embodiment details, the program selection module 132 can directly utilize or interpret this digital signal value as the digital selection signal; or the program selection module 132 can interpret this digital signal value as an intermediary value and convert or map this intermediary value to a digital selection signal value by automatically scaling or mapping the intermediary value in relation to a) a reference analog selection signal value; and b) a current selectable execution address count. The reference analog selection signal value can define a predetermined upper or maximum analog selection signal value to which intermediary values are to be referenced. In general, a configurable selection element 204 should be able to output an analog signal value that is at least as large as the reference analog signal value. A current selectable execution addresses count can be given by the sum of a) a number of bootloader-based program instruction sets available for user selection; b) a number of factory programs 142 available for user selection; and c) a number of user programs 144 available for user selection, which can be indicated by the current user program count within the dynamic configuration table 182.
More particularly, in some embodiments, the program selection module 132 can scale intermediary values by way of a conversion table (e.g., a look-up table) or a conversion formula. In general, a representative conversion formula can relate or correspond to the following equation:
DSS = INT((IV / IVref ) * EAC) (1) where DSS corresponds to a digital selection signal value; INT indicates a truncation to a next lowest (rounded down) integer; IV corresponds to a digital intermediary value; IVref corresponds to a maximum intermediary signal value; and EAC corresponds to a current selectable execution address count. To aid understanding, in a representative implementation a configurable selection element 204 can include a potentiometer that can output analog selection signals which vary or range between approximately 0V and approximately 5V depending upon potentiometer setting. Additionally, the target system 100 can be configured to support a selectable execution address count of 6 (i.e., a set of 6 user selectable starting execution addresses), corresponding to the following six selection signal to starting execution address mappings:
0 IAP - USB program instruction set;
1 IAP - USART program instruction set;
2 > first factory program 142a;
3 second factory program 142b;
4 ^ first user program 144a; and
5 second user program 144b. Thus, in this representative implementation, the current user program count equals 2. Each of the IAP - USB and the IAP - USART program instruction sets can correspond to program code within the IAP module 134.
FIG. 3D illustrates a representative intermediary value scaling or mapping 184 in accordance with an embodiment of the disclosure, which involves a 5V reference analog selection signal value and a set of six user selectable starting execution addresses. As shown in FIG. 3D, an analog selection signal between approximately 0V and slightly less than 1.0 V (e.g. approximately 0.975V) can give rise to a digital selection signal value of 0, corresponding to the starting address of the IAP - USB program instruction set. An analog selection signal value between approximately 1.0 V (e.g., greater than approximately 0.975V) and slightly less than 2.0V (e.g., 1.975V) can give rise to a digital selection signal value of 1, corresponding to the starting address of the IAP - USART program instruction set. Similarly, an analog selection signal value between approximately 2.0V and slightly less than 3.0V can give rise to a digital selection signal value of 2, corresponding to the starting address of the first factory program 142a; and an analog selection signal value between approximately 3.0V and slightly less than 4.0V can give rise to a digital selection signal value of 3, which corresponds to the starting address of the second factory program 142b. Finally, an analog selection signal value between approximately 4.0V and slightly less than 5.0V can yield a digital selection signal value of 4 that corresponds to starting address of the first user program 144a; and an analog selection signal value of approximately 5.0V (e.g., above approximately 4.975V) can give rise to a digital selection signal value of 5, which corresponds to the starting address of the second user program 144b.
To further aid understanding, FIG. 3E is another representative intermediary value scaling or mapping 186 in accordance with an embodiment of the disclosure, which involves a 5V reference analog selection signal value and a selectable execution address count of 10 (i.e., a set of 10 user selectable starting execution addresses). In FIG. 3E, digital selection signal values of 0 and 1 respectively correspond to the starting addresses of a first and a second IAP program instruction set (e.g., IAP - USB and IAP - USART); digital selection signal values of 2 and 3 respectively correspond to the starting addresses of a first and a second factory program 142a-b; and digital selection signal values of 4 through 9 respectively correspond to the starting addresses of a first through a sixth user program 144a-f.
As previously indicated, a selection interface 200 can include a set of visual feedback elements such as a flat panel display element (e.g., an LCD display device) and/or a set of LEDs, which can be coupled to a set of processing unit pins (e.g., input and/or output pins). The program selection module 132 and/or other portions of the bootloader 130 can provide or transfer information or data such as the digital selection signal, a user program count, and possibly other information to the visual feedback element(s). For instance, the program selection module 132 can provide or transmit the user program count and/or other information to the set of visual feedback elements prior to or in association with providing a digital selection signal value to the visual feedback element(s). The visual feedback element(s) can indicate or display the user program count to a target system user to facilitate the receipt of an appropriate or intended selection signal value and the corresponding execution of an intended program instruction set or modular program 140. Following the determination or generation of the digital selection signal, the program selection module 132 can provide, issue, transmit, or transfer the digital selection signal to a set of processing unit output pins, such that the visual feedback element(s) can indicate or display the digital selection signal value to a user. After a target system reset occurs and initialization operations are complete, the program selection module 132 can determine whether a current or most recently generated digital selection signal value remains constant or unchanged during a predetermined time interval (e.g., approximately 5, 10, 15, or 30 seconds), thereby indicating correct user input, prior to mapping the digital selection signal value to a selected execution address. In some embodiments, the selection interface 200 can include one or more touch sensitive elements, portions, or regions (e.g., which can be distinct from or integral with the set of visual feedback elements) that can implement configurable selection elements 204 such as a button, a keypad, a touchpad, a selection knob or wheel, a slider bar, or another type of user interface element. The touch sensitive element(s) can generate or output digital values rather than analog values, such that the program selection module 132 can directly perform a touch sensitive element digital output to digital selection signal value mapping, thereby eliminating an analog to digital conversion such as that described above. Such touch sensitive element digital output to digital selection signal mapping can occur in a manner that corresponds to a number of modular programs 140, such as a number of user programs 144, currently stored in the memory 120.
In addition or as an alternative to the foregoing, in certain embodiments, the program selection module 132 can provide or transmit to a set of visual feedback elements (e.g., associated with the selection interface 200) information or data corresponding to a list or table that identifies selectively executable program instruction sets, factory programs 142, and/or user programs 144 and selectable digital values associated therewith to the visual feedback element(s). Particular information or data within such a list or table can be based upon or retrieved from one or more configuration tables 180, 182. FIG. 3F is an embodiment of a representative target mode selection list or table 188 that can be provided to and/or displayed by a visual feedback element (e.g., a flat panel display device such as an LCD) in accordance with an embodiment of the disclosure. As indicated in FIG. 3F, a target mode selection list 188 can include or specify for each distinct execution address available for user selection a) a digital value; and b) a corresponding descriptor or identifier that identifies or categorizes a program instruction set or modular program 140. Thus, for each distinct starting address of a user selectable program instruction set or modular program 140 within the on-chip memory 120 and possibly the off-chip memory 210, the target mode selection list 188 can include a selectable digital value and an identifier. Depending upon embodiment details, one or more identifiers within the selection list 188 can correspond to a target system execution mode; and/or one or more identifiers can correspond to a modular program filename or descriptive name, such as a descriptive factory program name or a descriptive user program name. A target system execution mode identifier can provide, for instance, a categorical indication of a manner in which the target system 100 can be configured to operate in response to user input. In a representative embodiment, execution mode identifiers can include "IAP - USB," "IAP - USART," "Factory Program 1," "Factory Program 2," "User Program 1," "User Program 2," and so on. Representative descriptive factory program names can include, for instance, "Thumb Drive" or "Flash Drive" (e.g., corresponding to a mass storage device such as a USB flash drive), or "Function Generator" (e.g corresponding to a function generator or arbitrary function generator device), "Data Logger" (e.g. corresponding to a data logging device with predetermined input types and a configurable sampling rate), and/or "Signal Probe" (e.g. corresponding to an oscilloscope or a signal monitoring and interpreting device) or another name that conveys a type of functionality associated with a given factory program 142. Representative descriptive user program names can include, for instance, "Data Logger 1 ," "Signal Generator," "Temperature Controller," or another name that conveys a type of functionality associated with a given user program 144. Depending upon embodiment details, a user interface that facilitates or enables user selection of a program instruction set or a modular program 140 for execution can be an integral part of a target system 100, or a portion of a device that is separate or distinct from the target system 100, which can be coupled to the target system 100. In certain embodiments, an architecture 10 in accordance with the present disclosure can include or support a user interface device that is couplable to a target system 100, and which carries or includes visual elements and/or touch sensitive elements that are configured to provide adjunct, auxiliary, or enhanced user interface capabilities.
FIG. 4 is a block diagram of a representative advanced, adjunct, auxiliary, or corollary user selection device 300 according to an embodiment of the disclosure. In an embodiment, an advanced user selection device 300 can include a processing unit 310 that is coupled to each of a memory 320, a communication unit 330, an advanced selection interface 340, and a power source 390 (e.g., a battery and/or a line power coupling). The processing unit 310 can be, for instance, an MCU or other type of device that can be configured to execute program instructions stored in the advanced user selection device's memory 320.
In various embodiments, the memory 320 includes an advanced interface manager 325. The advanced interface manager 325 can include program instructions directed to supporting or performing target system communication and user selection operations, for instance, a) acquiring or retrieving target system status or configuration information (e.g., corresponding to information within a configuration table 180, 182 and/or a target mode selection list 188); b) managing operations performed by the advanced selection interface 340, such as displaying portions of the target mode selection list 188 and receiving user input corresponding to selection signals or selection signal correlates; and c) transferring selection signals or selection signal correlates to the target system 100 (in general, selection signal correlates can be signals that the target system's bootloader 130 can interpret or decode in order to identify or determine selection signal values). The target system's bootloader 130 can execute an appropriate program instruction set or modular program 140 based upon the selection signals or selection signal correlates received from the advanced user selection device 300. In some embodiments, particular target system communication operations can occur by way of IAP operations supported by the advanced user selection device's processing unit 310 and communication unit 330.
In several embodiments, the advanced selection interface 340 includes hardware and/or software (e.g., firmware) configured to provide a visual user interface. The advanced selection interface 340 can include, for instance, one or more visual display elements such as a flat panel display device. In some embodiments, the advanced selection interface 340 includes a set of touch sensitive portions, regions, devices, or elements, which can correspond to or include one or more of a display element, a button, a keypad, a touchpad, a slider, a rotator, or other touch responsive user interface element or device. Such touch sensitive elements can be implemented by way of a touch screen, or a printed circuit board (PCB) that carries touch sensitive hardware, for instance, a PCB that includes S-Touch™ printed circuit board technology (STMicroelectronics, Geneva, Switzerland).
In a representative embodiment, an advanced selection interface 340 includes a display window 380, a set of push buttons 382, a ratiometric rotator wheel 384, and possibly a ratiometric slider 386, one or more of which can be implemented by way of touch sensitive elements. The advanced interface manager 325 can display target configuration information in the display window 380, and detect user input, for instance, input received by way of touch sensitive elements, to facilitate the aforementioned target system communication and/or user selection operations.
Aspects of Representative Programming Device Embodiments and IAP Modes
In response to the generation of a selected execution address corresponding to an IAP mode (e.g., IAP - USB, IAP - USART, or another type of IAP mode), the program selection module 132 transfers processing unit execution control to a program instruction set configured to support or implement the selected type of IAP mode.
When executing in an IAP mode, the target system 100 communicates with an external programming device 400 to facilitate or enable target system programming operations, by way of which modular programs 140 can be downloaded from the programming device 400 to the target system's on-chip and/or off-chip memory 120, 210. In accordance with various embodiments of the present disclosure, the target system 100 can communicate with multiple types of programming devices 400. In several embodiments, a programming device 400 can include a programming user interface 440 that facilitates or enables user identification, selection, modification, and/or confirmation of a set of modular programs 140 to be transferred from the programming device 400 to the target system 100. The programming user interface 440 can further facilitate or enable user identification or selection of target system memory addresses at which modular programs 140 are to be stored. The set of modular programs 140 to be downloaded to the target system, and one or more target system memory addresses corresponding thereto, can be specified by a modular program download list or data structure. In a number of embodiments, the programming user interface 440 includes hardware and/or software configured to provide or support the generation of and user interaction with a graphical user interface (GUI). The programming user interface 440 can additionally or alternatively include a terminal emulator or other type of information display and/or command interface module. In multiple embodiments, the programming user interface 440 and any corresponding GUI provided thereby can include program instructions configured to execute on essentially any type of computing system or computing device. The programming user interface 440 can further be configured to communicate with a target system 100 and transfer multiple modular programs thereto in a manner that is independent of any specific type of modular program development tool, toolkit, or toolchain. As a result, an architecture 10 provided by embodiments the present disclosure can be independent of any given manufacturer's modular program development tool, toolkit or toolchain. Additionally, an architecture 10 in accordance with embodiments of the present disclosure can enable one or more factory program developers and one or more user program developers to respectively generate factory programs 142 and user programs 144 in a manner that is not limited to a particular modular program development tool, toolkit, or toolchain. That is, one or multiple factory program developers and one or multiple user program developers can respectively develop factory programs and user programs by way of identical, similar, or dissimilar tools, toolkits, or toolchains.
A representative GUI provided by the programming user interface 440 is detailed hereafter. For purpose of simplicity and to aid understanding, in the description that follows the programming user interface 440 and a modular program download list are directed to storing user programs 144 in the target system's memory 120 based upon user input, in accordance with a flexible memory map 160.
FIG. 5 is a block diagram illustrating portions of a representative target programming GUI 450 provided by a programming user interface 440 according to an embodiment of the disclosure. In an embodiment, the target programming GUI 450 includes a number of graphical control elements and graphical input elements, such as one or more graphical buttons, text boxes, list boxes, and the like. The target programming GUI 450 can include, for instance, a target status button 452; an add user program button 454; a remove user program button 456; a program target button 458; and a finish or exit button 460.
In response to user selection of the target status button 452, the target programming GUI 450 can communicate with the target system 100, retrieve current target system status information, and provide or display such status information, for instance, indicating whether the target system 100 is ready for programming. In response to user selection of the add user program button 454, the target programming GUI 450 can create or add an entry to a user program download list, and enable the user to identify a first or next user program 144 for inclusion in the user program download list as further described below. In response to user selection of a remove user program button 456, the target programming GUI 450 can remove a user program 144 from the user program download list. In response to user selection of the program target button 458, the target programming GUI 450 transfers control to the programming device 400, which communicates with the target system 100 by way of IAP operations to download and store user programs 144 specified in the user program download list to the target system's memory 120.
Following user selection of the add user program button 454, user selection of a browse button 464 facilitates user identification or selection of a particular user program 144 for inclusion in the user program download list. In various embodiments, user programs 144 added to the user program download list can be executable binary files (e.g., .bin and/or .hex files). The target programming GUI 450 can include a set of text boxes 466a-d configured to display user program information in response to user identification or selection of a particular user program 144 for inclusion in the user program download list. Such user program information can include a user program filename (e.g., the name of an executable file stored on the programming device 400 or another device, system, or network to which the programming device 400 is coupled); a user-assigned descriptor or identifier (ID) associated with the user program 144; a user program size; and a storage or starting address at which the user program 144 is to reside within the target system's memory 120 (hereafter target system address).
In several embodiments, the target system address of a first user program 144 within the user program download list can be predetermined, fixed, or assigned a default value. For instance, the target system address of a first user program 144 can automatically be assigned a default value based upon a lowest address at which a user program portion 156, 168 within the target system's memory 120 is defined to begin. In accordance with a flexible memory map 160, the target system address of a user program 144 added to the user program download list depends upon the sizes of other user programs 144 already present within the user program download list, and/or user input overriding automatically calculated user program storage addresses. Certain embodiments can receive user input overriding a default value for the target system address corresponding to a first user program 144 and/or other user programs 144 within the user program download list. In multiple embodiments, the user programming interface 440 automatically creates, defines, or manages a dynamic configuration table 182 and/or a counterpart thereto corresponding to the user program download list, as the user program download list is defined or modified in response to user input. In response to user selection of the program target button 458 the programming device 400 can transfer a) the dynamic configuration table 182; and b) a sequence of user programs 144 specified by the user program download list to the target system 100, where such user programs 144 are stored at target starting addresses in accordance with the dynamic configuration table 182. Such transfer of the dynamic configuration table 182 and the sequence user programs 144 specified by the user program download list occurs by way of IAP operations, which can occur in accordance with an IAP mode selected on the target system 100 by way of user input directed to the selection interface 200 or an advanced user selection device 300.
In several embodiments, the programming device 400 can include a computer system that provides a graphical programming environment for embedded system design, development, simulation, programming, testing, verification, and/or operation. For instance, in a representative embodiment, the programming device 400 can be a personal computer that is configured to execute a graphical embedded system programming environment such as a Matlab / Simulink environment (The MathWorks, Inc., Natick MA, USA). A Matlab / Simulink environment can include Real Time Workshop (RTW) and Real Time Workshop Embedded Coder (RTWEC), which can automatically generate code corresponding to user programs 144. Other embodiments can be based upon other embedded system programming environments, for instance, the LabVIEW graphical programming environment (National Instruments Corporation, Austin TX, USA). In embodiments in which the programming device 400 is a computer system that provides a graphical programming environment for embedded system design, development, simulation, programming, testing, verification, and/or operation, the target programming GUI 450 can operate within or in association with such a graphical programming environment. For instance, in a representative embodiment, the target programming GUI 450 can be implemented by way of program instructions that can be called from within a graphical embedded system programming environment (e.g., a Matlab / Simulink environment), or which can execute independently.
As indicated above, an architecture 10 in accordance with the present disclosure is not limited to a particular type of embedded system programming environment or the tools or a toolkit associated therewith. Rather, an architecture 10 in accordance with the present disclosure 10 can be configured to support or execute in association with essentially any type of embedded system programming environment, including embedded system programming environments corresponding to different toolkit manufacturers or providers.
Aspects of Representative Adjunct or Associate Programming Devices
In several embodiments, a multi-configuration embedded system development architecture 10 can include a programming device 400 that itself can be a type of embedded system which can be configured to support or perform particular target system programming operations separate from or in the absence of a computer system that provides a graphical embedded system programming or simulation environment. For instance, such a programming device 400 can be configured to download or receive modular programs 140 (e.g., a first set of modular programs 140a) from a personal computer or other programming device 400 at one time, and upload or transfer some or all of such modular programs 140 to at least one target system 100 at one or more other times (e.g., a second set of modular programs 140b to one target system 100a, and a third set of modular programs 140c to another target system 100b, where the second and third sets of modular programs 140b,c can be identical or different).
FIG. 6 is a block diagram of a representative adjunct, associate, or corollary programming device 400a according to an embodiment of the disclosure. In an embodiment, an adjunct programming device 400a can include a processing unit 410 that is coupled to each of a memory 420, a communication unit 430, a programming user interface 440a, and a power source 490 (e.g., a battery and/or a line power coupling). The processing unit 410 can be, for instance, an MCU or other type of device that can be configured to execute program instructions stored in the memory 420. In various embodiments, the memory 420 includes an adjunct programming manager 425. The adjunct programming manager 425 can include program instructions directed to communicating with a computer system or other programming device 400, downloading or retrieving modular programs 140 therefrom, and storing such modular programs 140 in the adjunct programming device's memory 420. In some embodiments, the adjunct programming manager 425 can include, for instance, one or more program instruction sets that facilitate or enable program module retrieval or download by way of IAP operations (e.g., involving USB, USART, or another type of communication interface) supported by the adjunct programming device's processing unit 410 and communication unit 430.
The adjunct programming manager 425 can further include program instructions directed to performing particular target system communication and/or programming operations, for instance, a) acquiring target system status or configuration information (e.g., corresponding to information within a configuration table 180, 182 and/or a target mode selection list 188); and b) uploading modular programs 140 to a target system 100. In some embodiments, such target system communication and/or programming operations can occur by way of IAP operations supported by the adjunct programming device's processing unit 410 and communication unit 430. The adjunct programming manager 425 can additionally include program instructions directed to managing a programming user interface 440a. In several embodiments, the programming user interface 440a includes hardware and/or software (e.g., firmware) configured to provide a visual user interface. The programming user interface 440a can include, for instance, one or more visual display elements such as a flat panel display device. In some embodiments, the programming user interface 440a includes a set of touch sensitive portions, regions, devices, or elements, which can correspond to or include one or more of a display element, a button, a keypad, a touchpad, a slider, a rotator, or other touch responsive user interface element. Such touch sensitive elements can be implemented by way of a touch screen, or a printed circuit board (PCB) that carries touch sensitive hardware, for instance, a PCB that includes S-Touch™ printed circuit board technology.
In a representative embodiment, the programming user interface 440a includes a display window 480, a set of push buttons 482, a ratiometric rotator wheel 484, and possibly a ratiometric slider 486, one or more of which can be implemented using touch sensitive elements. The adjunct programming manager 425 can generate a GUI within the display window 480, which can include portions of a target programming GUI 450 such as that described above with respect to FIG. 5. A GUI generated by the adjunct programming manager 425 can facilitate user management of modular program download operations, as well as the aforementioned target system communication and/or programming operations.
In some embodiments, an adjunct programming device 400a can include one or more portions of an advanced user selection device 300 described above with respect to FIG. 4. For instance, the adjunct programming device's memory 420 can additionally include an advanced interface manager 325 of a type previously described, such that the adjunct programming device 400a can selectively serve as a programming device configured to perform target system programming operations, and a user selection device configured to generate selection signals or selection signal correlates in response to user input. Following receipt of such user input, a combined adjunct programming device / advanced user selection device can transfer selection signals or selection signal correlates to the target system 100 such that the target system's bootloader 130 can transfer execution control to an appropriate user selected program instruction set or modular program 140, in a manner identical, analogous, or essentially analogous to that previously described.
Aspects of Representative Bootloader-Based Selective Execution Processes
FIG. 7 is a flow diagram of a process 500 for bootloader-based selective target system execution according to an embodiment of the disclosure. In an embodiment, the process 500 is initiated in response to a target system reset. The process 500 can include a first process portion 502 that involves performing a set of target initialization and possibly target self-test operations, followed by a second process portion 504 that involves determining a set of selection signal values in response to user input received by way of the selection interface 200 or an advanced user selection device 300. A third process portion 506 can involve determining whether the set of selection signal values corresponds to an LAP request. If so, a fourth process portion 508 can involve determining whether the IAP request corresponds to an IAP - USB request. If so, a fifth process portion 510 can involve transferring execution control to a set of program instructions (e.g., a portion of the IAP module 134) directed to performing target programming operations by way of USB-based IAP operations. Otherwise, a sixth process portion 512 can involve transferring execution control to a set of program instructions (e.g., a portion of the IAP module 134) directed to performing target programming operations by way of US ART-based IAP operations. Following either of the fifth or sixth process portions 510, 512, the process 500 can include a seventh process portion 514 that involves waiting for a target system reset.
If in association with the third process portion 506 it is determined that the set of selection signal values does not correspond to an IAP request, an eighth process portion 516 can involve loading one or more configuration tables 180, 182 (e.g., a static configuration table 180 and/or a dynamic configuration table 182), and a ninth process portion 518 can involve accessing configuration table content (e.g., by mapping the set of selection signal values to a selected location or offset within a configuration table 180, 182) to determine a starting execution address. A tenth process portion 520 can involve jumping to a starting execution address specified by the selected offset within the configuration table 180, 182. Such a starting execution address corresponds to a modular program 140 (e.g., a factory program 142 or a user program 144) that is associated with the set of selection signal values. While features, aspects, and/or advantages associated with certain embodiments have been described in the disclosure, other embodiments may also exhibit such features, aspects, and/or advantages, and not all embodiments need necessarily exhibit such features, aspects, and/or advantages to fall within the scope of the disclosure. It will be appreciated by a person of ordinary skill in the art that several of the above-disclosed systems, components, processes, or alternatives thereof, may be desirably combined into other different systems, components, processes, and/or applications. In addition, various modifications, alterations, and/or improvements may be made to various embodiments that are disclosed by a person of ordinary skill in the art within the scope and spirit of the present disclosure.

Claims

Claims
1. A system for selectively executing program code corresponding to embedded applications, the system comprising:
an embedded processing unit;
a selection interface coupled to the embedded processing unit and configured to receive user input; and
a memory coupled to the processing unit, the memory comprising:
a modular program memory storing a plurality of modular programs, each modular program comprising program instructions executable by the processing unit to implement an embedded application; and
a bootloader configured to selectively initiate the execution of a modular program stored within the memory in response to user input provided to the selection interface.
2. The system of claim 1, wherein the bootloader is configured to determine as part of a system booting process or a system reset process a selected execution address in response to a signal output by the selection interface, the selected execution address corresponding to a starting address of a modular program stored within the memory.
3. The system of claim 1, wherein the memory further comprises an in-application programming (IAP) module configured to perform IAP operations directed to programming the memory.
4. The system of claim 3, wherein the bootloader is configured to determine as part of a system booting process or a system reset process a selected execution address in response to a signal output by the selection interface, the selected execution address corresponding to a starting address of one from the group of a modular program stored within the modular program memory and a program instruction set corresponding to the IAP module.
5. The system of claim 1, wherein the embedded processing unit, the selection interface, and at least a portion of the memory are carried by a common support structure.
6. The system of claim 6, wherein the memory comprises an embedded memory that resides on-chip with the processing unit.
7. The system of claim 4, wherein the modular program memory comprises a factory program memory in which a plurality of predefined modular programs can reside and a user program memory in which a plurality of user defined modular programs can reside.
8. The system of claim 7, wherein the factory program memory is configured to store a predetermined maximum number of predefined modular programs and the user program memory is configured to store a predetermined maximum number of user defined modular programs.
9. The system of claim 7, wherein predefined modular programs within the plurality of predefined modular programs are stored in the factory program memory at uniformly separated starting addresses, and user defined modular programs within the plurality of user defined modular programs are stored in the user program memory at uniformly separated starting addresses.
10. The system of claim 7, wherein at least some modular programs are sequentially stored in the memory at non-uniformly separated starting addresses.
11. The system of claim 10, wherein user defined modular programs within the plurality of user defined modular programs are stored in the user program memory at starting addresses that vary in accordance with a set of user defined modular program sizes.
12. The system of claim 7, wherein the memory further comprises a configuration table that defines an association between a plurality of unique selection signal values corresponding to user input receivable by way of the selection interface and a plurality of unique program instruction addresses to which the bootloader can transfer system execution.
13. The system of claim 7, wherein the plurality of unique program instruction addresses includes a plurality of unique user defined modular program starting addresses.
14. The system of claim 13, wherein the plurality of unique program instruction addresses further includes at least one of a unique predefined modular program starting address and a unique starting address corresponding to a set of program instructions that implement an IAP operation.
15. The system of claim 12, wherein the configuration table includes a predetermined maximum number of data fields corresponding to at least one of a predetermined maximum number of predefined modular programs and a predetermined maximum number of user defined modular programs.
16. The system of claim 12, wherein the configuration table has a flexible number of data fields that depends upon a number of user defined modular programs stored in the user program memory.
17. The system of claim 12, wherein the bootloader is configured to uniquely map a unique selection signal value set received or generated by way of user interaction with the selection interface to a unique starting address of a program instruction set corresponding to an IAP operation, a predefined modular program, or a user defined modular program.
18. The system of claim 1, wherein the selection interface comprises at least one of a set of jumpers, a set of switches, a set of touch sensitive elements, and a set of visual feedback elements.
19. The system of claim 1, wherein the selection interface comprises at least one of a button, a keypad, a touchpad, a selection wheel, a slider bar, and a display window.
20. The system of claim 1, wherein the selection interface comprises a configurable interface element that generates analog signal values.
21. The system of claim 5, further comprising a programming device coupled to the embedded processing unit, the programming device separate from the common support structure.
22. The system of claim 21, wherein the programming device is configured to provide a visual programming user interface that facilitates a transfer of modular programs from the programming device to the modular program memory.
23. The system of claim 20, wherein the programming device comprises a computer system configured to execute a graphical embedded system programming environment.
24. The system of claim 23, wherein the graphical embedded system programming environment comprises a atlab / Simulink environment.
25. The system of claim 22, wherein the programming device is configured for communication with each of the embedded processing unit and a standalone computer system configured to execute a graphical embedded system programming environment.
26. The system of claim 1, wherein the memory excludes an operating system.
27. The system of claim 1, further comprising an adjunct user selection device couplable to the embedded processing unit, the adjunct user selection device comprising:
a processing unit;
a user selection interface coupled to the processing unit; and
a memory coupled to the memory, the memory comprising:
an interface manager configured to manage communication between the adjunct user selection device and the embedded processing unit; and
at least one of a set of predefined modular programs and a set of user defined modular programs transferrable to the embedded memory.
28. A method for selectively executing program code corresponding to a plurality of modular programs stored on a target system, each modular program corresponding to an independently executable embedded application, the method comprising:
receiving a set of selection signal values by way of a user selection interface;
determining during a target system booting or reset process a starting address of a unique program instruction set corresponding to the received set of selection signal values, the unique program instruction set corresponding to one of a modular program within the plurality of modular programs and an in-application programming (IAP) program instruction set; and
transferring target system execution to the starting address of the unique program instruction set.
29. The method of claim 28, wherein transferring target system execution to the starting address of the unique program instruction set occurs during the target system booting or reset process.
30. The method of claim 28, wherein determining a starting address of a unique program instruction set is performed by a bootloader.
31. The method of claim 28, wherein transferring target system execution to the starting address of the unique program instruction set is performed by a bootloader.
32. The method of claim 30, wherein the starting address of a unique program instruction set can uniquely correspond to a user defined modular program or at least one of a predefined modular program and an IAP program instruction set.
33. The method of claim 30, wherein the starting address of a unique program instruction set can uniquely correspond to one of a particular user defined modular program within a plurality of user defined modular programs stored in a target system memory, a particular predefined modular program within a set of predefined modular programs stored in the target system memory, or a particular IAP program instruction set stored within the target system memory.
34. The method of claim 30, wherein the starting address of a unique program instruction set can uniquely correspond to a particular user defined modular program within a plurality of user defined modular programs stored in a target system memory, a particular predefined modular program within a plurality of predefined modular programs stored in the target system memory, and a particular IAP program instruction set within a plurality of IAP program instruction sets stored within the target system memory.
35. The method of claim 30, wherein determining a starting address of a unique program instruction set comprises accessing a configuration table that defines an association between a plurality of unique selection signal values corresponding to user input receivable by way of a selection interface and a plurality of unique program instruction addresses.
36. The method of claim 35, wherein the plurality of unique program instruction addresses comprises a plurality of unique user defined modular program addresses.
37. The method of claim 30, further comprising:
determining whether the received set of selection signal values corresponds to an IAP operation; and
transferring target system execution to an IAP program instruction set.
38. The method of claim 37, further comprising determining whether the received set of selection signal values corresponds to a first IAP operation within a plurality of distinct IAP operations supported by the target system.
39. The method of claim 30, further comprising:
determining whether the received set of selection signal values corresponds to a user defined modular program within a plurality of user defined modular programs; determining whether the received set of selection signal values corresponds to a predefined modular program; and
transferring target system execution to one of a user defined modular program and a predefined modular program.
40. The method of claim 28, wherein receiving a set of selection signal values by way of a user selection interface comprises receiving user input by way of a user selection interface that is carried by the target system.
41. The method of claim 40, wherein the user selection interface comprises one of a set of jumpers, a set of switches, a set of touch sensitive elements, and a set of visual feedback elements.
42. The system of claim 40, wherein the user selection interface comprises at least one from the group of a button, a keypad, a touchpad, a selection wheel, a slider bar, and a display window.
43. The method of claim 40, wherein receiving a set of selection signal values by way of a user selection interface comprises receiving user input by way of a user selection device that is separate from the target system.
44. The method of claim 28, further comprising transferring a plurality of user defined modular programs to the target system by way of IAP operations between the target system and a programming device separate from the target system.
45. The method of claim 44, wherein the programming device is configured to provide a visual programming user interface.
46. The method of claim 45, wherein the programming device comprises a computer system configured to execute a graphical embedded system programming environment.
47. The method of claim 46, wherein the graphical embedded system programming environment comprises a Matlab / Simulink environment.
48. The method of claim 45, wherein the programming device is configured for communication with each of the target system and a standalone computer system configured to execute a graphical embedded system programming environment.
49. A computer readable medium storing program instructions directed to selectively executing program code corresponding to a plurality of modular programs stored on a target system, each modular program corresponding to an independently executable embedded application, the plurality of modular programs including a plurality of user defined modular programs, the program instructions when executed performing operations comprising:
determining during a target system booting or reset process a starting address of a unique program instruction set corresponding to a set of selection signal values received or generated by way of user interaction with a selection interface, the unique program instruction set selectively corresponding to a modular program within the plurality of modular programs and an in-application programming (IAP) program instruction set; and
transferring target system execution to the starting address of the unique program instruction set.
50. The computer readable medium of claim 49, wherein the program instructions comprise a bootloader that determines the starting address of the unique program instruction set corresponding to the set of selection signal values during a target system bootload or reset process.
51. The computer readable medium of claim 49, wherein the program instructions comprise a bootloader that transfers target system execution to the starting address of the unique program instruction set during a target system bootload or reset process.
52. The computer readable medium of claim 49, wherein determining the starting address of a unique program instruction set corresponding to a set of selection signal values comprises determining whether the set of selection signal values corresponds to a user defined modular program within the plurality user defined modular programs stored on the target system or a predefined modular program within a plurality of predefined modular programs stored on the target system.
53. The computer readable medium of claim 49, wherein determining the starting address of a unique program instruction set corresponding to a set of selection signal values comprises determining whether the set of selection signal values corresponds to a distinct IAP program instruction set within a plurality of distinct IAP program instruction sets stored on the target system, each distinct IAP program instruction set directed to performing a distinct type of IAP operation.
54. The computer readable medium of claim 49, wherein determining the starting address of a unique program instruction set corresponding to a set of selection signal values comprises accessing a configuration table stored on the target system that defines an association between a plurality of unique selection signal values corresponding to user input receivable or generatable by way of the selection interface and a plurality of unique program instruction addresses.
55. The computer readable medium of claim 54, wherein the configuration table stores a plurality of user defined modular program starting addresses.
PCT/TH2010/000020 2010-06-15 2010-06-15 Embedded system providing bootloader selected execution of multiple independent modular programs WO2011159263A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/TH2010/000020 WO2011159263A1 (en) 2010-06-15 2010-06-15 Embedded system providing bootloader selected execution of multiple independent modular programs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/TH2010/000020 WO2011159263A1 (en) 2010-06-15 2010-06-15 Embedded system providing bootloader selected execution of multiple independent modular programs

Publications (1)

Publication Number Publication Date
WO2011159263A1 true WO2011159263A1 (en) 2011-12-22

Family

ID=45348451

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/TH2010/000020 WO2011159263A1 (en) 2010-06-15 2010-06-15 Embedded system providing bootloader selected execution of multiple independent modular programs

Country Status (1)

Country Link
WO (1) WO2011159263A1 (en)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880480A (en) * 2012-03-08 2013-01-16 深圳市华旭科技开发有限公司 Method for updating application program of intelligent water meter on line
CN102929162A (en) * 2012-10-26 2013-02-13 苏州宏创高频加热设备有限公司 Multifunctional high-frequency induction digital display control board
CN103514005A (en) * 2012-06-29 2014-01-15 深圳市金溢科技有限公司 Electronic tag and software updating method and system
CN106056678A (en) * 2016-05-24 2016-10-26 北京万集科技股份有限公司 RSU program update method and RSU program update system
CN106716366A (en) * 2015-01-07 2017-05-24 松下知识产权经营株式会社 Microcomputer for microphone
US9928077B2 (en) 2013-12-30 2018-03-27 Sanechips Technology Co., Ltd. Chip starting method, multi-core processor chip and storage medium
CN109871223A (en) * 2019-01-17 2019-06-11 南京品畅科技发展有限公司 A kind of IAP method and system based on stm32 single-chip microcontroller
GB2582000A (en) * 2019-03-07 2020-09-09 Delphi Tech Ip Ltd Automotive bootloader
CN112860301A (en) * 2021-01-12 2021-05-28 明见(厦门)软件开发有限公司 Method for using bootloader interrupt function by app and single chip microcomputer
CN113311931A (en) * 2021-06-08 2021-08-27 合肥磐芯电子有限公司 Double-reset vector 8-bit MCU (microprogrammed control Unit) architecture convenient for IAP (inter Access Point) and method thereof
CN113806114A (en) * 2021-09-30 2021-12-17 杭州分叉智能科技有限公司 RPA robot-based method for checking contraband words on commodity display page

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101119A1 (en) * 2005-11-03 2007-05-03 Nokia Corporation Methods and apparatus for automatically multi-booting a computer system
US20070157017A1 (en) * 2005-12-30 2007-07-05 Augmentix Corporation Embedded device for implementing a boot process on a host
US20080168299A1 (en) * 2007-01-08 2008-07-10 Jim Kateley Recovery Mechanism for Embedded Device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101119A1 (en) * 2005-11-03 2007-05-03 Nokia Corporation Methods and apparatus for automatically multi-booting a computer system
US20070157017A1 (en) * 2005-12-30 2007-07-05 Augmentix Corporation Embedded device for implementing a boot process on a host
US20080168299A1 (en) * 2007-01-08 2008-07-10 Jim Kateley Recovery Mechanism for Embedded Device

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880480A (en) * 2012-03-08 2013-01-16 深圳市华旭科技开发有限公司 Method for updating application program of intelligent water meter on line
CN103514005A (en) * 2012-06-29 2014-01-15 深圳市金溢科技有限公司 Electronic tag and software updating method and system
CN102929162A (en) * 2012-10-26 2013-02-13 苏州宏创高频加热设备有限公司 Multifunctional high-frequency induction digital display control board
US9928077B2 (en) 2013-12-30 2018-03-27 Sanechips Technology Co., Ltd. Chip starting method, multi-core processor chip and storage medium
CN106716366A (en) * 2015-01-07 2017-05-24 松下知识产权经营株式会社 Microcomputer for microphone
EP3244308A4 (en) * 2015-01-07 2018-01-17 Panasonic Intellectual Property Management Co., Ltd. Microcomputer for microphone
CN106056678A (en) * 2016-05-24 2016-10-26 北京万集科技股份有限公司 RSU program update method and RSU program update system
CN106056678B (en) * 2016-05-24 2019-12-10 北京万集科技股份有限公司 RSU program updating method and system
CN109871223A (en) * 2019-01-17 2019-06-11 南京品畅科技发展有限公司 A kind of IAP method and system based on stm32 single-chip microcontroller
GB2582000A (en) * 2019-03-07 2020-09-09 Delphi Tech Ip Ltd Automotive bootloader
CN112860301A (en) * 2021-01-12 2021-05-28 明见(厦门)软件开发有限公司 Method for using bootloader interrupt function by app and single chip microcomputer
CN112860301B (en) * 2021-01-12 2022-08-16 明见(厦门)软件开发有限公司 Method for using bootloader interrupt function by app and single chip microcomputer
CN113311931A (en) * 2021-06-08 2021-08-27 合肥磐芯电子有限公司 Double-reset vector 8-bit MCU (microprogrammed control Unit) architecture convenient for IAP (inter Access Point) and method thereof
CN113806114A (en) * 2021-09-30 2021-12-17 杭州分叉智能科技有限公司 RPA robot-based method for checking contraband words on commodity display page
CN113806114B (en) * 2021-09-30 2023-11-07 杭州分叉智能科技有限公司 Goods presentation page contraband word checking method based on RPA robot

Similar Documents

Publication Publication Date Title
WO2011159263A1 (en) Embedded system providing bootloader selected execution of multiple independent modular programs
Peatman Design with PIC microcontrollers
US7085670B2 (en) Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources
US7290244B2 (en) System and method for configuring a reconfigurable system
US7860582B2 (en) Compact modular embedded device
WO2012044262A1 (en) Embedded system design, programming, and simulation architecture
CN102629193A (en) Software framework and development platform for multi-sensor systems
US20220317185A1 (en) Pattern generation system with pin function mapping
US11250193B1 (en) Productivity platform using system-on-chip with programmable circuitry
US10789192B2 (en) System and method for programming data transfer within a microcontroller
Bates Programming 8-bit PIC microcontrollers in C: with interactive hardware simulation
US8639853B2 (en) Programmable waveform technology for interfacing to disparate devices
CN108614699A (en) A kind of method and system of the continuous integrating Android projects in windows systems
US7441158B1 (en) Embedded hardware debugging tool and associated method
US10474610B1 (en) Hardware trace and introspection for productivity platform using a system-on-chip
Carlson et al. Exploring the microsoft. NET micro framework for prototyping applied wireless sensor networks
Zhang et al. Study of implementing the FEC on SoC FPGA for digital quench detector
Zhuvasin A Healthcare Monitoring Device
Holgado-Terriza et al. Javaes, a flexible java framework for embedded systems
Koslowski et al. An Easy-to-Use Development Kit for a Microcontrollelr Course Based on the 8051
Tan et al. Design and Implementation of Bootloader for Vehicle Control Unit Based on Can Bus
Van Integrating heterogeneous IoT devices to IoT Platform
Ribas Sobreviela Bluetooth Low Energy based on the nRF52840 USB dongle
Hillebrand VxWorks BSP for Pandaboard
Manjikian et al. Implementation and performance assessment of Linux device drivers for the coldfire MCF54418 microcontroller

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10853331

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 1201006556

Country of ref document: TH

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10853331

Country of ref document: EP

Kind code of ref document: A1