Tip 1: Be aware of software compatibility
- Use the same DDR Memory chips as used on the reference board
Why? Different DDR2 / DDR3 memory chips may require different memory controller settings. If the settings in memory controller registers are not correct, your board may not boot.
- Use the same FLASH memory chip as used on the reference board
Why? Different NAND FLASH may not be recognized by bootloader and board may not boot. For prototype, use exactly same chip & same size as used on the reference board.
- Use same peripheral chips as used on the reference board
e.g Audio, Ethernet, … Why? If you use same chips as used on the reference board, your peripherals will be already supported by the software delivered with the reference design. Otherwise, it may take a lot of effort to add a working driver.
- Map devices to the same address as on the reference board
e.g. use same chipselects, base address, … Why? Peripherals may not be recognized or found by bootloader or OS if mapped to a different place. Software modifications is then required.
Tip 2: Be aware of component availability
- Be sure, you can buy all the components from standard suppliers and in required quantity.
Some reference schematics are build from very hard or impossible to get components. Some component manufacturers ask design companies to use their chips to become more famous, but the manufacturer can be very small, hard to contact or – too famous (they will ignore you). These may be for example manufacturers of power supply chips, passive components or very specific peripherals. Don’t use them, find a replacement. Two examples – Realtek and Winbond – their components are extremely hard to get.
Tip 3: Choose a right replacement
Don’t forget. ARM boards are very software depended. Hardware has to be supported by software – usually by Bootloader and in OS. Otherwise, source code modification is need. This can sometimes be very very difficult, time consuming and even impossible.
What if you have to use a peripheral which is not on the reference board?
First of all, have a look at ALL available reference schematics for your chip. Don’t look only in chip manufacturer schematics, check also some other designs using same chip. If you can not find any reference schematic, look for any board using same CPU and have a look what exact chips they used for your peripheral.
Why? If someone used it, there is a pretty good chance it will work. If you select a chip without checking, it may not work in your design – even if it should. Many chips have bugs / errata and may not behave based on specification (for example, recently I had this problem with TI & AMD processors – one didn’t meet GMII specification, the other one LPC specification – they only worked with particular peripheral chips).
Once your prototype is up and running, you can experiment and test bigger memories or different manufacturers.
Let me know if this post was helpful for you 🙂 Thank you.
hai
robert… about tips 1, u say is use same DDR memory… how if the
refrence board use just 512mb and we want to upgrate to 1gb or more?
and any problem too if the refrence board use POP memory…
LikeLike
Usually, schematic circuit and PCB layout is same and total memory size depends on the fitted memory chips. For very first prototype you can fit for example 2 boards with 512 and three boards with 1GB. So you can start with 512 and when you are sure your board is ok, go ahead and test 1GB.
Footprint: depends what kind of DDR you have in mind … but many DDR2 / DDR3 chips use standardized footprint. Usually only more address pins is connected.
Number of chips: the best is to design the board with number of chips which covers your minimum and maximum memory configuration + meets your speed requirements
LikeLike
Hi Robert,
Recently I made my own ARM LPC13xx based design using Eagle PCB. However I have taken reference designs into account but missed some important connections.
Now my board is manufactured & I’m facing some potential problems. When I try to solder externally some wires or discrete components the circuit behaves in strange way. I can figure out change in voltage level at some pins of MCU. I don’t understand what is going on? Please help if you have faced similar problem ever…
Also if you have worked with ARM CortexM3 boards, then what to do for putting it into programming mode. I’ve used NXPISP utility program update LPC with blink program (I’ve found somewhere) the first time. But after that I’m not able to put the device into ISP mode again. I referred to the manuals which shows using combination of RESET+ISP buttons, but I’m not able to make it as Mass Storage Device(CRP Disabled) again. Please help…..
LikeLike
Hi Prasan, check power pins, check RESET pin and check clock pins. Maybe this will help. Let us know. Have a nice day, – Robert
LikeLike
Hi Robert,
Thanks for reply. Some tweaking helped. I pressed ISP button before powering-up the board through cable, & when powered-up it booted up with CRP DIABLED mode.
The same process I do when the board is connected then nothing happens. May be hardware needs some modification.
Prasan
LikeLike