Hallo Coder, in der ersten Zeile vom Code Ausschnitt ist zwischen char
und code ne Leerzeile, da meckert der Keil ARM compiler. Im zweiten
Ausschnitt wird die Adresse von Ascii_1 angesprochen. da meckert er
natürlich auch. Woran liegt das und warum ist zwischen code udn Ascii_1
überhaupt ein Leerzeichen. Der Code(Ausschnitt) ist für einen 8051
Prozessor den ich auf einen ARM M0+ portieren will. Danke schonmal für
Anregungen und konstruktive Kritik.
1
unsignedcharcodeAscii_1[241][5]={// Refer to "Times New Roman" Font Database...
2
// Basic Characters
3
{0x00,0x00,0x00,0x00,0x00},//
4
{0x00,0x00,0x4F,0x00,0x00},// ( 1) ! - 0x0021 Exclamation Mark
5
{0x00,0x07,0x00,0x07,0x00},// ( 2) " - 0x0022 Quotation Mark
6
{0x14,0x7F,0x14,0x7F,0x14},// ( 3) # - 0x0023 Number Sign
7
{0x24,0x2A,0x7F,0x2A,0x12},// ( 4) $ - 0x0024 Dollar Sign
Jan schrieb:> Hallo Coder, in der ersten Zeile vom Code Ausschnitt ist zwischen char> und code ne Leerzeile
Du meinst ein Leerzeichen.
Das wird nicht das Problem sein, der ARM-Compiler kennt das
Schlüsselwort code höchstwahrscheinlich nicht.
Entferne das, so daß da steht:
1
unsignedcharAscii_1[241][5]={// Refer to "Times New Roman" Font Database...
"code" wird irgendeine Spezialität vom 8051 Compiler sein.
Wahrscheinlich um das Array in das ROM zu legen.
Entweder weglassen oder sinnvollerweise durch const ersetzen.
erstmal eines: Mach aus
unsigned char code Ascii_1[241][5]={ ...
mal
const unsigned char Ascii_1[....
und dann: weißt du eigentlich, was du mit Ascii_1[241][5] da geschrieben
hast? Also was du TATSÄCHLICH dort anrichtest?
Fang lieber an, mit sowas ein bissel zu rechnen und mach ein
const unsigned char Ascii_1[241*5] =
{ .....
};
draus.
W.S.
W.S. schrieb:> Fang lieber an, mit sowas ein bissel zu rechnen und mach ein>> const unsigned char Ascii_1[241*5] => { .....> };>> draus.
was soll das bringen? Der Compiler kann sehr gut selber rechnen. Es
macht auch nichts anderes.
unsigned char code Ascii_1[241][5]={ ...
wenn ich das so mache dann meckert er wenn ich mit
Src_Pointer =&Ascii_1[(b-1)][i]; auf die Adresse zugreifen wll
Jan schrieb:> wenn ich das so mache dann meckert er wenn ich mit>> Src_Pointer =&Ascii_1[(b-1)][i]; auf die Adresse zugreifen wll
und wie ist die genaue Fehlermeldung?
Jan schrieb:> unsigned char code Ascii_1[241][5]={ ...>> wenn ich das so mache dann meckert er wenn ich mit>> Src_Pointer =&Ascii_1[(b-1)][i]; auf die Adresse zugreifen wll
Jede Wette, dass sich bei der Definition von Src_Pointer auch wieder
dieses 'code' findet.
Die müssen ALLE weg!
Überall.
UNd dann muss man den Code studieren, ob dieses 'code' irgendwelche
Auswirkungen hatte. Ob Dinge genau so geschrieben wurden, WEIL es da
eben dieses 'code' gab.
Das Problem:
Wenn du Code von A nach B portieren willst, solltest du schon ganz gut C
können, um zu erkennen, welche Teile speziell und nur für diesen einen
Prozessor geschrieben wurden.
Die Idee "Ich kann das nicht selber schreiben, also portiere ich mir
Code von einem anderen Prozessor auf meinen Zielprozessor" ist zwar
naheliegend, aber ohne ein gewisses Wissen geht das nun mal oft nicht.
Du wärest gut beraten, wenn du analysieren würdest, was die Idee im
Originalcode ist, wie der funktioniert, und dann mit dieser Idee den
Code im Prinzip auf deinem Prozessor neu schreibst. Das bringt dann auch
deine C-Kenntnisse weiter und hat den Vorteil, dass du deinen Code intim
kennst um ihn in weiterer Folge zu ändern oder zu erweitern.
Irgendwelche Anpassungen sind auf dieser Ebene praktisch immer
notwendig. Die Idee, man könne den Code so einfach mir nichts dir nichts
auf einen anderen Prozessor transportieren und alles ist in Butter, ist
ein Trugschluss. Das funktioniert oft ganz einfach nicht.
error: #513: a value of type "const unsigned char *" cannot be assigned
to an entity of type "unsigned char *"
Der Source Pointer ist so definiert
unsigned char *Src_Pointer;
Also sowie ich das verstehe, benutzt man hier den Flash speicher um die
Ganzen ASCII Sachen reinzuschaufeln, da das Ganze viel Speicher braucht.
Ich denke beim Cortex M0+ ist ist es nicht unbedingt nötig.
Jörg schrieb:> Also sowie ich das verstehe, benutzt man hier den Flash speicher um die> Ganzen ASCII Sachen reinzuschaufeln, da das Ganze viel Speicher braucht.> Ich denke beim Cortex M0+ ist ist es nicht unbedingt nötig.
Ich glaube, daß Du das eigentliche Problem nicht verstanden hast.