Home
        6 Boot Loader - Signals and Systems
         Contents
1.   case this file will be 1srq asm  which uses a timer to cause an  LSRQ interrupt on the primary processor and blinks an LED    Boot Loader 6    attached to flag0  on the EZ LAB board  every time the interrupt  is received  Use makel bat to produce the lsrq ldr file     2  Create the example program to run on the primary processor  the  transmitting link port   You must incorporate a routine here   blsrq asm  to transmit the secondary processor   s program over  the link  This transmitter routine is called before the primary  processor begins to run its main program     The LOADLENGTH variable in the blsrg asm file must be  changed each time the size of the transmitted file changes  Read the  comments within the program blsrq asm for more details  The  blsrq asm example will blink the EZ LAB   s LED attached to  FLAGO every time the interrupt is received  Use make2 bat to  produce the  exe or  Idr file for prom booting of blsrq asm into  the primary processor     6 7 THE BOOT  PROCESS    The actual boot process is similar for all four boot modes  but each is  slightly different     The simplest form of booting uses a Boot EPROM connected to the  external address  data ports of the processor  The Boot EPROM  program is mapped so that the first instruction is located at a specific  address for that processor  see the appropriate processor reference  manual for details  Execution of the application program then  proceeds normally     The other three boot modes will typically req
2.  0x20004  and the DMA corresponding to channel 6 is  initialized with the following values     DMAC6 Ox00A1  6 0x020000  C6 0x0100                   The host must assert the host bus request pin to indicate that it wants  to send data to the ADSP 2106x  After the host receives the host bus  grant signal from the ADSP 2106x  it should write three 16 bit words  to DMA buffer 0  DMABO corresponds to DMA channel 6      If any portion of the appliction program resides in external memory   the host should drop the host bus request signal after writing three  words  The host must drop the host bus request signal for at least five  ADSP 2106x instruction cycles  The host may assert the host bus  request signal any time after five instruction cycles     When the host drops the host bus request signal  the ADSP 2106x has  the option of locking the bus  Once the bus is locked  the ADSP 2106x  can transfer data to external memory  The ADSP 2106x completes any  necessary transfers  and unlocks the bus     This protocol allows booting to occur with very little software or  support of the host     The host must supply data on the DATA 31 16  pins  and the write  address must be for DMABO        The DMA control register of the ADSP 2106x is set for DMA enabled   DTYPE selected for instructions  and packing mode set for 16 to 48  bits with LSW first  6   19       6   20    Boot Loader    When the host boot is complete  the ADSP 2106x application is started   The application must be aware that
3.  Loader    To use the loader  you should be familiar with the hardware  requirements of booting an ADSP 21000 target  See Chapter 11 of the  ADSP 2106x SHARC User   s Manual or Chapter 9 of the ADSP 21020  User   s Manual for further information     Different hardware architectures can be created with ADSP 21000  Family processors  In some systems  the ADSP 21000 processor  executes a program directly from ROM  For systems that use the  ADSP 21020 or that use the ADSP 2106x processor configured to  execute its program directly from 48 bit wide external ROM  the  PROM Splitter utility  SPL21K  is normally used instead of the loader  to create ROM based boot files  In systems that use 8 bit wide boot  PROMS  the loader utility configures the executable code to be  downloadable through this narrower datapath  It does this by creating  a small executable  the boot loader  which is added to the assembled   compiled source files  and is downloaded first into the processor at  reset  The boot loader then downloads the actual program to be run on  the system  initializes memory  both internal and external   and  finishes up by copying over itself and jumping to the restart vector  address  The boot loader is designed to have a minimal impact on the  target executable     The loader supports 32 bit  40 bit and 48 bit data memory  It is  designed for use with systems that execute from RAM  either internal   external  or both     The target application   s architecture file is important
4.  for N  for example   t 5  N must be a positive  non   zero integer value greater than or equal to 4     N24    Boot Loader    Ideally  the value of N should be calculated from the amount of time  the host  or bus  can tolerate a timeout  If the host can only tolerate  10 usec of bus lock  N would be     10 usec  as   ss   N  _  75  2    where SS is the speed of the processor in MHz and 1 SS is the  processor cycle time  The  75 multiplier represents a 75  scaling factor        6 2 3 Examples   PROM Based Loader   The input to LDR21K is an executable file  Once you have created an  executable file  the following command generates a PROM based  loader file  in the Intel Hex 32 file format         LDR21K filename exe       A loader file  filename  1dr  generated with this command line can  be used as an input to most PROM programmers     Host Based Loader  Use the following command line to generate a host based loader        LDR21K filename exe  bhost  fascii    The loader file  filename  ldr  can be used as an input or data file  for a host based program     Link Port Loader  To create a link port boot file for your system  invoke the loader with  its  blink switch        LDR21K filename exe  blink  fascii    This output file  filename  1dr  can be used as a data file for the  booting device connected to link buffer 4     Boot Loader 6    JTAG Loader  To create a JTAG boot file for your ADSP 21020 system  invoke the loader  with its  bJTAG switch        LDR21K filename exe  bJ
5.  loader reads a word from the boot PROM  This 48 bit word  represents the instruction that belongs at address 0x20040 for the target  application  This instruction is loaded into the 48 bit PX register after  the boot loader has finished initializing internal memory  The boot  loader requires that address 0x020040  the DMA6 vector address   contain an RTI instruction because a DMA6 interrupt is generated  when the initialization is complete     6   21    6   22    Boot Loader    The R9 register is loaded with Oxb1db0000  this is the encoded  instruction PM 0 18  PX        The boot loader then reads in the next 256 words from the boot PROM   This data overwrites the loader itself     6 8 2 Host Loader  060 _host asm is the source file for the ADSP 2106x Host loader        060_host asm contains the boot loader that is loaded into seg_ldr  at reset  The file begins by defining macros that contain addresses of  various IOP registers that are used in the code     The boot loader itself begins with part of the interrupt vector table of  the ADSP 2106x  The table contains the interrupts vectors  up to and  including the low priority timer interrupt  Most of these interrupts are  not necessary for the operation of the boot loader  but were included in  case custom modifications required them     The only interrupts used by the boot loader are the reset interrupt   0x020004   0x020007  and the DMA6 interrupt  0x020040   0x020043      The boot loader begins by reading the current value
6.  of the SYSCON  register and saving it  Three copies of SYSCON are used in the  program  one that contains the original value of SYSCON  one that  contains SYSCON withthe BSO bit set  anda third withthe BSO bit  cleared     The IMASK register is set to allow DMA6 interrupts  and the MODE1  register is set to enable interrupts and allow nesting              The boot loader uses a routine called read_PROM_word to fetcha  single 48 bit word from the host  The DMA6 interrupt vector sets the  bus lock bit of the mode register  preventing host bus access  The boot  loader reads a tag from the 48 bit word retrieved from the host to  determine what type of initialization should be performed  The boot  loader executes a small routine to initialize the memory as defined by    Boot Loader 6    the tag  The bus lock is cleared and the boot loader if free to attemp  reading another word from the host     After a block of memory has been initialized  the boot loader jumps  back and and reads the next tag from the host  When a tag of 0 is read   the loader executed the final initialization     Final Initialization   The boot loader reads a word from the host  This 48 bit word  represents the instruction that belongs at address 0x20040 for the target  application  This instruction is loaded into the 48 bit PX register after  the boot loader has finished initializing internal memory  The boot  loader requires that address 0x020040  the DMA6 vector address   contain an RTI instruction because 
7.  the value in DMAC6 is non zero  and  that the IMASK is set to allow DMA6 interrupts              6 8 LOADER  EXECUTABLES    There are four different boot loader executables  one for each type of  loader file generated by LDR21K  This section describes how each loader  works  and how to customize the loaders for your application        The sources for the boot loader executables are located in the library  source directory  The library source directory is ADI_DSP 21k lib srce    You should copy the source file to a working directory and only modify   the working copy  Do not modify the source file              There is an architecture file associated with the loader  The architecture  file is necessary because each loader must be an executable file  rather than  just an object file  The architecture file indicates what memory is used by  the loader  and what memory is used for temporary storage     The boot loader is a small assembly language program that initializes  system memory  based the initialization data  The boot loaders are all 256  words long     The following paragraphs describe the boot loaders in detail  You should  refer to these paragraphs if you need to modify the loader for your  application     6 8 1 Prom Loader  060_prom asm is the assembly source file for the ADSP 2106x PROM  loader  The architecture file is named 060_ldr ach     060_prom asm contains the boot loader that is loaded into seg_ldr at  reset  The file begins by defining macros that contain ad
8.  to the loader  It  specifies the type of processor in the target and its memory  configuration  especially the widths of the memory segments  The  loader uses this information to initialize memory correctly     The ADSP 2106x has a special hardware feature that loads a small  program into internal memory at chip reset  This program can come  from external PROM  the host port  or the link port  based on how the  chip   s external pins are hooked up  The loader uses this feature to load  a program of arbitrary size into the ADSP 2106x   s internal and external  memory  The boot file generated by the loader can be tested in the  ADSP 2106x Simulator     Boot Loader 6    6 1 1 Types Of Boot Files   The loader can be used to create four types of loadable images  the  PROM based loader  the host based loader  the link port loader  and  the specialized JTAG loader     6 1 1 1 PROM Booting    The input to LDR21K is an executable file  From that file  the loader  generates a PROM based loader file      1dr  that can be programmed  into a PROM chip  This file can be used as an input to most PROM   EPROM  EEPROM programmers        Based on the requirements of your system design  you may need to  change the 060_prom asm file  If so  here is how to recompile it  be  sure to copy the original 060_prom asm file to your local directory   and only edit this copy of the original file      asm21k  adsp21060 060_prom       1d21k  a 060_ldr ach 060_prom    6 1 1 2 Host Booting    Command line sw
9. 56 48 bit  words starting at address 0x020000  The boot loader executable must be less  than or equal to 256 48 bit words in length or unexpected result may occur     If you are using a custom boot loader executable  you should edit  re     1 1 eae   q1 Tr   ad 1 1 1 a i    
10. 6 bits     An initialization of 16 or 32 bit memory  either PM  DM  Internal  or  External  is done in a loop which writes a zero value DREG to  memory  Any initialization of 40 or 48 bit PM memory uses a write  with the PX register set to zero  After the boot loader completes this  initialization block  it reads the next tag and executes the appropriate  initialization routine     The loader will break a large initialization into two  or more  smaller  initialization sequences if necessary  The loader does this when the  length of the segment exceeds either 65535  16 bit  words  or if it  exceeds the value specified with the  t command line option     6 4 4 2 Non Zero Initialization Format   When the boot loader reads a tag whose value is 4  5  6  11  12  13  or  14  it executes the appropriate routine to initialize memory to a non   zero value  A single 48 bit word following the tag is an address length  pair indicating the starting address of the memory block in the upper  32 bits and the length of the initialization in the lower 16 bits     The boot loader enters a loop which reads one 48 bit word and writes  the appropriate width value to memory  This loop is repeated once for  each word being initialized  After the boot loader reads each value  from the host  link  or PROM  it locks the bus while it writes the value  to memory  The bus is unlocked when the write is completed     When the boot loader has finished initializing the specified memory  block  it reads the nex
11. Boot Loader EJ 6                   6 1 INTRODUCTION    The Boot Loader is a utility program supplied with the ADSP 21000  Family Development Software  The loader converts an ADSP 21xxx  executable program  generated by the linker  into a format which can  be used to boot a target hardware system and initialize its memory   The loader   s invocation command is LDR21K     The boot loader replaces the MEM21K memory initializer used with  the ADSP 21020 processor  Any executable file to be processed with  the LDR21K boot loader must not be processed by MEM21K  The   nomem switch of the C compiler should be used when compiling any  C source files   this switch prevents the compiler from running  MEM21K     The following naming conventions are used throughout this chapter        The loader refers to LDR21K contained in the software release     The boot loader refers to the executable file that performs the memory  initialization on the target     The boot file refers to the output of the loader that contains the boot  loader and the formatted system configurations     Booting refers to the process of loading the boot loader  initialization  system memory  and starting the application on the target     Memory is referred to as being either data memory  program memory   or internal memory  Remember that the ADSP 21020 processor has  separate external program and data memories  but does not have any  internal memory  The ADSP 2106x SHARC has both internal and  external memory     Boot
12. ROM must be connected to data bus pins  DATA 23 16   The lowest address pins of the ADSP 2106x should be  connected to the PROM address bits  The PROM   s chip select should be  connected to BMS and its output enable should be connected to RD        The WAIT register is initialized to generate 6 wait states for each  PROM access     This loader uses an external PROM to hold the program  The first 256  48 bit words in the PROM are loaded automatically by the ADSP 2106x   This code represents the boot loader executable     The boot loader accesses the boot file in the PROM by toggling the BSO  bit in the SYSCON register  When the BSO bit is active  only the boot  PROM can be accessed as external memory  When the BSO bit is  deactivated  the ADSP 2106x can only access external memory     The internal memory is initialized  followed by the loader overwriting  itself     The DMA automatically uses an 8 to 48 bit packing mode when the BSO    Boot Loader 6    bit is enabled  The BSO bit deselects the external memory and  accesses the boot PROM     The last step of the boot loader is to initialize the memory in which it  resides     6 7 2 The ADSP 2106x Host Loader   This loader assumes that there is an external host that will be sending  information to the ADSP 2106x through the external port EPO  The  DMA is placed in slave mode  so the host is responsible for  transferring data to the ADSP 2106x     When hardware reset occurs  the ADSP 2106x core enters the IDLE  state at location
13. TAG    This output file  filename  1dr  can be used as a data file for the booting  device connected to the JTAG compliant test access port  TAP      6 3 SIMULATING  LOADER FILES    The wsim060 and wsim020 simulators support the simulation of boot  loading for both the host and PROM formats     To simulate a loader file  it is necessary to modify one or more entries in  the wsim060 ini  for the ADSP 2106x simulator  or wsim020 ini   for the ADSP 21020 simulator  files  Use a text editor to open the  appropriate   ini file and make the necessary modifications  In the  startup section  startup_sect    locate the following entry          ldr_file dev  path file  designates a loader file to boot upon  p Startup      A  loader  file    ldr  is generated by the LDR21K exe program     and used for simulation of the DMA boot process      Specifying both an exe_file and a ldr_file generates an error     ldr_file           Remove the         in front of the last line of this entry and add the name of the    ldr file to the right of the         operator  Do not allow spaces between  characters  Specify the full drive and pathway  For example     Boot Loader    ldr_file c  adi_dsp 21k proj exp ldr    Ifan ldr_file andan exe_file are both specified inthe   ini  file  an error message will be generated when the simulator is started up   The exe_file assignment statement must be removed from the    ini  file by adding a         as the first character in that line  This    comments out     t
14. The 16 bit blocks are written in the  same order as all of the other formats  A typical code sequence used to  access the binary file would be     fd   fopen   filename ldr   READ_BINARY     while   feof  fd                   fread   amp short_data  2  1  fd    send_l16bit_word_to_ADSP2106x  short_data                 e  h  Help  Displays the command line syntax and a brief list of options     e  1  boot loader filename   Specifies an alternate boot loader for this boot file  If this option is not  specified  the loader will use the boot loader in the current directory  if  available   or from the ADI_DSP 21k etc subdirectory  See the  discussion on customizing the boot loader before using this option              e  o  output filename   Specifies an alternate output file  LDR21K uses the base of the input  filename with the extension  ldr by default        eV  Displays verbose output while running     e  t  N   Specifies the maximum bus lock time  See the discussion below under        t Switch        6 2 2  t Switch   There is a switch option of the loader which limits the number of cycles  that the SHARC will spend on initializations  The switch is  t followed  by a number  N   The number N is linearly related to the number of cycles  that the SHARC will lock the bus during booting  Specifically  the number  N instructs the SHARC to lock the bus for about 2 N cycles at most  So  if  you have a very fast host that does not like to be locked out  use a  relatively small value
15. a DMA6 interrupt is generated  when the initialization is complete     The R9 register is loaded with Oxb1db0000  this is the encoded  instruction PM  0  I8  PX   The contents of R9 are stored at address  0x20040  This instruction is executed and overwrites the proper  instruction into location 0x20040     6 8 3 Link Loader  060 _link asm is the source file for the ADSP 2106x Link loader     6 8 4 JTAG Loader  ADSP 21020   020_jtag asm is the source file for the ADSP 21020 JTAG loader        The architecture file looks like the following      SYSTEM ADSP21020_JTAG_boot_strap_loader_Architecture    PROCESSOR   ADSP21020      SEGMENT  PM RAM BEGIN 0x00001000  END 0x000001ff seg_ldr   S                      EGMENT DM ROM BEGIN 0x00800000  END 0x00ffffff boot_rom              020_jtag asm contains the boot loader that is loaded into seg_ldr  at reset  This segment is initialized by the jtagboot routine and is  loaded over the JTAG TAP  The boot loader then reads the external  PROM  Fach time it reads from memory  it reads six 48 bit words  The  control structure is similar to the 060_prom asm file described  earlier     The boot loader uses a routine called read_PROM_word to fetch a   single 48 bit word from the boot PROM  The boot loader reads a tag   from the 48 bit word retrieved from the boot PROM to determine what 6   23  type of initialization should be performed  The boot loader executes a    Boot Loader    small routine to initialize the memory as defined by the tag     A
16. ader  executable     If this error occurs  make sure that you are using the correct file for input     Unable to read section header    This error occurs if one of the input files to the loader is not the proper   COFF  file format  This error can occur when attempting to read the input  executable to the loader  or when attempting to read the boot loader  executable     If this error occurs  make sure that you are using the correct file for input     Unable to open boot loader file         This error indicates that the loader was not able to open the specified boot  loader executable  It may indicate an installation error  or that the boot  loader executable specified on the command line is incorrect        Improper start address for loader       This error indicates that there is a problem in the format of the boot loader  executable  The hardware boot sequence on the ADSP 2106x loads in 256  48 bit words starting at address 0x020000  The boot loader executable must  begin at address 0x020000  These addresses can be filled with NOPs  but  they must be filled     If you are using a custom boot loader executable  you should edit  re   assemble  and re link your boot loader  If you are using the standard loader  provided with your software release  this error probably indicates an  installation error        Improper length for loader    This error indicates that the boot loader executable is longer than 256 48 bit  words  The hardware boot sequence on the ADSP 2106x loads in 2
17. command  Any file that has been  successfully processed by the linker can be used as input to the loader   Several options are available through the use of command line switches  and additional files  The command line command structure is                 LDR21K infile    a filename  b  type   c  custom    segment   f  format   h   l filename  o filenam V t N         Implementation Notes        e Any executable  a C source program  assembly program  etc   can be  processed by the loader  The only requirement for an ADSP 2106x  program to be processed is that it must not use address 0x020004 to  store an instruction  The loader requires this location for last minute  patching of the system state before starting the target executable  Your  program should have a NOP or IDLE instruction at address 0x020004     e The target application should be aware the       DMAC6 control register on    the ADSP 2106x will not equal zero  This is noted in the SHARC User s    Manual     Boot Loader    The loader takes the place of the MEM21K application  If you use the  loader to initialize your target   s memory  it is not necessary to use the  MEM21K application  If you are using the C compiler  G21K  you  should use the  nomem switch on the compilation line to stop the  compiler from processing your executable with MEM21K        The input to LDR21K is an executable file generated by the Linker   Some of the boot loaders require particular segments to be defined   These requirements can be fou
18. control register is  specially initialized for this purpose                 LDR21K_ uses a five step process to create a boot file     Boot Loader 6    1  Parse the executable file    2  Separate zero valued initializations    3  Write the specified boot loader to the boot file    4  Write the memory initialization blocks to the boot file    5  Write the final initialization  that overwrites the boot loader      The following paragraphs describe each of these steps in detail  The  boot file is always generated with the least significant values first     6 4 1 ParsingThe Executable File   The loader reads the executable file to determine which segments are  RAM based  and therefor need to be copied into the boot file  All  segments that are declared as RAM in the architecture description file  and contain initialization data are processed by the loader  The loader  ignores segments that are declared in the architecture description file  as ROM  and any segment that does not contain data     The loader supports executables that have both RAM and ROM  segments  The ROM segments are processed using the PROM splitter   sp121k   tool  while the RAM based segments are processed by the  loader     6 4 2 Separating Zero Valued _ Initializations   Executables often contain large ranges of memory that are initialized to  zero at system startup  These ranges can be efficiently represented as a  single 48 bit word  rather than storing a long string of zeros  and can  be performed more eff
19. d tied to the boot  PROM   s chip select  For revision 1 0 silicon and later  all the SHARC   s  BMS signals may be tied directly together and to the PROM   s chip select        The loader accepts multiple executables in its command line  The first   exe in the loader command line will be loaded into the processor with  ID 1  the second  exe will be loaded into the processor with ID 2  etc    up to six processors     6 6 DETAILED  EXAMPLES  6 6 1 EPROM Boot File    Creating an EPROM boot file for your system is the simplest type of boot  file to make  Run the loader on your executable file with its  boprom  switch        LDR21K filename exe  bprom    Boot Loader 6    The output file  filename  1dr  can be used with a PROM programming  device to create the boot EPROMs or EEPROMs for your system     It may seem as if the Prom Splitter tool and the Loader tool are used for  the same purpose  Actually  each tool has its own area of applications  In  general  the PROM Splitter is used to create EPROMs in cases where 48 bit  wide program memory  or even 32 bit wide data memory  external  PROMS are used  All members of the ADSP 21000 Family could use the  PROM Splitter in these circumstances     On the other hand  the Loader is capable of creating boot code of any  standard bit width from byte wide  8 bit  external EPROMs  Because of  this  and the ADSP 2106x SHARC   s more flexible booting options  the  loader is the preferred tool     6 6 2 Host Processor Boot File    To create a 
20. dresses of various  IOP registers that are used in the code     The boot loader itself begins with part of the interrupt vector table of the  ADSP 2106x  The table contains the interrupts vectors  up to and including    Boot Loader 6    the low priority timer interrupt  Most of these interrupts are not  necessary for the operation of the boot loader  but were included in  case custom modifications required them     The only interrupts used by the boot loader are the reset interrupt   0x020004   0x020007  and the DMA6 interrupt  0x020040   0x020043      The boot loader begins by reading the current value of the SYSCON  register and saving it  Three copies of SYSCON are used in the  program  one that contains the original value of SYSCON  one that  contains SYSCON withthe BSO bit set  anda third withthe BSO bit  cleared           The IMASK register is set to allow DMA6 and DMA7 interrupts  and  the MODE1 register is set to enable interrupts and allow nesting           The boot loader uses a routine called read_PROM_word to fetcha  single 48 bit word from the PROM  The boot loader reads a tag from  the PROM to determine what type of initialization should be  performed  The boot loader executes a small routine to initialize the  memory as defined by the tag     After a block of memory has been initialized  the boot loader jumps  back and and reads the next tag from the PROM  When a tag of 0 is  read  the loader executed the final initialization     Final Initialization   The boot
21. fter a block of memory has been initialized  the boot loader jumps  back and and reads the next tag from the host  When a tag of 0 is read   the loader executed the final initialization     6 9 ERROR  MESSAGES    LDR21K may generate the following runtime error messages                 ADI DSP environment variable not defined             This message indicates that the environment variable ADI_DSP is not  defined  This variable should point to the base of the distribution  directory for the software tools  See the installation instructions        Illegal flag      ignored       LDR21K encountered a switch that it did not expect  As the message  indicates  the switch is ignored and processing continues     Address 0x20004 should be a NOP or IDLE          The loader uses address 0x020004 to store an instruction which resets  the processor to it   s reset state after boot loading is complete  User  code should not use address 0x20004 to store a valid instruction     The loader replaces the instruction currently at address 0x020004 with  the necessary instruction  If you application uses address 0x020004   you must customize the boot loader     See the section on the host or PROM loader for more information on  the use address 0x020004 by the loader     Unknown loader section      encountered    This error indicates that an unknown section is included in the boot  loader executable  The only segments that have any meaning in the  boot loader executable are seg_tmp and seg_ldr all 
22. he statement so that it is seen by the simulator program as a simple  comment line  and thus ignored  To do this  locate the following entry          exe_file dev  path file  designates an executable file to load     upon startup      Default is  21lk exe  in the  Working Directory  as specified for the    wsim21k exe program item by the File Properties menu of         the Windows Program Manager     Specifying both an exe_file and a ldr_file generates an error        exe_file  c  adi_dsp 21k proj cache exe  Change the last line to    exe_fle  c  adi_dsp 21k proj cache exe    Then save the file and exit the text editor  When the simulator is started  up  the specified   1dr file is loaded into the simulator  The simulator  determines which type of boot to simulate  and when the Execute   Run   Halt menu function  or the F4 hotkey  is selected it immediately begins  the boot process  You can interrupt the boot process by pressing the F4  hotkey  Booting can be resumed by reselecting the Execute   Run Halt  menu function  or the F4 hotkey      6 4 CREATING A    BOOT FILE   An ADSP 2106x executable program to be used with the loader must not  have an instruction located at address 0x020004 in internal memory   the  loader uses this location for last minute patching of the system state  before jumping to the restart vector  A NOP or IDLE instruction should  be placed at this location  Remember also that DMA Channel 6 is used for  EPROM  host  and link port booting  and the DMAC6 
23. host processor boot file for your ADSP 2106x SHARC based  system  invoke the loader with its  bhost and  fascii command  line switches        LDR21K filename exe  bhost  fascii    This output file  filename   1dr  can be used as an input or data file for  the host processor   s program to transmit to the SHARC processor at the  proper time  The  fascii switch formats the output as a 16 bit ASCII  file  since the 16 bit bus width will be used at the ADSP 2106x   s external  port     When host booting is configured  the ADSP 2106x will enter slave mode  after reset  waiting for the host processor to download the boot code  The  host boot file created by the loader  filename  1dr  requires the host  processor to perform the following sequence of actions     1  The host initiates the booting operation by asserting the ADSP 2106x   s  HBRinput     2  After the host receives the HBG signal back from the ADSP 2106x  it    should write three 16 bit words to the external port DMA buffer 0  EPBO     EPBO corresponds to DMA channel 6      6   15    6   16    Boot Loader    3  The host can continue to write 16 bit words to EPBO until the entire  program is booted     This simple procedure can be used as long as the entire application  will reside only in the ADSP 2106x   s internal memory  If any portions  of the application are planned to reside in external memory  however   the host processor must deassert HBR after writing each 48 bit  instruction  in three 16 bit words   This allows 
24. iciently at boot time     The RAM sections are scanned for runs of zero valued initializations   These areas are then removed from the surrounding non zero  initializations and compressed     6 4 3 Writing The Boot Loader    The boot loader contains instructions to read the rest of the boot file  and initialize the system RAM  This means that the boot loader must  be the first part of the boot file downloaded to the target  Therefore   the loader copies the boot loader to the beginning of the boot file     The ADSP 2106x automatically boots 256 48 bit words from the  appropriate device in all of its booting modes  The ADSP 21020  processor with JTAG boot support also reads 256 48 bit words from  the boot PROM into the interrupt vector table  In most cases  the boot    6   11    6      6 Boot Loader    loader is the default version supplied with the tools release in the  ADI_DSP 21k etc directory as executable files              If there are particular hardware requirements or features in your   application that need to be initialized before system memory  the boot  loader can be customized for your requirements  See the sections later  in this chapter discussing the appropriate boot loader for more details     6 4 4 Writing Memory Initialization Blocks   The initialization data is written into the boot file following the boot  loader  This is because the boot loader is responsible for initializing  memory based on the specific boot format that the loader produces   The boot l
25. itches  bhost and  f are used to generate a  host based loader  From the input file      exe   the loader generates a  loader file      1dr  that can be used as an input or data file for a host  based program that boots the processor through the data and address  buses of the external port     Based on the requirements of your system design  you may need to  change the 060_host asm file  If so  here is how to recompile it  be  sure to copy the original 060_host asm file to your local directory   and only edit this copy of the original file      asm21k  adsp21060 O060_host       1d21k  a 060 _ldr ach 060_host    Boot Loader    6 1 1 3 Link Port Booting    The LDR21K loader option  blink is used to generate an  ldr file  that facilitates booting from an external source  such as a host  processor  through the ADSP 2106x   s link port buffer 4 using DMA  channel 6  This  1dr file is loaded as a variable within the host   s  program and transmitted over the link port to load the booting  processor  An example is included later in this chapter that illustrates  the details of this process        Based on the requirements of your system design  you may need to  change the 060_link asm file  If so  here is how to recompile it  be  sure to copy the original 060_link asm file to your local directory   and only edit this copy of the original file      asm21k  adsp21060 060_link       ld21ik  a 060_ldr ach 060_link    6 1 1 4 JTAG Booting  ADSP 21020    The LDR21K loader may be used to d
26. nd in the section that discusses the  types of loaders     6 2 1 Command Line Switches  The loader supports the following command line switches      a  architecture filename     Specify an alternate architecture file  LDR21K follows the normal  convention for default architecture file specification         b type   Where type indicates the method of booting to be used  The value of  type can be prom  host  link  or JTAG  The default is  bprom       o  eustom option     This switch causes the loader to change operation for a custom boot  loader file  See the discussion on customizing your loader before using  this option  Multiple  c switches may be used on the command line   The available options for custom option are 20004 and 20040      e  segment name     Where segment name describes a segment in the architecture file that  should be considered to contain 40 bit extended precision data  This  switch will overridea  WIDTH directive in the architecture  description file            f  format    Where format describes the output format of the  ldr file  The value  of format can be hex for Intel hex records  ASCII for a 16 bit ASCII file   include for a file suitable to include as initialization data for a C  program  or binary for a binary output file  The default is  fhex     The binary file format requires less space on a hard disk  and can be  faster to read than the include or ascii formats  The binary format stores    Boot Loader 6    48 bit words in three 16 bit blocks  
27. oaders for the ADSP 2106x initialize external memory by  reading a word into internal memory  then writing that word to  external memory     When the boot loader attempts to access external memory  the boot  loader sets the buslock bit  BUSLK bit of the MODE2 register  to lock  the host off of the external bus  After the initialization values  or zero  values  have been written to memory  the buslock bit is deasserted   allowing the host to write additional data to the processor     Note  The period of time that the processor locks the bus can be  limited using the  t switch     Each initialization block is identified by a 48 bit tag which preceeds the  block  Each type of initialization  e g  zero 32 bit  initialize 40 bit      has  a unique tag number  The tags for each type of initialization are listed  in Table 6 1     Tag Number Initialization Type  FINAL INIT  ZERO DM16  ZERO DM32  ZERO DM40  INIT DM16  INIT DM32  INIT DM40  ZERO PM16  ZERO PM32  ZERO PM40  10 ZERO PM48  11 INIT PM16  12 INIT PM32  13 INIT PM40  14 INIT PM48    WO ANDTUKWNF       Table 6 1 Memory Initialization Block Tag Numbers    Boot Loader 6    6 4 4 1 Zero Valued Initialization Format    When the boot loader reads a tag whose value is 1  2 3 7  8  9  or 10  it  executes the appropriate initialization routine  A single 48 bit word  following the tag is an address length pair indicating the starting  address of the memory block in the upper 32 bits and the length of the  initialization in the lower 1
28. other  segments are ignored     Boot Loader 6    If you use a custom loader  be aware that all segments other than seg_tmp  and seg_ldr are ignored     If you are using one of the boot loader executables provided in the software  releases  this probably indicates an installation error     a switch used without a file name   This message indicates that an attempt was made to use the  a switch  without a corresponding architecture file name  See the section on command  line switches for more information     o switch used without a file name   This message indicates that an attempt was made to use the  o switch  without a corresponding output file name  See the section on command line  switches for more information    Unable to parse        This error occurs if the loader is unable to parse the architecture file  This error  message is preceded by another message indicating the specific problem  encountered    Unable to read file header   the loader is not the proper  COFF  file format  This error can occur when  attempting to read the input executable to the loader  or when attempting to    read the boot loader executable     If this error occurs  make sure that you are using the correct file for input     Unable to read optional header    6   26    Boot Loader    This error occurs if one of the input files to the loader is not the proper   COFF  file format  This error can occur when attempting to read the input  executable to the loader  or when attempting to read the boot lo
29. ownload a small kernel of  booting instructions that utilize the JTAG test access port  TAP  of the  ADSP 21020 processor  The command line switch  bjtag is used to  generate a boot file for the JTAG port  For complete information on  JTAG booting of the ADSP 21020  see Chapter 10  JTAG Downloader  in  the ADSP 21000 Family Applications Handbook  Volume 1  Sample source  code and hardware design information are included        Based on the requirements of your system design  you may need to  change the 020_jtag asm file  If so  here is how to recompile it  be  sure to copy the original 020_jtag asm file to your local directory   and only edit this copy of the original file      asm21k 020_jtag    1d21k  a 020_jtag ach O020_jtag    6 1 2 Distribution Files    For proper operation  the loader requires that the following files are  located in the distribution directory of your disk              In the ADI_DSP 21k bin  directory     LDR21K       Boot    Inthe ADI          _DSP 21k etc  directory        _ldr ach   _host asm  _host exe  _prom asm  _prom exe  link asm  link              OC Oy OC  Ci        6  6  6  6  6  6  6    oO OOOO 0 CO       exe       tagboot  tagboot ach  tagboot exe  20_jtag asm  20_jtag ach  20_jtag exe     asm          ct cdc       CG     CrCl eles       Loader 6    Note  The 060_ldr ach file is a generic architecture file for PROM   host  or link port booting of all SHARC processors     6 2  LOADER    INVOKING THE    The loader is invoked with the LDR21K 
30. t tag and executes the appropriate initialization  routine     The loader will break a large initialization into two  or more  smaller  initialization sequences if necessary  The loader does this when the  length of the segment exceeds either 65535  16 bit  words  or if it  exceeds the value specified with the  t command line option     6   13    6   14    Boot Loader    6 4 5 Writing The Final Initialization   The final initialization is indicated by a 0 value tag  When the loader  detects this tag  it reads the next 48 bit word  This word indicates the  instruction that should be located at 0x20040 when the loading is  complete     The next 256 48 bit words are loaded into memory over the boot loader   This process is executed with a DMA transfer sequence of 256 words  which  when completed  RTI is executed at address 0x20040  returning  to address 0x20004  An instruction at this address sets SYSCON to its  initialization value  and writes the correct instruction at address 0x20040   The code then proceeds to address 0x20005 which should be the  beginning of user application code        Note that only the DMAC6 register has a different value than at the  startup condition  The user application code is otherwise intact     6 5 SPECIALIZED  BOOT FILES   6 5 1 PROM Boot File For SHARC Clusters   The LDR21K loader allows clusters of SHARCs to be booted from a  single PROM  For ADSP 2106x silicon earlier than revision 1 0  the BMS  signals of all SHARCs must be ANDed together an
31. the boot loader  program  running on the ADSP 2106x  to gain control of the bus  lock  it  and transfer the data to external memory  The boot loader will  complete any necessary transfers and then unlock the bus  letting the  host regain control  This protocol allows boot loading to occur with  very little software or support on the part of the host     To summarize this procedure  when some  or all  of the application  program is to be stored in external RAM  the host should follow these  steps     1  The host asserts HBR    2  After receiving HBG back  the host writes three 16 bit words to the  EPBO buffer    3  The host deasserts HBR    4  Continue back to Step 1 if more instructions are to be booted     6 6 3 Link Port Booting    To create a link port boot file for your system  invoke the loader with  its  blink switch     LDR21K filename exe  blink       This output file  filename   1dr  can be used as a data file for the  booting device connected to link buffer 4     Example link boot files are located in the 21k etc linkboot  subdirectory  This example is designed to run on the ADSP 2106x  EZ LAB board  but may be modified for any system architecture  For  the purpose of the example  assume a system design that has a  primary SHARC processor link booting a secondary SHARC  processor  The primary processor transmits the boot code from its link  ports to the link ports of the secondary processor     1  Create the example file to be run on the secondary processor  In this
32. uire the use of the loader  utility to accommodate the physical means of downloading the boot  loader executable into the target processor  In general  the boot process  begins by downloading the boot loader onto the target system  The  boot loader then sets up the system as necessary  and begins to load  initialization data  The boot loader initializes the entire system  with  the exception of the area occupied by the loader itself  Once the boot  loader has finished initializing the rest of the system  it needs to load  over itself  This is the most difficult operation  and is unique to each  boot mode     6   17    6   18    Boot Loader    6 7 1 The ADSP 2106x PROM Loader   The PROM loader is used when the external boot PROM is connected to  the ADSP 2106x  PROM booting is activated by setting the EBOOT pin  to high and the LBOOT pin low  The BMS pin is the chip select line for  the boot PROM in this mode     DMA channel 6 is set up at reset with the following values                 0x20000  IM uninitialized  C 0x100  CP uninitialized  GP uninitialized  EI uninitialized       DMAC6G6 0x02A1       The DMA is set up for external port DMA enable  DTYPE is selected  for instructions and packing mode is forced to 8 to 48 bit packing  The  packing order is LSW first  The IMASK register is set to allow DMA6  interrupts                 The IM and EM registers are uninitialized  but the boot hardware  works as if IM is set to 0x100 and EM is set to 0x600        The byte wide boot P
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
SUPER LED BULB 取扱説明書  Tese - PUC-Rio  HP ENVY 17 Notebook PC HP ENVY 15 Notebook PC HP ENVY m7  URINE OFF Chats et Chatons DETERGENT      Main document User Manual English General part MP  0ftan Macula - laboratoires Europhta  CONTENTS  Guide d`installation du module serveur Sun Blade X6275 M2 pour    Copyright © All rights reserved. 
   Failed to retrieve file