Introduction
Every digital device that is driven by a CPU core processes some sort of
digital information. Not all of them are digital data. In fact, major portion
of them are some kind of instruction to the CPU. As we all know, they are
patterns of zeros and ones. In groups, those zeros and ones are called as
nibbles (a group of 4), bytes (A group of 8), half word (group of 16) and word
(group of 32). Every microcontroller comes with an inbuilt memory. They store
instruction and data. When their CPU runs, they fetch the code from the memory.
They obtain data either from memory or from external I/O.
The collection of the data
and the code together is called firmware. And the algorithm that the programmer
follows is called a program. The final output of a program is a
binary bit stream that is executed by the CPU. We also call them as hex code.
If someone writes an error free program and generates hex code by
himself/herself, no doubt it will run. But its laborious, time consuming and
prone to error. So as humans always do, less laborious and less problematic
solution of this particular problem has been found out! Computer languages are
brought to work for code generation.
The basic target of any compiler is to generate hex code. Whether it is an
executable file or the collection of the hexadecimal code stored in a file
called “HEX File”. For embedded system, it always comes out in form of
HEX files that is executed by the CPU (Note that few processors like ARM
supports direct JAVA byte code execution). It is later downloaded into target
microcontrollers (we call this process as “burning program to microcontroller”).
Embedded C
C is the immediate advance
language to assembly language for software dehvelopment. Though
microcontrollers provided limited processing power, embedded C developers
managed to integrate most popular functions of ANSI C to embedded C. As
discussed previously, sometimes the IDE developers provide some extensions.
They use keywords, various macros and functions to facilitate programming for
microcontrollers.
Each manufacturers may publish
multiple architectures. And each architecture must have at least one compiler
to support programming. Their architectural difference stops to use one single
compiler for all families. Few specific difference may demand a huge
programming in the compilers framework. So usually manufacturers avoid
publishing a micro controller with very different architecture. The compilers
of manufacturers’ usually doesn’t support other IC manufacturers’
microcontrollers. The major reason is that it is very difficult to develop a
single standard IDE due to large variety of microcontroller family. Here is a
list of few IDE published by popular manufacturers.
Publisher
|
IDE
|
Renesas
|
Cube Suite Plus
|
Texas Instruments
|
IAR Workbench
|
National Instruments
|
Lab VIEW
|
NXP (a Phillips undertaken
company)
|
LPC Xpresso
|
Microchip
|
MPLab SIM
|
Atmel
|
AVR Studio
|
ARM
|
Keil Microvision
|
JAVA
Most of the embedded IDE doesn’t support java programming. Yet, many JAVA
application runs successfully in many devices. Recently, few IDEs are
adopting JAVA for hex code generation. But this is not the major key to the
success of JAVA in the field of embedded systems. Instead of adapting JAVA as a
program development language, ARM adapted a technique to allow JABA Byte code
to be executed by a single microcontroller. JAVA byte code is the usual output
of a java program. This allowed software professionals to develop JAVA based
software and operating system to run on ARM powered devices. This allowed to
use the existing talents in the IT sectors. This, in turn, pumped up production
of gadgets running with JAVA based systems. Almost 90% of the mobile and
portable devices comes with firmware developed with JAVA.
The impact of adapting JAVA by a microcontroller is a milestone. But efforts
are there to make HEX code generation possible wit JAVA. The pioneer of this
effort is Microchip Corporation. Their IDE MP Lab Sim supports embedded JAVA to
develop a program. Nevertheless, they have to generate hex code for their
microcontrollers.
0 comments:
Post a Comment