Abstract:
An integrated circuit comprising: a processor; a plurality of external pins operatively coupled to the processor; and a permanently written memory operatively coupled to the processor, the memory having a plurality of regions each storing one or more respective boot properties for booting the processor. The processor is programmed to select one of the regions in dependence on an indication received via one or more of the external pins, to retrieve the one or more respective boot properties from the selected region, and to boot using the one or more retrieved boot properties.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to a configurable boot mechanism for an integrated circuit (IC). 
       BACKGROUND  
       [0002]    Integrated circuits that include a microprocessor require a mechanism by they start up, or “Boot”. 
         [0003]    Since they include a programmable microprocessor, such ICs are flexible enough to be designed into a variety of products. However, different products may require the IC to behave in different ways. While the majority of these differences can be accommodated by making changes to software, a mechanism is still needed to load the necessary code into the IC at boot time. Unfortunately this very mechanism may also be application specific. For example, in some applications the boot code may be stored in one of several types of external non-volatile memory chip, while in others the IC may be expected to load its boot code using one of a variety of serial communications links. 
         [0004]    It would be advantageous to provide a more flexible, configurable boot mechanism. 
       SUMMARY 
       [0005]    One way to express which source to boot from would be use some external connections (pins) on the IC to indicate a boot option. However, used alone, this would have the disadvantage that the details of all possible boot options for all possible end-products would have to have been anticipated when the IC was manufactured. Any shortcoming in this regard could require manufacturing new versions of the IC, which is a very expensive proposition especially using today&#39;s small geometry CMOS logic processes. 
         [0006]    There is also a second reason for not wanting to use pins to directly select the boot configuration. Such an approach might for example involve using pins to select specific characteristics—e.g. a 0 or 1 on a certain pin might select between booting from a UART or a NOR memory respectively. But the problem with this is that each feature needs a pin which soon ends up using many pins on the chip. 
         [0007]    Another way would be to use on-chip, writable, non-volatile storage programmed to express the boot option. Such storage could for example consist of laser or electrically programmable fuses. However, used alone, each IC would then need to be customized for a particular end-user or application by programming the ICs appropriately. This would make on-the-shelf inventory less flexible since ICs that had been ‘fused’ in a particular way could be sold into only one application. 
         [0008]    According to one aspect of the present invention, there is provided an integrated circuit comprising: a processor; a plurality of external pins operatively coupled to the processor; and a permanently written memory operatively coupled to the processor, the memory having a plurality of regions each storing one or more respective boot properties for booting said processor; wherein the processor is programmed to select one of said regions in dependence on an indication received via one or more of said external pins, to retrieve the one or more respective boot properties from the selected region, and to boot using the one or more retrieved boot properties. 
         [0009]    According to a further aspect of the present invention, there is provided a method of booting an integrated circuit comprising a processor, the method comprising: inputting an indication of a boot option to one or more external pins of the integrated circuit; using said indication to identify one of a plurality of regions in a permanently written memory on the integrated circuit, each region storing one or more respective boot properties for booting the processor; retrieving the one or more respective boot properties from the identified region of said memory; and booting the processor using the one or more retrieved boot properties. 
         [0010]    According to another aspect of the present invention, there is provided a system comprising: an integrated circuit comprising a processor, a plurality of external pins operatively coupled to the processor, and a writeable non-volatile memory operatively coupled to the processor, the memory having a plurality of regions each for storing one or more respective boot properties for booting the processor; and writing apparatus arranged to write one or more respective boot properties to at least one of said regions for use in booting the processor; programming apparatus arranged to program the processor to select one of said regions in dependence on an indication received via one or more of said external pins, to retrieve the one or more respective properties from the selected region, and to boot using the one or more retrieved boot properties. 
         [0011]    According to another aspect of the present invention, there is provided method of configuring an integrated circuit for booting, the integrated circuit comprising a processor, a plurality of external pins, and a writeable non-volatile memory having a plurality of regions each for storing one or more respective boot properties, and the method comprising: writing one or more respective boot properties to at least one of said regions of said non-volatile memory for use in booting the integrated circuit; and programming the processor to select one of said regions in dependence on an indication received via one or more of said external pins, to retrieve the one or more respective properties from the selected region, and to boot using the one or more retrieved boot properties. 
         [0012]    Thus the present invention uses one or more external pins to select between a plurality of configurable boot options. So different boot options can be selected for different applications by providing an indication at one or more boot configuration input pins of the IC. But as well, details of new boot options or changes to old options (perhaps unanticipated when the IC was first manufactured) can be programmed into the non-volatile memory, reducing the likelihood of requiring very time consuming and expensive modifications to the IC&#39;s design. 
         [0013]    Further, this minimises the number of pins required to select a boot configuration, by using an index read from the pins to select one of a potentially much larger number of configurations. 
         [0014]    In embodiments, the one or more boot properties in each region may comprise at least an identifier of a respective boot source; and the processor may be programmed to retrieve the respective identifier from the selected region, and to boot from the source of boot code identified by the retrieved identifier. 
         [0015]    The integrated circuit may comprise a primary boot ROM storing primary boot code, each of said sources being a source of secondary boot code; and the processor may be configured to initiate booting by executing the primary boot code, the primary boot code containing code which when executed causes the processor to retrieve the identifier and start the booting from the secondary boot code of said identified source. 
         [0016]    Said memory may comprise at least one of: a bank of fuse latches and a ROM. 
         [0017]    The identifier may be an identifier of one of: an external flash memory, a serial link, and a secondary on-chip ROM 
         [0018]    Said one or more pins may be debugging pins for connecting to a debugger, arranged to allow the debugger to control the boot when connected to those pins and said indication to control the boot when the debugger is not connected. 
         [0019]    In one implementation, a user device may comprising the integrated circuit and an RF front-end, wherein said one or more pins may be connected to indicate a source for configuring the processor as a soft modem for communicating over a wireless cellular network via said RF front-end. 
         [0020]    According to another aspect of the present invention, there is provided integrated circuit comprising: a processor; a plurality of external pins; a permanently written memory operatively coupled to the processor, the memory having a plurality of regions each storing one or more respective boot properties for booting said processor; circuitry operatively coupled to the processor, the memory and the pins, the circuitry being configured to select one of said regions in dependence on an indication received via one or more of said external pins, to retrieve the one or more respective boot properties from the selected region, and to boot the processor using the one or more retrieved boot properties. 
         [0021]    According to another aspect of the present invention, there is provided an integrated circuit comprising: a plurality of external pins; a permanently written memory operatively coupled to the processor, the memory having a plurality of regions each storing one or more respective boot properties for booting the integrated circuit; circuitry operatively coupled to the pins, the circuitry being configured to select one of said regions in dependence on an indication received via one or more of said external pins, to retrieve the one or more respective boot properties from the selected region, and to boot the integrated circuit using the one or more retrieved boot properties. 
         [0022]    According to another aspect of the present invention, there is provided integrated circuit comprising: processing means; external input means; permanent storage means having a plurality of regions each storing one or more respective boot properties for booting the processing means; selection means for selecting one of said regions in dependence on an indication received via said input means, retrieving the one or more respective boot properties from the selected region, and booting the processing means using the one or more retrieved boot properties. 
         [0023]    According to another aspect of the present invention, there is provided a user terminal having an integrated circuit comprising: a processor; a plurality of external pins operatively coupled to the processor; and a permanently written memory operatively coupled to the processor, the memory having a plurality of regions each storing one or more respective boot properties for booting said processor; wherein the processor is programmed to select one of said regions in dependence on an indication received via one or more of said external pins, to retrieve the one or more respective boot properties from the selected region, and to boot using the one or more retrieved boot properties. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWING 
         [0024]    For a better understanding of the present invention and to show how it may be carried into effect, reference will now be made by way of example to the accompanying drawing in which: 
           [0025]      FIG. 1  is a schematic block diagram of a processor in a user device. 
       
    
    
     DETAILED DESCRIPTION  
       [0026]      FIG. 1  shows schematically a user device  10 , preferably a mobile terminal or other wireless device such as a mobile phone, laptop wireless data card, PDA, etc. In a preferred embodiment of the present invention, the device  10  comprises an integrated circuit  1  having a processor  2  configured as a software modem or “soft modem” for communicating over a wireless cellular network. The principle behind software modem is to perform a significant portion of the signal processing and associated functions required for the wireless communications in a generic, programmable, reconfigurable processor, rather than in dedicated hardware. 
         [0027]    The integrated circuit  1  comprises an RF interface (not shown), and the device  10  comprises RF front-end hardware (also not shown) including at least an antenna. Preferably, the processor  2  is programmed as a soft baseband modem. That is, on the receive side, all the radio functionality from receiving RF (radio frequency) signals from the antenna up to and including mixing down to baseband is implemented in dedicated hardware. Similarly, on the transmit side, all the functionality from mixing up from baseband to outputting RF signals to the antenna is implemented in dedicated hardware. However, all functionality in the baseband domain is implemented in software stored in a memory and executed by the processor  1 . While this is a preferred implementation, solutions where the RF/IF stage is not implemented by dedicated hardware are also envisaged. 
         [0028]    In the preferred implementation, the dedicated hardware in the receive part of the front-end may comprise a low noise amplifier, (LNA), mixers for downconversion of the received RF signals to IF and for downconversion from IF to baseband, RF and IF filter stages, and an analogue to digital conversion (ADC) stage. An ADC is provided on each of in-phase and quadrature baseband branches for each of a plurality of receive diversity branches. The dedicated hardware in the transmit part of the front-end may comprise a digital to analogue conversion (DAC stage, mixers for upconversion of the baseband signals to IF and for upconversion from IF to RF, RF and IF filter stages, and a power amplifier (PA). Details of the required hardware for performing such basic radio functions will be known to a person skilled in the art. 
         [0029]    The software may then handle functions such as: 
         [0030]    Modulation and demodulation 
         [0031]    Interleaving and deinterleaving 
         [0032]    Rate matching and dematching 
         [0033]    Channel estimation 
         [0034]    Equalisation 
         [0035]    Rake processing 
         [0036]    Bit log-likelihood ratio (LLR) calculation 
         [0037]    Transmit diversity processing 
         [0038]    Receive diversity processing 
         [0039]    Multiple transmit and receive antenna (MIMO) processing 
         [0040]    Voice codecs 
         [0041]    Link adaptation through power control or adaptive modulation and coding 
         [0042]    Cell measurements 
         [0043]    In a preferred embodiment, the chip used is manufactured by Icera and sold under the trade name Livanto®. Such a chip has a specialised processor platform described for example in WO2006/117562. 
         [0044]    An advantage of a soft modem type system is that it can be programmed and potentially reprogrammed to handle different protocols, algorithms, functions, radio access technologies and the like. For example, conventionally different radio access technologies would require different dedicated hardware to be included on a phone or other wireless terminal, and a terminal adapted to handle multiple radio access technologies or “multimode” terminal would have to include different sets of dedicated hardware. This problem is solved by software modem techniques, in which the differences in communicating according to different radio access technologies are handled in software. The processor could be programmed to handle both 2G and 3G cellular standards, including for example perhaps one or more of the GSM, UMTS, EDGE, DigRF, High Speed Downlink Packet Access (HSDPA), and High Speed Uplink Packet Access (HSUPA), and 3GPP Long Term Evolution (LTE) standards. 
         [0045]    Alternatively or additionally, the use of software modem techniques may allow a maker or designer of a user device  10 , or a manufacturer or distributor of the chip  1 , to take a batch of generic or “standard agnostic” processors and then program them according to different radio standards and technologies for different customers or purposes. A soft modem could also be updated easily and inexpensively by reprogramming it to handle new or different technologies. 
         [0046]    Thus to fully exploit of the flexible nature of the soft modem, it can be seen that it would be useful to allow the processor  2  to boot from different boot sources. Particularly, it would be useful to be able to select which boot source to use and also to be able to configure new boot sources after the chip has been designed. This will allow the chip to be easily configured for a particular boot option without going through the expensive process of re-designing it. 
         [0047]    According to embodiments of the present invention, the integrated circuit  1  comprises a writeable, non-volatile memory—preferably a permanent, one-time writeable memory—in this case in the form of a bank of fuse latches  5 . These are fuses such as electronic fuses (E-fuses) which can be programmed by fusing selected fuses using an electric signal, or laser fuses which can be programmed by fusing selected fuses with a laser. The integrated circuit  2  also comprises a plurality of external pins including one or more boot configuration pins  9 . In this example two boot configuration pins  9  are shown. 
         [0048]    The IC  1  and device  2  also comprise a plurality of different boot sources. For example, the IC  1  may comprise a primary on-chip boot ROM  4   a  and a secondary on-chip boot-ROM  4   b,  which may be separate on-chip ROMs or different regions of the same on-chip ROM. The IC  1  may further comprise one or more external interfaces  6  to potential external sources of boot code, such as one or more external memory devices and/or one or more links to other devices external to the user device  10 . In this example, the IC  1  comprises a first interface  6   a  to a first external flash memory  7   a  housed within the user device  10 , a second interface  6   b  to a second external flash memory  7   b  housed within the user device  10 , a third interface  6   c  to a first serial link  8   a  for connecting to another terminal other than user device  10  such as a separate computer, and a fourth interface  6   b  to a second serial link  8   b.  Each of the third and fourth interfaces  6   c  and  6   d  may for example be a UART (universal asynchronous receiver/transmitter). 
         [0049]    The primary boot ROM  4   a  stores primary boot code from which the processor  2  is arranged to initially begin booting. When executed by the processor  2 , the primary boot code uses the boot configuration pins  9  to determine the type and/or other details of a secondary boot source, as described below. This may be in addition to other basic boot functions of the primary boot code. 
         [0050]    In the example shown, the bank of fuse latches  5  comprises a first set of fuse latches  5   a,  a second set of fuse latches  5   b,  a third set of fuse latches  5   c,  and a fourth set of fuse latches  5   d.  Each set  5   a  . . .  5   d  makes up a region of the bank which can be used to store parameters of a respective boot configuration, as discussed below. 
         [0051]    The fusing of the latches  5  is preferably performed by the manufacturer at the end of the manufacturing process, with different batches of chips being fused with different boot configurations depending on the particular application or customer for which that batch is intended. But potentially, the chips could be manufactured with some of the fuses free for programming at a later stage, either by the manufacturer before their sale or by the customer after their sale. 
         [0052]    So preferably, at least one set of boot parameters is pre-programmed into the bank  5  by the manufacturer of the IC  1 . The parameters of each set preferably include a respective identifier of a source of secondary boot code. So for example each set  5   a  . . .  5   d  could include a respective eight-bit field whose value identifies a selection of one of the NAND flash  7   a,  NOR flash  7   b,  first UART  6   c,  second UART  6   d,  secondary ROM  4   b  and/or other sources (not shown). 
         [0053]    Further, the sets  5  may comprise fields for other parameters to specify properties or options related to the identified source. For example, the latches of one set  5   a  could be used to specify not only ‘UART’ but that the UART is some speed X, with one or two stop bits, even parity, etc. Or some latches of another set  5   b  could be used to specify that the NAND flash is eight or sixteen bits wide. Or some latches could be used to indicate the input clock as being 15 MHz or 26 MHz, e.g. with a five-bit field being used to indicated PLL configuration etc. 
         [0054]    The sets  5  may also comprise fields for other parameters to control pieces of application functionality—such as to specify a network operator or to specify whether the chip works with GSM as well as 3G. 
         [0055]    Any unused fuse sets  5  are preferably locked. Alternatively, some or all of the sets of fuse latches  5  could potentially be left un-written after manufacture of the IC 1 , leaving it free for use instead by the maker of the user device  10 . So for example two sets of fuse latches  5   a  and  5   b  could be pr-programmed with two respective sets of manufacturer defined boot configurations, and the other two sets  5   c  and  5   d  could be left free for the maker of the user device  10  to define two further respective boot configurations. 
         [0056]    The maker of the user device  10  uses the boot configuration pins  9  to express a boot option. For example in the illustrated embodiment, four values expressed on the two boot-configuration pins  9  are mapped to respective sets  5   a  . . .  5   d  of the fuse latches as follows.: 
         [0000]    
       
         
               
               
               
             
           
               
                   
                   
               
               
                   
                 Code at pins 
                 Fuse latch set 
               
               
                   
                   
               
             
             
               
                   
                 00 
                 5a 
               
               
                   
                 01 
                 5b 
               
               
                   
                 10 
                 5c 
               
               
                   
                 11 
                 5d 
               
               
                   
                   
               
             
          
         
       
     
         [0057]    The boot configuration pins are preferably hardwired on the application board when making the device  10 . 
         [0058]    When the primary boot code from primary ROM  4   a  is executed, it uses the indication received on the boot configuration pins  9  to select the corresponding set of parameters for continuing the boot. This could be achieved by supplying the indication from the pins  9  to the processor  2  by a suitable interface and configuring the processor  2  to operate on the indication to retrieve the parameters from the fuse latches  5 , either directly or via a DMA engine and/or system bus if the bank  5  is addressable. Alternatively, it could be achieved by providing dedicated logic between the pins  9  and the fuse bank  5  to map the indication to the required address from the bank  5 , thus supplying the parameters to the processor  2  without the processor  2  needing to act directly on the indication at the pins  9 . 
         [0059]    The processor  2  then continues to boot from the secondary boot source identified in the selected set of registers, using the other parameters such as UART speed X, NAND width, external clock speed, etc. as appropriate in order to access that source. 
         [0060]    Preferably the boot configuration pins  9  are in fact “re-used” debugging pins which are also used for connecting to a debugger. When the debugger is connected during development, it controls the boot itself. But when it&#39;s not connected, pull-up or pull-down resistors in the chip or on the board are used to apply the indication to the pins to configure the boot. This means that extra no pins will be needed, optimising the pin count. 
         [0061]    As an alternative to the fuse latches  5 , or in addition to them, one or more configurations could be hard-coded in the boot ROM. For example, three boot configuration pins  9  (eight values) could be used to select between four hardwired configurations and four fused ones. 
         [0062]    An alternative form of identifier could be an address of the boot source. For example, an address in the secondary boot ROM  4   b  could be written into the first set of fuse latches  5   a,  an address in the address space of the first external interface  6   a  could be written into the second set of fuse latches  6   b,  an address in the address space of the second external interface  6   b  could be written into the third set of fuse latches  5   c,  and an address in the address space of the third external interface  6   c  could be written into the fourth set of fuse latches  5   d.  In that case, the secondary boot source options would be a region of the secondary on-chip ROM  4   b,  a region of the external flash memory  7   a,  a region of a second flash memory  7   b,  and the first serial link  8   b  (leaving the second serial link  8   b  unused as a source of secondary boot code). Alternatively, a set of fuse latches could be programmed with an address of the fourth interface  6   d  to make use of the second link, or with an address of a different external interface or on-chip memory (not shown). Or sets of latches  5  could be programmed with different addresses within the same external memory  7   a  or  7   b  so as to define two secondary boot sources within the same external memory device, or different addresses on the same serial link  8  to define two secondary boot sources accessed over the same link. 
         [0063]    It will be appreciated that the above embodiments are described only by way of example. In other embodiments, the invention may use other types of boot sources, other types of non-volatile memory to store the identifiers of the boot sources, other ways of identifying the sources, and other ways of mapping an indication input at the pins to the identifiers. Further, the invention may have applications other than to a soft modem. The problem of selecting boot parameters is relevant to many different applications of the chip. Further, instead of a processor in the sense of something for executing software, the mechanism could be used to configure the booting of a hardware engine. Other uses and configurations may be apparent to the person skilled in the art given the disclosure herein. The scope of the invention is not limited by the described embodiments, but only be the following claims.