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 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ macOS ΠΊΠΎΠ΄ компилируСтся Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π’ 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. * ΠžΡΡ‚Π°Π½Π΅Ρ‚ΡΡ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ.

На Ubuntu Ρ‚ΠΎΠΆΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ скомпилирован. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ cpuid ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² случаС ошибки чтСния рСгистра.

--- Π° / тСсты / usb.c
+++ Π± / тСсты / usb.c
@@ -29,7 +29,11 @@ int main (int ac, char ** av) {
printf ("- core_id:% # x \ n", sl-> core_id);

     cortex_m3_cpuid_t cpuid;

- stlink_cpu_id (sl, & cpuid);
+ Ссли (stlink_cpu_id (sl, & cpuid))
+ {
+ printf ("нСизвСстный Ρ‡ΠΈΠΏ \ n");
+ memset (& cpuid, 0, sizeof (cortex_m3_cpuid_t))
+}
printf ("cpuid: impl_id =% 0 # x, variant =% # x \ n", cpuid.implementer_id, cpuid.variant);
printf ("cpuid: part =% # x, rev =% # 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 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ