WinCe/Arm: Nach Programmstart passiert nichts

Antworten
Kiffi
Beiträge: 37
Registriert: Sa 27. Mär 2010, 11:39
OS, Lazarus, FPC: Windows 7 / Lazarus 1.0
CPU-Target: 32/64 bit

WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Kiffi »

Hallo,

ich habe ein neues Projekt (Anwendung) angelegt, die entsprechenden Projekteinstellungen für WinCe und ARM vorgenommen,
dann das Projekt kompiliert und auf mein WinCe-Device kopiert. Codeänderungen habe ich nicht vorgenommen.

Starte ich nun das Programm auf meinem Device, so ändert sich der Mauszeiger kurz in eine Sanduhr und dann wieder zurück.
Ich hätte eigentlich erwartet, dass das leere Programmfenster erscheint (so wie bei einem 'normalen' Win32-Projekt).
Es scheint, als ob sich das Programm nach Start sofort wieder beendet.

Es erscheint keine Fehler- oder sonstige Meldung.

Habe ich was vergessen? Meine INet-Recherchen zu dem Thema führen mich auf uralte Seiten, deren Informationen teilweise
schon längst überholt sind.

Danke im voraus & Grüße ... Kiffi (Lazarus 0.9.30/ FPC 2.4.2)

// Nachtrag: Habe grade mal einen Device-Emulator installiert. Hierauf öffnet sich das Programmfenster wie erwartet.
Nu bin ich verwirrt. Wie kann ich rausfinden, was auf meinem 'echten' Device schief läuft?

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Scotty »

Wenn es auf dem Gerät eine Shell gibt (cmd.exe), dann steht dort vielleicht, was nicht passt. Arm ist zum Beispiel nicht gleich Arm.

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Maik81ftl »

Ist schon mal gut, das einer diese Frage gestellt hat, bevor ich was für mein Sony Ericsson Xperia X10 Mini Pro progge.

Kann man diesen ARM-Prozi genauer einstellen, oder läuft des denne, wenn ich die entsprechenden Tool's & Lib's installiere?
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Scotty »

IMHO hängt es davon ab, wie und wo du den Crosscompiler erstellst. Mein "ppcarm -i" sagt:

Code: Alles auswählen

Free Pascal Compiler version 2.7.1
 
Compiler Date      : 2011/08/13
Compiler CPU Target: arm
 
Supported targets:
  Linux for ARMEL
  WinCE for ARM
  GameBoy Advance
  PalmOS
  Nintendo DS
  Embedded
  Symbian OS for ARM
  Darwin for ARM
 
Supported CPU instruction sets:
  ARMV3
  ARMV4
  ARMV5
  ARMV6
  ARMV7
  ARMV7M
  CORTEXM3
 
Supported FPU instruction sets:
  SOFT
  LIBGCC
  FPA
  FPA10
  FPA11
  VFPV2
  VFPV3
 
Supported ABI targets:
  DEFAULT
  SYSV
  AIX
  EABI
  ARMEB
 
Supported Optimizations:
  REGVAR
  STACKFRAME
  LOOPUNROLL
  TAILREC
  CSE
 
Supported Whole Program Optimizations:
  All
  DEVIRTCALLS
  OPTVMTS
  SYMBOLLIVENESS
 
Supported Microcontroller types:
  LPC2114
  LPC2124
  LPC2194
  AT91SAM7S256
  AT91SAM7SE256
  AT91SAM7X256
  AT91SAM7XC256
  STM32F103RE
  STELLARIS
 
This program comes under the GNU General Public Licence
For more information read COPYING.FPC
 
Report bugs, suggestions, etc. to:
                 http://bugs.freepascal.org
or
                 bugs@freepascal.org


Wenn ich in der Liste nachsehe, ist im X10 ein ARM1176JZ(F)-S drin. Wenn der nicht irgendwo dazu gehört, geht es - zumindest mit meinem Crosscompiler - nicht. Ich glaube außerdem, dass es leichter ist, C++ oder Java zu lernen, als einen Crosscompiler zum laufen zu bringen.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Socke »

Scotty hat geschrieben:Wenn ich in der Liste nachsehe, ist im X10 ein ARM1176JZ(F)-S drin. Wenn der nicht irgendwo dazu gehört, geht es - zumindest mit meinem Crosscompiler - nicht. Ich glaube außerdem, dass es leichter ist, C++ oder Java zu lernen, als einen Crosscompiler zum laufen zu bringen.

So schwer ist das gar nicht; ich habs geschafft auf einem alten Navi mit WinCE eine Lazarus-Applikation auszuführen (wobei die LCL noch einige Probleme hatte). Ich kann mich nur nicht mehr daran erinnern, ob ich die Parameter zum Instruction-Set angegeben habe oder nicht. Siehe die Buildfaq zu den Einstellungen, wie du dir den Cross-Compiler selber baust (so hab ich es gemacht).

Der ARM1176JZ wird vom FPC unterstützt, siehe in der englischsprachigen Wikipedia; Dieser Prozessorkern verwendet das Instruction-Set ARMv6.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Kiffi
Beiträge: 37
Registriert: Sa 27. Mär 2010, 11:39
OS, Lazarus, FPC: Windows 7 / Lazarus 1.0
CPU-Target: 32/64 bit

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Kiffi »

@Scotty: Danke für den Tip mit der Shell. Leider erhalte ich auch hier keine weiteren Informationen, wenn ich mein Projekt hierüber starte.

Ich habe jetzt mal in der Systemsteuerung nachgeschaut, welche Prozessor in meinem Device verbaut ist: Es ist ein ARM920T-PXA320

Leider bin ich damit auch schon mit meinem Latein am Ende.

Grüße ... Kiffi

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Socke »

Bei mir war das ganze mehr oder weniger ein Ausprobieren der richtigen Compiler-Einstellungen (in meinem Navi ist ein ARM926T, über den es kaum Dokumentation gibt). Daher mein Vorschlag zum weiteren Vorgehen:
  1. Lade dir die Quelltexte des FPC inklusive Makefiles herunter (zum Beispiel aus dem SVN)
  2. Erstelle dir den Free Pascal Compiler (FPC), die Runtime Library (RTL) und die Free Pascal Component Library (FCL) selbst, und probiere dabei die Optionen durch; Wichtige Parameter sind:
    • Prozessorarchitektur
    • Betriebssystem
    • Instruction-Set
    • Application Binary Interface (ABI)
    • Fließkoma-Coprozessor
  3. Überprüfe, ob die Konfigurationsdatei in Ordnung ist; Du solltest auch unbedingt mal einen externen Linker (GNU Binutils) zu verwenden
  4. Jedes Mal übersetzt du ein kleines Konsolen-Programm, das nichts weiter tut, als eine Datei unter beispielsweise /My Documents/mytestfile zu erstellen; Das erfüllt nur die Aufgabe zu testen, ob der Prozessor mit dem Programm etwas anfangen kann.
  5. Wenn das funktioniert, funktioniert auch Lazarus
Den FPC kannst ud in aller kürze so erstellen (das sind in etwa meine Parameter, also bitte gegebenenfalls anpassen):

Code: Alles auswählen

REM Im Wurzelverzeichnis der FPC-Quelltexte
REM WICHTIG: Build-FAQ und die Beschreibung der Parameter durchlesen
make crossinst OS_TARGET=wince CPU_TARGET=arm CROSSOPT="-Xe -CaEABI -CfSOFT -CpARMV4" INSTALL_PREFIX="C:\Programme\FPC\"

Edit: Ziel-Prozessor und -OS ergänzt
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Kiffi
Beiträge: 37
Registriert: Sa 27. Mär 2010, 11:39
OS, Lazarus, FPC: Windows 7 / Lazarus 1.0
CPU-Target: 32/64 bit

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Kiffi »

Hallo Socke,

vielen lieben Dank für Deine ausführlichen Infos! Leider befürchte ich, dass das sowohl meine Kenntnisse im
Neukompilieren als auch meine Bereitschaft, eine GUI-Projekt auf meinem WinCe laufen zu lassen übersteigt.

Das Ganze wäre sowieso nur ein Test, inwiefern mir ein solche erstelltes Projekt Vorteile gegenüber meinem
jetzigen (in Dotnet geschriebenen) in Punkto Performance, Leistungsfähigkeit, etc. bringen würde.

Eine in FPC selbst geschriebene DLL habe ich ja bereits schon erfolgreich im Einsatz. Wenn GUI einen solchen
Mehreinsatz bedeuten würde, verschiebe ich das Ausprobieren lieber. Da nehme ich doch vorerst lieber die Dotnet-GUI.

Nochmals Danke & Grüße ... Kiffi

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Socke »

Kiffi hat geschrieben:Eine in FPC selbst geschriebene DLL habe ich ja bereits schon erfolgreich im Einsatz. Wenn GUI einen solchen
Mehreinsatz bedeuten würde, verschiebe ich das Ausprobieren lieber. Da nehme ich doch vorerst lieber die Dotnet-GUI.

Sag das doch gleich; das bedeutet, dass der FPC wunderbar funktioniert und du ihn auch nicht neu übersetzen musst, es geht also ganz allein um Lazarus…

Versuch mal in den Lazarus-Optionen als Compiler den Crosscompiler auszuwählen (ppccrossarm.exe oder so ähnlich) und in den Projektoptionen übernimmst du die Einstellungen von der DLL.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Kiffi
Beiträge: 37
Registriert: Sa 27. Mär 2010, 11:39
OS, Lazarus, FPC: Windows 7 / Lazarus 1.0
CPU-Target: 32/64 bit

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Kiffi »

Hallo Socke,

Socke hat geschrieben:Sag das doch gleich

ja, stimmt, hätte ich eingangs erwähnen sollen. War mir aber nicht sicher, ob DLL
unter Lazarus / FPC nicht was ganz anderes ist, als GUI. Sorry for that!

Socke hat geschrieben:Versuch mal in den Lazarus-Optionen als Compiler den Crosscompiler auszuwählen (ppccrossarm.exe oder so ähnlich) und in den Projektoptionen übernimmst du die Einstellungen von der DLL.

habe ich gemacht. Als erstes bekomme ich ne Meldung, dass mein Projekt die Ziele
OS=win32 und CPU=i386 verwendet (was definitiv nicht stimmt) und dann wird eine
fehlende system.ppu angemosert (womit ich nichts anfangen kann).
Lazarus hat geschrieben:[Window Title]
Fehler

[Content]
Das Projekt nutzt die Ziele OS=win32 und CPU=i386.
Die system.ppu für dieses Ziel wurde nicht in den Binärverzeichnissen von FPC gefunden.
Stellen Sie sicher, daß fpc für diese Zielplattform richtig installiert ist und daß die fpc.cfg die richtigen Verzeichnisangaben enthält.

[Ok]

Kompilieren lässt sich das Projekt dennoch problemlos.
Leider startet es nach wie vor nicht auf dem Device.

(abgesehen davon halte ich es für verwirrend, den Compiler-Pfad in der IDE vorzunehmen
und nicht im Projekt selber; wenn ich jetzt zwischen Win32 und Arm-Projekt hin- und
herwechsel, muss ich ständig den Compiler umstellen, oder?)

Hier noch mal meine Projekteinstellungen (falls Dir /Euch was bringt):
Projekteinstellungen hat geschrieben:-MObjFPC -Scghi -O1 -Twince -Parm -Xs -vewnhi -l -Fi[MeinPfad]\hohoho\lib\arm-wince -FuC:\lazarus\lcl\units\arm-wince -FuC:\lazarus\lcl\units\arm-wince\wince -FuC:\lazarus\packager\units\arm-wince -Fu. -FUlib\arm-wince\ -oproject1.exe -dLCL -dLCLwince

sorry, das sind für mich alles böhmische Dörfer. :cry:

Danke & Grüße ... Kiffi

// Nachtrag: Die oben angemotzte system.ppu scheint es auf meinem Rechner
doch zu geben: C:\lazarus\fpc\2.4.2\units\arm-wince\rtl\system.ppu

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Scotty »

Kiffi hat geschrieben:Als erstes bekomme ich ne Meldung, dass mein Projekt die Ziele OS=win32 und CPU=i386 verwendet (was definitiv nicht stimmt) und dann wird eine fehlende system.ppu angemosert...
...
Hier noch mal meine Projekteinstellungen (falls Dir /Euch was bringt):
-MObjFPC -Scghi -O1 -Twince -Parm -Xs -vewnhi -l -Fi[MeinPfad]\hohoho\lib\arm-wince -FuC:\lazarus\lcl\units\arm-wince -FuC:\lazarus\lcl\units\arm-wince\wince -FuC:\lazarus\packager\units\arm-wince -Fu. -FUlib\arm-wince\ -oproject1.exe -dLCL -dLCLwince
....
doch zu geben: C:\lazarus\fpc\2.4.2\units\arm-wince\rtl\system.ppu

-Parm = arm, arm-wince = arm, wince.... In den Compileroptionen musst du also arm und wince eingestellt haben. Der Crosscompiler selbst muss auch irgendwie erstellt worden sein - und dort spielen die Optionen eine wichtige Rolle. Ich bleibe dabei, Crosscompiling ist kompliziert. Es gibt aber eine recht gute Build-FAQ (Suchbegriff wäre dort CROSSOPT und -Cp) und zudem auch einen aktuellen Thread, der das gleiche Thema behandelt. Zum Ausprobieren würde ich ein Hello-World ohne GUI empfehlen und dann erstmal mit GUI aber ohne Libs.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: WinCe/Arm: Nach Programmstart passiert nichts

Beitrag von Socke »

Scotty hat geschrieben:Der Crosscompiler selbst muss auch irgendwie erstellt worden sein - und dort spielen die Optionen eine wichtige Rolle.

Da die DLL anstandslos funktioniert, hat er einen funktionierenden Crosscompiler, der mit den richtigen Optionen erstellt wurde; da ist meines Erachtens nichts mehr zu tun.

Kiffi hat geschrieben:Hallo Socke,

Socke hat geschrieben:(abgesehen davon halte ich es für verwirrend, den Compiler-Pfad in der IDE vorzunehmen
und nicht im Projekt selber; wenn ich jetzt zwischen Win32 und Arm-Projekt hin- und
herwechsel, muss ich ständig den Compiler umstellen, oder?)

Der Compiler kann aus mehreren Einzel-Compilern bestehen. Für jede Prozessor-Architektur gibt es einen Compiler, der für diese Programme erstellen kann (ppc386, ppcarm, usw.). Der "Compiler" fpc.exe ruft je nach Ziel den entsprechenden Compiler auf. Zum Testen wäre es aber besser, von vornherein auszuschließen, dass der falsche Compiler verwendet wird.

Die Compiler-Optionen scheinen in Ordnung zu sein. In den Projektoptionen gibt es noch eine Schaltfläche "Test…"; da wird auch ausgegeben, welcher Compiler aufgerufen wird.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten