Prototype VI - Booting to Uboot Prompt
The control board will now boot up to a uboot prompt. I have the CPU, Flash and RAM working. I also have the serial port working. Here is a current picture of the board:
Here are some things I learned along the way:
- BGA Soldering.
- Soldering 0402s.
- Linear Regulators.
- Power Stability.
- Using Jtag.
- Configuring Uboot.
I was able to solder a BGA to the board using my IR Welder (Kada 862++). However, the quality was poor and I was never able to get a consistent solder. I got as far as being able to detect the CPU and Flash with Jtag, but in all cases, there was always some lines that were not functioning.
The reason for this was that the board was not being evenly heated. The preheat element and the IR beam had a tendency to just heat a small area. This would cause the board to warp. Just a little warping and the solder would 'squish out' from the stencil holes and create bridges. After wasting four of my CPUs (at $27 each) and one of my boards (some pads came off the board), I decided to have an assembly house mount the BGAs for me. I called Schippers & Crew and they were able to mount two of my BGAs for $100. They have temperature controlled ovens and an xray machine. I saw the xrays and the solder joints were perfect.
It occured to me (too late for this round) to use a piece of 1/4 inch aluminium to help spread out the heat. I went to a local sheet metal shop and got them to cut me a piece that is the exact size of my board. I then bought some small clamps from Home Depot to secure the board to the sheet metal. The idea here was to use the preheating element to heat up the entire board via the thick piece of metal. Then, I could use the IR beam to finish the weld under the BGA. I think this would have worked but I thought of it too late. I had already had Schippers & Crew weld my BGAs for me. Next time...
Needless to say, there is a bit of a trick to soldering these things. First of all, you need a lot of patience. It does not go quickly at first. The trick is to 'tack' down the component on both ends. To start, just put a little solder on one of the pads. Heat that pad and use your tweezers and magnifying lamp to place one end of the component on the pad. Then tack down the other end of the chip. Once this is done, I would then spread a little rosin on the component and re-solder each end. This would make a nice connection as you can see in the picture below.
This process is a little laborious but effective. The reason I don't immediately put down rosin is that it can be sticky and it gets on your tweezers. When your tweezers get sticky it is 'game over'. The components start to stick to your tweezers and you will have trouble placing them.
I made a rookie mistake in my power design. The PCI connector needs +-12V. So, I decided to just make all the other voltage rails out of the +12V line. I put all my regulators in parallel (5V, 3.3V, 2.5V, 1.8V, and 1.5V) and fed them 12V. Unfortunately, the thing about linear regulators is that the current into the device is equal to the current out of the device. So, if you have a voltage drop of say... 7V (= 12V - 5V) across the device and you are trying to get 1A through it... you end up with 7W of heat! Ouch. I was using some voltage regulators from Linear Technologies (LT1963A) and they would simply shut down when I tried to pull any current through them because they got too hot. Lesson learned.
To fix this, I decided to feed the regulators just 5V (and ignore the PCI connector for now) and cascade the lower voltage regulators. This is what the 'red' wires in the picture is all about. The 5V source is fed to the 3.3V regulator. The output of the 3.3V regulator is fed to the 2.5V regulator... and so on. Of course, this works pretty good.
The lower voltage rails to the MPC5200 have to be pretty stable. My bench supply is a switching power supply and it seems to be going bad. Right now, I am getting about 200mV of noise on the line and there doesn't seem to be anyplace to send the device for service (Mastech HY5005-2).
To fix this problem, I cut the cord to my Phytec power supply and used that as my 5V source. This works very well. The Phytec power supply is capable of delivering 1.5A at 5V. Right now, my board is taking about 750mA at 5V.
Jon's modifications to UrJtag are working well. I am able to use it to toggle lines on the MPC5200. I have also been able to use it to program flash.
In the beginning, I used its ability to toggle a line to verify that my address and data lines to the flash chip were working and not bridged. This was a slow and tedious task as I was fighting with the poor soldering job of the IR welder. However, after I got boards back with professionally mounted BGAs, the lines all toggled well and independent of one another. After that, it was easy to use it to program a flash chip.
Jon had already gotten a headstart on configuring Uboot for our board by experimenting with the Phytec board. Jon helped me setup my compile environment with his version of uboot (see his previous posts). We then went throught he pcm030.h file line by line changing things to match our configuration. We changed where flash was located and how big it was. We also changed the GPIO port register to match our board configuration.
I spent quite a bit of time tracing through the uboot startup code. After we got uboot partially configured via pcm030.h, I was able to verify that the CPU was seeking code from flash and executing it. I discovered that I could toggle one of the GPIO lines by writing to its register. I could see this toggle on my scope. So, I slowly traced the uboot startup code by placing toggles on the GPIO line and watching them on the scope. Along the way, I would fix things in the pcm030.h configuration file. Eventually, we got to the uboot command prompt and were able to command the system.
The software will be checked into the repository soon.
I bought a new USB microscope from Brando in Hong Kong. Cost $78 plus a $3 shipping fee. It comes with a simple capture program for Windows. It also is working under Ubuntu 9.0. I am still getting the hang of using it. You basically have to use two hands to get a clear shot. One hand to steady the mount and one hand to focus and push the capture button. Here is a picture of the corner of one of the RAM chips.
- tylerjbrooks's blog
- Login to post comments