imx233 keeps rebooting while initializing power.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx233 keeps rebooting while initializing power.

Jump to solution
10,025 Views
pierreparent
Contributor III

I'm working on my own imx233 board and I get unexpexted boot problem. Using bootlets the board keeps rebooting just after voltage measurement.

I double checked every power pin, and the inductor.(Since I did not intend to use battery I did not put any capacitor connected to DCDC_Batt and Batt, could this be a problem?)

I tried with u-boot, and it also crash after "HTLC", but does not reboot after. The voltage are then stable 5V, 4.2V, 2.5V are ok, but 3.3 VDDA VDDD are down to zero.

Would you have a hint on where to look for ?

Thanks in advance.

PowerPrep start initialize power...

Battery Voltage = 0.88V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.91V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

No battery or bad battery                    detected!!!.Disabling battery                    voltage meas�HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC

PowerPrep start initialize power...

Battery Voltage = 1.90V

Labels (2)
1 Solution
3,374 Views
jaydcarlson
Contributor III

Yes, you can definitely have too much capacitance. For example, Freescale advises if you have more than  (I think) 10 uF on the DDR supply line, it can prevent the DDR memory voltage from hitting the 2.5V target fast enough, which will prevent the system from booting properly. If your voltages aren't at the proper levels, you've got serious problems with your layout.

The 0x8020a023 code indicates you probably don't have the correct power supply decoupling on your MicroSD card, or your power supply is too noisy, or your traces are too long or routed incorrectly.

You may want to stop re-working your current board and try fixing all the problems you've identified at this point. You're building a 454 MHz Linux system with DDR memory and a 96 MHz SD card interface. You won't be able to hang wires off your board and do the sort of rework techniques you would with an embedded microcontroller.

Redesigning your board would also give you a chance to post your layout info to get feedback from the community. I would be more than happy to have a look at your design and spot any "red flags" that might prevent it from booting. It's a safe bet that you'll have to adjust your DDR memory routing -- please don't take offense to this comment, but if you're enough of a novice that you weren't able to get your decoupling capacitors where they need to be, I highly doubt you were able to route the DDR memory bus properly. It's much more challenging than the power supply.

Food for thought.

View solution in original post

0 Kudos
42 Replies
2,215 Views
pierreparent
Contributor III

Hi,

I just finished to solder my board.

First the good news :smileyhappy: : I succeded in lanching u-boot and interact with it. Not linux yet, mainly because I've no idea, how to create a Sd card bootable by imx with boot block, but still having a partition table with linux on it, that u-boot can use. (If you have a clue?)

BUT there is still major stability isses. I need to reboot the board several times before it boots. And when I try to boot form USB it allways crashes at early stage. My theory is it comes form 3.3v. Although I have more decoupling caps than olimex, and they all are very close to imx; I realize they all are close to DCDC_3V3 and VDDIO_3 but none are very close to VDDIO_1 or SD.  I will try to add a 22uF capacitor to see if it improves stability. (I often get the error 0x80501002 when it fails to boot).

I will do more test in the following days.

Thanks for your help

0 Kudos
2,215 Views
jaydcarlson
Contributor III

For me, I set up a Yocto environment, set my machine type to imx233-olinuxino-micro, did "bitbake core-image-minimal" and DD'd the image onto a blank SD card. It's pretty freaking easy. Yocto will automagically build the correct SD card structure, including any u-boot code and stuff. Yocto is very popular within the industry because it's seamless, and usually contains the most up-to-date stuff.

Olimex recommends Arch Linux for reasons I'm not aware of (it might be easier for novices to get started with?) -- so you could also give that a try.

0 Kudos
2,215 Views
pierreparent
Contributor III

Olimex boards have a fuse burned in order to boot directly from mbr (master boot record) wich is a partition table.

But by default form factory, imx boots form a special boot block. I create my Sd card with a script  "write_bootstream.pl" .

I'll keep you informed.

0 Kudos
2,215 Views
pierreparent
Contributor III

Just a quick update:

(I had few time this last month to work on this project)

*I ran extended tests on RAM (on plage 0x40000000 - 0x43fffff0) via u-boot. No error was found. So the connection to the RAM seems to work fine! :smileyhappy:

*There are stil major issues that prevent my board from being usable. I don't realy know yet where it can come from. But what I know is that it crashes most of the time (if not allways) when laoding large amount of data from either SD or USB. So I suspect to be a problem related to 3.3V.

Pierre.

0 Kudos
2,215 Views
pierreparent
Contributor III

I'm very very glad to anonce that everything is working fine now! :smileyhappy:And linux is booting.

The last reamining problem I had was similar to the one described by olimex:

"imx233 weird DCDC capacitor problems | olimex"

Thanks to everybody who  helped me! :smileyhappy:

0 Kudos
2,215 Views
pierreparent
Contributor III

So here are pictures of my current layout. Thanks in advance for any helpfull comment.

imx.png

imx1.png

imx3.png

imx4.png

0 Kudos
2,215 Views
jaydcarlson
Contributor III

So the first problem I see isn't with the power stuff, but with your DDR memory. You seem to be routing the pins "just to hook them up" -- this isn't a 100 kHz i2C bus on an Arduino board where you can get away with that -- this is a 266 MHz DDR memory bus. You can't use right-angle traces (they cause huge impedance changes), you have to keep trace spacing consistent (as much as possible), and the DDR CLK signals are a differential pair -- they need to be routed as such. Trace lengths need to be matched. Solid ground references need to be poured under the traces.

Two-layer boards are feasible, but only if you put the DDR memory on the bottom of the board, right under the i.MX233. Download the design files from Olimex for their Olinuxino Micro to see how they do it. I'm pretty sure they were inspired by the TuxRail board, which also has similar routing. Without putting the DDR memory under the chip, you're never going to get the trace lengths matched close enough for signal timing.

If you want to keep components on a single side, you'll have to go to a four-layer board. Trust me -- I've tried routing a two-layer single-sided i.MX233 board, and they've never worked. Four-layer boards make routing much better.

You also have major power issues. You just need to pay attention to what you're doing a little more, use planes better, and switch to smaller caps. First of all, use the largest traces you can fit for all power connections -- especially that inductor. You have a polygon pour on your top (red) layer, but look at it -- it's useless. None of the important components are connected to it because you've got traces and components that block it. I had to look at it for a while to figure out what it was even connected to -- ground. Typically, on two-layer boards, I do ground on the bottom and VDD on the top layer. I put my decoupling capacitors right next to the power supply pins, and then drop a via to ground.

You need to get those caps way closer to the pins -- and use wide traces if you need to carry power (say, the 1.2V supply rail that you're routing under the chip). For capacitor sizes, I recommend 0402 for the 100n, 0603 for the mid-sized (1-5.6uF), and 0805 for the big guys (33+ uF). The DC/DC converter pins will need one of each of those. The i.MX reference design also has a 10n, but I've always safely ignored that one. Linear regular output pins just need the mid-sized one and the 100n -- I use 4.7u for the mid-size cap because I have a few reels of them laying around. Power input pins just need the 100n. In all cases, prioritize their placement in ascending order -- for the DC/DC converter outputs, the 100n should be closest, followed by the mid-sized cap, followed by the large reservoir cap.

Your board is also just really sparsely placed and routed. There's huge gaps of hundreds of mils between components. You just need to squeeze everything in -- that'll help a lot.

For an example of a layout that works, here's a picture of one of my i.MX233 layouts:

xrgHacF.png

Full disclosure, this board is obviously a work in progress and hasn't been tested, but it's in line with how a board like this should be routed. The layer stack-up I'm using is 3.3V on the top (orange) layer, 2.5V on the second (purple) layer, GND on the third layer (solid power plane -- no routing -- not shown), and 2.5V on the bottom (blue) layer. Do you see now nicely all the caps fit in together? Except for the 1.2V and 1.8V supplies (which only have a few connections), all the voltage nets are routed on planes and polygon pours. Here's a picture with those polygons shown:

G2dkjrw.png

Notice how few dead areas there are? That takes thoughtful, careful component placement and routing.

I don't want to get into a tools discussion -- because, at the end of the day, the best tool is the one that you know how to use. Having said that, I've never used KiCAD much, and although I'm a big fan of open-source software, until their experimental follow-me and push routing get integrated into the program, I don't think it's a useful tool to routing a board like this. It doesn't have any built-in support for length tuning, and routing is painfully slow to do. If you want to stick to KiCAD, you'll most likely have to export your board to FreeRouting.net, and do the routing there. Yuck.

Luckily, as a university student, I have access to Altium -- so I was able to route this whole board by hand in about an hour :-) If you have access to a professional PCB editor, you should definitely take time to learn it. And if you ever get a job doing PCB design for a company, don't let your boss be a cheapskate -- make him or her get you a copy of a real PCB editor (Altium, Orcad, PADS, etc).

2,215 Views
pierreparent
Contributor III

Hi

If i may ask you one more time for help.

Here is my current ram routing. All traces are between 13mm and 15.5mm long. I've matched groups more precisely when I could. Do you think it should work?

By the way I've started to devellop a length matching tool for kicad (and joined the devellopement team):

http://www.youtube.com/watch?v=UdQ-2EnWNkw

(of course it is very earlu stage).

Also I'm starting to wonder about trace inpedance. Do you think it is important. Also when I do the calculation whith the specification of my pcb manufacturer I get a result very far from 50ohm, and 50 ohm would require very large traces. But i'm unsure whether I should use 0.18mm (layer 1) or 0.018mm (croper foil) in the calculation. My current track width is 0.2.

My stack-up is 3.3v/groung/2.5v/ground.

Thank's in advance for your kindness! :smileyhappy:

ram2.pngram1.png

ram3.png

spec.png

Pierre.

0 Kudos
2,215 Views
EgleTeam
Contributor V

Wow Pierre!!! Your improvements are superb!:smileyhappy:.

As Jay said, don't worry about lenght matching: 1-3mm is not critical at 133Mhz.As also said Jay, pay attention on decoupling caps and polygons under nets.

Congratulations!

Manuel.

0 Kudos
2,215 Views
pierreparent
Contributor III

I've just seen a picture of olinuxino micro. They don't seem to have done any global length matching. There are very short traces (like clk) and very long ones.

Therefore I guess my length matching should clearly be good enough.olinuxino micro.png

0 Kudos
2,214 Views
pierreparent
Contributor III

Thank's!

(Now my tracks are between 13.5-15.5mm, but for example adress group is +-0.25mm.  hope it will make it)

So I will handle the last details, and send it to production. I'll keep you informed! :smileyhappy:

Pierre.

0 Kudos
2,214 Views
jaydcarlson
Contributor III

Wow! This is an order of magnitude better. And I love that you're contributing to KiCAD -- you guys are really going to give Altium a run for its money here in a few versions.

I'm still a little worried about your trace length matching -- but I guess with such short traces, it might be fine. I've heard that data tracks should be within 25 mil (25 thou -- whatever you want to call 25/1000th of an inch) of the strobe pin, and all data tracks should be matched within their lane to 50 mil (remember that your DDR part has two lanes, since it's a 16-bit part). For what it's worth, the Olimex board has traces matched to ±0.2mm, I believe.

I wouldn't worry about controlled impedance. That's more critical if you've got a memory bus that's 10 cm long, but yours is very short; you should be fine.

Make sure your differential clock signals are routed to exactly the same length (like, within 4 mil of each other).

If you're having difficulty doing some of the routing, remember that you can swap data bus pins inside the byte lane -- in other words, D0-D7 can be interchanged, and D8-D15 can be interchanged. NEVER swap any of the other pins.

With respect to power, one thing I would recommend: either use the two-layer routing style that Olimex/TuxRail used (I think both top and bottom layer were ground pours? Check the design files), or, alternatively, use the recommended stackup in the app note that EgleTeam linked to (http://cache.freescale.com/files/dsp/doc/app_note/AN3989.pdf). Top layer should be GND + routing; second layer should be a solid ground plane (no routing); third layer should be ALL of your power planes; and fourth layer should be ground + routing. I know I mentioned that I used a 3V3 pour on the top layer of one of my designs, but I wouldn't recommend doing that -- especially around the DDR bus, since you really, really, really need GND reference for those traces. So put 3V3 and 2V5 on a split plane.

One more thing: it's kind of a pet peeve of mine to see via--pin-capacitor connections. The capacitor should always go between the via and the component pad. It sounds trivial, and most of the time it is, but the via-capacitor-pad arrangement gives you the best decoupling performance, and some companies even explicitly mention that in their layout recommendations.

These days, boards are cheap -- you may want to incorporate a few of these suggestions, run a board, and see what happens. Besides, soldering is fun!

0 Kudos
2,214 Views
pierreparent
Contributor III

Wow! This is an order of magnitude better.

Thanks! Let's say that I had a lot to learn, and I probably still have! :smileyhappy:

In freescale imx28 routing guidelines they say +-25mil (=+- 0.635mm <=>1.3mm delta) within groups (adress,data,control,clk). I'm going to see if I can do easy improvements at that level the level of length matching, but I almost reach this criterion allready.

I've talked to someone who tried a board without length matching (And who had clock traces way longer than others). He reported that he could run linux on the board only in slower ram mode. If I does not work I can at least try that.

If you're having difficulty doing some of the routing, remember that you can swap data bus pins inside the byte lane -- in other words, D0-D7 can be interchanged, and D8-D15 can be interchanged. NEVER swap any of the other pins.

Really? thats great! How does the imx notice it?

I will change power planes, that's  right that 2.5V is useless when not around ram. What clearance shoud I use for power planes (my current is 0.5mm is it too much?) Should it be the same as inter-track clearance?

Tank's a lot:!

Pierre.

0 Kudos
2,214 Views
jaydcarlson
Contributor III

You're definitely learning fast!

The processor doesn't need to know about pin swaps, since reading data from the device will "undo" the pinswapping. Let's say you want to write 0xF0 to the RAM, and you've swapped the low 4 bits with the high 4 bits. The processor writes 0xF0 to the databus and the RAM receives 0x0F (because of the pin swaps). The RAM internally stores 0x0F. Later on, when the processor asks for the data at that location, the RAM sends 0x0F, but because of the pin swaps, the processor receives 0xF0 -- the original value. So, no configuration is necessary. Just make sure that you only swap pins WITHIN a data group (since they're clocked independently -- sorta -- read up on how DDR works if you want an explanation).

You can use the same clearance for power planes that you use for everything else. MAKE SURE that your 2V5 pour covers the entire DDR bus area (I basically poured it under the whole imx, too). You NEVER want a high-speed trace to cross over different planes. This includes USB -- so make sure that you don't have different power planes poured under any high-speed routing (USB, DDR, I'd say SD card, too...)

0 Kudos
2,214 Views
pierreparent
Contributor III

Ok so tanks a lot, that is very helpfull. :smileyhappy:

I realize that my routing was way too cheap. I will start from scratch in 4 layers.

I think for Ram routing I will try to follow as much as possible olinuxino maxi for ram routing.

Just a last question: do you have a link that explains all the rules to follow when routing high frequency boards?

Thanks again.

2,215 Views
EgleTeam
Contributor V

Jay,

Nice layout to be an student :-). Also you have solid knowledges: I'm sure you have a brilliant future. Please let me give some hints (humble opinion):

1. DDR in MX23 works at 133Mhz not at 266Mhz. Impedances and length matching are important (specially at 3.3V) but in my opinion in that case are more important power planes, power vias and decoupling/bulk capacitors.

2. Why do you use curves instead of 45º?. I mean: you need more room and Altium calculates the lenght worst...

3. I would place wider tracks on bulk capacitors (processor) and few more vias.

Pierre: did you use the auto-router?. Please, never do this:smileycry:.

Best regards,

Manuel.

0 Kudos
2,215 Views
jaydcarlson
Contributor III

Altium's track length calculations are inaccurate for curved traces? I've never heard that before.

Also, I disagree that you need more room to route curved tracks. With Altium's curve routing mode, you can pick *very* tight curve radii that tend to flow around components and vias better than 45 degree routing. When you enforce 45 degree turns, I've found occasionally that I end up with lots of stair-step routes.

Also, curved routing looks freakin' awesome :-)

0 Kudos
2,215 Views
EgleTeam
Contributor V

You are right: looks much more cool :-)

0 Kudos
2,216 Views
jaydcarlson
Contributor III

EDIT: I just read your second message that indicates you connected BATT and DCDC_BATTERY together. That's your problem. Lift the chip, cut your trace, re-solder, and your board should work. Good luck! /EDIT

Since you're not using a battery, did you leave the BATT and DCDC_BATTERY pins disconnected? If they're connected together, your board will not boot. I recently ran a board that uses the IMX233 (in the LQFP package), and doesn't have battery support. You may want to cross-check your schematic with mine to make sure you've got everything in order. Here's the schematic of the power block of my design:

dg2Gb91.png