Download oWL Pico API sources and HDG820P/SPB820P firmware
The oWL Pico API package comes with a complete reference design which is ported to various platforms. For information on how to compile and run the oWL Pico API reference design, see the information for the particular host
Platforms.
Make sure that the version number of the oWL Pico API matches the version of the SPB820P firmware. In general, the middle digit must be the same for the oWL Pico API and the SPB820P firmware to obtain compatability. E.g. oWL Pico API 2.
3.8 will be compatiable with SPB820P firmware 2.
3.26 but oWL Pico API 2.
4.8 will
not be compatible with SPB820P firmware 2.
3.26.
See below for information on how to upgrade the firmware on the SPB820P devices. See
Architecture for a description of the files included in the oWL Pico API reference design.
Upgrade SPB820P firmware
Upgrading from 2.2.0 to higher FW versions
Upgrading from 2.2.0 to higher FW version must be done through the "sp820p_2.2.0_to_2.3.0_fw.arx" using xmodem.
1. Connect the
SPB820P using a UART -> USB converter to a PC.
2. Start e.g. Minicom on Linux and powercycle the
SPB820P.
3. When A dot "." appears in the terminal, press ENTER.
4. "C"s should now be seen in the terminal.
5. Choose to send file in minicom and choose the file "sp820p_2.2.0_to_2.3.0_fw.arx".
6. The FW upload should now start, wait until it has finished uploading and wait an extra 10 seconds to make sure the FW has been started.
7. Powercycle the
SPB820P.
8. Done.
Upgrading from 2.3.0 to higher FW versions
Upgrade of the
SPB820P is done from the host after FW has been initialized (API function wlp_init() has been called). The actual firmware that the host needs to send to the
SPB820P is contained in the file /trunk/wlp_api/hdg205/wlp_firmware.c. the API function wlp_program(int (*program_cb)(void *ctx, void *buf, int offset, int len), void *ctx) is used to initiate the FW transfer. The host registers a firmware read callback through the parameter int (*program_cb)(void *ctx, void *buf, int offset, int len) which will be called everytime the API needs to read a chunk from the firmware in wlp_firmware.c until the whole firmware has been sent to the
SPB820P (the struct "const struct firmware firmware" in wlp_firmware.c is extern declared in wlp_hdg205.h and therefore can be reached by the host program_cb callback if wlp_hdg205.h is included).
An example how to implement the program_cb can be seen in the linux reference design for pico_client under /trunk/platform/linux/apps/pico_client/upgrade.c.
Code:
#include <hdg205/wlp_hdg205.h>
int
program_cb(void *ctx, void *buf, int offset, int len)
{
const void *p = &firmware;
if (len > 0) {
memcpy(buf, p + offset, len);
return len;
} else {
return 0;
}
}
and the FW program procedure is initiated by the API call: wlp_program(program_cb, NULL);
Upgrade SPB820 FW using Linux pico client
The Linux pico client reference design implements all the functionality needed for upgrading the SPB820 through a Linux host.
Either the pico client can be built from the "oWL Pico API and oWL-Pico Reference Design" or the executable can be downloaded directly: "oWL-Pico Linux Client".
After following the instructions on
LinuxHost, executing the pico_client.elf file and sending the shell command "init" to the SPB820 its possible to execute the shell commands "get_version" to get the current FW version and "program host" for updating the FW on the SPB820. When the FW has been transfered to the SPB820 from the Linux host,
a "ok 0" will appear in the shell. The SPB820 needs to be powercycled for the new FW to be loaded. Wait 10 sec before attempting any connections with the SPB820 after reboot. Connecting the Linux pico client again and sending shell command "init" and "get_version" should result in the FW version number being updated.
History
List of added features and bug fixes for each release.