mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmvorstellung "CCPro-Loader" - natives C (ohne Interpreter) auf der C-Control Pro


Autor: Thomas B. (messier)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Hallo,

das von mir angekündigte Beitrag "CC-Pro mit eigenem Hex-File programmieren" 
Loader Programm für die C-Control Pro kann nun hier (siehe Attachment) 
heruntergeladen werden. Es handelt sich um eine erste Version des 
Programmes welches als "Proof of Concept" zu verstehen ist.

Mit dem Programm kann man Hex-Files die man z.B mit AVR-Studio erstellt 
hat auf die C-Control Pro raufspielen, ohne dass dessen Bootloader 
gelöscht werden muss. Man könnte somit also immer noch Programme mit der 
Conrad IDE entwickeln.

Warum der Aufwand?
Ganz einfach, mit der Conrad IDE lässt sich nur Interpretiertes C 
(Compact-C) schreiben, was unnötig Rechenleistung verschwendet.

Warum nicht gleich einen "normalen" Atmega128 verwenden?
Hier auch ein bisschen Werbung für Conrad: Derzeit bietet Conrad mit dem 
Probot Einsteigerset mit ca 62€ ein sehr günstiges Komplettset zum 
Einstieg in die Mikrocontrollertechnik an. Im Vergleich zum Asuro ist 
der Mikrocontroller (basierend auf dem Atmega 128) deutlich 
leistungsfähiger und die Sensorenpalette ist auch umfassender 
aufgestellt.

Um die CC-Pro nun mit dem eigenen Hexfile zu Programmieren kann man 
immer noch das mitgelieferte Programmierkabel (beim ProBot 
praktischerweise auch noch USB) verwenden (das Programm verwendet ja 
auch noch den gleichen BootLoader ^^).

Im Laufe der Zeit werde ich es sicher noch ein paar mal updaten, 
vorallem um die Bedienung zu verbessern. Ein Linux-Version ist auch in 
Planung.
SourceCode stell ich zu Verfügung sobald ich ihn etwas überarbeitet habe 
g

Um das Programm starten zu können, muss das .net Framwork installiert 
sein.

Natürlich kann ich bei eventuellen Schäden an der C-Control Pro keine 
Haftung übernehmen.

mfg Thomas

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann ohnehin nicht wirklich nachvollziehen, warum auf der C-Control 
ein Interpreter laufen muss. Die IDE ist wirklich schön aufgebaut und 
man kommt damit sehr schnell zu brauchbaren Ergebnissen. Und das, weil 
es viele nützliche API-Funktionen gibt. Aber diese könnte man doch auch 
als Bibliothek implementieren, die mit einem ganz normalen C-Compiler 
zusammenarbeitet. (Mal abgesehen von dem Multithreading - das ich 
persönlich noch nie ausprobiert habe)

Aber der Interpreter ist halt wirklich langsam (40µs zum Setzen von 
einem Portpin...), das muss doch nicht sein.

Ich hab die C-Control selbst in zwei Projekten drin und bin besonders 
bei den neuen Megas von der Unempfindlichkeit gegenüber EM-Einstrahlung 
überzeugt. Das liegt wohl an der Multilayerkarte und dem massiven 
Metalldeckel, den die drauf haben.

Mit deinem Tool ergeben sich vor allem für die 128er ganz neue 
Einsatzmöglichkeiten. Der Interpreter ist nämlich das einzige, was daran 
wirklich stört. Der Preis ist für die EM-Festigkeit auch ok. Eine 
Stromschiene mit einem 10kA/300V Puls direkt daneben macht da gar 
nichts.

Was mich schon immer interessiert hat, ist, wie groß der C-Control 
Bootloader eigentlich ist. Beim Übersetzen wird ja angezeigt, wie viel 
Code das Programm verbraucht. Aber wie groß darf es denn werden? Im 
Endeffekt muss der Booltoader ja in der Bootloadersection sein. Denn mit 
deinem Programm werden Hexfiles ab Adresse 0x0000 geladen. Wenn diese 
Section beschrieben wird, muss der Loader dafür in der Loadersection vom 
AtMega liegen und die kann nur ein paar verschiedene Größen haben, die 
per Fuse eingestellt werden. Aber auslesen kann man den Bootloader 
bestimmt nicht.

Kann die C-Control-IDE eigentlich den Bootloader updaten? Wenn die 
Schreibschutzfuses nicht gesetzt sind, müsste ein Anwendungsprogramm den 
Bootloader überschreiben können. Wie sieht es mit dem Auslesen des 
Bootloaders aus, wenn man ihn versehentlich zerstört hat, wärs ganz 
sinnvoll, wenn man ihn wieder drauf machen könnte...


Grüße,

Peter

Autor: Thomas B. (messier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was mich schon immer interessiert hat, ist, wie groß der C-Control
> Bootloader eigentlich ist. Beim Übersetzen wird ja angezeigt, wie viel
> Code das Programm verbraucht. Aber wie groß darf es denn werden?

Gute Frage, um die ich mich auch mal kümmern werde um das Schreiben von 
zu großen Programmen zu verhindern.

> Endeffekt muss der Booltoader ja in der Bootloadersection sein. Denn mit
> deinem Programm werden Hexfiles ab Adresse 0x0000 geladen. Wenn diese
> Section beschrieben wird, muss der Loader dafür in der Loadersection vom
> AtMega liegen und die kann nur ein paar verschiedene Größen haben, die
> per Fuse eingestellt werden. Aber auslesen kann man den Bootloader
> bestimmt nicht.

Kann ich mir auch nicht vorstellen, aber da ich nun weiß wie das 
Kommunikationsprotokoll aufgebaut ist, könnte man sich den Bootloader 
selber nachschreiben. Ist halt die Frage inwiefern das noch legal ist.

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab gerade was lustiges entdeckt beim Conrad:

C-Control Mega128 Chip Version (ein programmierter AtMega128):
kostet 8,37 Euro incl. MwSt. beim Conrad

Ein unprogrammierter AtMega128:
kostet 20,30 Euro incl. MwSt. beim Conrad

Aber an die 7,25 Euro von Reichelt kommen beide nicht ran...

Grüße,

Peter

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wird der AVR denn angesteuert? USB?
Wenn du dein Programm nun noch OpenSource machen würdest, könnte ich es 
mal mit einer Linux-Portierung versuchen...

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die C-Control Programmierschnittstelle ist RS-232.

Grüße,

Peter

Autor: Thomas B. (messier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven P. wrote:
> Wie wird der AVR denn angesteuert? USB?

Prinzipiell per Rs232, nur ich verwende einen USB-Rs232 Converter.

> Wenn du dein Programm nun noch OpenSource machen würdest, könnte ich es
> mal mit einer Linux-Portierung versuchen...

Das wär toll, aber bitte hab noch ein paar Tage Geduld wegen dem 
Sourcecode. So wie der jetzt aussieht zeig ich ihn ungern her ^^

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist doch keine Schande... was ihr euch immer damit habt...

Autor: Thomas B. (messier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bevor man jemanden in sein Heim lässt, sollte man dieses zumindest etwas 
aufräumen ;)

Wenn du das Programm wirklich portieren willst, kommt das ja auch dir 
zugute.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich jeden Hex jetzt in die C Control einladen kann, kann ich dann 
eigentlich den Bootloader bzw. Interpreter durch pgm_read_byte() 
auslesen?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der Interpreter befindet sich ja so nicht mehr im Flash. Wenn 
Interesse daran hast schau mal in den Interpreter Ordner von der Conrad 
IDE - ganau da is er drinnen ;)
Den Bootloader auslesen wird wohl eher nicht möglich sein, da Conrad 
bestimmt die Fuses gegen auslesen gesetzt hat. Mit pgm_read_byte() wird 
es ohnehin nicht funktionieren, da damit nur Adressen bis 64k ausgelesen 
werden können. Für größere Adressen gibt es pgm_read_byte_far(). Aber 
versuchen kannsts ja mal.

Autor: Thomas B. (messier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Changelog V0.1:

- Hexfile wird nun auf Korrektheit überprüft
- provisorischer Support für Mega32 (Derzeit wird da nur auf die 
Programmgröße geachtet)
- Support von Programmen > 64k beim Mega128 (bis max 124k, 4k benötigt 
der Bootloader)
-Ladebalken
-Letztgewählte Einstellungen speichern

Da die Mega32 wahrscheinlich etwas anders initialisiert wird (die Conrad 
IDE kann sie ja unterscheiden) und ich selbst keine besitze, bräuchte 
ich jemanden der mir die Kommunikation zwischen Conrad IDE und Mega32 
aufzeichnet. Ich hab das mit diesem Programm gemacht:
http://www.serial-port-monitor.com/Download/free-s...
Dabei würde ich eine Kopie der Anfrageansicht benötigen.

Da ich die Datei aus irgendeinen Grund nicht mehr anhängen kann, hier 
der Link dazu:

http://www.file-upload.net/download-1580300/CCPro-...

mfg Thomas

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Programm ist übrigens mit Hilfe von Mono auch unter Linux lauffähig. 
Sollte jemand Probleme mit dem Einbinden des Voltcraft Programmierkabels 
haben, kann ich dazu auch noch ein kurzes Tutorial schreiben.

lg thomas

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Version 0.2 kann hier[1] runtergeladen werden

Changelog V0.2:

-Support für Robonova (basierend auf den Programm von i-bot)
-Modularer Aufbau: Unterprogramme für unterschiedliche Bootloader können 
nun als Plugins (einfache dll's) eingebunden werden.
Derzeit werden folgende Bootloader unterstützt:
C-Control Pro Mega 128
C-Control Pro Mega 32 (nicht getestest)
Robonova (nicht getestet)
-Konvertieren von Hex-Dateien zu Binaries (Hex2Bin) nun möglich
-Fehler beim Laden der Config-Datei unter Linux (Mono) beseitigt.

lg Thomas

[1] http://www.file-upload.net/download-1615345/CCPro-...

Autor: Josef R. (josefr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen

habe mir ein ccontrol pro mega 128 gekauft um über eine serielle 
schnittstelle daten einzulesen.

nach dem durchlesen eurer beiträge glaube ich, dass ihr mir weiterhelfen 
könnt.

die schnittstelle liefert mit 3200 baud 1 startbit 8 datenbits und 2 
stopbits, wobei das erste stopbit high und das zweite low ist.

das program schaut so aus
// Hauptprogramm
//
void main(void)
{
    byte c;
    char Text1[37];
    char Text2[27];

    Text1="-- Test serielle Schnittstelle --";
    Text2="-WR Schnittstellentest-";

    Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,47);
                                                    //Init RS232: 19200 
bps, 8 Bit, 1 Stop, NP
    Serial_Init(1,SR_8BIT|SR_2STOP|SR_NO_PAR,287);   //287
                                                    //Init RS232: 3200 
bps, 8 Bit, 2 Stop, NP
    c=0;

    Serial_WriteText(0,Text1);
       Serial_WriteText(0,Text2);
     {
            Serial_Write(0,c);
            Serial_WriteText(0,"1");
            c=Serial_Read(1);
            Serial_WriteText(0,"2");
            Serial_Write(0,c);
            Serial_WriteText(0,"3");
     }while (1);
}


das programm bleibt bei Serial_WriteText(0,"1"); hängen. er wartet auf 
daten von der schnittstelle. habe einen PC angehängt und 2 stopbits über 
die RS 232 geschickt, das funktioniert mit jeder baurate.

hat vielleicht jemand eine idee?

danke

Autor: ha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab früher auch ein paar Sachen mit C-Control gebaut. Heute würde 
ich davon abraten. Wer weiß, wie lange Conrad noch Lust dazu hat, die 
Dinger zu bauen. Dann steht man da mit seinem proprietären System.

Autor: Stefan Lutzenberger (nafets)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jungs,

also jetzt hab ich es geschafft mein Board funzt nicht mehr. Wollte mal 
das Tool CCPro-Loader0.2
testen ist ja hoch interessant! Also hab mit AVR Studio ein Hex File 
erstellt und wollte es mit dem Loader
auf die Unit hochladen! Dazu muss ich sagen das ich die C Control Pro 
128 und das Board dazu besitze.
Hat über USB nicht gefunzt! Fehlermeldung "Init faild!" O.k egal 
probiere ich es über RS232 cool funzt die
Hex Datei wird übertragen! Tja das war dann aber auch das Ende vom Lied. 
Jetzt kann ich leider die
IDE von Conrad nicht mehr benutzen bekomme keine Verbindung mehr zur CPU 
weder über USB noch
über RS232. Denke mal das ich dann also den Bootloader überschrieben 
habe! Aber warum? Jetzt kann
ich zwar mit dem Loader Hex Files übertragen aber die Programme starten 
auch nicht. Wie ist das mit
den Test Hex File BootLoaderTest.hex welche man downloaden kann ist das 
für den Mega 128 nicht geschrieben? Muss ich
mir jetzt nen neuen Prozessor kaufen um wieder mit der IDE arbeiten zu 
können? Was hab ich falsch
gemacht? Muss ich im AVR Studio einstellen das ich keinen Bootloader mit 
in das HEX File compilieren darf?
Kann ich die CPU einschicken und wird mir dann ein Bootloader wieder 
aufgespielt? Kann ich den
Bootloader wieder selbst aufspielen? Warum kann ich nicht den Bootloader 
selbst aufspielen? Wie kann
ich feststellen das wirklich kein Bootloader mehr auf der CPU ist?

Bin und jede Hilfe und Antwort dankbar!

Tschau Stefan

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sry wenn das Programm dir Probleme bereitet.

Hast du das Hex-File per avr-gcc erstellt, oder per Assembler? Das 
Hex-File das vom Assembler erstellt wird, ist nämlich etwas anders 
aufgebaut, als das was von avr-gcc erstellt wird. Meine Hex2Bin Funktion 
war leider etwas stümperhaft programmiert, wodurch die 
Assemblerprogramme nicht funktioniert haben. Hab das auch schon lange 
ausgebessert, aber nie hochgeladen weil das Interesse anscheinend nicht 
besonders hoch war.

Zurzeit bin ich aber auf Urlaub und habe keine Möglichkeit dir das 
überarbeitete Programm hochzuladen.

Aber jetzt mal eine gute Nachricht. Den Bootloader hast du mit 
Sicherheit nicht überschrieben. Das einzige was weg ist, ist der 
Interpreter. Den könntest du mit meinem Programm auch wieder raufspielen 
(ist irgendwo im Ordner von der IDE versteckt; glaub der Name war 
mega128.bin)
Aber normalerweise müsste die IDE das selber machen.

BootloaderTest.hex ist für den Probot128 geschrieben. Da ich die 
Pinbelegung des Evaluation Boards nicht kenne, weiß ich nicht welche 
Auswirkungen das Programm auf diese hat.

Übrigens: Mein Programm "unterhält" sich vor und während jedem 
Programmiervorgang mit der C-Control. Solange da kein Fehler auftritt, 
kann nichts kaputt sein.

Zur Fehlerbehebung würde ich mal die klassischen Windows-Methoden 
ausprobieren: Stecker ein- und ausstecken - Programme beenden und wieder 
starten ;)

Autor: Stefan Lutzenberger (nafets)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

O.k Super Danke für den Tip und die schnelle Antwort.
Hab den Interpreter wieder reingeladen mit deinem Programm jetzt
funktioniert wieder alles. Währe schön wenn Du deine überarbeitet
Version noch hochladen würdest. Frag mich nur warum mein Programm
welches ich mit avr-gcc erstellt hab nicht funktioniert hat.

Na ja dann noch schönen Urlaub und Danke  Danke Danke

Stefan

Autor: xs650driver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Allso ich wäre sicherlich auch daran interessiert, dass es hier weiter 
geht.

mfg

Matthias ...

Autor: Thomas B. (messier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

tut mir leid, dass ich mich nicht gemeldet habe.
Die Version mit der ueberarbeiteten Hex2Bin Funktion war lange Zeit 
nicht auffindbar. Heute hab ich sie zufaelligerweise wiederentdeckt.

Da ich mittlerweile keine C-Control Pro mehr habe kann ich daran aber 
leider nicht mehr weiterarbeiten.
Source ist natuerlich wieder dabei. Vielleicht brauchts ja noch jemand.

Hier der Downloadlink:

http://www.file-upload.net/download-2297679/CCProL...

Autor: Wolfgang Brumme (Firma: privat) (erzgebirgler47)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank,
werde es demnächst mal testen.
Viele Grüße
Erzgebirgler47

Autor: erzgebirgler47 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo messier,

ich habe es heute getestet:
-  kleines Proggi das Daten seriell ausgibt
-  .bin-datei mit Bascom erzeugt
-  mit CCProLoader.2.1 auf die C-Control-Pro übertragen
-  lief auf Anhieb fehlerfrei auf der CC-Pro 128
-  nach Reset der CC-Pro wurde diese von der Original-IDE weiterhin 
erkannt
-  mit CCProLoader.2.1 die Original - interp128.bin
   auf die C-Control-Pro übertragen
-  altes Proggi von der Original-IDE auf die C-Control-Pro übertragen
-  Testlauf fehlerfrei.

Fazit:
Wer schnellere (nicht interpretierte, sondern compilierte) Anwendungen
auf der CC-Pro laufen lassen will, sollte sich Bascom und 
CCProLoader.2.1
beschaffen und benutzen. Mit dem CCProLoader.2.1 ist die Herstellung des 
Urzustandes problemlos möglich.

Noch eine Frage:
Wenn jemand bei nachfragt, darf ich dann den CCProLoader.2.1 
weitergeben?

Gruß und besten dank nochmal
Erzgebirgler47

Autor: Thomas B. (messier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für das nette Feedback.

Klar kannst das Programm weitergeben, sonst hätt ichs nicht online 
gestellt.
Den Source kannst ebenfalls für deine Zwecke verwenden, solange es nicht 
kommerziell ist.

lg Thomas

Autor: Günter D. (fluxxy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich habe nach der Anleitung von erzgebirgler47 die CCpro mit einem 
Programm und einer seriellen Ausgabe getestet und funktioniert prima.

Meine Frage:
Lässt sich auch die mitgelieferte LCD oder die Tastatur ansteuern?

In den Schaltplänen sind Schieberegister. Doch keine ich blick da nicht 
mit der "Bit-Schubserei" durch.

Fluxxy

Autor: Herby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi leute!
verfolge das thema mit großem interesse, hab leider selber nicht viel 
beizutragen da ich noch anfänger bin und den probot 128 jetzt erst 
gekauft habe...
eine frage habe ich allerdings: wäre es möglich den probot sozusagen 
über PC aus einer art standby-modus aufzuwecken? am besten noch übers 
internet und mit linux? bitte den thread weiterführen!
Liebe Grüße und weiter so

Autor: no0n (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,
ich weiß der Thread ist schon ziemlich tot, aber leider ist der Link zur 
letzten Version ebenso tot.
Hat zufällig noch jemand das Aktuelle Programm auf dem Rechner und würde 
es irgendwo hochladen?

Wäre wirklich toll.

Gruß.

Autor: c-control-anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Moin,
> ich weiß der Thread ist schon ziemlich tot, aber leider ist der Link zur
> letzten Version ebenso tot.
> Hat zufällig noch jemand das Aktuelle Programm auf dem Rechner und würde
> es irgendwo hochladen?
>
> Wäre wirklich toll.
>
> Gruß.

dem kann ich mich nur anschließen, ich brauche unbedingt das "Aktuelle 
Programm",  Thomas B. oder irgendjemand, der sich damit beschäftigt hat 
und das Programm noch hat, bitte stellt es neu ein

Autor: m0nk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist kaum zu glauben,dass ihr es geschafft habt weder Source noch 
spätere Versionen anzuhängen.

Autor: Finwood (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
no0n schrieb:
> Moin,
> ich weiß der Thread ist schon ziemlich tot, aber leider ist der Link zur
> letzten Version ebenso tot.
> Hat zufällig noch jemand das Aktuelle Programm auf dem Rechner und würde
> es irgendwo hochladen?
>
> Wäre wirklich toll.
>
> Gruß.

Fänd' ich auch super... -_-

LG Fin

Autor: Heron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider nichts zu finden, sehr schade...

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.