Autor Thema: culfw@ARM  (Gelesen 218983 mal)

Online Telekatz

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 834
Antw:culfw@ARM
« Antwort #1065 am: 09 Juli 2019, 18:41:34 »
Die Datei ist zwar etwas größer als bei mir aber immernoch klein genug.
Ich denke, es könnte daran liegen, dass du eine andere GCC Version benutzt. Für die ARM Versionen sollte die GCC Version 5.4.1 verwendet werden.

Offline mahowi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1013
Antw:culfw@ARM
« Antwort #1066 am: 09 Juli 2019, 18:48:58 »
Ich habe einfach das entsprechende Paket installiert. Die GCC Version ist 7.3.1:
dietpi@fhem:~$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (15:7-2018-q2-6) 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]

Woran könnte es denn liegen, daß die bootloader_CUBE.bin zwar erstellt wird, es beim make direkt im CUBe-Verzeichnis beim Linken von CUBE_BL.bin zum Fehler kommt?
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Online Telekatz

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 834
Antw:culfw@ARM
« Antwort #1067 am: 09 Juli 2019, 19:59:11 »
Es liegt an der GCC Version, ich habe es ausprobiert. Mit Version 6.2.1 läuft es durch und mit Version 7.3.1 habe ich auch einen Fehler.
Die bootloader_CUBE.bin wird deshalb ohne Fehler erstellt, weil dort der Teil des Codes, der den Fehler verursacht, nicht enthalten ist.

Du kannst entweder eine ältere GCC Version verwenden oder folgende Änderung im Linkerscript versuchen:
SECTIONS

    .ARM.exidx : {
      . = ALIGN(4);
        __exidx_start = .;
        *(.ARM.exidx*)
        __exidx_end = .;
    } > flash
   
    .fixed :
    {
        . = ALIGN(4);
        _sfixed = .;
        *(.text*)
        *(.rodata*)
        *(.data.__malloc_av_)
        *(.data.__malloc_trim_threshold)
        *(.data.__malloc_sbrk_base)
        *(.data.__ctype_ptr__)
        *(.data.__global_locale)
        . = ALIGN(4);
        _efixed = .;
    } >flash
der Linker läuft damit durch. Ich habe aber nicht ausprobiert, ob der Code damit auch lauffähig ist.

Offline mahowi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1013
Antw:culfw@ARM
« Antwort #1068 am: 09 Juli 2019, 22:08:21 »
Danke! Jetzt lässt sich die Firmware kompilieren. Das Aufspielen des neuen Bootloader mit bossa hat auch geklappt.

Wenn ich das richtig verstehe, wird die neue Firmware nicht mehr mit einem Terminal Emulator wie minicom übertragen, sondern soll auf das neu angelegte Laufwerk kopiert werden.

Bei aktiviertem Bootloader wird jetzt ein Laufwerk erkannt:
[Di Jul  9 21:45:07 2019] usb 1-1.5: new full-speed USB device number 60 using dwc_otg
[Di Jul  9 21:45:07 2019] usb 1-1.5: New USB device found, idVendor=03eb, idProduct=6129, bcdDevice= 1.00
[Di Jul  9 21:45:07 2019] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Di Jul  9 21:45:07 2019] usb 1-1.5: Product: ATMEL AT91 MSD
[Di Jul  9 21:45:07 2019] usb 1-1.5: Manufacturer: ATMEL
[Di Jul  9 21:45:07 2019] usb 1-1.5: SerialNumber: 0123456789AB
[Di Jul  9 21:45:07 2019] usb-storage 1-1.5:1.0: USB Mass Storage device detected
[Di Jul  9 21:45:07 2019] scsi host0: usb-storage 1-1.5:1.0
[Di Jul  9 21:45:08 2019] scsi 0:0:0:0: Direct-Access     ATMEL    Mass Storage MSD 0.01 PQ: 0 ANSI: 6
[Di Jul  9 21:45:08 2019] sd 0:0:0:0: Attached scsi generic sg0 type 0
[Di Jul  9 21:45:08 2019] sd 0:0:0:0: [sda] 8000 512-byte logical blocks: (4.10 MB/3.91 MiB)
[Di Jul  9 21:45:08 2019] sd 0:0:0:0: [sda] Write Protect is off
[Di Jul  9 21:45:08 2019] sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00
[Di Jul  9 21:45:08 2019] sd 0:0:0:0: [sda] No Caching mode page found
[Di Jul  9 21:45:08 2019] sd 0:0:0:0: [sda] Assuming drive cache: write through
[Di Jul  9 21:45:08 2019]  sda:
[Di Jul  9 21:45:08 2019] sd 0:0:0:0: [sda] Attached SCSI removable disk

Jetzt habe ich /dev/sda gemountet und CUBE_BL.bin darauf kopiert. Nach einem umount bekomme ich mit dmesg einen Fehler angezeigt:
[Di Jul  9 21:57:42 2019] FAT-fs (sda): FAT read failed (blocknr 1)
[Di Jul  9 21:57:42 2019] FAT-fs (sda): unable to read boot sector to mark fs as dirty

Nach erneutem Anschliessen wird der CUBe nicht mehr erkannt:
[Di Jul  9 22:03:19 2019] usb 1-1.5: new full-speed USB device number 87 using dwc_otg
[Di Jul  9 22:03:19 2019] usb 1-1.5: device descriptor read/64, error -32
[Di Jul  9 22:03:19 2019] usb 1-1.5: device descriptor read/64, error -32
[Di Jul  9 22:03:19 2019] usb 1-1-port5: attempt power cycle
[Di Jul  9 22:03:20 2019] usb 1-1.5: new full-speed USB device number 88 using dwc_otg
[Di Jul  9 22:03:21 2019] usb 1-1.5: device not accepting address 88, error -32
[Di Jul  9 22:03:21 2019] usb 1-1.5: new full-speed USB device number 89 using dwc_otg
[Di Jul  9 22:03:21 2019] usb 1-1.5: device not accepting address 89, error -32
[Di Jul  9 22:03:21 2019] usb 1-1-port5: unable to enumerate USB device

Ist meine Vorgehensweise beim Installieren der Firmware falsch oder doch die kompilierte Firmware defekt?
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Online Telekatz

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 834
Antw:culfw@ARM
« Antwort #1069 am: 09 Juli 2019, 22:46:31 »
Teste es einfach mit der fertig compilierten Firmwaredatei aus dem a-culfw Archiv.

Offline mahowi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1013
Antw:culfw@ARM
« Antwort #1070 am: 09 Juli 2019, 23:18:47 »
Ok, so wie es aussieht muß ich wohl erst eine ältere Version der Toolchain installieren. Mal sehen, wo ich was für den Pi finde.

Die von Dir kompilierte Version lässt sich installieren. Da ich aber 2 Cubes angeschlossen habe, muß ich die Firmware selbst kompilieren mit unterschiedlichen IDs. Der selbst kompilierte Bootloader funktioniert auf jeden Fall auch mit neuerer GCC Version.

Vielen Dank für die Hilfe!
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Offline mahowi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1013
Antw:culfw@ARM
« Antwort #1071 am: 11 Juli 2019, 21:09:55 »
Zur Info: Mit der Version 6.3.1 von arm-none-eabi-gcc kommt es auch zum Linker-Fehler:
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: section .ARM.exidx LMA [0011cf54,0011cf5b] overlaps section .relocate LMA [0011cf54,0011d4c3]
collect2: error: ld returned 1 exit status

Leider finde ich keine Version 6.2.1 für den Pi. Für die 6.3.1 musste ich mir schon extra aus den Debian-Sourcen ein Paket bauen. Für Buster gibt es nur die 7.3.1.

Wäre es vielleicht möglich,  mir die Firmware einmal mit USB_DESCRIPTOR_SN "0" zu kompilieren, damit ich beide Cubes betreiben kann?
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Offline mahowi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1013
Antw:culfw@ARM
« Antwort #1072 am: 15 Juli 2019, 10:26:55 »
Ich weiß zwar immer noch nicht, warum das Kompilieren auf dem Pi nicht mehr funktioniert,  aber auf meinem Laptop unter Ubuntu Bionic lässt sich eine  funktionierende Firmware auch mit v6.3.1 erstellen.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

 

decade-submarginal