Saturday, November 28, 2009

DSP CourseWare on HawkBoard ?

Designing a series of experiments for conducting Lab courses on what theory is taught in basic Signal Processing Courses like Signal and System , Digital Signal Processing , Speech Signal processing at IIIT-Hyd, seems a very interesting idea to me. Right now there is a complete lack of exposure to DSP Processor among students here and so it would be an achievement if we could take initiative to introduce and establish DSP Lab at IIIT and develop in house expertise in working with DSP Processor.

This would also lead students getting exposure to Embedded Linux and playing around with Linux kernel, creating Device Driver, compiling kernel yada yada ...

I clearly favour HawkBoard as the single Platform for such requirements. It has a Floating point DSP Processor and ARM9 core.These will be easier to deal at the beginners level as compared to ARM Cortex8 and Fixed Point DSP processor on Beagle Board. It is as important a fact that HawkBoard has VGA output(so good old Monitors will work with this) , Ethernet connector(an added advantage) and few more things.

But getting this done is quite a task. First of all I have to learn all what have been mentioned above coding for DSP processor to learning conecepts of Embedded Linux and kernels.
From that onwards, designing the experiments and getting the correct documentation is a very tedious task , which I learned the hard way while doing it for Embedded Hardware Design course.

I have posted this proposal for Early Adopters Scheme of Hawk Board. Hope to get one kit and start  the interesting journey with Hawk Board.

Btw Hawk Board seems to be available here. The price quote(including local taxes and shipping anywhere in India) I got is Rs 6240/- per Board. This is substantially more that $85 which was the initial estimate by Hawk Team, I hope it soon comes down.



Wednesday, November 25, 2009

Optimizing a Software for a Processor

It came as a sort of surprise to me when I got to know that people actually optimize the performance of their software based on what processor they are using , that means that if we say Matlab is a very optimized s/w , them some one would have painstakingly sat down and coded in assembly the functions or routines that Matlab implements so that what all hardware options and advances are present they are utilized to their core.

Now though I am not very clear about the issue but sometimes companies offer cross-compiler so that a normal person could sit down and writing the routines in popular languages like C , he could cross compile the routines to be more optimized for a particular hardware say a DSP processor.

In upcoming platforms like Beagle Board , Hawk Board , which have a different processor than your PC or Laptop , an application will not be able to make full use of the hardware present if somebody has not optimized it for that processor say TMS300 or ARM 9 .

In case of Intel , it has Integrated Performance Primitives which is a library of optimized functions for different utilities. So is the case with other Processor makers.

Beagle Board Validation - First Contact

Today the two ordered Beagle Board arrived from IDA Systems through courier(pretty fast service !!).

We(me and Abinesh) sat down to do the most basic Validation Test of the BeagleBoard.

The most basic minimum things required are :-
1. Beagle Board - Rev C3
2. USB OTG - USB cable ( for powering BeagleBoard)
3. DB9 Connector (for connecting to serial port of PC)
4. 10 pin FRC box connector (for connecting to RS232 pins on BeagleBoard)

Luckily I managed to get USB OTG cable from the Nexys-2 FPGA kit.

The above images are USB OTG cable, comparision of OTG and normal USB connector, 10 pin FRC Box connecctor, DB9 connector.

The first thing to test is to power up BeagleBoard, by connecting the OTG connector to the USB OTG connector just on top of 5V DC supply jack and connect the other end to USB Port of PC.


As soon as power is On , PWR Led(D5) glows and after a delay of few seconds , three other Leds glows up(D6,D7,D12).
Press reset switch and see that Led D6,D7 turn Off and after releasing Reset Switch ,turns on after a delay of around 3-4 seconds.

After Power On test , turn off the power by disconnecting the USB from PC , now connect the 10 pin connector to BeagleBoard RS232 pins as shown above.

On the DB9 connector(female) solder pins no 2(Rx), 3(Tx) and 5(gnd). Now connect pin 2,3,5 to pin 2,3,5 on the 10 pin RS232 pins on BeagleBoard.  
An easy way to identify pins on RS232 connector is to look for pin marking 1, 2, 9, 10 on Beagle Board.

After making the connection between DB9 connector and 10 pin Box connector, connect the DB9 into Serial Port of PC.

Open Hyperterminal on Windows and set the following settings :-
BAUD RATE - 115200,
DATA - 8 bit,
PARITY- none,
STOP - 1bit,
start the session with the above settings.

Now turn on power and you should see the following appear on Hyperterminal Screen.

This is the most you can do without a SD Card. The main page which has details about Validation of BeagleBoard is here .


Saturday, November 21, 2009

Beagle Board Ordered and waiting

So through  Robotics Research Centre I managed to order 2 Beagle Board and also Dell Ultrasharp 1708FP LCD Monitor to hook up to DVI-D connector on Beagle Board.

Right now we have access to one Beagle Board in IIIT-H and till now several things have been tried out like VNC to make use of monitor of PC for displaying the video of Beagle Board.

Once our Beagle Board arrives , I will try to put a lot of documentation on the procedure to follow on Beagle Board


Win Free Hawk Board

Hawk Board community has announced an open contest for Early Adopters. Propose an idea to implement on Hawk Board and you could win your own Hawk Board for free !!!!

Hurry the deadline is 30th November.

Post your proposal  here

 Hawk Board Community Page

Yes I will apply and hope to grab one of it !!!!     :)

Thursday, November 5, 2009

USB Bootloader Kit for ATmega16/32

For working on AVR microcontrollers and particularly if the person is a beginner , it greatly helps if he is shielded from the Hardware or the circuit making aspect for the time being until he gain certain minimum proficiency in programming AVRs.

When this idea of introducing AVR Microcontroller as a new course of Embedded Hardware Design was formulated by Prof RN Biswas based on my request that IIIT already has a legacy of AVR in robotics, so it was required to have a platform which which make this exercise of teaching and doing Lab Experiment on AVR a reality.

Prof RNB is very particular about courses and he takes care that they are structured properly and with indepth planning.
I was already involved in designing the AVR Kits for Robocamp at that time and after seeing its design, he wanted a new design in which only PORTs interconnections and USB link to Laptop is present, so that the breadboarding part is done hands on by the students.

Finally after making lots of layouts of a kit wired around ATMega16 and after taking care o lot of issues, this was the final design of AVR USB Bootloader Kit.

1. USB Bootloader enabled, directly dump your hex file into the controller.
2. LCD(removable) connections through Burg Strip.
3. Connections to all PORT pins.
4. ISP connector
5. Powered through USB cable or external power supply.
6. LCD can be powered independently.
7. Slide Switch for enabling Bootloader.
8. LEDs for power & bootloader condition.
9. On Board 12MHz crystal.

The USB Bootloader firmware was avliable at Thomas Fischl(of the USBasp fame) and from Objective Development.
The Bootloader is the USP of this kit.

This kit was designed keeping in mind the experiments that the Students of Embedded Hardware Design, Microprocessor Based System Design and Embedded Systems-1 for UG2, UG3 and PG1-VLSI respectively needs to perform using Atmega16 microcontroller.

The Silkscreen of the circuit is shown

and also the kit in being use during a stepper motor experiment

Back Side of PCB

                                                                   Front Side of PCB

The Resolution is pretty bad for want of a better Camera, anyways the size of PCB is 10*6 cm.

The base circuit of USB Bootloader Kit for ATmega8 is

For making the kit with ATmega16 , the following changes need to be done in the firmware:
1. Change the D+ & D- pins to what is convenient to your design , though keep D+ to INT0 to avoid major changes in firmware.

2. Change the Bootloader address in the firmware, the compiled code that comes is according to ATmega8 whose memory size is 8KB , so the starting address of the Bootloader program(size 2KB) is 6KB. In case of Atmega16 whose memory size is 16KB , the starting address of Bootloader code 14KB (16KB-2KB).

3. Compile the changed code.

4. Before dumping the Bootloader code into the controller, have a 12MHz crystal connected in circuit and do all three steps together ie setting Fuse bits(High and Low) and writting the Bootloader code.

5. We are using HIDBoot Utility to dump the code into the controller using ISP.

6. In case the procedure is not successful, you can try that again , since the controller does not get bricked.

The Pdf of Layout of USB Bootloader Kit

USB Bootloader Kit User Manual

 - Any Queries are most welcome !!! :)