Advanced programming related skills
While programming with a definite purpose, you have to experience the programmer’s nightmare—your program does not work, sometimes it doesn’t even appear to run. It’s time for debugging.
Program debugging is like solving a mystery. You start the program expecting it to work perfectly, and it doesn’t. And you conclude it’s doing nothing. But the processor can’t be in a ‘nothing to do’ condition. It may be fetching operational code, executing it, incrementing the program counter and fetching the next operating code. The operating codes are your creation. You have to detect the difference between what you expect the program to do and what it is actually doing. Debugging is the process of finding those clues and interpreting them to find the problem.
All debugging programs offer a variety of tools. Among them Gdb and Kgdb are of industrial importance at present.
Satisfying the real-world requirements
After getting familiar with the basic components, it’s important to specify real-world requirements. A system is to be designed to meet them. Consider the design procedures applicable to both hardware and software projects, but remember that rarely in the real world we have the opportunity to follow the ideals of any design philosophy. Take a look at RTOS (real-time operating systems). An RTOS is one that does some process either at a specific time, say, midnight, or at specific intervals, say, every 15 seconds, or at a time required by some external device or event.
Now turn to problem specification. The preliminary problem specification is to design the hardware interface to transfer information from multiple sources to the processor, and vice versa using a computer bus. You have to explore the parallel bus architectures and how to create the interfaces between the external device and the processor. DMA (direct memory access) and other schemes associated with bus masters and slaves are must to learn. MODBUS and CANBUS are the effective tools of industrial importance.
After creating the channels for program flow, it’s time to consider the events that can interrupt the normal flow of the program. Most processors have a software interrupt instruction that is useful for debugging also.
Is the formatting complete for you?
Now you are almost at the end of formatting. Put a little more effort to comprehend the basic principles of memory elements and the design of memory systems. Along with RAM and ROM, look at firmware to understand how memory chips work. Next, take a look at the interface between memory and the processor. Knowledge of advanced devices like pseudo static RAMs, programmable ROMs (EPROMs and UV-erasable EEPROMs), flash and NVRAMs is desired.
Basically, memory designing is a balancing act involving:
1. Choosing the amount of RAM and ROM to be used
2. Choosing the address in the memory map for each type
3. Choosing the memory chips with timing requirements which match processor timing
For software engineers, we expect a good background in data structures and algorithms, C/C++ programming, operating systems, optimisation, etc. Good exposure to OS internals is a bonus.
—C.P. Ravikumar, technical director, university relations, Texas Instruments
Matching often requires a detailed analysis of hardware, especially input /output inter-faces. It may be a wise decision to assimilate the details of memory interfaces and especially timing signals.
If you take a poll, you will find that many professionals have a terrible experience with serial interfaces. It is because they do not understand why all the signals in the standard interface are there. Try to develop an idea of the handshaking signals developed for communication channels, and interface cables for various common interface standards such as RS-232-C, RS-485, RS-422 and RS-423.
The formatting should be concluded by putting it all together for a definite application. At the basic level, any microcontroller application is always related to data acquisition and conversion. A processor has to read analogue information and act upon it in many applications. This requires analogue-to-digital conversion and vice versa. A clear-cut understanding of both the processes is a must if you would like to stick to this field.