6 Commits
Author SHA1 Message Date
Ben V. Brown 236690b095 Handle failure finding current program path 2022-11-20 20:43:36 +11:00
Ben V. Brown 8334e583b6 Add note to use recursive clone 2022-11-20 17:22:47 +11:00
Ben V. Brown c419cc0cd9 Markdown styling 2022-11-20 17:22:36 +11:00
Ben V. Brown 20c4fa0163 Handle missing eflash loader in a nicer form
Print error rather than crashing
2022-11-20 17:20:46 +11:00
Ben V. Brown f60cfc02f9 Ignore build folder 2022-11-20 17:20:16 +11:00
Marek Kraus 2d7eb72e80 Increase timeout time, since erase command can take some time 2022-11-17 20:57:31 +01:00
4 changed files with 45 additions and 13 deletions
+1
View File
@@ -75,3 +75,4 @@ fabric.properties
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
build/
+13 -2
View File
@@ -6,14 +6,25 @@ Tool and library for flashing their RISC-V MCUs.
# Supported MCUs
- [X] `bl60x` - BL602 / BL604
- [X] `bl70x` - BL702 / BL704 / BL706
- [x] `bl60x` - BL602 / BL604
- [x] `bl70x` - BL702 / BL704 / BL706
- [ ] `bl606p` - BL606P
- [ ] `bl61x` - BL616 / BL618
- [ ] `bl808` - BL808
# Building
## Clone repository
If you have not cloned this repository locally; check out the git repository locally by running
```bash
git clone --recursive https://github.com/pine64/blisp.git
cd blisp
```
## Build the library and command line utility
For building `blisp` command line tool, use following commands:
```bash
+1 -1
View File
@@ -106,7 +106,7 @@ int32_t blisp_receive_response(struct blisp_device* device, bool expect_payload)
// TODO: Check checksum
int ret;
struct sp_port* serial_port = device->serial_port;
ret = sp_blocking_read(serial_port, &device->rx_buffer[0], 2, 500);
ret = sp_blocking_read(serial_port, &device->rx_buffer[0], 2, 1000);
if (ret < 2) {
#ifdef DEBUG
fprintf(stderr, "Failed to receive response. (ret = %d)\n", ret);
+28 -8
View File
@@ -28,10 +28,14 @@ static void* cmd_write_argtable[6];
ssize_t
get_binary_folder(char* buffer, uint32_t buffer_size) {
#ifdef __linux__
readlink("/proc/self/exe", buffer, buffer_size); // TODO: Error handling
if (readlink("/proc/self/exe", buffer, buffer_size) <= 0) {
return -1;
}
char* pos = strrchr(buffer, '/');
#else
GetModuleFileName(NULL, buffer, buffer_size);
if (GetModuleFileName(NULL, buffer, buffer_size) <= 0) {
return -1;
}
char* pos = strrchr(buffer, '\\');
#endif
pos[0] = '\0';
@@ -251,12 +255,28 @@ void blisp_flash_firmware() {
char exe_path[PATH_MAX];
char eflash_loader_path[PATH_MAX];
get_binary_folder(exe_path, PATH_MAX); // TODO: Error handling
snprintf(eflash_loader_path, PATH_MAX, "%s/data/%s/eflash_loader_%s.bin", exe_path, device.chip->type_str, device.chip->default_eflash_loader_xtal);
eflash_loader_file = fopen(eflash_loader_path, "rb"); // TODO: Error handling
uint8_t eflash_loader_header[176]; // TODO: Remap it to the boot header struct
fread(eflash_loader_header, 176, 1, eflash_loader_file); // TODO: Error handling
if (get_binary_folder(exe_path, PATH_MAX) <= 0) {
fprintf(stderr, "Failed to find executable path to search for the "
"eflash loader\n");
goto exit1;
}
snprintf(eflash_loader_path, PATH_MAX, "%s/data/%s/eflash_loader_%s.bin",
exe_path, device.chip->type_str,
device.chip->default_eflash_loader_xtal);
printf("Loading the eflash loader file from disk\n");
eflash_loader_file
= fopen(eflash_loader_path, "rb"); // TODO: Error handling
if (eflash_loader_file == NULL) {
fprintf(stderr,
"Could not open the eflash loader file from disk.\n"
"Does \"%s\" exist?\n",
eflash_loader_path);
goto exit1;
}
uint8_t
eflash_loader_header[176]; // TODO: Remap it to the boot header struct
fread(eflash_loader_header, 176, 1,
eflash_loader_file); // TODO: Error handling
printf("Loading eflash_loader...\n");
ret = blisp_device_load_boot_header(&device, eflash_loader_header);