Skip to the content
PCBKitNew board
2 layers74.1 × 92 mmMyIMX233, the printed circuit board in 3D

MyIMX233 will be a homemade Single board computer based on Freescale iMX233 and 64MB DDR2 RAM built with KiCad

Size
74.1 × 92 mm
Copper layers
2
Thickness
1.6 mm
Parts
101
Nets
133
Pads
442
Tracks, vias
7,377, 136
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20170123)
Created
1 May 2017
Updated
8 Oct 2017

Overview

MyIMX233 is an open-source printed circuit board by samarjit, from the samarjit/MyIMX233 repository on GitHub. It is a 2-layer board of 74.1 × 92 mm with 101 parts on 133 nets, routed with 7,377 tracks and 136 vias.

Its parts include 42 capacitors, 27 resistors, 10 diodes, 8 connectors and 2 ICs. It belongs with the computers and single-board computers boards of this library.

README

README.md

Let me see if I can build a linux Computer (It works now!)

I am starting to build a single board computer with freescale microprocessor iMX233 128 LQFP and 64MB DDR2 SDRAM in 66TSOP. This single board computer will be bare bones with lots of GPIO exposed. There is no special goal for this project. I am just curious to see if it works. In future I might add an LCD. The PCB is two layered only and can be manufactured cheap.

TODOs (done)

  • Increase pad lengths of LQFP footprint. (done. Hope to mitigate the soldermask between pads issue |<-0.06mm space-><-0.08mm web-><-0.06mm space->| = 0.2mm)
  • Perhaps add a jumper on the 2.5v LineReg and separate out VDD_MEM to be able to test the 2.5v is not 0 due to loading. (skipped)
  • 88 USB_ID SSP1_DETECT ? Should I use this to CD of SD card connector or micro USB ID pin? In my circuit it is pulled low via LED. Tux,calculator does the same too.
  • Add option to boot resistors LCD_RS and LCD_00..LCD_05 (done)
  • 14 LCD_RS ? High for register boot mode. Or low with 47k resistor for OTP boot mode. Olimex is confusing OTP is set MMBR and LCD_RS is high. (done)
  • Schottkey Diode D1 VDD4P2 direction. Its strange in ref diagram vs 5v wall. VDD4P2 -|>||- VDDBATT. (done Optional. Not populated in running board)
  • Series resistor 1E for preventing oscillations (done 3 series resistor added, usb, batt, 4p2) /in old circuit Test by removing Diode, and LED_RS to gnd via resistor.
  • RESET circuit? Make sure not to get into USB recovery mode. add zener 1.0v so that it never reached 3.3v or just remove reset circuit altogether.
  • Configure to get rid of batteries as per rev-c circuit. Add 1k resistors in DCDC_BATT and BATT and some caps to GND.
  • Need to convert the SD card connector to a cheaper version available on ebay or alibaba. (done part-ATTEND 112J-TDAR-R01) I got the files from https://forum.kicad.info/t/microsd-component-footprint-help/3095/5 and placed in parts/ folder. It would be awesome if I can find some 3D model of it. If someone finds it please create an issue. (Yes found)
  • Make DDR RAM pin pads longer (new)
  • Make alternate USB plug preferably through hole or longer pads in micro USB. (new)
  • Make micro-SD pads larger and longer and add a few decoupling capacitors.(new)
  • Make more rooms for the inductor as most inductors are really big 8mm long plus place for hand soldering.(new)

TODOs (ignored)

  • POWER off circuit?
  • Is Micro SD pullups on all pins necessary? SSP1_DETECT used? (done added them in the bottom side. Data3/CS pulled low)
  • Added 120R between CLK nCLK.

Length Tuning

  • D0..D7 LDQS LDM - 39.7mm tuning (real 40.2mm)
  • CLK nCLK - real 32.2/32.6mm
  • D8..D15 UDQS UDM - 25.5mm tuning (real 26.0mm)
  • Address: 32.35mm ~ 25mm
  • CKE- 20.2mm
  • SD: 24.8mm tuning (real 25.3mm)

Installation steps

Cloning this repository should work. It does use opendous conn_fci from https://github.com/cpavlina/kicad-pcblib.git, https://github.com/cpavlina/kicad-schlib.git Copy kicad-pcblib\conn-fci.pretty to KiCad\share\kicad\modules\conn-fci.pretty Add kicad-schlib-master\library\conn-fci.lib to SchematicEditor -> ComponentLibraries Add opendous to component libraries too.

Drivers for this project.

  • Until recently I didn't know of a decent opensource software for PCB designing or circuit designing which can be used to design complicated circuits involving microprocessor. I recently discovered KiCAD which is opensource pcb designing software and people have done microprocessor design with it eg. OLinuXino. I am trying to learn PCB designing using KiCAD now.
  • Second driver was Clementine Core project which I saw in circuitmaker website. This schematic looked so simple and pcb was on 2 layer design, which changed my thought process altogether that linux running board designs may be something I can try.
  • Third driver was LibreCalc which almost proved that KiCAD can be used to design IMX233 based board. I hope to learn from their mistakes, but a newbee like me can uncover a whole lot of new mystries.

So I have put together a mashup of schematic design of IMX233 and 64MB RAM from freescale reference design and other sources.

Freescale microprocessor:

  • MCIMX233CAG4C

DDR RAM - I think all these below RAM chips are compatible.

  • AS4C32M16MD1-5TCN
  • HY5DU121622D(L)T(P)-J
  • MT46V32M16P-5B:J (This is the only one I can source, so I am using this)

This project is a work in progress and there is no gurantee that I will ever be able to complete it :).

But if you want to try building same stuff as I am building. Go ahead and fork it. Download KiCad. I am using nightly version of it, because it does not require you to export the netlist and import it again in pcb editor. Make the workflow really easy. I can see one bug in KiCAD, which is after modifying the footprint by adding a step file. It looses the saved settings.

Once you have installed KiCAD, open MyIMX233.pro file.

MyIMX233.sch - Schematic file.

MyIMX233.kicad_pcb - PCB

ReferenceSch - contains reference materials. I uploaded all of them for providing content incase someone wants to understand the design.

Progress:

Oct 8 It worked! You can start building one today for yourself :)

Few soldering quirks are there. USB pads are quite small to solder. Also pad to hold USB in place is also very small and bad for soldering. Even the SD card pads are also small for soldering. These were new footprints so in next version I will make longer pads for these. RAM pads can be made slightly longer for reliable soldering. Soldered board and powered up without SD card. Some error were coming 0x80207002. Boot loader looking for I2C and it is not initialized. Turned out to be soldering of one pin was not proper for LQFP128. Fixed this pin issue then SD card missing related errors were coming. Added SD card with bogus data 0x8020A007 - ERROR_DDI_SD_CONFIG_BLOCK_NOT_FOUND. Added SD card formatted properly but still 0x8020A007. Little bit further digging showed that SD card MBR boot is not enabled by default. We need to burn an OPT bit HW_OCOTP_ROM0::SD_MBR_BOOT to enable booting from SD card. This process is irreversible. Default boot mode is BCB. I read up again librecalc's failure blog. It gave two perl programs to burn the SD card with u-boot in BCB mode. The 2nd perl program didn't run as it assumed smaller SD cards only. I edited the perl program to make it find proper boot signatures. Now we can see something HTLC in UART console. That's too less info to debug further. At this point I posted in freescale community. https://community.nxp.com/message/949934. I decided to blow the MBR OTP flag using BitBurner. Then added MBR based uSD card and same u-boot. Now again it shows HTLC. Good news is that MBR booting works. But it fails very soon. Need bootlets which gives more detailed log instead of u-boot. Turned out voltages are fluctuating all 3v3, 4v2, 1v8, 1v. They were fluctuating in a cycle. I burned official Olinuxino image in SD card. That seems to have bootlets so it gave more info. After right after memory FRAC 0x92926192 it reboots. I heated up all the pins of DDR and iMX233 with soldering iron. It goes 1 more line ahead in log init_ddr_mt46v32m16_133Mhz and sometimes power 0x00820710. I added a big capacitor in place of battery which goes the log to further and says uSD card general error ending with r14<0>HTLLLL... I tried adding a few caps on 3v3. But nothing helped. Then I tried the other jumper of battery mode. Then it started loading kernel. Bootup logs Final Board

Aug 2017

Started modifying the schematic to make battery and USB wall power optional using jumpers. Also realized boot selection can be done using resistors. Sent for fabrication of PCB to pcbpower.

July 2017 end first soldered board

Good news is most of the components fitted. Also I got some confidence about my KiCAD skills. Some shortcomings were observed, like the pads for soldering were two short for the fine pitched LQFP128 0.4mm pitch and solder mask dams were not created between pads which made it incredibly hard to solder. I will have to customize the LQFP128 footprint to make it suitable for hand soldering. Some 0402 caps were placed very close, I realized the courtyard verification of components is not turned on by default. I had limited success like UART was working USB was working, BitBurner was working and showing all the OPT(One Time Programmable) bits. Some gibberish was coming on UART console. I used solder paste for soldering, so I thought some shorting might be happening. Then I tried to do reflow soldering to make the solder joints liquify once and then quickly cool it using a frying pan. It actually fried my board! I also mistakenly soldered uSD card with power on! Carelessness! First Proto Soldered

  • I also ordered components. I didn't realize this would be a pain. element14 is not that accessible for an individual. I ordered mostly from Shelfkey and some from KitsNSpares. I am still tensed if footprints I chose will match the actual components. Second I am very much tensed about soldering 0402 components.

  • Final version of PCB sent for fab in pcbpower. Sent to fab

  • Added few options to use DCDC. I was not comfortable of grounding DCDC_BATT and BATT pins, so I added a few jumpers. Also added provisions to add battery.

  • Learnt basic Freecad to build the Step files of DDR SDRAM 66TSOP. Here is the project I created - MT46V32M16P-5B-Freecad-Step.

  • Initial version. DDR RAM child 3D missing and SD card's 3D missing. Initial plot

  • Learnt Length Matching in Kicad.

  • Figured out placement of components. I am going with Clementine Core's placement which seems very good. Initial plot

Parts

101
QtyValueFootprintReferences
21100nCapacitors_SMD:C_0402C3, C10, C12, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C31, C33 +5
647kResistors_SMD:R_0603_HandSolderingR9, R10, R11, R12, R13, R14
41uCapacitors_SMD:C_0603_HandSolderingC13, C36, C37, C41
422uCapacitors_SMD:C_0805_HandSolderingC4, C5, C11, C25
30.1ohmResistors_SMD:R_0603_HandSolderingR19, R25, R26
3100kResistors_SMD:R_0603_HandSolderingR21, R22, R23
310nCapacitors_SMD:C_0402C28, C34, C40
35.1vDiodes_SMD:D_SOD-323_HandSolderingD4, D5, D10
210pCapacitors_SMD:C_0402C1, C2
21KResistors_SMD:R_0603R15, R16
21K1%Resistors_SMD:R_0603R2, R3
21kResistors_SMD:R_0603_HandSolderingR1, R7
21uCapacitors_SMD:C_0402C26, C27
24.7kResistors_SMD:R_0603_HandSolderingR6, R8
247KResistors_SMD:R_0603R17, R18
247uCapacitors_SMD:C_0805_HandSolderingC29, C30
25.1vDiodes_THT:D_DO-35_SOD27_P7.62mm_HorizontalD7, D9
2CONN_01X04Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mmDEBUG_UART1, I2C1
1100KResistors_SMD:R_0603_HandSolderingR4
110kResistors_SMD:R_0603_HandSolderingR24
110uFCapacitors_THT:CP_Radial_D5.0mm_P2.50mmC38
1120RResistors_SMD:R_0603R27
11KResistors_SMD:R_0603_HandSolderingR5
11uCapacitors_SMD:C_0805_HandSolderingC7
11viMX233-OLinuXino-NANO_Rev_BEagle:GOGO_TESTPAD2P6
11v2iMX233-OLinuXino-NANO_Rev_BEagle:GOGO_TESTPAD2P2
122uFCapacitors_THT:CP_Radial_D5.0mm_P2.50mmC42
122uHmylib:Bourns22uh6x6mmL1
124MhzCrystals:Crystal_HC49-4H_VerticalY1
12v5iMX233-OLinuXino-NANO_Rev_BEagle:GOGO_TESTPAD2P4
13.3vDiodes_SMD:D_SOD-123D6
13.3vDiodes_THT:D_DO-35_SOD27_P7.62mm_HorizontalD8
13v3iMX233-OLinuXino-NANO_Rev_BEagle:GOGO_TESTPAD2P5
14.7ufCapacitors_SMD:C_0603_HandSolderingC32
1470kResistors_SMD:R_0603_HandSolderingR20
14p2iMX233-OLinuXino-NANO_Rev_BEagle:GOGO_TESTPAD2P1
1BatteryConnectors_JST:JST_XH_B02B-XH-A_02x2.50mm_StraightBT1
1CONN_01X01Connectors:1pinJ2
1CONN_01X05Pin_Headers:Pin_Header_Straight_1x05_Pitch2.54mmGPIO1
1CONN_01X30Pin_Headers:Pin_Header_Straight_1x30_Pitch2.54mmLCD1
1DDR_SDRAM_MT46_x16mylib:TSOP66_JEDEC_DDR_SDRAMIC2
1D_BattDiodes_SMD:D_SOD-323_HandSolderingD2
1LEDLEDs:LED_0603D3
1LEDLEDs:LED_D4.0mmD1
1SD_ebay-uSD-push/push_SMDmylib:uSDcardXS1
1SWITCH_PUSHBUTTONButtons_Switches_THT:SW_PUSH_6mmSW1
1USB_OTGmylib:USB_Micro-B_MOLEX_105017-0001J1
1USB_bootPin_Headers:Pin_Header_Straight_1x02_Pitch2.54mmJP_USB_boot1
1VDDA1v8iMX233-OLinuXino-NANO_Rev_BEagle:GOGO_TESTPAD2P3
1WithBattPin_Headers:Pin_Header_Straight_1x02_Pitch2.54mmJP1
1WithoutBattPin_Headers:Pin_Header_Straight_1x02_Pitch2.54mmJP2
1iMX233mylib:LQFP-128_14x14mm_Pitch0.4mmIC1

Questions

How big is the MyIMX233 PCB?

It measures 74.1 × 92 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MyIMX233 use?

101 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the MyIMX233 KiCad files?

From the samarjit/MyIMX233 repository on GitHub, at the commit this page was made from: the board is MyIMX233.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the MyIMX233 design in my own project?

Its repository states no licence, so its author keeps all rights: ask samarjit before reusing the design.

Similar boards

  • 2 layers55 × 80 mmBoard esp32 v2, the printed circuit board in 3D

    Board esp32 v2

    sudomesh/disaster-radio

    A (paused) work-in-progress long-range, low-bandwidth wireless disaster recovery mesh network powered by the sun.

    101 parts1.1k
  • 2 layers99 × 145.5 mmLamp, the printed circuit board in 3D

    Lamp

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    101 parts915
  • 2 layers230.5 × 60 mmEEZ DIB AUX PS, the printed circuit board in 3D

    EEZ DIB AUX PS

    eez-open/modular-psu

    EEZ Bench Box 3 (BB3) Modular T&M chassis

    101 parts394
  • 2 layers224.6 × 74.2 mmKeyboard ch552-44, the printed circuit board in 3D

    Keyboard ch552-44

    rgoulter/keyboard-labs

    Repo with my PCB designs and keyboard firmware

    101 parts236
  • 2 layers90 × 60 mmCh32v307gigabit, the printed circuit board in 3D

    Ch32v307gigabit

    cnlohr/cnhardware

    My dumping grounds for all my kicad projects and random hardware bringup.

    101 parts114
  • 2 layers450 × 125 mmA1200KB, the printed circuit board in 3D

    A1200KB

    aeberbach/A1200KB

    As of right now this is revision 4. I know it could be improved very, very slightly by changing the position of key groups by less than a millimetre but I think it's complete now.

    101 parts75
  • 2 layers100 × 100 mmLittleSwitchBus, the printed circuit board in 3D

    LittleSwitchBus

    profdc9/ModularTuner

    A Modular Antenna Tuner for a Phased Array Antenna System

    101 parts59
  • 2 layers133.8 × 91.7 mmCorney island, the printed circuit board in 3D

    Corney island

    ceoloide/corney-island

    An Ergogen-based, autogenerated version of foostan's crkbd (Corne) split keyboard

    101 parts58MIT