Attitude to Learn DEPIK would like to help all the good students like you, who are interested

in E mbedded and System Programming. DEPIK defines a student as good if student posse s the followng attitude. Interest(I) Initiative(I) Thinking(T) You basically should have Interest in computers to know more. Like how hardware in side a computer works, how operating system works and how an application prog ram runs on a computer etc.. Just interest alone is not sufficient, in fact a lot of students say they got lo t of interest. But you need Initiative to learn or find answers for them. And finally the most important thing is Thinking. Thinking makes lot of wonders. If you start thinking, you will find answers for most of the questions. When th inking is coupled with initiative, you try to search for the answers, you may as k someone or go and search on the internet, or do an experiment to find the answ er yourself. DEPIK is meant for such students with IIT attitude. Computer Careers The careers or job opportunities in computer field can be classified in to the f ollowing groups: Software Programming Hardware Programming (VLSI) Administration Testing or Quality Assurance (QA) Software Programming We can classify the programmers or programming jobs based on various parameters. Following are some parameters: Programming Language Used Operating System Used Abstraction Layer Used Based on the programming language, we classify programmers, as Assembly programm ers, C programmers, C++ programmers, Java programmers, C# programmers etc.. Based on the OS we classify as Linux/Unix Programmers, Windows Programmers, Mac Programmers etc.. We develop programs on some abstraction layer that is by using the services prov ided by the underlying abstraction layer. The lowest layer is hardware abstracti on. Developing programs directly to run on top of hardware comes under this laye r. Next layer is OS abstraction layer. In this layer, we develop programs by usi ng OS services. While programming at OS abstraction layer, we do not care about hardware. Final layers are application abstraction layers. These application abs traction layers run on top of OS abstraction layer, and provide various applicat ion abstractions like Graphical User Interface (GUI), Web application environmen t, Database application environment etc.. While developing programs on top of ap plication abstractions, we do not care about underlying OS. DEPIK's expertise lies in System Programming that includes the following skills:

embedded inside some other systems. But around us. Students also should be good at Digital Electronics to learn these hardware languages. . In order to test the protocols. TCL are used to write t est applications. So one should learn these languages and associated tools. you normally think about a PC. your mobile has got one computer inside. Depending on the type of applications these engineers are testing. Administration Administration is about managing and maintaining the Hardware. Python. Kn owledge of C language is going to be very helpful in learning these languages. So the following ar e various administration careers possible: OS administration (Unix/Linux/Solaris/HP-US/Windows) Network Administration (LAN/WAN) Application Administration (Database/WEB/SAP) Testing or Quality Assurance Test Engineers are QA Engineers are responsible for testing and assuring the qua lity of the application programs developed by programmers. The hardware logic of a chip is specified by using a hardware language such a Veril og and VHDL. Your DVD player or Dish-TV box has got one computer inside. The scripting languages are also useful to automate the testin g process (Test Automation) as well as for System and Network administration. these generic functions sh ould tested to validate that these functions are working as expected or not. Almost all computer peripheral devices like pr inters. For example. When pro grammers (developers) develop some generic functions. What is embedded system? When you think of a computer. the testers should know the programming language used to call tho se API functions.C and Assembly Languages Linux/Unix Operating System Hardware Abstraction Layer and OS abstraction layer Hardware Programming (VLSI) Hardware programming is required to design and develop a new hardware chips. ther e are so many invisible computers. Network and Applications. These test e ngineers should be as good as or even better than the developers of the protocol s. In small organizations a single administrator called System Administrator will do all the above works. For this purpose. Another type of testing possible is called unit testing or API testing. However large organizations wi ll have separate administrators for each of the above works. MP3 players have got compute rs in side them. scanners and modems have got computers inside them. Typically scripting languages such as Perl. the tester may need to develop some applicati ons. Operating System. Similarly most of th e consumer electronic devices like digital cameras. we can classify these careers as b elow: GUI Application Testing Web Application Testing Network Protocol Testing Telecom Protocol Testing The protocol testing requires very good knowledge of the protocols.

B asically embedded devices will not have such option of loading new programs. This computer on which we develop software for embedded system is called a 'Host' computer. Whenever y ou start a program. You never be abl e to load a new program into digital camera and use it for some other purpose. So PCs are designed to run multiple applications as and when you need. It can be us ed only to run and test the software. All these three things could present inside a very small single chip. . You may use PC to de velop C or Java programs. Best example is your USB pen drive (or flash disk). keyboard.e. How to develop software for embedded system (i.Target' environ ment. Host is used to develop the software. However small it may be. Where as a digital camera runs always a single application. In some embedded computers 32 bit CPUs are u sed with 16 to 64 Mega bytes of memory. computer does not always mean a system that includes monitor. For example if small microcontroller (small chip with CPU. and target is for executing and test ing the software. So embedded development environment is always refered as 'Host . The hardw are used in embedded system is fine tuned to run just that single application.All these computers are called embedded computers because they got embedded insi de some other systems. Large embedded computers may have multip le 32 bit CPUs connected over some bus. As in most of the cases the CPU presen t in the embedded computer will be different from the CPU of host computer. The embedded computer itself i s called a 'Target' computer. Where as PCs hold tens or hundreds of programs(applications) on its hard disk. we just use enough hardware to run that application. How embedded computers are different from Standard computers such as PCs? Embedded computers always runs a single program present in its memory. it will get loaded into memory and get executed. view photographs and transfer them to PC. B ecause we know that the embedded computer is going to run a single application. which will allow you to take photographs. You also can get a new applicatio n from your friend or download from Internet and able to run it on PC. to browse internet. Computer is the one that co ntains CPU(micrprocessor). Typi cally the host computer contains Pentium CPU. to play a gam e. where as embedded computer may be having ARM/MIPS/DSP/Microcontroller as CPU. embedded computer) Embedded computer typically will be a small board having CPU. Another important feature of embedded development environment is the usage of cr oss compilers or cross development tools. to write a document. So to develop software for embedded board. just like a PC. Memory and IO inte rfaces. it got embedded computer inside. Another difference with embedded systems is the kind of hardware used.Memory and Input/Output. and when you power on it runs the software present in the memory.memory and IO built in to it) is enough. we just use that. we need a separate computer such a PC running Linux or PC running windows. Embedded programmers are responsible for developing such software that runs on e mbedded computers. One important point to note here is that. That embedded computer can not be used to develop software. So we need compilers which will run on Pentium computers but produce the executable code for the CPU present on the embedded computer. which is developed on a separate system. mouse and CPU box. to play music or to play a movie and so on.

How to run the software developed on host. Using this JTAG soft ware you can download the executable file. you have built above. This is a low cost solution to develop high-end embedded software. This bootloader program allows you to download the executable file on to tar get board and run it. compile it using the cross compiler. one can develo p complex embedded systems. Simple embedded systems based on microcontrollers will not use any OS. these kits also have got bootloader in the ROM. By using these service of OS. So how to run this program on the target board. You may be calling that as monitor or Debug moni tor program instead of bootloader. on an embedded computer? This is important and interesting aspect of embedded development. but re member that. You ma y have to buy a JTAG emulator kit to use the JTAG interface. This software is very very useful for Engineering colleges to practice embedded programming without buying any new embedded boards.Such compilers are called cross compilers. Inter task communication and synchronization. run and debug it on the target board. Another method is to use Bootloader. this bootloader program will r un. The OS provides multi-tasking . Now you got the executable file. This is our next topic. .dpKernel DEPIK has developed an RTOS named 'dpKernel'. This is a low cost and simple alternative to using JTAG ki ts. a separate cros s compiler is required. will u se operating systems like RTOS or Embedded Linux. F ile system and Networking services. Memory management. Most of the embedded systems that are using 32 bit CPUs. PC) serial/parallel/LAN port . you can wri te a program on the host computer. Now you can develop embedded program s for your motherboard and can download those embedded programs to motherboard u sing this bootloader. Two most common methods are: Using JTAG Emulator Using Bootloader or Debug Monitor software Most of the embedded computer boards have got JTAG interface (connector). this executable will not run on you PC. DEPIK's RTOS . link it with libraries and build the executable. Once you have these cross development tools.e. For mo re information click 'Products' menu. Embedded Systems with and without Operating System We can classify the embedded systems based on whether an operating system is use d inside or not. It runs only on the target board. which runs on a PC motherboard and makes PC motherboard as powerful embedded board. on to the targe t board. All the complex and large embedded systems use OS. There exist va rious ways of loading the software to target board. This kit also comes with JTAG software that runs on host. running. When you power-on the embedded board. I/O system. The dpKernel runs on PC motherboar ds as well as ARM boards. This kit allows you to connect the embedded board to your host's (i. For each type of CPU. DEPIK has sold this RTOS to various engineering colleg es. All most all the 32 bit CPU based embedded computers will have bootloader software present in the ROM or flash memory of th ose boards. If you have used any time 8085 or 8086 microprocessor kits. DEPIK's Bootloader DEPIK is selling a bootloader software. testing and debuggi ng it. DEPIK's bootloader and this RTOS is the perfect combination to develop compl ex and large applications on the PC motherboards.

. as embedded applications are becoming more software intensive. algorithms and good mathes ba ckground. Now a days most of the embedded devices are having large and complex software insid e. it will be an additional advantage to learn Networking protocols or Telecom protocols or Audio/Video compression and decompression algorithms. Large Multi-processor based systems or Network processor systems The first type are simple embedded systems. these embedded syste ms always have Operating systems inside them. Most of the DSP based embedded systems are signal processing systems. where as embedded programmers can be easily switched to other software domains . We can classify the embedded systems based on the type of CPUs used. The 32 bit CPU based embedded systems with embedded OS or Real Time OS are the m ost common large embedded systems. VLSI is a very specific domain . So along with C programming and OS knowledge. Computer science students are also best for embedded programming. These are high-end embedded systems. into the fo llowing categories: 8 bit micro-controller based embedded systems DSP (Digital Signal Processor) based embedded systems 32 bit CPU based embedded systems with Embedded Operating System. Embedded Programming is ideal for ECE/EEE engineering and MSc(Electronics) stude nts who would like to enter into software field.Who are the best fit for embedded programming? Increasingly more and more software is being developed for embedded devices. DSP is a small niche area within embedded systems. does not matte r if you do not know OS. So very minimum programming skills are enough and no need of a ny operating system knowledge. DSP based signal mo dulation and demodulation. In dustry will be happy to take you. Telecom and Audio/Video consumer electronic devices will fall into this categiry. Networking or Telcom. if you are a good C programmer. This is happening because of the availability powerful hardware with 32 bit C PUs and with larger memory but at lower costs. The software inside them will be ver y small and simple as these microcontrollers will have very less amount of memor y. But Embedded software will offer much wider choices when compared with VLSI. To support these large applications. But final important point is that C and Data structures are essential skills. The progra mming requires good understanding of DSP concepts. Embedded indus try is looking for high end C programmers with data structures and with good kno wledge of Operating systems. Very minimal C programming skills are good enough to develop software for the se systems. These are low-end embedded systems. Lot of students are under the impression that all embedded systems are based on microcontrollers. This calls for very good programmi ng skills and good understanding on using the operating system. If these students are intereste d in hardware development. These systems will have huge amount of memory (typically 8 to 64 MB of RAM and 4 to 32MB of Flash). These embedded applications are highly software intensive with huge amount of so ftware running inside. These assumptions are not correct. VLSI is the other choice. Most of the networking. In larger embedded system s multiple such CPUs are used. Audio and Video compression and decompression are the important applications of DSP in embedded systems. the skills required to develop these embedd ed systems are high in demand and value.

How to learn C Programming? The best way to learn C is to have access to Linux machine. Software industry is always short of good search of them. Knowledge in C ac ts as fundamental to learn these modern languages and scripts. you must load Linux and practice Linux. C is becoming a fast replacement f or assembly language. You can find source program files of all most all applications you are using. Learning C C language can be learned at various levels. At higher levels one can attempt mo re complex programs. If you load Linux. networking and telecom. If you want b ecome a good programmer. DEPIK has realized the importance of improving C programming skills of ECE/EEE/M Sc(Electroncis) students studying in colleges. These source files have tremendous value in learning how professional programs were written. Also C is the language of system programming. rding job for the people who like quality programmers and always in uality programmer. Industry may not prefer you. This chance comes only for Linux (open source) users. DEPIK is offering free material for learning C and other topics relev ant for embedded systems. Linux (or Unix) is t he best platform to learn C. So that is the importance of C programing skills. If you are a technical student studying electronics or computers. Why to learn C Programming? Before discussing how to learn C. Any old computer will do. Linux is for p rofessionals to learn and practice programming. It is a fin Programming is also highly satisfying and rewa it. these C program files of various applications will teach you a lot. C l anguage is the mother of so many modern languages and scripts. System programming is the most fascinating field of programm ing. If you want to become a good programmer. which no textbook s can do.buying some computer and loading Linux OS on it. Windows is for ordinary users and kids. as well as students passed out of colleges. but if y ou are not good at C.Even if you are very good at operating systems. It is essential for the aspiring system programming profes sionals to learn C. So why don't you become such q . If you really want to become a good programmer. having a good command over C language is essential. the best investment you can do i s. Or two to three friends can pool and buy a computer. Also note that programming is the e art first and technology later. entire Linux OS is comes with source code. Level 1 At this level one should learn writing simple C programs that contain only one f most fascinating and creative job. Learning C with any other operating system is a com promise. why to learn C. let us find out. Once you are good at programming. This is the wise thing that can be done by all would be prog rammers. go through the programs written by prof essionals. You can get old computers for less than 8K or 9K.

500 per a month of practice. The main function can contain following types of statements in the following seq uence. logical operators.unction that is main function. That is just Rs. And call the function from main function to do processing. Variable declaration statements Input statements to accept values from the user Processing statements to compute the output Output statements to display the computed output. We also developed low cost embedded boards for students to pr actice on their own using this Linux CD.int and float Arrays of above types Structure variables Also practice the usage of all arithmetic operators. conditio nal operators and bit wise operators. in which we kept many cross compilers for emb edded development. First we produced a Linux Live CD. Understand the difference between local variables and global variables and use b oth types of variables.300 to Rs. Our idea is that the co . Level 2 Writing function to do the processing. practice the usage of following statements: If If-else If-else.If-else if-else if else Switch For loop Whilw loop Do while loop Break and continue statements Use the following types of variables in the main function: Char. So main function contains following statements: Variable declaration statements Input statements to accept variable values from the user Calling the function by passing input arguments and getting output Output statements to display the output returned by the function Level 3 Write programs that contain multiple functions. In the main function. Now we have come up with an Embedded Resource Center by providing a very conveni ent environment for practicing embedded and Linux programming at the lowest cost . Its vision always has been to produce world-class embedded p rofessionals.short. Understand the use of pointer variable and use them Understand the difference between static allocation of memory and dynamic memory allocation and use both of them Understand the role of pointers in dynamic memory allocation Use various standard I/O library functions Level 4 Write programs that contain multiple functions distributed in multiple C files Practice linked lists (both single and double linked lists) Practice various search and sort algorithms DEPIK's Embedded and Linux Resource Center (DELRC) DEPIK since its inception is original and innovative in its approach to teach em bedded programming.

b y going out of our way. Also note that getting a good grade at the Certification test will have a l ot of benefit to the students. They can come up with any project ideas then we will provide t he required hardware and guidance. After gaining good practical skills one can take DEPIK's certification test to get a certific ate.st should not be a limiting factor.This CD includes all the cross compilers. they can also practice at their home with our Lin ux CD. for which stud ents can enrole to practice at DELRC. This DELRC is also very suitable for working professionals who like to gain skills in different areas. . This lab environment is linked to the DEPIK's certification tests. Click the following link to find the list of certification tests. Students can also buy these kits as th ey are of low cost. Idea is to encourage learning by doing. What exactly we provide at DELRC? There are no teaching classes. for any interested student in learning embed ded programming. They can come and prac tice at their convenient times. students can take up them at their conve nient timings including week ends. come and test on the kits here. Working professionals also can approach for e xecuting their project ideas. For example write programs at th eir home. Once students are comfortable. Students who have cleared required certification tests are eligible for practici ng project ideas. As these are only a practical sessions. In fact we encourage students with interest and talent a lot. Students have to sit infront of a computer and practice the lab assignments. However we p rovide well structured lab assignments with very good guidance and assistance.