Saturday, January 30, 2010

My Visit to Anzma

About Anzma

Anzma & Cambridge Training College Britain are offering a complete integrated Embedded System Diploma to help fresh engineers to meld with the Embedded Systems industry, the new emerging career in Egypt.

We are offering a big step into the embedded systems’ world. To mould fresh computer science, computer engineers and, electronics engineers and to retrain working engineers into High Caliber Embedded System by enhancing their knowledge and skills in various design aspects of Embedded Systems. It provides an equal emphasis on both Software and Hardware platforms. This training is imparted to engineers aspiring to become Embedded Software Developers who want to tune up their skills in Embedded Software Development. This course will enhance the mutual understanding among different subjects through active interaction and exchange of ideas. This will enrich engineering education and practice through application of various aspects of real time system design to increase product value and to manage occupational constraints. The courses contents have been tuned up to prepare the engineers to fit with the real world industry organizations.

About the Visit

During the visit, I saw their RTOS track. The track is very comprehensive and up to the point. It consisted of 15 hours; 6 hours for Introduction to RTOS, and finally 6 hours for Introducing uCOS-II.

It was amazing to see trainees, and after 15 hours only, building a complete system based on uCOS-II from the ground up.

Anzma provide the trainees with a Kit based on ARM Cortex. Knowing that trainees already have good understanding of the boards peripherals, a break-through idea emerged to add 3 hours to the RTOS track and let the trainees experience programming uCOS-II on Anzma Kit.

In my visit, I suggested to port uCOS-II V2.86 to their Kit. After 5 hours and starting with a uCOS-II ported to the Cortex architecture, I managed to do board porting and coming up with an example that moved the trainees from the run for ever loop to multi-tasking programming.

The example consisted of many tasks; the first task was to do the system initialization. The second task simply blinked the LEDs on the board in a constant sequence. The timing was depending on uCOS-II time services rather than the simple delay routines. This made the timing independent on the beneath hardware. The third task was a periodic task that continually displays the ADC reading on the hyper terminal. The fourth task was to display the time on the screen and updates it every second. This task gets the data updated from the RTC ISR. The trick was to add the time setting feature using the two push buttons on the board. The first button was to select the field to update (hours, minutes, or seconds) and the second button was to increment the value. To accomplish this task, we created 2 tasks and added to 2 ISRs. The first task was responsible for blinking the selected field. The second was responsible for calculating the new time value before sending it to the Display task.

The example demonstrated many of uCOS-II services. Services included task management, mutex management, event flag management, and time management services. In addition, it demonstrated how to write ISRs under uCOS-II and how they can communicate with tasks.