Nxp Semiconductors UM10237 用户手册

下载
页码 792
UM10237_2
© NXP B.V. 2008. All rights reserved.
User manual
Rev. 02 — 19 December 2008 
691 of 792
NXP Semiconductors
UM10237
Chapter 30: LPC24XX Flash memory programming firmware
Define the IAP location entry point. Since the 0th bit of the IAP location is set there will be 
a change to Thumb instruction set when the program counter branches to this address.
#define IAP_LOCATION 0x7ffffff1
Define data structure or pointers to pass IAP command table and result table to the IAP 
function:
unsigned long command[5];
unsigned long result[3];
or
unsigned long * command;
unsigned long * result;
command=(unsigned long *) 0x……
result= (unsigned long *) 0x……
Define pointer to function type, which takes two parameters and returns void. Note the IAP 
returns the result with the base address of the table residing in R1.
typedef void (*IAP)(unsigned int [],unsigned int[]);
IAP iap_entry;
Setting function pointer:
iap_entry=(IAP) IAP_LOCATION;
Whenever you wish to call IAP you could use the following statement.
iap_entry (command, result);
The IAP call could be simplified further by using the symbol definition file feature 
supported by ARM Linker in ADS (ARM Developer Suite). You could also call the IAP 
routine using assembly code.
The following symbol definitions can be used to link IAP routine and user application:
#<SYMDEFS># ARM Linker, ADS1.2 [Build 826]: Last Updated: Wed May 08 16:12:23 2002
0x7fffff90 T rm_init_entry
0x7fffffa0 A rm_undef_handler
0x7fffffb0 A rm_prefetchabort_handler
0x7fffffc0 A rm_dataabort_handler
0x7fffffd0 A rm_irqhandler
0x7fffffe0 A rm_irqhandler2
0x7ffffff0 T iap_entry
As per the ARM specification (The ARM Thumb Procedure Call Standard SWS ESPC 
0002 A-05) up to 4 parameters can be passed in the r0, r1, r2 and r3 registers 
respectively. Additional parameters are passed on the stack. Up to 4 parameters can be 
returned in the r0, r1, r2 and r3 registers respectively. Additional parameters are returned 
indirectly via memory. Some of the IAP calls require more than 4 parameters. If the ARM 
suggested scheme is used for the parameter passing/returning then it might create 
problems due to difference in the C compiler implementation from different vendors. The 
suggested parameter passing scheme reduces such risk.