Stlink: рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдЦрд╛ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рддреНрд░реБрдЯрд┐, cpuid рд╕рдорд╕реНрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЕрдкреНрд░реИрд▓ 2020  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: stlink-org/stlink

рдореИрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ c7874f805c63c60285f2b190f6589da8ae5e47fa
рдФрд░ рдпрд╣ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рд╛:

/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c: In function 'main':
/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c:34:9: error: 'cpuid.revision' may be used uninitialized in this func
tion [-Werror=maybe-uninitialized]
   34 |         printf("cpuid:part = %#x, rev = %#x\n", cpuid.part, cpuid.revision);
      |         ^
/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c:31:27: note: 'cpuid.revision' was declared here
   31 |         cortex_m3_cpuid_t cpuid;
      |                           ^
/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c:34:9: error: 'cpuid.part' may be used uninitialized in this function [-Werror=maybe-uninitialized]
   34 |         printf("cpuid:part = %#x, rev = %#x\n", cpuid.part, cpuid.revision);
      |         ^
/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c:31:27: note: 'cpuid.part' was declared here
   31 |         cortex_m3_cpuid_t cpuid;
      |                           ^
/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c:33:9: error: 'cpuid.variant' may be used uninitialized in this function [-Werror=maybe-uninitialized]
   33 |         printf("cpuid:impl_id = %0#x, variant = %#x\n", cpuid.implementer_id, cpuid.variant);
      |         ^
/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c:31:27: note: 'cpuid.variant' was declared here
   31 |         cortex_m3_cpuid_t cpuid;
      |                           ^
/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c:33:9: error: 'cpuid.implementer_id' may be used uninitialized in this function [-Werror=maybe-uninitialized]
   33 |         printf("cpuid:impl_id = %0#x, variant = %#x\n", cpuid.implementer_id, cpuid.variant);
      |         ^
/builddir/build/BUILD/stlink-org-stlink-c7874f8/tests/usb.c:31:27: note: 'cpuid.implementer_id' was declared here
   31 |         cortex_m3_cpuid_t cpuid;
      |                           ^
lto1: all warnings being treated as errors

рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

bucompilation bufixed errocompilation olinux staturesolved

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдХреЛрдЬрд╝ рдкрд░, рдХреЛрдб рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред

src/common.c

int stlink_cpu_id(stlink_t *sl, cortex_m3_cpuid_t *cpuid) {
    uint32_t raw;

    if (stlink_read_debug32(sl, STLINK_REG_CM3_CPUID, &raw))
        return -1;

    cpuid->implementer_id = (raw >> 24) & 0x7f;
    cpuid->variant = (raw >> 20) & 0xf;
    cpuid->part = (raw >> 4) & 0xfff;
    cpuid->revision = raw & 0xf;
    return 0;
}

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ cpuid.part рдФрд░ cpuid.revision рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ?

    if (stlink_read_debug32(sl, STLINK_REG_CM3_CPUID, &raw))
        return -1;

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ cpuid.* рдЕрдкреНрд░рд╛рд░рдВрднреАрдХреГрдд рд░рд╣реЗрдВред

рдЙрдмрдВрдЯреВ рдкрд░ рднреА рд╕рдлрд▓ рд╕рдВрдХрд▓рд┐рддред рдПрд░рд░ рд░реАрдб рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ cpuid unininated рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

--- a/рдкрд░реАрдХреНрд╖рдг/usb.c
+++ рдмреА/рдЯреЗрд╕реНрдЯ/рдпреВрдПрд╕рдмреА.рд╕реА
@@ -29,7 +29,11 @@ рдЗрдВрдЯ рдореЗрди (рдЗрдВрдЯ рдПрд╕реА, рдЪрд╛рд░** рдПрд╡реА) {
рдкреНрд░рд┐рдВрдЯрдл ("-- core_id: %#x\n", sl->core_id);

     cortex_m3_cpuid_t cpuid;

- stlink_cpu_id (рдПрд╕рдПрд▓, рдФрд░ рд╕реАрдкреАрдпреВ);
+ рдЕрдЧрд░ (stlink_cpu_id(sl, &cpuid))
+ {
+ рдкреНрд░рд┐рдВрдЯрдл ("рдЕрдЬреНрдЮрд╛рдд рдЪрд┐рдк \ n");
+ memset(&cpuid, 0, sizeof(cortex_m3_cpuid_t))
+ }
рдкреНрд░рд┐рдВрдЯрдл ("рд╕реАрдкреАрдпреВрдЖрдИрдбреА: impl_id = %0#x, рдкреНрд░рдХрд╛рд░ = %#x\n", cpuid.implementer_id, cpuid.variant);
рдкреНрд░рд┐рдВрдЯрдл ("рд╕реАрдкреАрдпреВрдЖрдИрдбреА: рднрд╛рдЧ =% # x, рд░реЗрд╡ =% # x \ n", cpuid.part, cpuid.revision);

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ stlink_cpu_id рдкрд░ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдЪреЗрдХ рдЬреЛрдбрд╝рдХрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рд╢реВрдиреНрдп рдкрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕реЗ рдПрдХ рдореМрдХрд╛ рдФрд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ -Werror=maybe-uninitialized рдХреНрдпреЛрдВрдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреЗ рджреМрд░рд╛рди:

-- Performing Test C_SUPPORTS_WMAYBE_UNINITIALIZED
-- Performing Test C_SUPPORTS_WMAYBE_UNINITIALIZED - Success

@Vascom рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рд╢рд╛рдЦрд╛ https://github.com/chenguokai/stlink/tree/issue937 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдмрдврд╝рд╛рдКрдВрдЧрд╛ред

@Vascom рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рд╢рд╛рдЦрд╛ https://github.com/chenguokai/stlink/tree/issue937 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдмрдврд╝рд╛рдКрдВрдЧрд╛ред

рд╣рд╛рдБ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕