www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATGNW100 - Programmabbruch mit 'Bus Error'


Autor: PLV2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
bei einigen (selbstkompilierten) Programmen komme ich bisher trotz 
ausgiebigen 'Kompilerfeilens' nie über den Punkt hinweg dass das 
Programm wie gedacht startet, dann aber mittendrin (und immer derselben 
Stelle) mit der Angabe 'Bus Error' auf der Kommandozeile den Geist 
aufgibt.

Als einzige Zuordnung von Gemeinsamkeiten dieses 'Fehlers' ist mir 
bisher möglich zu erkennen das alle so abbrechende Programme sich mit 
120 bis 300 KB Codegrösse oberhalb irgendwo in anderen Systemen schon 
mal erlebter 64kB 'Grenze' bewegen. In Linux sollte das jedoch 
eigentlich ja egal sein.

Zweite Gemeinsamkeit ist ein jeweils vorhandener Kommunikationsablauf. 
Sei es seriell, USB oder LAN. Doch auch bei Versuchen mit deaktivierter 
Kommunikationsverbindung  änderte sich nichts - womit ich nun meine das 
meine erste Vermutung dieser 'Bus Error' resultiere alleinig aus evtl. 
externer BUS-Anbindung der Schnittstellenbausteine nicht zutreffend 
scheint.

Was kann als Ursache dieses Abbruchs angenommen werden und wie lassen 
sich solche Abbrüche verhindern ?

Peter

Autor: Sebastian C. (basti79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ein "Bus Error" ist meist (ob es noch andere Fälle gibt weiß ich gerade 
nicht) ein alignment Problem. Ich vermute du verwendest für deine 
Kommunikation eine struct bei der du dem Compiler des Alignment 
verbietest, denn ansonsten sollte dieser das Problem automatisch beheben 
(oder er hat einen Bug ;)). Versuchs evtl. auch mal mit -Wall, ich weiß 
nicht ob er das zumindest feststellt und dir mitteilt.

Die Sache ist dass bei i386 der Zugriff auf unaligned Daten nur 
langsamer wird, der Prozessor dies aber generell unterstützt. Bei 
anderen Architekturen ist dies nicht vorgesehen, wenn man es doch 
versucht gibts einen Bus Error.

Greets
  Sebastian.

Autor: PLV2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,
danke - das Alignment ist so wie von Dir beschrieben damit sehr 
naheliegend, bzw. wird der Grund sein.

Ich probierte es gestern mit einer Linux SPS-Bibliothek (listnodave). 
Genau dort war im Abbruchspunkt (in Bezug auf -Wall : nach fehlerfreier 
Kompilierung) zu erkennen dass es anscheinend genau an den Stellen 
abbrach wo der Sourcecode zwecks Anpassung an das ARM(-noAlignment) 
diesbezügliche Preprozessordirectiven bereits beeinhaltete.

Demnach werde ich da nun mal suchen; dem ARM Makeup (mit dem selbe 
Bibliothek bei mir im ARM läuft)  wurde dabei früher an der Stelle als 
Linkerflag   -malignment_irgendwas... hinzugefügt. Wo da was genau 
bewirkt wurde weiss ich so nicht mehr, ist schon lange her und 
mittlerweile im Source berücksichtigt. In den älteren Versionen war das 
aber noch von hand zu justieren und ist somit reversibel. Die werde ich 
gleich versuchen neu zu beleben, vielleicht finde ichs damit raus.

Somit lege ich da mal los,
vielen Dank
Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.