Device firmware update¶
-
void
set_dfu_alt_info
(char *interface, char *devstr)¶ set dfu_alt_info environment variable
Parameters
char *interface
dfu interface, e.g. “mmc” or “nand”
char *devstr
device number as string
Description
If CONFIG_SET_DFU_ALT_INFO=y, this board specific function is called to set environment variable dfu_alt_info.
-
int
dfu_alt_init
(int num, struct dfu_entity **dfu)¶ initialize buffer for dfu entities
Parameters
int num
number of entities
struct dfu_entity **dfu
on return allocated buffer
Return
0 on success
-
int
dfu_alt_add
(struct dfu_entity *dfu, char *interface, char *devstr, char *s)¶ add alternate to dfu entity buffer
Parameters
struct dfu_entity *dfu
dfu entity
char *interface
dfu interface, e.g. “mmc” or “nand”
char *devstr
device number as string
char *s
string description of alternate
Return
0 on success
-
int
dfu_config_entities
(char *s, char *interface, char *devstr)¶ initialize dfu entitities from envirionment
Parameters
char *s
string with alternates
char *interface
interface, e.g. “mmc” or “nand”
char *devstr
device number as string
Description
Initialize the list of dfu entities from environment variable dfu_alt_info. The list must be freed by calling dfu_free_entities(). This function bypasses set_dfu_alt_info(). So typically you should use dfu_init_env_entities() instead.
See function dfu_free_entities()
See function dfu_init_env_entities()
Return
0 on success, a negative error code otherwise
-
void
dfu_free_entities
(void)¶ free the list of dfu entities
Parameters
void
no arguments
Description
Free the internal list of dfu entities.
See function dfu_init_env_entities()
-
void
dfu_show_entities
(void)¶ print DFU alt settings list
Parameters
void
no arguments
-
int
dfu_get_alt_number
(void)¶ get number of alternates
Parameters
void
no arguments
Return
number of alternates in the dfu entities list
-
const char *
dfu_get_dev_type
(enum dfu_device_type type)¶ get string representation for dfu device type
Parameters
enum dfu_device_type type
device type
Return
string representation for device type
-
const char *
dfu_get_layout
(enum dfu_layout layout)¶ get string describing layout
Parameters
enum dfu_layout layout
layout Result: string representation for the layout
Description
Internally layouts are represented by enum dfu_device_type values. This function translates an enum value to a human readable string, e.g. DFU_FS_FAT is translated to “FAT”.
-
struct dfu_entity *
dfu_get_entity
(int alt)¶ get dfu entity for an alternate id
Parameters
int alt
alternate id
Return
dfu entity
-
int
dfu_get_alt
(char *name)¶ get alternate id for filename
Parameters
char *name
filename
Description
Environment variable dfu_alt_info defines the write destinations (alternates) for different filenames. This function get the index of the alternate for a filename. If an absolute filename is provided (starting with ‘/’), the directory path is ignored.
Return
id of the alternate or negative error number (-ENODEV)
-
int
dfu_init_env_entities
(char *interface, char *devstr)¶ initialize dfu entitities from envirionment
Parameters
char *interface
interface, e.g. “mmc” or “nand”
char *devstr
device number as string
Description
Initialize the list of dfu entities from environment variable dfu_alt_info. The list must be freed by calling dfu_free_entities(). interface and devstr are used to select the relevant set of alternates from environment variable dfu_alt_info.
If environment variable dfu_alt_info specifies the interface and the device, use NULL for interface and devstr.
See function dfu_free_entities()
Return
0 on success, a negative error code otherwise
-
int
dfu_read
(struct dfu_entity *de, void *buf, int size, int blk_seq_num)¶ read from dfu entity
Parameters
struct dfu_entity *de
dfu entity
void *buf
buffer
int size
size of buffer
int blk_seq_num
block sequence number
Description
The block sequence number blk_seq_num is a 16 bit counter that must be incremented with each call for the same dfu entity de.
Return
0 for success, -1 for error
-
int
dfu_write
(struct dfu_entity *de, void *buf, int size, int blk_seq_num)¶ write to dfu entity
Parameters
struct dfu_entity *de
dfu entity
void *buf
buffer
int size
size of buffer
int blk_seq_num
block sequence number
Description
Write the contents of a buffer buf to the dfu entity de. After writing the last block call dfu_flush(). If a file is already loaded completely into memory it is preferable to use dfu_write_from_mem_addr() which takes care of blockwise transfer and flushing.
The block sequence number blk_seq_num is a 16 bit counter that must be incremented with each call for the same dfu entity de.
See function dfu_flush()
See function dfu_write_from_mem_addr()
Return
0 for success, -1 for error
-
int
dfu_flush
(struct dfu_entity *de, void *buf, int size, int blk_seq_num)¶ flush to dfu entity
Parameters
struct dfu_entity *de
dfu entity
void *buf
ignored
int size
ignored
int blk_seq_num
block sequence number of last write - ignored
Description
This function has to be called after writing the last block to the dfu entity de.
The block sequence number blk_seq_num is a 16 bit counter that must be incremented with each call for the same dfu entity de.
See function dfu_write()
Return
0 for success, -1 for error
-
void
dfu_initiated_callback
(struct dfu_entity *dfu)¶ weak callback called on DFU transaction start
Parameters
struct dfu_entity *dfu
pointer to the dfu_entity, which should be initialized
Description
It is a callback function called by DFU stack when a DFU transaction is initiated. This function allows to manage some board specific behavior on DFU targets.
-
void
dfu_flush_callback
(struct dfu_entity *dfu)¶ weak callback called at the end of the DFU write
Parameters
struct dfu_entity *dfu
pointer to the dfu_entity, which should be flushed
Description
It is a callback function called by DFU stack after DFU manifestation. This function allows to manage some board specific behavior on DFU targets
-
void
dfu_error_callback
(struct dfu_entity *dfu, const char *msg)¶ weak callback called at the DFU write error
Parameters
struct dfu_entity *dfu
pointer to the dfu_entity which cause the error
const char *msg
the message of the error
Description
It is a callback function called by DFU stack after DFU write error. This function allows to manage some board specific behavior on DFU targets
-
struct dfu_entity *
dfu_get_defer_flush
(void)¶ get current value of dfu_defer_flush pointer
Parameters
void
no arguments
Return
value of the dfu_defer_flush pointer
-
void
dfu_set_defer_flush
(struct dfu_entity *dfu)¶ set the dfu_defer_flush pointer
Parameters
struct dfu_entity *dfu
pointer to the dfu_entity, which should be written
-
int
dfu_write_from_mem_addr
(struct dfu_entity *dfu, void *buf, int size)¶ write data from memory to DFU managed medium
Parameters
struct dfu_entity *dfu
dfu entity to which we want to store data
void *buf
fixed memory address from where data starts
int size
number of bytes to write
Description
This function adds support for writing data starting from fixed memory address (like $loadaddr) to dfu managed medium (e.g. NAND, MMC, file system)
Return
0 on success, other value on failure
-
int
dfu_write_by_name
(char *dfu_entity_name, void *addr, unsigned int len, char *interface, char *devstring)¶ write data to DFU medium
Parameters
char *dfu_entity_name
Name of DFU entity to write
void *addr
Address of data buffer to write
unsigned int len
Number of bytes
char *interface
Destination DFU medium (e.g. “mmc”)
char *devstring
Instance number of destination DFU medium (e.g. “1”)
Description
This function is storing data received on DFU supported medium which is specified by dfu_entity_name.
Return
0 - on success, error code - otherwise
-
int
dfu_write_by_alt
(int dfu_alt_num, void *addr, unsigned int len, char *interface, char *devstring)¶ write data to DFU medium
Parameters
int dfu_alt_num
DFU alt setting number
void *addr
Address of data buffer to write
unsigned int len
Number of bytes
char *interface
Destination DFU medium (e.g. “mmc”)
char *devstring
Instance number of destination DFU medium (e.g. “1”)
Description
This function is storing data received on DFU supported medium which is specified by dfu_alt_name.
Return
0 - on success, error code - otherwise