ct-Bot Firmware

Die Programmierung des c't-Bot
Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

ct-Bot Firmware

Beitrag von Nightwalker-87 » 14 Feb 2019, 02:41

Ich habe mir erlaubt ab dem Stand von Release 26 [Master] mal ein neues git-Projekt aufzumachen (https://github.com/Nightwalker-87/ct-bot-sw) das ich so nun selbst verwalten kann und was mir damit mehr Freiheiten ermöglicht. Hintergrund ist vor allem, dass sich die Verzeichnisstruktur geändert hat und sich wohl hier und da auch noch weiter ändern wird. Dementsprechend macht es weniger Sinn dies als direkten Fork von https://github.com/tsandmann/ct-bot weiterzuführen.

Abgesehen von einer Änderung der Verzeichnisstruktur und ein paar kleineren Bereinigungen gibt es aktuell allerdings noch keine größeren Änderungen. Zur Zeit bin ich grade dabei die automatische Makefile-Generierung mit cmake auf Basis der neuen Verzeichnisstruktur einzurichten um das händisch-erstellte Makefile abzulösen.

Falls sich da jemand für interessiert, lade ich dazu ein den Code auch mal in Fremd-IDEs zu testen.
Solange der Travis Testbuild noch nicht wieder aktiv ist (wartet auf cmake-Setup), wäre Feedback sehr informativ.

Wenn das dann wieder läuft sollen auch die Änderungen aus dem develop Zweig seit R26 wieder mit einfließen.

Auch Input aus https://github.com/tsandmann/ctbot-atmega könnte zukünftig nach und nach einfließen.

Alles in allem soll das ein Kompromiss zwischen absoluter Rückwärts-Kompatibilität (Commits) und aktuelleren Bedürfnissen sein.
nw-87

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Firmware

Beitrag von Nightwalker-87 » 15 Feb 2019, 17:30

Travis baut inzwischen mit dem bisherigen Makefile unter Anpassung der Konfiguration wieder erfolgreich. 8) Ich habe diesen Weg gegenüber einer vollständigen automatischen Generierung bevorzugt, um Travis zeitnah wieder einbinden zu können. Die Einladung zum Testen besteht natürlich trotzdem noch.

Als Nächstes folgt vor der weiteren cmake-Einbindung (welche umfangreicher sein dürfte) nun erst mal das Einpflegen der Änderungen aus dem develop-Zweig ab R26. Weitere ToDos/Issues können dann im Git-Projekt selbst eröffnet oder kommentiert werden. :wink:
nw-87

tobi

Re: ct-Bot Firmware

Beitrag von tobi » 26 Feb 2019, 23:17

Hi,

ich hab das neue Projekt mal ausprobiert in der Hoffnung dass es vielleicht etwas übersichtlicher ist. Hat leider nicht so richtig funktioniert. Habe versucht es mit Eclipse zu bauen ohne irgendwas zu ändern. Da kommt dann aber irgendeine andere Konfiguration raus als die eingestellte. Also z.b. ist das LOG zum Simulator dann an obwohl es im Code ausgeschaltet ist und in der MAP-anzeige bekomme ich so einen grünen Kreis um den Bot... :?
Es gibt beim bauen in Eclipse aber auch über 300 warnings :shock: Mit dem Makefile konnte ich es gar nicht bauen.

Vielleicht habe ich auch was falsch gemacht, fand es schwierig mich in der neuen Struktur zurechtzufinden. Aber ich denk mal die standard-konfiguration sollte ja einfach so funktionieren oder?

Tobi

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Firmware

Beitrag von Nightwalker-87 » 27 Feb 2019, 00:07

Hi tobi.

Danke zunächt mal, dass du dir die Zeit genommen hast das mal zu testen. :)

Das mit den warnings ist erstmal unkritisch, das dürfte vor allem daran liegen, dass diese vorher in den Projekteinstellungen einfach unterdrückt waren und die für Debug-Zwecke aktuell alle eingeschaltet sind. Das kann man aber auch in den Project Settings unter C/C++ Build > Settings > Tool Settings in den Untergruppen "Warnings" für C und C++ ändern (für jedes Build-Target separat). Hier können die Optionen "-pedantic" und "-Wextra" auf Wunsch auch abgewählt werden.

Interne Builds in Eclipse sind bei mir für alle Targets erfolgreich.
Der Build mit dem alten Makefile mit make funktioniert bei mir lokal und auch im externen Travis CI-Build System, was die verschiendenen Platformen durchtestet. Daher war ich per se da erstmal guter Dinge. :?

Welches OS nutzt du denn? Kannst du mir hierzu noch ein paar nähere Infos geben und auch wie du genau vorgegangen bist, damit ich mir das ggf. mal genauer ansehen kann?

Ich würde mich da zunächst mal mit dem Build selbst beschäftigen, bevor man sich die anderen Artefakte genauer anschaut. Möglicherweise ist da tatsächlich was bei dir schiefgelaufen. Gedacht ist es natürlich so, dass es Out-of-Box funktioniert - keine Frage.

Ich arbeite gerade mit der aktuellen Version des develop-Branches; ich gehe mal davon aus dass du diese ebenfalls verwendet hast.

nw-87
nw-87

tobi

Re: ct-Bot Firmware

Beitrag von tobi » 28 Feb 2019, 20:00

Hi,

ich habs unter windows 10 ausprobiert und auch mit dem develop branch.
klar also viel hab ich da gar nicht gemacht, den code geholt und in eclipse mit project -> clean neu kompiliert. geändert hab ich gar nix. wenn ich dann mit dem simulator verbinde habe ich schon direkt den fehler dass die logausgabe zum simulator geshcickt wird. und was mir grad auch noch aufgefallen ist: der ct-bot prozess zieht immer 100% cpu last auch wenn der simulator pausiert ist.

wenn ich das makefile benutze bekomme ich diese fehler

Code: Alles auswählen

libctbot.a(tcp.o): In function `tcp_openConnection':
ct-bot-sw/src/pc/tcp.c:98: undefined reference to `__imp_gethostbyname'
ct-bot-sw/src/pc/tcp.c:107: undefined reference to `__imp_socket'
ct-bot-sw/src/pc/tcp.c:113: undefined reference to `__imp_setsockopt'
ct-bot-sw/src/pc/tcp.c:123: undefined reference to `__imp_htons'
ct-bot-sw/src/pc/tcp.c:129: undefined reference to `__imp_connect'
ct-bot-sw/src/pc/tcp.c:130: undefined reference to `__imp_inet_ntoa'
libctbot.a(tcp.o): In function `tcp_closeConnection':
ct-bot-sw/src/pc/tcp.c:144: undefined reference to `__imp_WSACleanup'
libctbot.a(tcp.o): In function `tcp_read':
ct-bot-sw/src/pc/tcp.c:214: undefined reference to `__imp_recv'
libctbot.a(tcp.o): In function `tcp_init_client':
ct-bot-sw/src/pc/tcp.c:317: undefined reference to `__imp_WSAStartup'
libctbot.a(tcp.o): In function `flushSendBuffer':
ct-bot-sw/src/pc/tcp.c:348: undefined reference to `__imp_send'
libctbot.a(tcp-server.o): In function `tcp_server_init':
ct-bot-sw/src/pc/tcp-server.c:84: undefined reference to `__imp_WSAStartup'
ct-bot-sw/src/pc/tcp-server.c:96: undefined reference to `__imp_socket'
ct-bot-sw/src/pc/tcp-server.c:102: undefined reference to `__imp_setsockopt'
ct-bot-sw/src/pc/tcp-server.c:106: undefined reference to `__imp_htonl'
ct-bot-sw/src/pc/tcp-server.c:107: undefined reference to `__imp_htons'
ct-bot-sw/src/pc/tcp-server.c:110: undefined reference to `__imp_bind'
ct-bot-sw/src/pc/tcp-server.c:116: undefined reference to `__imp_listen'
libctbot.a(tcp-server.o): In function `tcp_server_run':
ct-bot-sw/src/pc/tcp-server.c:139: undefined reference to `__imp_accept'
ct-bot-sw/src/pc/tcp-server.c:143: undefined reference to `__imp_inet_ntoa'
ct-bot-sw/src/pc/tcp-server.c:212: undefined reference to `__imp_WSACleanup'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:588: ct-Bot] Fehler 1
Tobi

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Firmware

Beitrag von Nightwalker-87 » 02 Mär 2019, 16:37

Hallo Tobi,

wie ich grade festgestellt habe, wird in der aktuellen Testconfig der Build unter Windows nicht nativ getestet.
Da gibt es offenbar noch ein paar Sachen zu beheben.
Ich habe die Testconfig für Travis mal um "windows" (Experimental) erweitert und werde das in einer VM mal unter Windows 10 testen bei nächster Gelegenheit.

Danke für das Feedback - sehr hilfreich.
Ich melde mich hier nochmal sobald es hier was Neues zu berichten gibt.

nw-87
nw-87

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Firmware

Beitrag von Nightwalker-87 » 09 Mär 2019, 17:43

Hi Tobi,

sowohl develop- als auch nightly-branch bauen jetzt erfolgreich unter Win 10 x86-64. 8)

Meine Build-Umgebung:
> Eclipse 2018-12
> Msys2 mit mingw-w64, make und doxygen
> avr-gcc5.3.0 (eine avr Toolchain ist für Msys2 leider nicht verfügbar; neuer als der letzte Stand von WinAVR)

:!: -> keine MinGW-Installation via Installer (Die herunterladbaren Installer installieren fast immer alte Stand-alone-Versionen.)
:!: -> keine WinAVR-Installation via Installer (Das WinAVR-Projekt ist seit 2010 deprecated und wird nicht mehr weiterentwickelt.)

Das Setup-Prozedere für das obige Build-System ist nicht sonderlich kompliziert und wie ich finde einfacher als das bekannte Setup zuvor.
Wenn du das mal ausprobieren möchtest, kann ich dir nähere Infos dazu geben. Ich werde das demnächst mal als Doku zusammentippen. Wenn ich mir das ganze so anschaue im Vergleich zu den Build-Umgebungen für Linux und macOS sind die Windows-Anhänger in letzter Zeit etwas vernachlässigt worden was aktuelle Build-Tools anbelangt - das würde ich gerne ändern. :wink:

Bevor du (möglicherweise) wäre für mich jedoch auch noch interessant zu wissen welche Tools und Versionen du derzeit am Laufen hast in deiner Build-Umgebung unter Win10. :idea:

Viele Grüße
nw87
nw-87

tobi

Re: ct-Bot Firmware

Beitrag von tobi » 09 Mär 2019, 18:35

Hi,

danke!

also ich habe msys2 installiert und dort mingw-w64-x86_64-gcc und make, so wie es auch in der installationsanleitung steht. die versionen sind:
  • Eclipse 2018-12
  • gcc version 8.3.0 (Rev2, Built by MSYS2 project)
  • GNU Make 4.2.1 Gebaut für x86_64-pc-msys
den develop-branch konnte ich nicht aktualisieren, ich habe zwar lokal keine änderungen, aber laut git ist der remote-branch inkompatibel zu meinem.
habe den nightly branch ausprobiert, damit habe ich aber immernoch dieselben fehler. mit make auf der console baut es nicht, fehlerausgabe genau wie oben schon gepostet. mit eclipse baut es (mit 299 warnings), aber wenn ich den bot mit dem simulator verbinde, wird immer noch die logausgabe zum simulator geschickt usw. wie oben geschrieben. genauso das problem mit der cpu last selbst wenn ich den simulator pausiere und die map anzeige usw.

wenn ich den alten (original) code verwende habe ich die fehler nicht mit dergleichen build umgebung natürlich.

Tobi

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Firmware

Beitrag von Nightwalker-87 » 09 Mär 2019, 19:00

tobi hat geschrieben:
09 Mär 2019, 18:35
den develop-branch konnte ich nicht aktualisieren, ich habe zwar lokal keine änderungen, aber laut git ist der remote-branch inkompatibel zu meinem.
Ja, das kann sein, da ich ein paar Änderungen rückgängig machen musste. Da das bislang nur ein Test-Ballon ist, erhebt das aktuell noch keinen Anspruch auf commit Kompatibilität in den branches - entsprechend müsstest nochmal neu importieren.
tobi hat geschrieben:
09 Mär 2019, 18:35
mit make auf der console baut es nicht, fehlerausgabe genau wie oben schon gepostet.
Sry, ich hatte bislang nur in eclipse unter Win getestet, da ich dort schon einen Fehler vermutete. Den Konsolen-Build mit dem Makefile hab ich eben erst ausprobiert. Hier habe ich jetzt immerhin den gleichen Output wie du. Zusammen mit den Infos zu deinem Build-System kann ich das also jetzt erst richtig begutachten. Ich hatte Windows bislang überhaupt noch nicht für den ct-Bot Code verwendet, auch nicht für den offiziellen Code.

Es bedarf also noch etwas Geduld...

nw87
nw-87

tobi

Re: ct-Bot Firmware

Beitrag von tobi » 09 Mär 2019, 19:10

kein problem! ich hatte es nur getestet weil ich neugierig war :D
werde jetzt eh erstmal meinen echten bot entstauben und wieder zum laufen bringen, weil ich mal wieder mehr mit dem bot machen will. der stand jetzt viel zu lange nur rum :mrgreen:

Tobi

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Firmware

Beitrag von Nightwalker-87 » 09 Mär 2019, 20:19

Das kenn ich irgendwoher... :mrgreen:
nw-87

tobi

Re: ct-Bot Firmware

Beitrag von tobi » 09 Mär 2019, 21:03

hab grad gesehen das problem mit der cpu last besteht auch mit dem offiziellen code. ist entweder neu oder mir vorher nicht aufgefallen.
die andere probleme allerdings nicht, also sind wohl unterschiedliche ursachen.

Tobi

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Firmware

Beitrag von Nightwalker-87 » 09 Mär 2019, 21:47

Könnte es sein, dass es ein generelles Problem unter Windows gibt?
Bei mir erhalte ich auch mit dem offiziellen ct-Bot code [master] & [develop] die gleichen Build-Fehlermeldungen in der Konsole.

@Tobi: Wieso funktioniert der bei dir mir der augenscheinlich gleichen Konfiguration?

cd ~/git/ct-bot
make DEVICE=WIN32

Irgendwas ist da grundsätzlich faul...
Bevor das mit dem offiziellen Code unter Windows nicht sauber läuft, brauche ich hier erstmal auch nicht weitersuchen...
nw-87

eax
Friends of Sonny
Friends of Sonny
Beiträge: 110
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: ct-Bot Firmware

Beitrag von eax » 10 Mär 2019, 00:45

Mit neueren MinGW-Versionen gab es da in der Tat ein Problem, ist jetzt gefixt.
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Firmware

Beitrag von Nightwalker-87 » 10 Mär 2019, 12:08

Prima! =D> Das werde ich gleich mal testen...

Edit: Also jetzt nach dem angeblichen Fix fpr mingw64 funktioniert bei mir gar nix mehr. :shock:
Er bricht schon direkt beim Anfang von make DEVICE=WIN32 ab:

Code: Alles auswählen

C:\Users\user-10\git\ct-bot>make DEVICE=WIN32
expr: syntax error: unexpected argument '-dumpversion'
cut: the delimiter must be a single character
Try 'cut --help' for more information.
Das System kann den angegebenen Pfad nicht finden.
ECHO ist ausgeschaltet (OFF).
Target device is WIN32 atmega1284p
ECHO ist ausgeschaltet (OFF).
-------- begin --------
g++ (Rev2, Built by MSYS2 project) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

gcc -c -g -O2 -fmessage-length=0 -Wall -Wstrict-prototypes -Wextra -Wmissing-prototypes -Wmissing-declarations -MMD -I. -I./include -I./include/bot-logic -I./mcu/SdFat -std=gnu11 -Wshadow -Wformat=2 -Wdouble-promotion -MP -MT"ct-Bot.o" -MF".dep/ct-Bot.o.d" -DWIN32 ct-Bot.c -o ct-Bot.o
ct-Bot.c:55:1: fatal error: opening dependency file .dep/ct-Bot.o.d: No such file or directory
 }
 ^
compilation terminated.
make: *** [ct-Bot.o] Error 1
:arrow: Edit: das war mit make aus dem MSYS2-Paket mingw-w64-x86_64-make

Anschließend habe ich das Paket make noch nachinstalliert:

Build-Log (Paste expires in 7 days)

Das klappt schon besser, aber er kommt immer noch nicht fehlerfrei zum Ende durch.

Darüberhinaus würde ich die Zusatzoption:

Code: Alles auswählen

# MCU name
MCU ?= atmega1284p
durch

Code: Alles auswählen

# MCU name
MCU ?= 
ersetzen, da bei DEVICE=WIN32 nicht für das TARGET MCU gebaut wird. Das ist zwar für die Anzeige, aber irreführend, da falsch.
nw-87

Antworten