Forum: Compiler & IDEs USB Mass Storage Code


von Kloppy (Gast)


Lesenswert?

Hallo Zusammen
Ich versuche seit Tagen vergeblich das "Mass Storage and File System 
Demo" von Atmel (IAR Compiler) zum GCC zu portieren. Hat das schon mal 
jemand von euch versucht?

von Kloppy (Gast)


Lesenswert?

übrigens versuche ich das ganze auf einem at91sam7 zum laufen zu bringen

von MicroMann (Gast)


Lesenswert?

Ich dachte da gibts keine sourcen, sondern nur einen bin-File ?!?

Wo bekommt man denn die ?
Ich möchte nämlich ein ähnliches Projekt starten.

von Kloppy (Gast)


Lesenswert?

Doch du bekommst den Sourcecode auch. Du musst dazu nur die On-Line 
Registration Form ausfüllen.
Geh auf http://www.at91.com/ Dort findest du oben in der Mitte einen 
Link (Free Mass Storage Source Code)

von Micro M. (micromann)


Lesenswert?

Ah jetzt ja, danke.
Ich werde mal sehn ob das funzt.

von Kloppy (Gast)


Lesenswert?

Lass es mich wissen wenn du Erfolg hast!

von Marko (Gast)


Lesenswert?

Hallo, ich ärgere mich auch schon einige Tage
mit dem IAR-Code rum und bin auch schon
auf ca. 150 Fehlermeldungen beim Compiler runter,
wobei die letzten Fehler sich hartnäckig halten ...
Hast Du's scon geschafft mit dem umpfriemeln?
Hat es überhaupt noch sinn in der Rinchtung
weiterzubasteln oder doch hinwerfen und selber
was zusammenwursteln? ... Bitte bau mich auf
und Antworte das Du's geschafft hast :)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

So schlimm kann das doch gar nicht sein.  Was für Fehlermeldungen hast
du denn noch so?

von Martin Thomas (Gast)


Lesenswert?

Habe einige "Uebung" im Portieren von code fuer AT91 und AVR von IAR 
nach GNU/gcc und koennte wahrscheinlich auch diesen Code portieren oder 
zumindest helfen. Aber es bringt nichts, denn man darf den Quellcode 
nicht weitergeben. Der gcc-Port laege also nur hier rum und waere keine 
Hilfe. Daher auch bisher nicht der Lizenz unterworfen, Source-code nicht 
hier, da USB Mass-Storage noch nicht gebraucht.

Besser helfen koennte man bei der Portierung des Mass-Storage-Codes von 
Keil. Da kann man wenigstens den Quellcode weiterreichen. Aber die 
Lizenz ist ebenfalls restriktiv: nutzen ("use") darf man den Code nur 
mit Lizenz eines Keil ARM-Entwicklungstoos: "This software may only be 
used under the terms of a valid, current, end user licence from KEIL for 
a compatible version of KEIL software development tools. Nothing else 
gives you the right to use it."

Es gibt "irgendwo" einen freien Mass-Storage Code fuer LPC2000 mit gcc. 
Portierung duerfte aber schwieriger sein, da USB-Hardware zwar aehnlich 
aber USB "Macrocell" bei LPC200 und AT91 meines Wissens unterschiedlich.

Wie auch immer. Schliesse mich Joerg an: Fehlermeldungen hier "pasten", 
vielleicht kann man anhand der Meldungen schrittweise weiterhelfen.

von Kloppy (Gast)


Lesenswert?

Ich habs geschafft, den code fehlerfrei zu compilieren. Leider 
funktioniert er aber nicht -> dauernd data/prefetch aborts.
ich habe bemerkt, dass malloc nicht funktioniert?!? könnte das der grund 
sein?
(habe malloc durch statische speicherzuteilung ersetzt -> kein erfolg)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Wo, was und wie funktioniert bei malloc() nicht?  Wie hast du
das ,bemerkt'?

von Kloppy (Gast)


Lesenswert?

ich schick vor und nach malloc ein zeichen über die dbgu. das zeichen 
vorher kommt noch an, dann wird aber eine data abort exception 
ausgelöst.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ah sorry, ich hatte schon vergessen, dass das 'n ARM ist.

von Martin Thomas (Gast)


Lesenswert?

Um dabei weiterhelfen zu koennen, muesste man das Linker-Skript 
(Memory-Layout insbes. Position von "Heap-Start",ueblicherweise per 
provide end), den Startup-Code (wg. moegl. Ueberschneidungen von 
data/bss/stacks und heap) und den Quellcode von sbrk 
(Hardware-Interface/syscall fuer malloc) einsehen. Data-Abort "riecht" 
dannach, dass end (oder wie auch immer genannt) auf eine 
Speicheraddresse zeigt, bei der es kein RAM gibt.

Martin Thomas

von Kloppy (Gast)


Lesenswert?

Ich hab die drei Files mal angehängt.
Noch zu sagen ist, dass ich noch keine Funktionen ins RAM kopiere 
(__ramfunc auskommentiert). Wenn ichs mache, funktioniert noch weniger.

Auf welcher Adresse sollte denn der Heap-Start sein?

von Markus L. (kloppy)


Angehängte Dateien:

Lesenswert?

Noch ein Versuch die Files anzuhängen.

von Martin Thomas (Gast)


Lesenswert?

Heap-Start ("end") ist lt. dem Linker-script 1000bytes nach RAM_TOP, das 
kann nichts werden, daher auch die data abort exeception. PROVIDE (end = 
.); verschieben direkt nach _end = .; . RAM length und STACK origin 
nochmal pruefen, sieht etwas seltsam aus, das . += 1000 noch seltsamer. 
Linker-Skript ist fuer gcc4-feature "unused code removal" nicht 
geeignet.

von Markus L. (kloppy)


Lesenswert?

Also ich hab das . += 1000 entfernt und die memoryaufteilung 
folgendermassen gemacht:

MEMORY
{
  FLASH (rx) : ORIGIN = 0x00100000, LENGTH = 0x00010000
  DATA (rw)  : ORIGIN = 0x00200000, LENGTH = 0x00004000
  STACK (rw) : ORIGIN = 0x00204000, LENGTH = 0x00000000
}

Laut Konsole (Auszug aus Eclipse) sollte sich alles in einem gültigen 
Adressberiech befinden:

002010e0 B usbms_request_sense_data
002010f4 B DBG_EVT
002010f8 A _bss_end_
002010f8 A _end
002010f8 A end
00204000 N Top_Stack

Das Problem vom Data Abort bleibt aber bestehen. Was meinst du mit
"Linker-Skript ist fuer gcc4-feature "unused code removal" nicht
geeignet"?

von Micro M. (micromann)


Lesenswert?

Hallihallo,

ist schon jemand weitergekommen mit dem Zeugs ?
gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.