FlashLoaderGuide ENU
FlashLoaderGuide ENU
Development Guide
UFLX-7
COPYRIGHT NOTICE
© 2007-2020 IAR Systems AB.
No part of this document may be reproduced without the prior written consent of IAR
Systems AB. The software described in this document is furnished under a license and
may only be used or copied in accordance with the terms of such a license.
DISCLAIMER
The information in this document is subject to change without notice and does not
represent a commitment on any part of IAR Systems. While the information contained
herein is assumed to be accurate, IAR Systems assumes no responsibility for any errors
or omissions.
In no event shall IAR Systems, its employees, its contractors, or the authors of this
document be liable for special, direct, indirect, or consequential damage, losses, costs,
charges, claims, demands, claim for lost profits, fees, or expenses of any nature or kind.
TRADEMARKS
IAR Systems, IAR Embedded Workbench, Embedded Trust, C-Trust, IAR Connect,
C-SPY, C-RUN, C-STAT, IAR Visual State, IAR KickStart Kit, I-jet, I-jet Trace,
I-scope, IAR Academy, IAR, and the logotype of IAR Systems are trademarks or
registered trademarks owned by IAR Systems AB.
Microsoft and Windows are registered trademarks of Microsoft Corporation.
Adobe and Acrobat Reader are registered trademarks of Adobe Systems Incorporated.
All other product names are trademarks or registered trademarks of their respective
owners.
EDITION NOTICE
Seventh edition: February 2020
Part number: UFLX-7
This guide applies to version 1.x of the IAR Flash Loader.
Internal reference: INIT
AFE1_AFE2-1:1
Contents
Introduction .......................................................................................................... 5
AFE1_AFE2-1:1
Macro-based flash loading functions ................................................. 26
Built-in macros for macro-based flash loading .......................... 28
__argCount ........................................................................................ 28
__bytes2Word16, __bytes2Word32 .................................................. 28
__getArg ............................................................................................ 29
__makeString ..................................................................................... 29
__readMemoryBuffer ........................................................................ 29
__writeMemoryBuffer ....................................................................... 29
AFE1_AFE2-1:1
Introduction
Introduction
● Introduction to flash loading
AFE1_AFE2-1:1
Introduction to flash loading
3 The debugger starts the flash loader. The flash loader reads data from the RAM buffer
and programs the flash memory.
4 The image file now resides in flash memory and can be started. The flash loader and
the RAM buffer are no longer needed, and the full RAM is available to the application
in the flash memory.
AFE1_AFE2-1:1
Introduction
In practice, the process is more complicated—the RAM buffer is usually much smaller
than the image file to be downloaded, and the flash programming is performed in several
steps. See The IAR Flash Loader process, page 11.
AFE1_AFE2-1:1
The IAR Flash Loader
To perform flash loading using IAR Embedded Workbench, you must first implement
the IAR Flash Loader, and then activate the program in the IDE:
● Implementing the IAR Flash Loader—you implement the IAR Flash Loader from
framework source code, supplied with IAR Embedded Workbench, and
device-specific source code that you provide. See Implementing the IAR Flash
Loader, page 9.
● Activating the IAR Flash Loader—once you have built the IAR Flash Loader, you
must activate the program in the IDE. See Activating the IAR Flash Loader, page
19.
To perform flash loading without RAM, see Flash loading without RAM, page 25.
AFE1_AFE2-1:1
Implementing the IAR Flash Loader
AFE1_AFE2-1:1
Implementing the IAR Flash Loader
Copies of the files and flash loader examples are located in the IAR Embedded
Workbench installation directory under target\src\flashloader.
For information about these functions, see IAR Flash Loader functions, page 34.
AFE1_AFE2-1:1
Implementing the IAR Flash Loader
Using data from the image file, C-SPY repeatedly writes data to the RAM buffer and
invokes the FlashWrite function in the flash loader, with these constraints:
● Writing is sequential, starting at the lower address
● The buffer will always contain a multiple of the page size
● The buffer is padded whenever the data does not naturally fill a page
Before the first page of any given block is written, the FlashErase function is invoked
to erase that whole block.
For reference information on these functions, see IAR Flash Loader functions, page 34.
11
AFE1_AFE2-1:1
The IAR Flash Loader process
AFE1_AFE2-1:1
Implementing the IAR Flash Loader
The new namespace _ExecDevice should be used in the device support scope. The
execUser namespace should be used in the application scope. For each defined setup
macro function, C-SPY first calls the _ExecDevice... macro function and then the
execUser... macro function, so the application macro can override any action in the
corresponding device support macro.
13
AFE1_AFE2-1:1
The IAR Flash Loader configuration files
For example:
<?xml version="1.0" encoding="iso-8859-1"?>
<flash_device>
<exe>$TOOLKIT_DIR$\config\flash\P8_family\flash_p8.out</exe>
<flash_base>0x20000</flash_base>
<page>256</page>
<block>2 0x100</block>
<block>3 0x100</block>
</flash_device>
For reference information on the flash memory configuration file, see The flash memory
configuration file, page 39.
AFE1_AFE2-1:1
Implementing the IAR Flash Loader
memory system configuration (.board) file also specifies image address ranges that
belong to different flash memories.
If a board contains two flash memories, where one is used for a boot loader and the other
for the application, only one of them will be relevant for any given project. In this case
you need to have two different flash memory system configuration (.board) files—one
for each kind of project.
You can prepare this file in advance for various development boards, and create or
modify the file using the Project>Options>Debugger>Download dialog box in the
IAR Embedded Workbench IDE, see Activating the IAR Flash Loader, page 19.
For example:
<?xml version="1.0" encoding="iso-8859-1"?>
<flash_board>
<pass>
<loader>$TOOLKIT_DIR$\config\flash\flash_p8_2a.flash</loader>
<range>CODE 0x20000 0x207ff</range>
<abs_offset>0x10000</abs_offset>
</pass>
<ignore>CODE 0x22000 0x220ff</ignore>
<pass>
<loader>$TOOLKIT_DIR$\config\flash\flash_p8_2b.flash</loader>
<range>CODE 0x20800 0x21000</range>
<abs_offset>0x10000</abs_offset>
</pass>
</flash_board>
For reference information on the flash memory system configuration file, see The flash
memory system configuration file, page 41.
15
AFE1_AFE2-1:1
Overriding the flash memory configuration file
For reference information on these constants, see Constants to override the flash
memory configuration file, page 43.
For example:
uint32_t FlashInit(void *base_of_flash, uint32_t image_size
{
strcpy(LAYOUT_OVERRIDE_BUFFER, "2 0x100,7 0x200,7 0x1000");
SET_PAGESIZE_OVERRIDE(128); // New page size
SET_BUFSIZE_OVERRIDE(0x1000); // New buffer size
return RESULT_OK | OVERRIDE_LAYOUT
| OVERRIDE_PAGESIZE | OVERRIDE_BUFSIZE;
}
AFE1_AFE2-1:1
Implementing the IAR Flash Loader
17
AFE1_AFE2-1:1
IAR Flash Loader source code example
AFE1_AFE2-1:1
Using the IAR Flash Loader
● Generating debug information for use with the IAR Flash Loader
19
AFE1_AFE2-1:1
Activating the IAR Flash Loader
2 Select Use flash loader(s) and Override default board file, and specify a flash
memory system configuration file (.board). Use the browse button to select a
predefined file suitable for your system.
3 If no such file is available, you can create a new file or click Edit to modify an existing
file. The Flash Loader Overview dialog box is displayed showing one row of
information for each separate flash memory on the board, or for each flash loader pass.
Note: If you edit one of the predefined files located in the IAR Embedded Workbench
installation directory, you will be prompted to save the modified file to a different
directory.
Click New to define a new pass, Edit to modify an existing pass, or Delete to remove a
pass from list.
4 If you click New or Edit, the Flash Loader Configuration dialog box is displayed.
You can use this dialog box to configure the IAR Flash Loader.
Configure the flash memory system configuration file as required, and click OK.
AFE1_AFE2-1:1
Using the IAR Flash Loader
5 A flash memory system configuration file (.board) is created. See The flash memory
system configuration file, page 41.
Generating debug information for use with the IAR Flash Loader
For the IAR Flash Loader to interact with the IAR C-SPY Debugger, the flash loader
must be built with debug information generated from the ILINK linker. You specify the
options to generate this debug information when you build the IAR Embedded
Workbench project.
To generate debug information for use with the IAR Flash Loader:
1 In the IAR Embedded Workbench IDE, choose Project>Options>Linker>Output.
21
AFE1_AFE2-1:1
Debugging the flash loader
The test harness for debugging the flash loader should contain a main function which
calls FlashInit, FlashWrite, and FlashErase with suitably prepared, or generated,
data and parameters. The program should be linked to a RAM address, from which it
can be debugged as a normal application until the basic flash programming code is
correct.
When you use the flash loader in the flash loading process, you can view the process
details in the generated log file.
Pass 1 of 1
Starting fragment-style flashloader pass.
FlashInitEntry is at 0x20000348
FlashWriteEntry is at 0x20000350
FlashEraseWriteEntry is at 0x20000358
FlashBreak is at 0x200000C0
FlashBufferStart is at 0x20000400
FlashBufferEnd is at 0x2001EF84
theFlashParams is at 0x2001EF84
FlashChecksumEntry not found
FlashSignoffEntry is at 0x20000360
page size is 8 (0x8)
filler is 0xff
buffer size is 125824 (0xleb80) (0xleb84 before rounding)
SimpleCode records (after offset):
Record 0: @ 0x8000000[66592 (0x10420) bytes] 0x8000000 -
0x801041f [8 20 0]
Base of flash at 0x8000000
AFE1_AFE2-1:1
Using the IAR Flash Loader
23
AFE1_AFE2-1:1
Debugging the flash loader
AFE1_AFE2-1:1
Flash loading without RAM
25
AFE1_AFE2-1:1
Flash loading without RAM
All arguments are integers (addresses or flags), except the last one. The only flags used
for the flags argument are:
● kERASE_ONLY_FLAG (0x1)—A special return value (except kRESULT_OK(0) or
kRESULT_ERROR(1)), namely kRESULT_ERASE_DONE(3), should be returned if a
full erase was performed by the FlashInit function.
● kMASS_ONLY (0x2)—If possible, perform a mass erase before flash loading
proceeds. The subsequent erase/write sequence will then proceed normally (unless
an error is returned), and it is up to the flash loader to ignore subsequent erase
requests if a mass erase has already been done.
AFE1_AFE2-1:1
Flash loading without RAM
The args argument is a single string containing all arguments (separated by tab
characters, but this should not be relied upon). Use the built-in macros _ _argCount and
_ _getArg to access the arguments, see Built-in macros for macro-based flash loading,
page 28.
If the return value also has the bit 0x10000 set (kRESULT_OVERRIDE_LAYOUT), C-SPY
expects an alternative layout in the macro variable flashLayoutOverride, as follows:
_ _var flashLayoutOverride;
FlashInit(base_of_flash,
image_size,
link_address,
flags,
args)
{
...
flashLayoutOverride = "4 0x4000,1 0x10000,7 0x20000,4 0x4000,
1 0x10000,7 0x20000";
return result | 0x010000; // kRESULT_OVERRIDE_LAYOUT
}
The first three arguments are integer addresses or counts. The fourth argument is a byte
buffer (that is, a macro language native string) of size count. It can be indexed as a byte
array, for example, buffer[7].
FlashWrite(block_start,
offset_into_block,
count,
buffer)
{
return 0;
}
27
AFE1_AFE2-1:1
Built-in macros for macro-based flash loading
FlashErase(block_start,
block_size)
{
return 0;
}
FlashSignoff()
{
return 0;
}
_ _argCount
Syntax _ _argCount(string)
Description Returns the number of arguments embedded in the given string (this is primarily for the
last parameter of the FlashInit function.) This corresponds to the value of argc in
standard flash loaders.
_ _bytes2Word16, _ _bytes2Word32
Syntax _ _bytes2Word16(buffer, offset)
_ _bytes2Word32(buffer, offset)
Description Extracts a 16-bit or 32-bit word from the given buffer (string) starting at the given byte
offset into the buffer, using the proper byte order, and returns it as an integer. The offset
does not need to be aligned to a multiple of the word size.
Example _ _bytes2Word16("ABCDEF", 2)
AFE1_AFE2-1:1
Flash loading without RAM
_ _getArg
Syntax _ _getArg(n, string)
Description Returns the argument specified with the n value from the given string. This corresponds
to argv[n] in a standard flash loader.
_ _makeString
Syntax _ _makeString(count, char)
_ _readMemoryBuffer
Syntax _ _readMemoryBuffer(count, addr, zone)
Description Reads count bytes from the specified address and returns them as a macro string.
_ _writeMemoryBuffer
Syntax _ _writeMemoryBuffer(buffer, count, addr, zone)
Description Writes count bytes from the specified buffer (string) to the specified address.
29
AFE1_AFE2-1:1
Built-in macros for macro-based flash loading
AFE1_AFE2-1:1
Reference information
Reference information
● Reference information on IAR Flash Loader
This dialog box lists all defined flash loaders. If you have selected a device on the
Project>Options>General Options>Target page for which there is a flash loader, this
flash loader is by default listed in the Flash Loader Overview dialog box.
31
AFE1_AFE2-1:1
Reference information on IAR Flash Loader
Function buttons
These function buttons are available:
OK
The selected flash loader(s) will be used for downloading your application to
memory.
Cancel
Standard cancel.
New
Displays a dialog box where you can specify what flash loader to use, see Flash
Loader Configuration dialog box, page 33.
Edit
Displays a dialog box where you can modify the settings for the selected flash
loader, see Flash Loader Configuration dialog box, page 33.
Delete
Deletes the selected flash loader configuration.
AFE1_AFE2-1:1
Reference information
Use the Flash Loader Configuration dialog box to configure the download to suit your
board. A copy of the default board file will be created in your project directory.
Memory range
Specify the part of your application to be downloaded to flash memory. Choose
between:
All
The whole application is downloaded using this flash loader.
Start/End
Specify the start and the end of the memory area for which part of the
application will be downloaded.
Relocate
Overrides the default flash base address, in other words, relocates the location of the
application in memory. This means that you can flash your application to a different
location from where it was linked. Choose between:
Offset
A numeric value for a relative offset. This offset will be added to the addresses
in the application file.
33
AFE1_AFE2-1:1
IAR Flash Loader functions
Absolute address
A numeric value for an absolute base address where the application will be
flashed. The lowest address in the application will be placed on this address.
Note that you can only use one flash loader for your application when you
specify an absolute address.
You can use these numeric formats:
● 123456, decimal numbers
● 0x123456, hexadecimal numbers
● 0123456, octal numbers
The default base address used for writing the first byte—the lowest address—to flash is
specified in the linker configuration file used for your application. However, it can
sometimes be necessary to override the flash base address and start at a different location
in the address space. This can, for example, be necessary for devices that remap the
location of the flash memory.
Extra parameters
Some flash loaders define their own set of specific options. Use this text box to specify
options to control the flash loader. For information about available flash loader options,
see the Parameter descriptions field.
Parameter descriptions
Displays a description of the extra parameters specified in the Extra parameters text
box.
AFE1_AFE2-1:1
Reference information
Macro Description
FlashInit The first function called in the flash loader and which can
initialize the flash memory. Can also provide extra information to
C-SPY before flash programming starts, and can override the
properties specified in the flash memory configuration file.
FlashSignoff Optional. Cleans up after flash loading.
FlashWrite Writes or copies a number of bytes of data from the RAM buffer
to the flash memory.
Table 4: Summary of IAR Flash Loader functions
FlashChecksum
Syntax OPTIONAL_CHECKSUM
uint32_t FlashChecksum(void const *block_start, uint32_t
block_size)
Parameters
block_start Points to the first byte of the block to erase.
block_size Specifies the size, in bytes, of the block to erase.
Description This is an optional function. You implement this function to enable checksum
verification of the downloaded flash memory content. You implement it with a helper
function from the framework, for example, Crc16.
Note: The OPTIONAL_CHECKSUM macro is needed to make sure that this optional
function and its framework wrapper are both included in the linked flash loader.
Example OPTIONAL_CHECKSUM
uint32_t FlashChecksum(void const *begin, uint32_t count
{
return Crc16((uint8_t const *)begin, count);
}
FlashErase
Syntax uint32_t FlashErase(void *block_start, uint32_t block_size)
Parameters
block_start Points to the first byte of the block to erase.
35
AFE1_AFE2-1:1
IAR Flash Loader functions
FlashInit
Syntax #if USE_ARGC_ARGV
uint32_t FlashInit(void *base_of_flash, uint32_t image_size,
uint32_t link_address, uint32_t flags,
int argc, char const *argv[]);
#else
uint32_t FlashInit(void *base_of_flash, uint32_t image_size,
uint32_t link_address, uint32_t flags;
#endif;
Parameters
base_of_flash Points to the first byte of the flash memory.
image_size Specifies the size of the image, in bytes, to be written to
flash memory.
link_address Specifies the original link address of the first byte of the
image, before any offsets, or if there are multiple passes,
the first byte of the subset of the image used for this pass.
Not all flash loaders need this parameter.
flags Specifies optional flags. These flag values are defined:
FLAG_ERASE_ONLY—When set (when the expression,
flags & FLAG_ERASE_ONLY, is non-zero), the flash
loader has been invoked with the sole purpose of erasing
the whole flash memory. If the flash memory supports a
one-step global erase function, it can be invoked directly
from FlashInit, which should return the constant
RESULT_ERASE_DONE. Otherwise, C-SPY will continue
and invoke the FlashErase function for each block.
FLAG_MASS_ERASE—When set, the FlashInit function
is expected to perform a mass erase, if possible. Unless the
function returns an error, the flash loader process will
continue with the normal sequence of write/erase
invocations.
AFE1_AFE2-1:1
Reference information
flags (Continued) Note that the sequence will be the same regardless of
whether mass erase has been requested or not, or performed
or not. If FlashInit has done a mass erase, subsequent
erase operations can be skipped by the flash loader. If
FlashInit has not done a mass erase, subsequent erase
operations should be performed normally by the flash
loader.
Description The FlashInit function is the first function called in the flash loader, and can initialize
the flash memory. This function can provide extra information to C-SPY before flash
programming starts, such as unlocking the flash memory, or can override the properties
specified in the flash memory configuration (.flash) file using a set of macros defined
in the flash_loader_extra.h header file. See Overriding the flash memory
configuration file, page 15.
There are two different prototypes for FlashInit, determined by the value of the
pre-processor macro USE_ARGC_ARGV, which you specify in flash_config.h. If you
need the argv/argc flexibility, you can specify arguments in the flash memory
configuration (.flash) file, or in the Project>Options>Debugger>Download dialog
box in the IAR Embedded Workbench IDE.
Return value Either RESULT_OK or RESULT_ERROR, but also other return values can be used, see
Constants to override the flash memory configuration file, page 43.
FlashSignoff
Syntax OPTIONAL_SIGNOFF
uint32_t FlashSignoff()
Description This is an optional function. You implement the function to perform a clean-up after
flash loading has finished. The function is called after the last call to FlashWrite (or
after FlashChecksum, if it exists).
Note: The OPTIONAL_SIGNOFF macro is needed to make sure that this optional
function and its framework wrapper are both included in the linked flash loader.
Example OPTIONAL_SIGNOFF
uint32_t FlashSignoff()
{
return RESULT_OK;
}
37
AFE1_AFE2-1:1
IAR Flash Loader variables
FlashWrite
Syntax uint32_t FlashWrite(void *block_start,
uint32_t offset_into_block,
uint32_t count,
char const *buffer)
Parameters
block_start Points to the first byte of the block into which this operation
writes.
offset_into_block Specifies how far into the current block that this write
operation shall start. The absolute address of the first byte
to write is block_start + offset_into_block.
count Specifies the number of bytes to write.
buffer A pointer to the buffer that contains the bytes to write.
Description Writes or copies a number of bytes (always a multiple of the page size) of data from the
RAM buffer to the flash memory.
frameworkVersion
Syntax frameworkVersion
Description A variable in flash_loader.c used by the debugger to adapt to the framework version
used by the flash loader.
Note: The framework version should never be changed by an individual flash loader. It
is controlled by the framework code.
AFE1_AFE2-1:1
Reference information
You can use constants to override the properties specified in the flash memory
configuration file, see Constants to override the flash memory configuration file, page
43.
FILE CONTENTS
The flash memory configuration file contains the following mandatory and optional
elements:
Mandatory elements
exe Specifies the path to the flash loader. The path can
contain an argument variable, such as $TOOLKIT_DIR$.
flash_base Specifies the base address of the flash memory.
page Specifies the flash memory page size.
block Specifies the block layout of the flash memory using one
or more of this element, in order. Each element contains
a decimal count value followed by a block size in
hexadecimal form. The element sequence should fully
specify the sequence of blocks for the flash memory. In
the file example, the flash device contains two blocks of
size 0x100, followed by three blocks of size 0x200, for a
total size of 0x800.
Optional elements
39
AFE1_AFE2-1:1
The flash memory configuration file
AFE1_AFE2-1:1
Reference information
Because each of the processor variants has a flash memory of the same type, there are
five different flash memory configuration (.flash) files, with each file specifying the
same flash loader, requiring the same flash programming algorithm.
FILE CONTENTS
At the highest level, the flash memory system configuration file contains one or more of
the following elements:.
pass Specifies a single flash programming pass, for
programming a single flash memory. Many flash
memory system configuration files contain only one
pass element.
41
AFE1_AFE2-1:1
The flash memory system configuration file
Mandatory elements
Each pass element in the flash memory system configuration file contains the following
element:
Optional elements
Each pass element in the flash memory system configuration file can contain the
following optional elements:
AFE1_AFE2-1:1
Reference information
43
AFE1_AFE2-1:1
Constants to override the flash memory configuration file
Constant Description
SET_BUFSIZE_OVERRIDE Overrides the download buffer size
SET_PAGESIZE_OVERRIDE Overrides the page size
Table 6: Summary of IAR Flash Loader constants (Continued)
For more information about using these constants, see Overriding the flash memory
configuration file, page 15.
LAYOUT_OVERRIDE_BUFFER
Syntax LAYOUT_OVERRIDE_BUFFER
Description This constant can be used to override the flash loader specified in the flash memory
configuration file (.flash) and specify another flash loader to execute.
You can use this constant, for example, when the flash loader detects that the flash
memory does not match the capabilities of the flash loader, which typically occurs when
the wrong flash loader has started. This is normally the result of misconfiguration, which
many flash loaders cannot check.
If the flash loader can detect the flash memory type at runtime, the flash loader can
report the flash memory name to C-SPY and prompt C-SPY to use another flash loader.
You do this by putting a device identifier in the buffer and returning the special return
value RESULT_OVERRIDE_DEVICE.
Note: The replacement flash loader is specified indirectly, as a flash memory identifier.
C-SPY reads this identifier and uses the identifier as the key in a table lookup to locate
another flash loader. The table is constructed like this:
● C-SPY finds all files with the filename extension flashdict in the
$TOOLKIT_DIR$\config\flashloader directory (and all subdirectories).
● Each such file can contribute a portion of the table.
AFE1_AFE2-1:1
Reference information
<path>$TOOLKIT_DIR$\config\flashloader\P8\f_p8_16d.flash
</path>
</loader>
</loaders>
If the key is found anywhere in the table, the newly specified flash memory
configuration file is used instead.
LAYOUT_OVERRIDE_BUFSIZE
Syntax LAYOUT_OVERRIDE_BUFSIZE
Description This constant can be used to override the block layout of the flash memory specified in
the flash memory configuration file (.flash). The block layout is normally specified
using the block and gap tags in the flash memory configuration file, this constant lets
the flash loader determine the block layout by querying the flash memory itself.
If the flash loader wants to specify a layout, the flash loader should put the layout
description in the flash download buffer and add the constant OVERRIDE_LAYOUT to the
return value of FlashInit. You use this constant to add a pointer to the download
buffer.
The syntax is the same as in the flash memory configuration (.flash) file (a decimal
block count followed by a hexadecimal block size), except that blocks are separated by
comma.
To specify a gap, use a block count of 0. For example, "0 0x1000" specifies a gap of
0x1000 bytes.
45
AFE1_AFE2-1:1
Constants to override the flash memory configuration file
SET_BUFSIZE_OVERRIDE
Syntax SET_BUFSIZE_OVERRIDE
Description This constant can be used to override the buffer size specified in the flash memory
configuration file (.flash) and to set the OVERRIDE_BUFSIZE bit in the return value
from the FlashInit function.
The download buffer size is normally determined by the addresses of two labels,
FlashBufferStart and FlashBufferEnd, which get their addresses at link time. To
use the same flash loader for multiple devices which only differ in RAM size, the flash
loader can override the buffer size (if the flash loader can determine the actual amount
of RAM available).
Note: Do not decrease the buffer size.
SET_PAGESIZE_OVERRIDE
Syntax SET_PAGESIZE_OVERRIDE
Description This constant can be used to override the page size specified in the flash memory
configuration file (.flash) and to set the bit OVERRIDE_PAGESIZE in the return value
from the FlashInit function.
AFE1_AFE2-1:1
Reference information
47
AFE1_AFE2-1:1