application: improve version description
This commit is contained in:
parent
a689229acb
commit
e228f1f37b
103
application.c
103
application.c
|
@ -193,54 +193,125 @@ static void command_version(void* argument)
|
|||
{
|
||||
(void)argument; // we won't use the argument
|
||||
printf("firmware date: %04u-%02u-%02u\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY); // show firmware build date
|
||||
puts("device family: ");
|
||||
puts("chip family: ");
|
||||
switch (DBGMCU_IDCODE & DBGMCU_IDCODE_DEV_ID_MASK) {
|
||||
case 0: // DBGMCU_IDCODE is only accessible in debug mode (this is a known issue documented in STM32F10xxC/D/E Errata sheet, without workaround)
|
||||
if ((*(uint32_t*)0x1FFFF000 & 0xFFFE0000) == 0x20000000) { // non-connectivity system memory start detected (MSP address pointing to SRAM
|
||||
switch (DESIG_FLASH_SIZE) {
|
||||
case 16:
|
||||
case 32:
|
||||
puts("low-density\n");
|
||||
puts("low-density");
|
||||
break;
|
||||
case 64:
|
||||
case 128:
|
||||
puts("medium-density\n");
|
||||
puts("medium-density");
|
||||
break;
|
||||
case 256:
|
||||
case 512:
|
||||
puts("high-density\n");
|
||||
puts("high-density");
|
||||
break;
|
||||
case 768:
|
||||
case 1024:
|
||||
puts("XL-density\n");
|
||||
puts("XL-density");
|
||||
break;
|
||||
default:
|
||||
printf("unknown\n");
|
||||
printf("unknown");
|
||||
break;
|
||||
}
|
||||
} else { // connectivity system memory start is at 0x1FFFB000
|
||||
puts("connectivity\n");
|
||||
puts("connectivity");
|
||||
}
|
||||
break;
|
||||
case 0x412:
|
||||
puts("low-density\n");
|
||||
puts("low-density");
|
||||
break;
|
||||
case 0x410:
|
||||
puts("medium-density\n");
|
||||
puts("medium-density");
|
||||
break;
|
||||
case 0x414:
|
||||
puts("high-density\n");
|
||||
puts("high-density");
|
||||
break;
|
||||
case 0x430:
|
||||
puts("XL-density\n");
|
||||
puts("XL-density");
|
||||
break;
|
||||
case 0x418:
|
||||
puts("connectivity\n");
|
||||
puts("connectivity");
|
||||
break;
|
||||
case 0x444:
|
||||
puts("STM32F03x");
|
||||
break;
|
||||
case 0x445:
|
||||
puts("STM32F04x");
|
||||
break;
|
||||
case 0x440:
|
||||
puts("STM32F05x");
|
||||
break;
|
||||
case 0x448:
|
||||
puts("STM32F07x");
|
||||
break;
|
||||
case 0x442:
|
||||
puts("STM32F09x");
|
||||
break;
|
||||
default:
|
||||
printf("unknown (0x%04x)\n", DBGMCU_IDCODE & DBGMCU_IDCODE_DEV_ID_MASK);
|
||||
puts("unknown");
|
||||
break;
|
||||
}
|
||||
printf(" (DEV_ID=0x%04x)\n", DBGMCU_IDCODE & DBGMCU_IDCODE_DEV_ID_MASK);
|
||||
puts("chip revision: ");
|
||||
const uint16_t rev_id = DBGMCU_IDCODE >> 16;
|
||||
switch (DBGMCU_IDCODE & DBGMCU_IDCODE_DEV_ID_MASK) {
|
||||
case 0x412:
|
||||
if (0x1000 == rev_id) {
|
||||
putc('A');
|
||||
} else {
|
||||
puts("unknown");
|
||||
}
|
||||
break;
|
||||
case 0x410:
|
||||
if (0x0000 == rev_id) {
|
||||
putc('A');
|
||||
} else if (0x2000 == rev_id) {
|
||||
putc('B');
|
||||
} else if (0x2001 == rev_id) {
|
||||
putc('Z');
|
||||
} else if (0x2003 == rev_id) {
|
||||
puts("1/2/3/X/Y");
|
||||
} else {
|
||||
puts("unknown");
|
||||
}
|
||||
break;
|
||||
case 0x414:
|
||||
if (0x1000 == rev_id) {
|
||||
puts("A/1");
|
||||
} else if (0x1001 == rev_id) {
|
||||
putc('Z');
|
||||
} else if (0x1003 == rev_id) {
|
||||
puts("1/2/3/X/Y");
|
||||
} else {
|
||||
puts("unknown");
|
||||
}
|
||||
break;
|
||||
case 0x430:
|
||||
if (0x1003 == rev_id) {
|
||||
puts("A/1");
|
||||
} else {
|
||||
puts("unknown");
|
||||
}
|
||||
break;
|
||||
case 0x418:
|
||||
if (0x1000 == rev_id) {
|
||||
putc('A');
|
||||
} else if (0x1001 == rev_id) {
|
||||
putc('Z');
|
||||
} else {
|
||||
puts("unknown");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
printf("unknown");
|
||||
break;
|
||||
}
|
||||
printf(" (REV_ID=0x%04x)\n", rev_id);
|
||||
// show flash size
|
||||
puts("flash size: ");
|
||||
if (0xffff == DESIG_FLASH_SIZE) {
|
||||
|
@ -249,7 +320,11 @@ static void command_version(void* argument)
|
|||
printf("%u KB\n", DESIG_FLASH_SIZE);
|
||||
}
|
||||
// display device identity
|
||||
printf("device id: %08x%08x%08x\n", DESIG_UNIQUE_ID0, DESIG_UNIQUE_ID1, DESIG_UNIQUE_ID2);
|
||||
printf("device id: %08x%08x%04x%04x\n", DESIG_UNIQUE_ID2, DESIG_UNIQUE_ID1, DESIG_UNIQUE_ID0 & 0xffff, DESIG_UNIQUE_ID0 >> 16);
|
||||
// from RM0091 STM32F0x8 reference manual
|
||||
printf("- X,Y wafer coordinate: %08x\n", DESIG_UNIQUE_ID0);
|
||||
printf("- lot number: %c%c%c%c%c%c%c\n", DESIG_UNIQUE_ID2 >> 24, DESIG_UNIQUE_ID2 >> 16, DESIG_UNIQUE_ID2 >> 8, DESIG_UNIQUE_ID2 >> 0, DESIG_UNIQUE_ID1 >> 24, DESIG_UNIQUE_ID1 >> 16, DESIG_UNIQUE_ID1 >> 8);
|
||||
printf("- wafer number: %u\n", DESIG_UNIQUE_ID1 & 0xff);
|
||||
}
|
||||
|
||||
static void command_uptime(void* argument)
|
||||
|
|
Loading…
Reference in New Issue