# Download Functions

Download function write applets, parameters and runtime firmware to device SDRAM or NVRAM.

## WriteExecuteApplet

      				signed WriteExecuteApplet
       				struct plc * plc
    				void const * header

Write an NVM image directly into SDRAM using `VS_WRITE_AND_EXECUTE` messages. This function calls either WriteExecuteApplet1 or WriteExecuteApplet2 based on the NVM header version. The function is declared in plc.h and defined in WriteExecuteApplet.c. The `plc` structure is defined in plc.h.

## WriteExecuteApplet1

      				signed WriteExecuteApplet1
       				struct plc * plc
    				struct nvm_header1 * header

Write an NVM image directly into SDRAM using `VS_WRITE_AND_EXECUTE` messages. This function is similar to WriteExecuteApplet2 but expects a structure `nvm_header1` pointer instead of a structure `nvm_header2` pointer. The function is declared in plc.h and defined in WriteExecuteApplet.c. Structure `plc` is defined in file plc.h. Structure `nvm_header1` is defined in file nvm.h.

## WriteExecuteApplet2

      				signed WriteExecuteApplet2
       				struct plc * plc
    				struct nvm_header2 * header

Write an NVM image directly into SDRAM using `VS_WRITE_AND_EXECUTE` messages. This function is similar to WriteExecuteApplet1 but expects a structure `nvm_header2` pointer instead of a structure `nvm_header1` pointer. The function is declared in plc.h and defined in WriteExecuteApplet.c. Structure `plc` is defined in file plc.h. Structure `nvm_header1` is defined in file nvm.h.