What to Learn with Embedded Kits
Following are the typical ways of using any embedded development board from
DEPIK.
1. Understanding the board hardware by learning the following:
- Type of CPU used and knowing more about the CPU
- Type and size of memory areas present
- Address map of memory areas
- All the I/O controller or peripheral chips present
- Address map of these controllers/peripheral chips
- Register details of each controller/peripheral chip
- As a development board, what facilities are available to load
executable program into it
- Finally learning the development tools required to develop the software
for the board
2. Developing simple driver programs and running them on the board.
- A separate program can be developed to program and use, each
peripheral chip present in the board. These programs are called
device driver programs.
- Note that these programs can be developed either in Assembly or
C language. But C is preferred as it is easy to use and maintain than
assembly. However one should aware of assembly language instructions
used by the CPU. Some times some machine specific code and time-critical
code need to be developed in assembly only.
3. Developing simple applications that uses the driver functions developed
in the above step.
- Visualising and implementing some useful applications on these boards will
be interesting for creative minds.
4. If an RTOS is available for the board, then using RTOS to develop
multi-tasking applications
- Develop various applications, such that each application will
use some of the system calls of RTOS. In this way one should get
familiar with all the system calls of RTOS
- Developing Device Drivers for RTOS. RTOS comes with most of the
device driver built into it. However some boards may have a specific
peripheral chip, for which RTOS may not have driver in it. In such
cases one should learn developing a device drier for the RTOS.
5. Final thing could be taking DEPIK's certification test for the
embedded board; to know where you stand, in your knowledge and skills
about the board.
dpk-51 Kit
Hardware understanding and Driver Development
Understanding and using digital I/O lines or Parallel Port lines
- Write a program to blink LEDs
- Write a program to read push-button status
Understanding and using Timers/Counters
- Write a program to use timers to implement required time delays
- Write a program to use timers as counter
Understanding and using Interrupts
- Write programs that handle various interrupts
Understanding and using Serial communication and serial controller
- Write programs to use serial communication for various purposes
Understanding and using EEPROM
- Write program to read and write to EEPROM
Understanding and using Watch dog timer
- Write program to use watch dog timer
Understanding and using Serial Peripheral Interface (SPI)
- Write a program to read data from Analog to Digital converter (ADC)
connected to SPI
One can develop all the above programs either in assembly language or
in C language. Also in a combination of both C and Assembly.
All the above programs are dealing with peripheral or I/O controller chips,
so these programs can be called as device drivers.
By using these device drivers, useful application programs can be developed.
Another interesting use of this board is for practicing serial device
programming from Linux OS. Developing Linux application programs that talks
to embedded devices over serial port is an important skill. For example
a Linux system may be connected to GPS receiver over serial port. Linux may
be connected to RFID Reader device. Or it may be connected to a GSM/GPRS
modem/mobile over a serial port.
In all the above scenarious, Linux program need to talk to these devices
over serial port. So a Linux programmer must learn using serial port.
So our dpk-51 kit can act like any of these deviceis, this allows one develop
and test serial communication applications on Linux.
dpk-ARM Kit
Hardware understanding and Driver Development
- Understanding and Programming GPIO lines of ARM board
- Understanding and using Timers
- Understanding and using UART for serial communication
- Understanding and using Interrupts in ARM
- Understanding and using DMA
- Understanding and using I2C interface
- Understanding and using Ethernet Controller
Application Development
Simple Bootloader application
This is a command line interpreter program, which receives commands from
the user over serial port, processes them and sends replies. The 'dpboot'
program, which is present in the Flash memory of this board is the example
of bootloader program. This application should do the same work.
Network Application
One of the challenging and interesting application that can be developed
is a network application. To develop any networking application network
protocol stack should exist. Challenging part here is to develop a simple
protocol stack on your own. Next develop application that uses your network
protocol stack. For example you want to develop UDP application, that network
protocols should have UDP, IP, and ARP modules. And ofcourse most important
one is Etherenet driver, which is developed as part of driver programs.
RTOS Application Development
- Application without any application taks, but shell task
- Application with multiple application tasks
- Application that uses semaphores for intertask synchronization
- Application that uses message queues for intertask communication
- Application that installes interrupt handler
- Application that uses I/O system calls to access I/O devices
- Application that uses I/O system calls to access files
- Application that uses Networking (socket) system calls
- Application with device driver for RTOS
dpk-Atom Kit
Hardware understanding and Driver Development
- Understanding and Programming parallel I/O lines
- Understanding and using Real Time Clock (RTC)
- Understanding and using Keyboard
- Understanding and using Mouse
- Understanding and using Timers
- Understanding and using UART for serial communication
- Understanding and using Interrupts
- Understanding and using Ethernet Controller
As Atom board is a very powerful one, one can learn to develop advanced
device drivers like the following:
- High definition audio device driver
- USB host device driver
- USB client device drivers
- IDE (ATA) Hard disk or CD-Rom drivers
- SATA device driver
- Graphics controller driver
Once graphics driver is available, a lot of interesting applications
can be developed by using graphics frame buffer. All applications
and menus available on mobile phones can be implemented on the frame
buffer.