Produkte
Preise
Dienstleistungen
Download
Katalog
Bestellung
Forum
Sitemap
 

Micro C Frequently Asked Questions

[1] Ich möchte mehr Information über Ihre Produkte haben. Wie finde Ich sie?
[2] Welches Produkt brauche Ich für Code Entwicklung für [ Mikrocontrollername ]?
[3] Welcher Unterschied besteht zwischen Demo-Version und lizensierte Version?
[4] Unterstützt Mikro C [mein Lieblingsprozessor]?
[5] Wie größ Programm kann Ich mit MikroC-Compiler binden?
[6] Wieviel Code kann in (nK) Speicher einfügen?
[7] Arbeiten Ihre Tools mit [ Hersteller] Boards?
[8] Können Sie ein Board empfehlen, das mann mit Ihren Werkzeugen verwendet?
[9] Wie kofiguriere ich Speicher-/Registers-/Peripheraladressen?
[10] Hat Mikro C C-Bibliotheken für [Device Name]?
[11] Ist Mikro C ANSI-Compiler?
[12] Unterstützt Mikro C-Compiler Floating Point?
[13] Enthält Micro C "math.h" and ähnliche Functionen?
[14] Kompiliert Mikro C-Compiler C++?
[15] Welcher Unterschied besteht zwischen C-FLEA und Ihren anderen Entwicklungspaketen?
[16] Enthält Entwicklungssystem Linker?
[17] Erzeugt Micro C Assembly Code? Ist hier Assembler nötig?
[18] Kann Micro C Quellcode in Assembler Srache als Ausgabe erzeugen?
[19] Anbieten Ihre Tools "C" Quellcode Fehlerbeseitigung?
[20] Kann ich Code kompilieren, der mit den [Tools der anderen  Herstelleren] entwickelt ist?
[21] Kann ich mein ' xxx ' Entwicklungssystem upgraden, um 'yyy ' Prozessorfamilie zu unterstützen?
[22] Wie lese Ich Single Port Bit Status?
[23] Warum bekomme Ich dosspawn Fehler?

[1] Ich möchte mehr Information über Ihre Produkte haben. Wie finde Ich sie?
Besuchen Sie bitte unsere Web-Seite http://www.bipom.com für Produktlistungen, FAQ und Demos. Die meisten Produkte haben heunterladbare Demo, die Zugang zur Dokumentation geben und Haupteigenschaften auszuprobieren helfen.

Wenn Sie auch auf http://www.bipom.com keine Antwort finden, - wenden Sie sich bitte mit spezifischen Fragen an unsere technische Unterstützung.

[2] Welches Produkt brauche Ich für Code Entwicklung für [Mikrocontrollername]?
Wenn Sie mit "C" für bestimmte Prozessorfamilie entwickeln möchten, enthält unsere "Entwicklungssystem" alles was Sie brauchen. (d.h.: Wenn Sie Code für 8051 Familie entwickeln möchten, brauchen Sie "8051 Entwicklungssystem").

Jedes Entwicklungssystem enthält:

  • C-Compiler und Bibliothek
  • Assembler, Linker und Bibliothekmanager
  • TTY style resident Monitor/Debugger (außer einigen Kits)
  • Wahlweise Simulator (für einige Werkzeuge, wird extra gekauft)
  • Wahlweise Source-Level Debugger (für einige Toolkits, wird extra gekauft)
  • Windows IDE und Befehlszeile Tools
  • Make-/Touch Dienstprogramme
  • Windows Toolkits Configurator
  • Ausführliche Dokumentation
  • Beispiel-Projekten
  • Dienstprogramme und Extras

[3] Welcher Unterschied besteht zwischen Demo-Version und lizensierte Version?
Pakete, die auf Web-Seite verfügbar sind, enthalten erforderliche Software für Entwicklung, aber mit folgenden Beschränkungen:

  • Quellcode wird mit 500 Zeilen beschränkt
  • Binärcode wird mit 2K beschränkt
Wenn Sie bei Ider nstallation gültige Seriennummer eingeben, werden Beschränkungen beseitigt.

[4] Unterstützt Mikro C [mein Lieblingsprozessor]?
Mikro C ist sehr flexibel in Unterstützung der weiterentwickelten Prozessoren, und passt sich den Prozessoren leicht an. Wenn Sie Werkzeug für weiterentwickelten Prozessor wählen, beachten Sie folgendes:

  • Mikro C unterstützt zurzeit alle Prozessoren, die Standard Instruction Set von Mikrocontrollerfamilie  68HC08, 6809, 68HC11, 68HC12, 68HC16, 8051/52, 8080/85, 8086, 8096 oder AVR benutzen.
  • Kleine 8051 und AVR Weiterentwicklungen, die long JMP- und CALL-Anweisungen nicht unterstützen, werden auch unterstützt.
  • Zusätzlichen Peripheral Registers (werden in 8051 Familie als SFRs genannt) werden für direkten Zugriff zu Peripheral Features von C leicht definiert.
  • Superset  Prozessor Architekturen (mit Extra Instructions und/oder zusätzliche Speicheradressierung in Instruction Set) arbeiten gut; Extra Eigenschaften können aber nicht direkt erreichbar sein.
  • Subset oder modifizierte Prozessoren (die nicht alle Instruction unterstützen, oder haben Instructions, die von dem Standard Set unterscheiden), können möglicherweise nicht arbeiten. Die unverständlichen Instructions (die in der Datenbearbeitung normalweise nicht verwendet werden) verursachen normalerweise kein Problem (sie können in der Bibliothek verwendet werden, aber wenn Sie sie ändern müssen, so wird komplette Quelle zur Verfügung gestellt ). Manchmal benutzt man MACRO's für Überzetzung und Simulation von Instructions, die von Compiller automatisch erzeugt werden.
BEACHTEN SIE bitte, daß C-FLEA Virtual Machine Entwicklungstools sind gebildet um mit JEDEM MÖGLICHEM Prozessor zu arbeiten (auch wenn es ist nicht genannte Mikrocontrollerfamilie)!

[5] Wie größ Programm kann Ich mit MikroC-Compiler binden?
[6] Wieviel Code kann man in (nK) Speicher einfügen?
Alle Bipom Werkzeuge unterstützen 16-Bit Adressierung und Minimum 64K Speicher. Die meisten Prozessor Architekturen speichern Code und Daten separat. Mikro C unterstützt das mit verschidenen Speichermodellen. Einige Beispiele:
8051: Code 64K + Daten 64K + 256 Byte Daten
6816: Code 64K + Daten 64K
8086: Code 64K + Daten 64K

Beachten Sie bitte: bis 64K Speicher wird bei Compiler unterstützt, aber nicht bei allen eingebauten Controllern. Wenn Speicher auf Ihrem Targetsystem weniger als 64K ist, werden Sie immer damit beschränkt. Mikro C unterstützt auch Prozessoren, die mehr als 64K Memory Address Space haben. Dafür werden "Bank Switching" Techniken benutzt (ähnliche Techniken versorgen mehr als 64K Code für Prozessoren , die selbst nicht mehr als 64K unterstützen).
Die Frage " Wieviel Code kann man in (nK) Speicher einfügen" hängt von vielen Factoren ab. Normalerweise ist es mehr als Sie hoffen. Micro C erzeugt ziemlich kompaken Code. "Entwicklungssystemen" haben Hand-Coded Assembler Bibliotheken, darum erzeugen sie kompakten Code.  Hier sind einige Beispiele von Anwendungen:

  • Mikro C-Compiler (compiled itself!) 25K
  • ANSI-terminal mit eingebautem XMODEM File Transfer 10K
  • Combination Lock  (rotary encoder, led indicator) 2K
  • Telephone "distinctive ring" Schalter (1 - 3 Linien) 1K

[7] Arbeiten Ihre Tools mit Boards von [Herstellername]?
[8] Empfehlen Sie bitte Board für Ihre Tools?
Unsere Kunden erfolgreich benutzen Micro C mit unseren Mikrocontroller Boards.

Tools sind konfigurierbar: Speicheradressen und I/O Potrs werden eingestellt. Man benutzt sie praktisch mit jedem möglichem Board oder Zielsystem.

Quellcode von Bibliotheken ist verfügbar für "tweaking" für bestimmte Umgebung (normalerweise Einstellung der verfügbaren Speicheradressen). Information über Einstellung von Bibliothek und Memory Map wird eingeschloßen.

Da gibt es kein Problem mit Tools wenn Sie Board mit passendem Mikrocontroller (der hat Instruction Set kompatibel mit Prozessor Familie, die wir unterstützen) benutzen.

[9] Wie kofiguriere ich Speicher-/Registers-/Peripheral Adressen?
Mikro C unterstützt sehr flexible Struktur der Bibliothek: sie haben Möglichkeit Speicheradressen, Prozessor Function Registers, Hardware Adressen und etc. einstellen. Ausführliche Dokumentation wird mit Compiller Bibliothek geliefert.

Dank der Mikro C Linker Struktur (sehen Sie FAQ) sollen Sie nur Srartdatei ändern und builden. Man soll nicht Bibliotheken "rebuilden" oder etwas anderes machen. Mit Kompilierung Option haben Sie jede mögliche Zahl der Strartdataeien und wählen Sie für bestimmte Kompilierung bestimmte Strartdatei.

[10] Hat Mikro C C-Bibliotheken für [Device Name]?
Mikro C hat Bibliothek Funktionen und Definitionen für Steuerung von Prozessor Services (serieller Port, Peripherie Control Registers, etc.). Aber Mikro C hat normalweise keine off-the-shelf Drivers für externe Peripherie oder Geräte, die mit dem bestimmten Prozessor Typ nicht kompatibel sind.

Es gibt aber Ausnahmen (für Prozessoren, die keine eingebaute serielle Schnittstelle haben, I2C-Geräte für 8051). In der Regel gibt es eine Vielzahl von Devices, die man an Mikrocontroller anshließen kann.

Unterstutzung für externe Hardware kann man mit "Pure C" oder Assembly Sprache versorgen. Micro C hat "helper" Funktionen in seiner Bibliothek  (z.B. wenn Sie "printf " für Datenübertragung mit LCD Panel entwickeln möchten, können Sie "format" Subroutine in Bibliothek benutzen).

Wenn Sie es gewohnt sind, Devices an Mikrokontroller anzuschließen und Software (in C oder in Assembly Sprache) für Read/Write Register, Set/Clear Bit und etc. zu entwickeln, so haben Sie kein Problem mit Micro C Tools.

Unser 8051 Entwicklungssystem enthält folgende pre-packaged Bibliotheken:

  • I2C serielle Datenübertragung Bibliothek
  • RTC Real-Time Bibliothek
  • TCP/IP Stack Bibliothek (alle Schichten: CS8900/ARP/IP/ICMP/TCP quelloffen) XRAM Zugang Bibliothek

[11] Ist Mikro C ANSI-Compiler?
Mikro C ist  "near ANSI" Subset Compiler. Er unterstützt 'C' Sprache besser als die meisten anderen Subset Compiler:

  • Alle ' C-' Anweisungen: if/else, while do/while for break continue return goto switch/case/default {} ; asm
  • Alle ' C-' Operatoren: + - */% u.|^ << >> > < == ~ ++ -- ?: , . -> + = - = * =/= % = u. =|= ^ = <<= >> = > = <= != ! () [] sizeof
  • Die folgenden Datentypen:int char unsigned (unsigned char einschliesend) struct union extern static register const void * (Zeiger auf jeden Typ, Zeiger und structs einschließend)
  • Arrays den beliebigen Typen (multi-dimension, Zeiger & structs einschließend)
  • Funktionen können jeden Typ zurückliefern
  • Typumwandlung von Werten zu anderen Typen
  • Dezimal, Oktal- und Hexadezimal Konstanten. z.B.: 127, 0177, 0x7f
  • Volle Unterstützung für Strings  und Charakter Konstanten: (' ' ""). Einschließlich:\n\r\t\b\f \177(Octal) \x7F(Hex) (16 Charakter Konstanten werden unterstützt. z.B.: ' ab'')
  • Inline Assembly Code (single oder multiple Anweisung).
  • Preprocessor Direktiven: #define(fully parameterized & multi-line), #undef, #forget (multi undef - ähnlich zu FORTH forget), #error, #message (Ausgabe Meldung - no error), #include, #if/#ifdef/#ifndef/#else/#elif/#endif (fully nested), #file (Dateiname für Fehlermeldung)
  • Vordefinierte Symbole: __DATE__ __FILE__ __LINE__ __TIME__
Typedef, native Long* / Double / Float / Enumerated Datentypen, Bit Felder WERDEN NICHT UNTERSTÜTZT.

Bibliothek enthält 32 Bits "long" number Mathematische Funktionen. Man kann Sie einstellen um sogar größere Zahlen zu manipulieren. (Compiler 8051 hat auch Floating Point Bibliothek).

[12] Unterstützt Mikro C-Compiler Floating Point?
[13] Enthält Micro C "math.h" and ähnliche Functionen?
Nein, Micro C ist integer (kein Floating Point) C Version. Das beduetet das es keine "float" und "double" Typen unterstützt, und keine "sin(), cos(), tan(), log() etc. Funktionen hat.
Die Entscheidung "Floating Point nicht zu unterstützen" wurde getroffen um Typumwandlung zu vereinfachen und Größe der Runtime Bibliothek zu reduzieren, und auch weil Gleitkomma ist am meisten unnötig in manchen eingebauten Systemen.
Alle Entwicklungssysteme haben long integer Bibliothek, die schnelle Integer Arithmetik für bis 256 Bytes (2048 Bits) Zahlen ausführt. Die meisten Projekte sind mit Scaled Large Integer leistungsfähiger als mit Floating Point.
8051 Compiler hat Floating Point Bibliothek, die 1 von unseren Kunden geliefert hat. Diese Bibliothek und Dokumentation sind frei und auf Gleitkomma Funktionen zu herunterladen.(Wird bei der Kunde geliefert)

[14] Kompilieret Micro C Compiler C++ ?
Nein, Micro C ist Standard C Compiler. Er kompiliert C++ nicht. (Viele C++ Merkmale brauchen mehrmals mehr Overhead als man für klein 8 und 16-Bit Systemen braucht, - also die meisten kleinen eingebauten Systeme werden noch in C entwickelt).

[15]  Welcher Unterschied besteht zwischen C-FLEA und anderen Ihren Entwicklungspaketen?
Alle Entwicklungssysteme erzeugen Code, der am tatsächlichen Target Microkontroller ausgeführt wird. Z.B.: 8051 Entwicklungssystem erzeugt Code, der an 8051/52 Prozessorfamilie ausgeführt wird. C-FLEA Toolset erzeugt Code, der an Imaginär "virtuell" Prozessor (der als effiziente C Platform entwickelt wird) ausgeführt wird. Um C-FLEA Code auf "realen" Systemen zu ausführen benutzt man "Virtual Machine Interpreter", der C-FLEA Maschinencode liest und auf Target Microkontroller ausführt.

[16] Enthält Entwicklungssystem Linker?
Ja, alle eingebaute Compiler enthalen Linker. Linker wird für die Anwendung mit den eingebauten Systemen speziell entwickelt und darum arbeitet er anders als die meisten anderen Linker:
Alle Bibliotheken und linkable Module werden als Asseblersprache Quelldatei (statt binär "Object" Format) gespeichert . Handgefertigt (als im Fall mit den Bibliotheken) oder Assembler Ausgabe von C Compiler.
"Quelle" Linker (SLINK.EXE) führt dieselben Operationen vie andere Objekt Linker aus, aber in Assembler Quellcode:

  • Löst Inter-Module externe Referenzen auf.
  • Löst Bibliothek Referenzen  durch Hinzufügung des notwendigen Codes (Nur die notwendige Bibliothek Module werden hinzufügt) auf. (SLINK unterstützt auch Hinzufügung von bestimmten Teilen der Bibliothek; Feature wird in Object Linker nicht gefunden).
  • Multiple Output "Segments". Code and Daten werden bei der Ausführung in diesen Segments angewiesen (mit SLINK Directives in QuellDatei). So werden Code, interne Daten, Static Daten, Dynamic Daten etc. in bestimmten Speicher-Stellen zusammengestellt. 
  • Update non-public und von Compiler erzeugte Symbole und macht sie eindeutig. Beseitigt Symbol-Konflikten zwischen den Modulen.
SLINK erzeugt Assembly Datei. Mit dieser Datei erzeugt Assembler Binary Programm (Hex Datei).

[17] Erzeugt Micro C Assembly Code? Ist hier Assembler nötig?
Micro C erzeugt Code in Assemblersprache. Alle Entwicklungssysteme enthalten XASM Cross Assembler, der mit unserem IDE  "one step" Compilierung ausführt. Befehlszeile Option hizufügt "C" Quellcode als Kommentar in ASM Listing.

Micro C unterstützt inline Assembly (Assembler Sprache Teilen in C Programm)

asm " ...Ihre Befehle hier... ";      <- Assemble single line.

asm {           <- Assemble multiple lines.
         ... Ihre Assembly Befehle hier...
       }

Beispiel:

asm "NOP"

asm {
NOP
MOV A,#2
}

[18] Kann Micro C Quellcode in Assembler Srache als Ausgabe erzeugen?
Ja! Micro C kann .ASM Datei nicht nur für "C" Quellcode erzeugen, auch aber für gesamtes Programm mit dem kommentierten Bibliothek Quellcode!

Micro C kann wahlweise original "C" Quellcode in erzeugte .ASM Quellcode als Kommentar hinzufügen. Listing enthält "C" Quellcode, erzeugten Code in Assembler Sprache und Hex Object Code im Speicher (für das ganze Programm)!

[19] Anbieten Ihre Tools "C" Quellcode Fehlerbeseitigung?
Fehlerbeseitigung für Quellcode in "C" und Assembler Sprache wird bei 8051 Entwicklungssystem unterstützt. Bei der Fehlerbeseitigung kann man zwischen "C" und Assembler Sprache umschalten. Bestimmte Felder anzeigen Variable Watch, Call Stack, Memory, Registers und Terminal Information. Sie könne auch Breakpoint auf jede Programm-Zeile  in "C" oder Assembler Sprache Code setzen. Step Into, Step Over, Step Out und Run werden unterstützt. 

[20] Kann ich Code kompilieren, der mit den [Tools der anderen  Herstellern] entwickelt ist?
Micro C unterstützt die meisten von 'C' Programmiersprachen, und darum nimmt Standard 'C' Code ohne Änderung an, jedoch:

Notwendige für die meisten eingebetteten Systemen Funtionalität fehlt dem standard "C". Darum entwickeln Hersteller der eingebetteten Tools eigene Sprachen und Bibliothek Extentions, die Ihren Tool Sets passen. Hier gibt es kein Standard und Produkte von verschiedenen Hersteller unterscheiden sich wesentlich. Bei der Portierung zu Tools der anderen Hersteller wird Code mit solchen Extentions unbedingt verändert.
Wir haben unser bestes getan, um Micro C standardisiert zu machen und Micro C Extentions sind ähnlich zu standardisierten Sprache Features und Syntax. Oft kann man Code mit Extentions von anderen Hersteller zu Micro C portieren. Dazu benutzt man Global Name Changes, Preprocessor Macros und/oder Wrapper Funktionen.

[21] Kann ich mein ' xxx ' Entwicklungssystem upgraden, um 'yyy ' Prozessorfamilie zu unterstützen?
Nein, jedes Entwicklungssystem wird für bestimmte Prozessorfamilie entwickelt und nur mit Prozessoren von dieser Familie oder Derivaten benutzt. Für die Arbeit mit der ganz anderen Prozessorfamilie brauchen Sie Enwicklungssystem von dieser Familie kaufen. Das ist kein Upgrade, sondern ein bestimmtes Produkt.

[22] Wie lese Ich Single Port Bit Status?

Es gibt Macros in C:\bipom\devtools\MicroC\8051BIT.h 

#define tstbit(address,bit) (address&(1<<bit)) /* Test an I/O bit */

Man kann es so benutzen

if ( tstbit( P1,4))
{
// P1.4 is set
}
else
{
// P1.4 is clear
}


[23] Warum bekomme Ich dosspawn Fehler?

Meistens das ist wegen zu lange Befehlszeile für Micro C Linker. Micro-IDE ersetzt Macro {OBJFILES} mit den Namen der Objekt Dateien für Linking. Wenn Projekt zu viel Dateien hat, ist Befehlszeile zu lang. In diesem Fall speichert man Namen der Linker Object Dateien in Text Datei und benutzt man diese Datei in Linker Befehlszeile.

Sie haben zum Beispiel Dateien:

mysource1.c
mysource2.c
mysource3.c
mysource4.c
mysource5.c
mysource6.c
mysource7.c
mysource8.c
mysource9.c
mysource10.c


in Ihrem Projekt. Namen von allen Object Dateien bilden sehr lange Befehlszeile und Linker wird nicht korrekt gestartet.  Speichern Sie Namen der Dateien in Text Datei,  z.B. files.txt, und benutzen Sie @files.txt in Linker Befehlszeile statt {OBJFILES}.

Also files.txt enthält:

mysource1.c
mysource2.c
mysource3.c
mysource4.c
mysource5.c
mysource6.c
mysource7.c
mysource8.c
mysource9.c
mysource10.c


und Linker Befehlszeile ist:

... slink @file.txt ...

statt

... slink {OBJFILES} ...

 






© BiPOM Electronics, Inc. 2007