After our looooong Easter Holidays (12-16th of April) we finally assembled the prototypes and had them ready on April 17th. Our engineers check the power supplies etc but there was not much what to do without linux image to try to boot.
I wanted to send board to Raivis as I know he prepared a lot of things about the linux build etc but without hardware he couldn’t move forward. In other hand our engineers were not comfortable to send not-tested manually assembled board as there is alwasy room for mistakes when there are so many components on the board.
So this was chicken-egg problem – Raivis can’t send us linux image as he have no hardware to verify, we couldn’t test the board before ship to him as we have no software.
I decided to take the risk and on 18th sent one board to Raivis by TNT. TNT are providing the best service for Europe and I knew the board will be in Latvia next day and was not wrong. The parcel was pickup 4.30 PM and delivered next day 2.00 PM on Raivis desk.
First report was – board have no provisions for Bitburner to burn the OTP fuses. This is something we really omited in our design.
iMX233 processor have OTP fuses which configure it from where to boot etc. To do this there is tool called BitBurner which works only under Windows(!) and should connect directly to iMX233 USB, as we have LAN9512 connected this makes the job a bit difficult as you have to desolder the chip burn the fuses and re-solder it again.
We are going to fix this in the production run.
Fortunately Raivis is good with the soldering and have all tools to remove and resolder the QFN chip so he successfully burned the correct fuses and boot the image he built:
root@OLinuXino ~$ uname -a
Linux OLinuXino 2.6.31-626-g602af1cOLinuXino #1 PREEMPT Thu Apr 19
12:15:16 EEST 2012 armv5tejl GNU/Linux
Now there was another challange the LAN9512 RESET is connected to the GPIO port, this is useful to may re-init the LAN chip if something went wrong with it but also need custom linux kernel build with GPIO drivers. Raivis solved this also successfully in few hours:
raivis@raivisr:~$ telnet 192.168.1.1
Connected to 192.168.1.1.
Escape character is ‘^]’.
Welcome to Freescale Semiconductor Embedded Linux Environment
OLinuXino login: root
BusyBox v1.15.0 () built-in shell (ash)
Enter ‘help’ for a list of built-in commands.
root@OLinuXino ~$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
usb0 Link encap:Ethernet HWaddr 46:C3:97:40:FB:28
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1492 Metric:1
RX packets:31 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:1669 (1.6 KiB) TX bytes:1644 (1.6 KiB)
Meantime one hardware bug was detected, when he attach HDD to the USB host the board resets. This is because HDD have probably large input capacitors and when plug to the USB draw significant current which cause voltage drop and resets iMX233.
We knew about this and put 100uF capacitors with very low ESR on the USB host side, but obviously they are good for smaller loads like keyboards, mouses, USB sticks but not enough for HDDs.
SO we have to look for something bigger like 150uF for the production run and add ferrite beads on the USB host side .
At this point 12 PM I went to bed but Raivis obviously had great fun with his new toy and this morning I saw some e-mails sent 2.00 AM and 3.00 AM where he write I successfully implemented the video and audio on the board!
So it was awesome move forward for just one day Raivis run everything on this board except to test the LCD interface.
We now have to do the necessary final changes to the hardware and run the production, Yahoooo!