Codesys von Linux ARM32 SL 32 Bit auf 64 Bit

BitShift

Level-2
Beiträge
35
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

Habe eine Codesys Applikation Codesys V3.5 SP 19 Patch 6 (64 Bit) von Linux ARM32 SL nach ARM64 SL aktualisiert. Es gab Probleme mit der Funktion SysRtcGetTime aus der sysrtc23 Bibliothek. Durch Verwendung der SysTimeRtc und Erstellen einer SysRtcGetTime-Wrapperfunktion konnte ich das Probleme lösen.

Es wird auch die OSCAT BASIC 3.3.4.0 Bibliothek verwendet. Im Codesys Store steht «64 bit controller are not supported». Aber es kompiliert und läuft. Hat da jemand Erfahrung damit? OSCAT raus und alles selbst machen oder kann problemlos verwendet werden auf 64 Bit?

Und, neuerdings habe ich auch das Problem, dass die Meldung «der Zugriff auf den Pfad «C:\Program Files\Codesys\ 3.5 usw.\t2hxmzcz.ei3» beim Runterladen der Applikation erscheint. Diese kann man dann einfach weglicken, online gehen und alles ist gut. Die Datei t2hxmzcz.ei3 gibt es tatsächlich nicht in diesem Verzeichnis. Aber wozu braucht es die? Für das neu installierte und konfigurierte Linux ARM64 SL Gerät?

Danke für euere Hilfe!

GRZ, BitShift
 
Hi

Habe eine Codesys Applikation Codesys V3.5 SP 19 Patch 6 (64 Bit) von Linux ARM32 SL nach ARM64 SL aktualisiert. Es gab Probleme mit der Funktion SysRtcGetTime aus der sysrtc23 Bibliothek. Durch Verwendung der SysTimeRtc und Erstellen einer SysRtcGetTime-Wrapperfunktion konnte ich das Probleme lösen.

Es wird auch die OSCAT BASIC 3.3.4.0 Bibliothek verwendet. Im Codesys Store steht «64 bit controller are not supported». Aber es kompiliert und läuft. Hat da jemand Erfahrung damit? OSCAT raus und alles selbst machen oder kann problemlos verwendet werden auf 64 Bit?

Und, neuerdings habe ich auch das Problem, dass die Meldung «der Zugriff auf den Pfad «C:\Program Files\Codesys\ 3.5 usw.\t2hxmzcz.ei3» beim Runterladen der Applikation erscheint. Diese kann man dann einfach weglicken, online gehen und alles ist gut. Die Datei t2hxmzcz.ei3 gibt es tatsächlich nicht in diesem Verzeichnis. Aber wozu braucht es die? Für das neu installierte und konfigurierte Linux ARM64 SL Gerät?

Danke für euere Hilfe!

GRZ, BitShift
Grüße,

zur fehlenden Datei, die Meldung kommt auch bei mir, da aber keinerlei Einschränkungen bei mir vorhanden sind, wird es wohl ein BUG sein.

Soweit ich es noch in Erinnerung habe, benutzt OSCAT BASIC nur die Standart LIB, damit ist es völlig egal unter welcher Umgebung diese läuft.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
I apologise for responding in English. I read German, writing is more difficult for me. And I am quite late to this thread 😊

The BASIC library does indeed compile and run on both 32-bit as well as 64-bit controllers. As far as I can tell just about everything should work, although I have not exhaustively tested all functionality. I do know that there are two POUs that will not work correctly on 64-bits. Those are _BUFFER_INIT() and _BUFFER_CLEAR(). These functions have smart optimizations where arrays of BYTE are initialised in an efficient manner, taking much less CPU time on larger arrays than a standard FOR loop over the BYTES. The optimizations are very specifically written with 32-bit aligmnent of bytes in mind.

The same logic can be applied to 64-bit. For that the code in these POUs would have to be changed. The simplest approach would be to make a version of the library specifically for 64-bit controllers. However, it can also be done in a transparant manner by making use of data type __XWORD and compiler pragma's. That would yield code that works on 32-bits and 64-bits without any changes.

Alternatively, these two POUs can be replaced by simple FOR loops. That works fine. For larger arrays it is less efficient in terms of CPU load. Even more so on 64 bit controllers.
 
Zurück
Oben