CrossStudio for ARM supports FLASH programming (and subsequent debugging) by loading a program into the RAM of the target and transmitting it the data to be programmed.

The use of a target loader is determined by the value of the Loader File Path project property defined for the appropriate configuration of the project. The Loader File Path property specifies the location of the loader executable to use, if this is defined the loader executable will be downloaded onto the target an run prior to download of the main application.

In addition to the Loader File Path property, the Loader File Type project property must be specified. This tells CrossStudio how to communicate with the loader program. The various communication mechanisms available are explained in more detail later. The Load File Type property may be set to one of the following:

- LIBMEM RPC Loader— Calls to LIBMEM library functions will be made directly using a remote prodedure call mechanism.
- Comms Channel Loader — The ARM debug comms channel is used to communicate with the loader.
- Fast Comms Channel Loader — The ARM debug comms channel is used to communicate with the loader. This scheme is significantly faster at downloading than Comms Channel Loader because it makes the assumption that the loader program is always ready to read data and therefore does not check the ARM comms channel status before transmitting data. This may not be suitable for all targets or loaders. If you experience reliability problems downloading and verifying programs using this setting, you should revert to the Comms Channel Loader setting.
- RAM Loader — The target’s RAM is used to communicate with the loader.

To write your own loader programs you should use the LIBMEM loader library.