synapse beim arm processor

Alle Fragen zur Netzwerkkommunikation
hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

synapse beim arm processor

Beitrag von hanibal »

hallo, ich habe jetzt fpc auf meiner nslu2 zum laufen gekriegt, (von freepascal seiter geladen) nur gibt es jetzt ein anderes porblem:
[...]
synautil.s: Assembler messages:
synautil.s:156: Error: selected processor does not support `stfd f0,[r11,#-48]'
[...]


da kommen noch vile mehr diese zeilen.
wie kann man das umgehen? oder kann man synapse nicht unter arm verwenden?

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: synapse beim arm processor

Beitrag von theo »

Was soll den synautil.s sein?

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Re: synapse beim arm processor

Beitrag von hanibal »

in ne assembler datei.

ich kann ja mal den oberen teil von synautil.pas zeigen:

Code: Alles auswählen

{==============================================================================|
| Project : Ararat Synapse                                       | 004.010.001 |
|==============================================================================|
| Content: support procedures and functions                                    |
|==============================================================================|
| Copyright (c)1999-2005, Lukas Gebauer                                        |
| All rights reserved.                                                         |
|                                                                              |
| Redistribution and use in source and binary forms, with or without           |
| modification, are permitted provided that the following conditions are met:  |
|                                                                              |
| Redistributions of source code must retain the above copyright notice, this  |
| list of conditions and the following disclaimer.                             |
|                                                                              |
| Redistributions in binary form must reproduce the above copyright notice,    |
| this list of conditions and the following disclaimer in the documentation    |
| and/or other materials provided with the distribution.                       |
|                                                                              |
| Neither the name of Lukas Gebauer nor the names of its contributors may      |
| be used to endorse or promote products derived from this software without    |
| specific prior written permission.                                           |
|                                                                              |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"  |
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE    |
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE   |
| ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR  |
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL       |
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR   |
| SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER   |
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT           |
| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY    |
| OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH  |
| DAMAGE.                                                                      |
|==============================================================================|
| The Initial Developer of the Original Code is Lukas Gebauer (Czech Republic).|
| Portions created by Lukas Gebauer are Copyright (c) 1999-2005.               |
| Portions created by Hernan Sanchez are Copyright (c) 2000.                   |
| All Rights Reserved.                                                         |
|==============================================================================|
| Contributor(s):                                                              |
|   Hernan Sanchez (hernan.sanchez@iname.com)                                  |
|==============================================================================|
| History: see HISTORY.HTM from distribution package                           |
|          (Found at URL: http://www.ararat.cz/synapse/)                       |
|==============================================================================}

 
{:@abstract(Support procedures and functions)}
 
{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$Q-}
{$R-}
{$H+}
 
unit synautil;
 
interface
 
uses
{$IFDEF WIN32}
  Windows,
{$ELSE}
  {$IFDEF FPC}
  UnixUtil, Unix, BaseUnix,
  {$ELSE}
  Libc,
  {$ENDIF}
{$ENDIF}
{$IFDEF CIL}
  System.IO,
{$ENDIF}
  SysUtils, Classes, SynaFpc;
 
{:Return your timezone bias from UTC time in minutes.}
function TimeZoneBias: integer;
 
{:Return your timezone bias from UTC time in string representation like "+0200".}
function TimeZone: string;
 
{:Returns current time in format defined in RFC-822. Useful for SMTP messages,
 but other protocols use this time format as well. Results contains the timezone
 specification. Four digit year is used to break any Y2K concerns. (Example
 'Fri, 15 Oct 1999 21:14:56 +0200')}

function Rfc822DateTime(t: TDateTime): string;
 
{:Returns date and time in format defined in C compilers in format "mmm dd hh:nn:ss"}
function CDateTime(t: TDateTime): string;
 
{:Returns date and time in format defined in format 'yymmdd hhnnss'}
function SimpleDateTime(t: TDateTime): string;
 
{:Returns date and time in format defined in ANSI C compilers in format
 "ddd mmm d hh:nn:ss yyyy" }

function AnsiCDateTime(t: TDateTime): string;
 
{:Decode three-letter string with name of month to their month number. If string
 not match any month name, then is returned 0. For parsing are used predefined
 names for English, French and German and names from system locale too.}

function GetMonthNumber(Value: AnsiString): integer;
 
{:Return decoded time from given string. Time must be witch separator ':'. You
 can use "hh:mm" or "hh:mm:ss".}

function GetTimeFromStr(Value: string): TDateTime;
 
{:Decode string in format "m-d-y" to TDateTime type.}
function GetDateMDYFromStr(Value: string): TDateTime;
 
{:Decode various string representations of date and time to Tdatetime type.
 This function do all timezone corrections too! This function can decode lot of
  formats like:
 @longcode(#
 ddd, d mmm yyyy hh:mm:ss
 ddd, d mmm yy hh:mm:ss
 ddd, mmm d yyyy hh:mm:ss
 ddd mmm dd hh:mm:ss yyyy #)
 
and more with lot of modifications, include:
@longcode(#
Sun, 06 Nov 1994 08:49:37 GMT    ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT   ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994         ; ANSI C's asctime() Format
#)
Timezone corrections known lot of symbolic timezone names (like CEST, EDT, etc.)
or numeric representation (like +0200). By convention defined in RFC timezone
 +0000 is GMT and -0000 is current your system timezone.}

function DecodeRfcDateTime(Value: string): TDateTime;
 
{:Return current system date and time in UTC timezone.}
function GetUTTime: TDateTime;
 
{:Set Newdt as current system date and time in UTC timezone. This function work
 only if you have administrator rights!}

function SetUTTime(Newdt: TDateTime): Boolean;
 
{:Return current value of system timer with precizion 1 millisecond. Good for
 measure time difference.}

function GetTick: LongWord;
 
{:Return difference between two timestamps. It working fine only for differences
 smaller then maxint. (difference must be smaller then 24 days.)}

function TickDelta(TickOld, TickNew: LongWord): LongWord;
 
{:Return two characters, which ordinal values represents the value in byte
 format. (High-endian)}

function CodeInt(Value: Word): Ansistring;
 
{:Decodes two characters located at "Index" offset position of the "Value"
 string to Word values.}

function DecodeInt(const Value: Ansistring; Index: Integer): Word;
 
{:Return four characters, which ordinal values represents the value in byte
 format. (High-endian)}

function CodeLongInt(Value: LongInt): Ansistring;
 
{:Decodes four characters located at "Index" offset position of the "Value"
 string to LongInt values.}

function DecodeLongInt(const Value: Ansistring; Index: Integer): LongInt;
 
{:Dump binary buffer stored in a string to a result string.}
function DumpStr(const Buffer: Ansistring): string;
 
{:Dump binary buffer stored in a string to a result string. All bytes with code
 of character is written as character, not as hexadecimal value.}

function DumpExStr(const Buffer: Ansistring): string;
 
{:Dump binary buffer stored in a string to a file with DumpFile filename.}
procedure Dump(const Buffer: AnsiString; DumpFile: string);
 
{:Dump binary buffer stored in a string to a file with DumpFile filename. All
 bytes with code of character is written as character, not as hexadecimal value.}

procedure DumpEx(const Buffer: AnsiString; DumpFile: string);
 
{:Like TrimLeft, but remove only spaces, not control characters!}
function TrimSPLeft(const S: string): string;
 
{:Like TrimRight, but remove only spaces, not control characters!}
function TrimSPRight(const S: string): string;
 
{:Like Trim, but remove only spaces, not control characters!}
function TrimSP(const S: string): string;
 
{:Returns a portion of the "Value" string located to the left of the "Delimiter"
 string. If a delimiter is not found, results is original string.}

function SeparateLeft(const Value, Delimiter: string): string;
 
{:Returns the portion of the "Value" string located to the right of the
 "Delimiter" string. If a delimiter is not found, results is original string.}

function SeparateRight(const Value, Delimiter: string): string;
 
{:Returns parameter value from string in format:
 parameter1="value1"; parameter2=value2}

function GetParameter(const Value, Parameter: string): string;
 
{:parse value string with elements differed by Delimiter into stringlist.}
procedure ParseParametersEx(Value, Delimiter: string; const Parameters: TStrings);
 
{:parse value string with elements differed by ';' into stringlist.}
procedure ParseParameters(Value: string; const Parameters: TStrings);
 
{:Index of string in stringlist with same beginning as Value is returned.}
function IndexByBegin(Value: string; const List: TStrings): integer;
 
{:Returns only the e-mail portion of an address from the full address format.
 i.e. returns 'nobody@@somewhere.com' from '"someone" <nobody@@somewhere.com>'}

function GetEmailAddr(const Value: string): string;
 
{:Returns only the description part from a full address format. i.e. returns
 'someone' from '"someone" <nobody@@somewhere.com>'}

function GetEmailDesc(Value: string): string;
 
{:Returns a string with hexadecimal digits representing the corresponding values
 of the bytes found in "Value" string.}

function StrToHex(const Value: Ansistring): string;
 
{:Returns a string of binary "Digits" representing "Value".}
function IntToBin(Value: Integer; Digits: Byte): string;
 
{:Returns an integer equivalent of the binary string in "Value".
 (i.e. ('10001010') returns 138)}

function BinToInt(const Value: string): Integer;
 
{:Parses a URL to its various components.}
function ParseURL(URL: string; var Prot, User, Pass, Host, Port, Path,
  Para: string): string;
 
{:Replaces all "Search" string values found within "Value" string, with the
 "Replace" string value.}

function ReplaceString(Value, Search, Replace: string): string;
 
{:It is like RPos, but search is from specified possition.}
function RPosEx(const Sub, Value: string; From: integer): Integer;
 
{:It is like POS function, but from right side of Value string.}
function RPos(const Sub, Value: String): Integer;
 
{:Like @link(fetch), but working with binary strings, not with text.}
function FetchBin(var Value: string; const Delimiter: string): string;
 
{:Fetch string from left of Value string.}
function Fetch(var Value: string; const Delimiter: string): string;
 
{:Fetch string from left of Value string. This function ignore delimitesr inside
 quotations.}

function FetchEx(var Value: string; const Delimiter, Quotation: string): string;
 
{:If string is binary string (contains non-printable characters), then is
 returned true.}

function IsBinaryString(const Value: string): Boolean;
 
{:return position of string terminator in string. If terminator found, then is
 returned in terminator parameter.
 Possible line terminators are: CRLF, LFCR, CR, LF}

function PosCRLF(const Value: AnsiString; var Terminator: AnsiString): integer;
 
{:Delete empty strings from end of stringlist.}
Procedure StringsTrim(const value: TStrings);
 
{:Like Pos function, buf from given string possition.}
function PosFrom(const SubStr, Value: String; From: integer): integer;
 
{$IFNDEF CIL}
{:Increase pointer by value.}
function IncPoint(const p: pointer; Value: integer): pointer;
{$ENDIF}
 
{:Get string between PairBegin and PairEnd. This function respect nesting.
 For example:
 @longcode(#
 Value is: 'Hi! (hello(yes!))'
 pairbegin is: '('
 pairend is: ')'
 In this case result is: 'hello(yes!)'#)}

function GetBetween(const PairBegin, PairEnd, Value: string): string;
 
{:Return count of Chr in Value string.}
function CountOfChar(const Value: string; Chr: char): integer;
 
{:Remove quotation from Value string. If Value is not quoted, then return same
 string without any modification. }

function UnquoteStr(const Value: string; Quote: Char): string;
 
{:Quote Value string. If Value contains some Quote chars, then it is doubled.}
function QuoteStr(const Value: string; Quote: Char): string;
 
{:Convert lines in stringlist from 'name: value' form to 'name=value' form.}
procedure HeadersToList(const Value: TStrings);
 
{:Convert lines in stringlist from 'name=value' form to 'name: value' form.}
procedure ListToHeaders(const Value: TStrings);
 
{:swap bytes in integer.}
function SwapBytes(Value: integer): integer;
 
{:read string with requested length form stream.}
function ReadStrFromStream(const Stream: TStream; len: integer): AnsiString;
 
{:write string to stream.}
procedure WriteStrToStream(const Stream: TStream; Value: AnsiString);
 
{:Return filename of new temporary file in Dir (if empty, then default temporary
 directory is used) and with optional filename prefix.}

function GetTempFile(const Dir, prefix: AnsiString): AnsiString;
 
var
  {:can be used for your own months strings for @link(getmonthnumber)}
  CustomMonthNames: array[1..12] of string;

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: synapse beim arm processor

Beitrag von theo »

Ja das kenn ich.
Aber in deiner Fehlermeldung steht (sagst du jedenfalls) "synautil.s" und da soll was auf Zeile 156 nicht gut sein? synautil.pas enthält gar kein Assembler afaics.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: synapse beim arm processor

Beitrag von Christian »

synautil.s wird aus synautil.pas vom ppc erzeugt
und dann assembliert
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Re: synapse beim arm processor

Beitrag von hanibal »

heißt das, das ich nur die synautils.s löschen muss, damit der die neu erstellt?


edit: habe ich gerade ausgetestet, der erstellt die dann neu, uhnd alles is beim alten.

müsste der compiler die nicht eig arm gerecht compilieren, warum tut der das?

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Re: synapse beim arm processor

Beitrag von hanibal »

hab gerade nochmal getestet, den aktuellsten synapse source gelden, und das original echo demo damit compiliert, kommt das gleiche bei raus.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: synapse beim arm processor

Beitrag von mschnell »

synautil.* oder synautils.*

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: synapse beim arm processor

Beitrag von af0815 »

hanibal hat geschrieben:hallo, ich habe jetzt fpc auf meiner nslu2 zum laufen gekriegt, (von freepascal seiter geladen) nur gibt es jetzt ein anderes porblem:
[...]
synautil.s: Assembler messages:
synautil.s:156: Error: selected processor does not support `stfd f0,[r11,#-48]'
[...]


da kommen noch vile mehr diese zeilen.
wie kann man das umgehen? oder kann man synapse nicht unter arm verwenden?

Die Frage, stimmt das Target bzw. der FPC wirklich überein. Schaut so aus als würde der Targetprozessor nicht stimmen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Re: synapse beim arm processor

Beitrag von hanibal »

mschell: was willst du mir damit sagen?

af0815: wie kann man das target umstellen?

compiler ist "fpc-2.2.2.arm-linux"

kompletter terminalausgabe beim echo demo:

Code: Alles auswählen

martin@LKGA1AF17:~/echo$ fpc ./main.pas
Free Pascal Compiler version 2.2.2 [2008/08/10] for arm
Copyright (c) 1993-2008 by Florian Klaempfl
Target OS: Linux for ARM
Compiling ./main.pas
Compiling echo.pas
Compiling blcksock.pas
Compiling synautil.pas
Assembling synautil
synautil.s: Assembler messages:
synautil.s:156: Error: selected processor does not support `stfd f0,[r11,#-48]'
synautil.s:176: Error: selected processor does not support `ldfd f0,[r11,#-48]'

synautil.s:182: Error: selected processor does not support `ldfd f0,[r11,#-48]'
synautil.s:207: Error: selected processor does not support `ldfd f0,[r11,#-48]'

synautil.s:283: Error: selected processor does not support `stfd f0,[r11,#-48]'
synautil.s:301: Error: selected processor does not support `ldfd f0,[r11,#-48]'

synautil.s:324: Error: selected processor does not support `ldfd f0,[r11,#-48]'
synautil.s:384: Error: selected processor does not support `stfd f0,[r11,#-48]'

synautil.s:403: Error: selected processor does not support `ldfd f0,[r11,#-48]'
synautil.s:445: Error: selected processor does not support `stfd f0,[r11,#-48]'

synautil.s:463: Error: selected processor does not support `ldfd f0,[r11,#-48]'
synautil.s:469: Error: selected processor does not support `ldfd f0,[r11,#-48]'

synautil.s:494: Error: selected processor does not support `ldfd f0,[r11,#-48]'
synautil.s:1796: Error: selected processor does not support `stfd f0,[r11,#-56]'

synautil.s:1848: Error: selected processor does not support `ldfd f0,[r11,#-56]'
synautil.s:1996: Error: selected processor does not support `stfd f0,[r11,#-56]'

synautil.s:2048: Error: selected processor does not support `ldfd f0,[r11,#-56]'
synautil.s:2295: Error: selected processor does not support `stfd f0,[r11,#-88]'

synautil.s:2296: Error: selected processor does not support `ldfd f1,[r11,#-88]'
synautil.s:2298: Error: selected processor does not support `ldfd f0,[r0]'

synautil.s:2299: Error: selected processor does not support `cmf f1,f0'
synautil.s:2408: Error: selected processor does not support `mvfd f1,f0'

synautil.s:2409: Error: selected processor does not support `ldfd f0,[r11,#-56]'
synautil.s:2410: Error: selected processor does not support `adfd f0,f0,f1'

synautil.s:2411: Error: selected processor does not support `stfd f0,[r11,#-56]'
synautil.s:2421: Error: selected processor does not support `fltd f0,r0'

synautil.s:2422: Error: selected processor does not support `ldfd f1,[r11,#-56]'
synautil.s:2423: Error: selected processor does not support `sufd f1,f1,f0'

synautil.s:2424: Error: selected processor does not support `stfd f1,[r11,#-56]'
synautil.s:2473: Error: selected processor does not support `stfd f0,[r11,#-88]'

synautil.s:2480: Error: selected processor does not support `ldfd f0,[r0]'
synautil.s:2481: Error: selected processor does not support `ldfd f1,[r11,#-88]'

synautil.s:2482: Error: selected processor does not support `sufd f0,f0,f1'
synautil.s:2483: Error: selected processor does not support `stfd f0,[r11,#-88]'

synautil.s:2485: Error: selected processor does not support `ldfd f0,[r11,#-56]'
synautil.s:2486: Error: selected processor does not support `ldfd f1,[r11,#-88]'

synautil.s:2487: Error: selected processor does not support `sufd f0,f0,f1'
synautil.s:2488: Error: selected processor does not support `stfd f0,[r11,#-56]'

synautil.s:2506: Error: selected processor does not support `ldfd f0,[r11,#-56]'
synautil.s:2554: Error: selected processor does not support `fltd f1,r2'

synautil.s:2556: Error: selected processor does not support `ldfd f0,[r0]'
synautil.s:2557: Error: selected processor does not support `dvfd f1,f1,f0'

synautil.s:2565: Error: selected processor does not support `fltd f2,r0'
synautil.s:2566: Error: selected processor does not support `adfd f2,f2,f1'

synautil.s:2568: Error: selected processor does not support `ldfd f0,[r0]'
synautil.s:2569: Error: selected processor does not support `dvfd f2,f2,f0'

synautil.s:2571: Error: selected processor does not support `ldfd f0,[r0]'
synautil.s:2572: Error: selected processor does not support `adfd f0,f0,f2'

synautil.s:2573: Error: selected processor does not support `stfd f0,[r11,#-48]'
synautil.s:2574: Error: selected processor does not support `ldfd f0,[r11,#-48]'

synautil.s:2600: Error: selected processor does not support `stfd f0,[r11,#-48]'
synautil.s:2601: Error: selected processor does not support `ldfd f1,[r11,#-48]'

synautil.s:2603: Error: selected processor does not support `ldfd f0,[r0]'
synautil.s:2604: Error: selected processor does not support `sufd f1,f1,f0'

synautil.s:2606: Error: selected processor does not support `ldfd f0,[r0]'
synautil.s:2607: Error: selected processor does not support `mufd f1,f1,f0'

synautil.s:2608: Error: selected processor does not support `stfd f1,[r11,#-72]'
synautil.s:2609: Error: selected processor does not support `ldfd f0,[r11,#-72]'

synautil.s:2618: Error: selected processor does not support `ldfd f0,[r11,#-72]'
synautil.s:2620: Error: selected processor does not support `mvfd f1,f0'

synautil.s:2622: Error: selected processor does not support `ldfd f0,[r0]'
synautil.s:2623: Error: selected processor does not support `mufd f1,f1,f0'

synautil.s:2624: Error: selected processor does not support `mvfd f0,f1'
synautil.pas(1770) Error: Error while assembling exitcode 1
synautil.pas(1770) Fatal: There were 2 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/local/bin/ppcarm returned an error exitcode (normal if you did not specify a source file to be compiled)
martin@LKGA1AF17:~/echo$

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: synapse beim arm processor

Beitrag von mschnell »

hanibal hat geschrieben:mschell: was willst du mir damit sagen?

In der letzten mail sprichst Du von sysutils.s. Ist das eine andere Datei oder nur ein Tippfehler ?
-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: synapse beim arm processor

Beitrag von Christian »

Es ist doch eigentlich sonnenklar was hier passiert. der fpc generiert ein assembler listing mit einem Befehl der auf dem gewählten arm derivat ungültig ist. der assembler kennt diesen Befehl nicht und gibt entsprechende Fehlermeldung. Ergo Bugreport an das fpc devel Team mit genauer cpu angabe.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: synapse beim arm processor

Beitrag von marcov »

Christian hat geschrieben:Es ist doch eigentlich sonnenklar was hier passiert. der fpc generiert ein assembler listing mit einem Befehl der auf dem gewählten arm derivat ungültig ist. der assembler kennt diesen Befehl nicht und gibt entsprechende Fehlermeldung. Ergo Bugreport an das fpc devel Team mit genauer cpu angabe.


Korrect, und konkreter hört es sich an ob es kein FPU gibt dort -> -Cfsoft

Kann aber sein dass das nur in 2.3.x unterstützt wird.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: synapse beim arm processor

Beitrag von mschnell »

Das NSLU hat bestimmt keine FPU. Ich frage mich allerdings, woher der ASM weiß, dass Du Code für ein NSLU erzeugen willst.... Kompiliertst Du auf dem NSLU ? Du könntest auf dem PC Cross-kompilieren, der Compiler weiss dann den CPU-Typ nicht und stört sich nicht an der nicht vorhandenen FPU. Dann knallt's aber vermutlich beim Programm-Ablauf.

Ich glaube nicht, dass FPC in der Lage ist, Code zu erzeugen, der statt FPU Befehle zu benutzen, Calls zu einer Gleitpunkt-Emulations-Library einbaut. Wenn nicht, ist an dieser Ecke nichts zu machen, wenn Du nicht den FPC selbst um diese Option erweitern willst.

Ich glaube mich zu erinnern, dass es bei manchen Linux Kerneln möglich ist, einen Trap, der durch vom Prozessor nicht unterstützte Gleitpunkt-Befehle ausgelöst wird, auf eine Emulation umzulenken. Der Kernel für das NSLU ist sicherlich auf Speicherbedarf optimiert und wird ies Option nicht enthalten, wenn das bei ARM überhaupt geht. Vielleicht kann man einen Kernel mit dieser Option compilieren, dann müsste man dem FPC bzw dem ASM vorgaukeln er hätte es mit einer CPU mit FPU zu tun.

Warum braucht Synapse denn überhaupt Gleitpunkt-Funktionen ? Vielleicht kannst Du in Synapse eine Option einbauen, die das verhindert...

-Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: synapse beim arm processor

Beitrag von mschnell »

Update:

Irrtum: var/log/syslog enthält bei meinem NSLU die Zeile

Dec 27 12:02:08 noname kernel: [42949380.780000] NetWinder Floating Point Emulator V0.97 (double precision)

Anscheinend macht der Kernel eine Floating point Emulation.

Es sollte also funktionieren, wenn man dem Assembler eine CPU mit FPU vorgaukelt.

-Michael
Zuletzt geändert von mschnell am Sa 27. Dez 2008, 19:38, insgesamt 1-mal geändert.

Antworten