Skip to content

Commit 1c65fa9

Browse files
authored
Add support for CYW43_FIRMWARE_FAMILY_ID (#247)
* Add support for CYW43_FIRMWARE_FAMILY_ID * Rename bootrom family ID min & max
1 parent d5ee24b commit 1c65fa9

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

main.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ static const string rp2040_family_name = "rp2040";
113113
static const string rp2350_arm_s_family_name = "rp2350-arm-s";
114114
static const string rp2350_arm_ns_family_name = "rp2350-arm-ns";
115115
static const string rp2350_riscv_family_name = "rp2350-riscv";
116+
static const string cyw43_firmware_family_name = "cyw43-firmware";
116117

117118
#if !HAS_LIBUSB
118119
static const string built_without_libusb_message = "\nThis version of picotool was compiled without USB support. Some commands are not available.\n";
@@ -371,6 +372,8 @@ struct family_id : public cli::value_base<family_id> {
371372
t = RP2350_ARM_NS_FAMILY_ID;
372373
} else if (value == rp2350_riscv_family_name) {
373374
t = RP2350_RISCV_FAMILY_ID;
375+
} else if (value == cyw43_firmware_family_name) {
376+
t = CYW43_FIRMWARE_FAMILY_ID;
374377
} else {
375378
if (value.find("0x") == 0) {
376379
value = value.substr(2);
@@ -406,6 +409,7 @@ string family_name(unsigned int family_id) {
406409
if (family_id == RP2350_ARM_S_FAMILY_ID) return "'" + rp2350_arm_s_family_name + "'";
407410
if (family_id == RP2350_ARM_NS_FAMILY_ID) return "'" + rp2350_arm_ns_family_name + "'";
408411
if (family_id == RP2350_RISCV_FAMILY_ID) return "'" + rp2350_riscv_family_name + "'";
412+
if (family_id == CYW43_FIRMWARE_FAMILY_ID) return "'" + cyw43_firmware_family_name + "'";
409413
if (!family_id) return "none";
410414
return hex_string(family_id);
411415
}
@@ -3166,12 +3170,12 @@ string str_permissions(unsigned int p) {
31663170
}
31673171

31683172
void insert_default_families(uint32_t flags_and_permissions, vector<std::string> &family_ids) {
3169-
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_ABSOLUTE_BITS) family_ids.emplace_back(absolute_family_name);
3170-
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2040_BITS) family_ids.emplace_back(rp2040_family_name);
3171-
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_ARM_S_BITS) family_ids.emplace_back(rp2350_arm_s_family_name);
3172-
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_ARM_NS_BITS) family_ids.emplace_back(rp2350_arm_ns_family_name);
3173-
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_RISCV_BITS) family_ids.emplace_back(rp2350_riscv_family_name);
3174-
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_DATA_BITS) family_ids.emplace_back(data_family_name);
3173+
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_ABSOLUTE_BITS) family_ids.emplace_back(family_name(ABSOLUTE_FAMILY_ID));
3174+
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2040_BITS) family_ids.emplace_back(family_name(RP2040_FAMILY_ID));
3175+
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_ARM_S_BITS) family_ids.emplace_back(family_name(RP2350_ARM_S_FAMILY_ID));
3176+
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_ARM_NS_BITS) family_ids.emplace_back(family_name(RP2350_ARM_NS_FAMILY_ID));
3177+
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_RP2350_RISCV_BITS) family_ids.emplace_back(family_name(RP2350_RISCV_FAMILY_ID));
3178+
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_DEFAULT_FAMILY_DATA_BITS) family_ids.emplace_back(family_name(DATA_FAMILY_ID));
31753179
}
31763180

31773181
#if HAS_LIBUSB
@@ -3314,7 +3318,7 @@ void info_guts(memory_access &raw_access, void *con) {
33143318
family_ids.clear();
33153319
insert_default_families(flags, family_ids);
33163320
for (auto family : partition.extra_families) {
3317-
family_ids.emplace_back(hex_string(family));
3321+
family_ids.emplace_back(family_name(family));
33183322
}
33193323
if (flags & PICOBIN_PARTITION_FLAGS_HAS_NAME_BITS) {
33203324
pstring << ", \"";
@@ -6238,7 +6242,7 @@ bool partition_info_command::execute(device_map &devices) {
62386242
assert((flags_and_permissions & PICOBIN_PARTITION_FLAGS_HAS_NAME_BITS) ||
62396243
got == num_extra_families + 1);
62406244
for (unsigned int j = 1; j < num_extra_families + 1; j++) {
6241-
family_ids.emplace_back(hex_string(family_id_name_buf_32[j + 1]));
6245+
family_ids.emplace_back(family_name(family_id_name_buf_32[j + 1]));
62426246
}
62436247
if (flags_and_permissions & PICOBIN_PARTITION_FLAGS_HAS_NAME_BITS) {
62446248
uint8_t *bytes = &family_id_name_buf[(num_extra_families + 2) * 4];
@@ -6384,7 +6388,7 @@ bool partition_create_command::execute(device_map &devices) {
63846388
fail(ERROR_FORMAT, "Could not parse family ID from %s: %s", family.c_str(), ret.c_str());
63856389
}
63866390
DEBUG_LOG("Got ID %08x\n", id);
6387-
if (id < RP2040_FAMILY_ID || id > FAMILY_ID_MAX) {
6391+
if (id < BOOTROM_FAMILY_ID_MIN || id > BOOTROM_FAMILY_ID_MAX) {
63886392
DEBUG_LOG("Adding extra family\n");
63896393
new_p.extra_families.push_back(id);
63906394
}

0 commit comments

Comments
 (0)