EEPROM für programmieren

OP #2137515
Lesenswert?

Tag miteinander,
Stehe bei neuem Projekt vor neuen Problemen (wie überraschend =)).

Ziehl
Habe vor in einen EEPROM bestimmte Daten reinzuschreiben. EEPROM 24FC64 
o.ä. Darin sollen für einen USB-HUBC die Parameterdaten enthalten sein.

Vorkenntnisse
Wie ein HEX- bzw. BIN- oder EPR-File auf das EEPROM kommen habe ich 
inzwischen rausgefunden. Habe einen Programiergerät + Software (GALEP5) 
diese unterstützen meine EEPROM's und obengenannte Datentypen.

Zu Verfügung stehende Software
Zum überspielen von HEX-Files     GALEP5.
IDE                               µVision4 und Silicon Laboratories IDE
Compiler                          SDCC und KEIL

Problembeschreibung
Wie muss ich meinen C-Code für die Compiler gestallten damit ein 
brauchbarer HEX- oder BIN-File am ende der Kompilierung produziert wird?


Habe in einen anderen Beitrag 
(Beitrag "Intel Hex File für EEprom erstellen") schon einen Hinweis auf die 
Lösung bekommen. Wie das Ganze allerduings mit meiner Umgebung zu 
realesieren ist, ist fraglich. Wenn Ihr ein Paar nutzlichen Tips bzw. 
Techniken für mich habt werde ich mich gewaltig freuen. Versprochen =)
Gast #2137539
Lesenswert?

Da Du ja Daten und keinen ausführbaren Programmcode in das EEProm 
schreiben willst, brauchst Du keinen Compiler, sondern einen einfachen 
HEX-Editor, mit dem Du das entsprechende HEX- oder BIN-File zu Fuß 
-sprich: von Hand- erstellst. Kann der Editor nur BIN-Files, besorgst Du 
Dir noch das Tool BIN2HEX zur Umwandlung in ein HEX-File. Mit diesem 
File fütterst Du dann Dein Programmiergerät - fertig!
OP #2137549
Lesenswert?

Sauger schrieb:
> Ist nicht ernst gemeint, oder doch?

Abend,
Schon ernst, denn mit diesem Bsp.-Code:
1
...
2
int compare (const void * a, const void * b)
3
{
4
    struct Str_A *sa = (struct Str_A*)a;
5
    struct Str_A *sb = (struct Str_A*)b;
6
    return (sb->proz - sa->proz);
7
}...
kann ich den EEPROM nicht programieren, rein technisch schon, natürlich, 
aber nicht für diesen Zweck.
Hier Beitrag "EZ-USB" ist ein änliches Problem 
behandelt, leider ohne Lösung.

Wenn ich das Problemm genauer beschreiben soll, dann hiese es: Welche 
Änderungen bzw. Techniken sind an bestehendem Entw.-Umgebung notwendig 
damit in C die Device Descriptoren "schön" parametriert bzw. eingegeben 
werden können.

P.S. Ihre Bemerkung zählt nicht zu den "Tips bzw. Techniken"

Oder_doch schrieb:
> Das entsprechende HEX- oder BIN-File zu Fuß
> -sprich: von Hand- erstellst.

Danke für den Tip! Aber genau das möchte ich vermeiden =)
Gast #2137566
Lesenswert?

Hallo,

"Wenn ich das Problemm genauer beschreiben soll, dann hiese es: Welche
Änderungen bzw. Techniken sind an bestehendem Entw.-Umgebung notwendig
damit in C die Device Descriptoren "schön" parametriert bzw. eingegeben
werden können."

Und genau dafür ist ein Compiler eigentlich nicht gedacht.

Man kann das zwar alles umbiegen, aber bis man z.B. die KEIL-IDE so 
umgebastelt hat, hat man das mit einem Hex-Editor (es gibt auch welche, 
die Ascii in Hex wandeln...) 10x schneller fertig.
Gast #2137576
Lesenswert?

return (sb->proz - sa->proz);
Das was Du da hst, ist ein EEprom, kein uC.
Das kann nicht rechnen. Genau genommen kann es gar nichts.
Du kannst an den Adresspins eine Adresse anlegen
und bekommst dann an den Ausgängen ein 8 Bit Antwort, also genau das 
Bitmuster, dass an der Adresse hinterlegt ist.
Du kannst also grob gesagt 64000 Bitmuster hinterlegen.
Wenn Du einen uC z.B. vom Typ 8031 an die Ein- und Ausgänge schaltest, 
dann kannst Du z.B. mittels eines Compilers ein Hex file erzeugen, 
welches dann Deinem uC das programm zur Verfügung stellt, dass ihm 
ermöglicht
return (sb->proz - sa->proz);
zu berechnen.
OP #2137695
Lesenswert?

Abend,
Eigentlich habe ich an die Funktionen "EEPROM-Variable auf feste 
Adressen legen" aus dem Tutorial 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM gedacht.

Den eine Descriptor-Tabelle muss ich sowieso erstellen, warum dann nicht 
gleich in C wenn diese dann noch kompilierbar ist.

Bsp.
1
#include <...>
2

3
#define EESIZE 0x1FF;
4
#define bLength 0x000;
5
#define bDescriptorType 0x001;
6
.
7
.
8
uint8_t ee_mem[EESIZE] EEMEM =
9
{
10
   [bLength]   = 0xA2,
11
   [bDescriptorType]  = 0x05,
12
   .
13
   .
14

15
};

Das schön den Compiler abarbeiten lassen und brennen.
Aber so wie es aussieht werde ich nicht drumherum kommen mir den GCC zu 
ziehen und diesen in die KEIL MDK oder Silicon Laboratories IDE 
einbinden und mit dieser Methode die HEX-Descriptor-Tabellen erstellen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren