Cloning Beaglebone

1,622 views
Skip to first unread message

Konstantinos Tsimpoukas

unread,
May 1, 2012, 2:17:52 PM5/1/12
to beagl...@googlegroups.com
Hi everyone

I am currently making my own clone of BeagleBone in order to run the default image.
Looking more closely to the design I would like to ask some questions:

1. Lets say that I have the PCB board ready and it is time to solder the components,
Do I need the 24C256 eeprom in order to boot the new custom beaglebone with the default image?

2. Do I need to program devices before soldering them on the board? For example, do I need to program the EEPROM and then solder it?
 
3. Does the AM3359 is ready from the factory for soldering or I have to do smt first?

Thanks in advance

Gerald Coley

unread,
May 1, 2012, 2:35:40 PM5/1/12
to beagl...@googlegroups.com
See below.
 
Gerald

On Tue, May 1, 2012 at 1:17 PM, Konstantinos Tsimpoukas <ktsim...@alteio.net> wrote:
Hi everyone

I am currently making my own clone of BeagleBone in order to run the default image.
Looking more closely to the design I would like to ask some questions:

1. Lets say that I have the PCB board ready and it is time to solder the components,
Do I need the 24C256 eeprom in order to boot the new custom beaglebone with the default image?
 
Yes.

2. Do I need to program devices before soldering them on the board? For example, do I need to program the EEPROM and then solder it?
 
I don't know. Depends on how you designed your clone. If WP is disabled or can be disabled, then no. We program it on the board using UBoot.
 
3. Does the AM3359 is ready from the factory for soldering or I have to do smt first?
 
I am not sure what you are saying. It is a SMT device and has to be mounted using a pick and place machine after you have applied the solder paste to the pads using the stencil you had made.

Thanks in advance

-- To join: http://beagleboard.org/discuss
To unsubscribe from this group, send email to:
beagleboard...@googlegroups.com
Frequently asked questions: http://beagleboard.org/faq



--
Gerald
 

Konstantinos Tsimpoukas

unread,
May 1, 2012, 2:45:31 PM5/1/12
to beagl...@googlegroups.com
hi Gerald and thanks

what exactly do you mean that you are programming via u-boot?
i know that the u-boot has the enviromental variables for booting and gives the control to the kernel (uImage)


Maxim Podbereznyy

unread,
May 1, 2012, 2:50:58 PM5/1/12
to beagl...@googlegroups.com
Here is my version:

1) 24C256 eeprom - you don't need it unless you use some fancy
Angsrtom features. The CPU itself does not need it

2) Preprogram devices before soldering - NO, you don't need it! All
software is booted from a SD card

3) No need for SMT. The CPU comes with solder balls on it. You just
need a stencil and a oven.

2012/5/1 Konstantinos Tsimpoukas <ktsim...@alteio.net>:

Gerald Coley

unread,
May 1, 2012, 2:51:23 PM5/1/12
to beagl...@googlegroups.com
You boot to UBoot over the uSD card. Then you send commands over the serial port to write to the EEPROM by address with the data you want programmed into the EEPROM. You do I2C write commands.
 
Gerald


 

-- To join: http://beagleboard.org/discuss
To unsubscribe from this group, send email to:
beagleboard...@googlegroups.com
Frequently asked questions: http://beagleboard.org/faq

Koen Kooi

unread,
May 1, 2012, 3:01:24 PM5/1/12
to beagl...@googlegroups.com

Op 1 mei 2012, om 20:50 heeft Maxim Podbereznyy het volgende geschreven:

> Here is my version:
>
> 1) 24C256 eeprom - you don't need it unless you use some fancy
> Angsrtom features.

If the so called 'linux kernel' is fancy, then yes, you need the eeprom. Technically you need it for mlo/uboot as well since it will do some voltage setting based on the eeprom.

Konstantinos Tsimpoukas

unread,
May 1, 2012, 3:05:02 PM5/1/12
to beagl...@googlegroups.com
To Gerald:

   So you are saying that the default image of Angstrom in the sd card will do the job....?
   So i dont have to program smt

   thanks again

To Maxim:

  Hi maxim and thank you, as i said I am planning to make a basic copy of the beaglebone, only with the memory, sd card, power     management and the UART0_TX & UART0_RX to communicate with the processor, just to see that everything is running..
So my concern is if everything will boot up just from the image on the default image without any previous programming of the devices (basically the eeprom)..


 



Konstantinos Tsimpoukas

unread,
May 1, 2012, 3:09:32 PM5/1/12
to beagl...@googlegroups.com
I do not get this :


>If the so called 'linux kernel' is fancy, then yes, you need the eeprom. Technically you need it for mlo/uboot as well >since it will do some voltage setting based on the eeprom.

Why the drivers of the power management wont be sufficient?

Basically the objective is to run ubuntu and android, but in the first face i would like to run the default image of angstrom.

Konstantinos Tsimpoukas

unread,
May 1, 2012, 3:13:08 PM5/1/12
to beagl...@googlegroups.com
I do not get this :


>If the so called 'linux kernel' is fancy, then yes, you need the eeprom. Technically you need it for mlo/uboot as well >since it will do some voltage setting based on the eeprom.

Why the drivers of the power management wont be sufficient?

Basically the objective is to run ubuntu and android, but as a first step i would like to run the default image of angstrom.

Gerald Coley

unread,
May 1, 2012, 3:24:45 PM5/1/12
to beagl...@googlegroups.com
Run whatever you like. But, if you are going to do a clone, that means everything is the same as the board being cloned. Otherwise it is just a board with some level of compatibility, how much is up to you.
 
What I am saying is solder it on he board and talk to it via the serial port. No need to program it before you solder it on the board.
 
Gerald


To unsubscribe from this group, send email to:
beagleboard...@googlegroups.com
Frequently asked questions: http://beagleboard.org/faq

Konstantinos Tsimpoukas

unread,
May 1, 2012, 3:31:25 PM5/1/12
to beagl...@googlegroups.com
Ok i got it

thanks again

Maxim Podbereznyy

unread,
Jul 6, 2012, 4:27:55 AM7/6/12
to beagl...@googlegroups.com

Card detect pin?

06.07.2012 6:05 пользователь "esys" <esysde...@gmail.com> написал:
Hi Konstantinos, i 'm developing one custom beaglebone, i have just done test my board, it run U-boot, load kernel, start kernel well ... but it not mounting rootfs in my sd-card, i want ask for some experinences of your about custom beaglebone... can you help me?

Vào 00:31:25 UTC+5 Thứ tư, ngày 02 tháng năm năm 2012, Konstantinos Tsimpoukas đã viết:
Ok i got it

thanks again

Vu Dinh Minh

unread,
Jul 6, 2012, 4:37:00 AM7/6/12
to beagl...@googlegroups.com
i used sd card connector without Card Detect, but in my design i pullup pin EMU4/GPIO0_6 with 10k resistor... (default card allway connect). it is same beagglebone schematic,

i attach logfile of putty follow this post,.... 

2012/7/6 Maxim Podbereznyy <lisa...@gmail.com>
putty.log

Víctor MV

unread,
Sep 6, 2013, 8:20:20 AM9/6/13
to beagl...@googlegroups.com
Hi!

I'm also sort of replicating the BB. 
When connecting the board to the PC through the miniUSB i get two interfaces:

/dev/ttyUSB0
/dev/ttyUSB1

The board console seems to be /dev/ttyUSB1.

If I use an SD card with the last Angstrom image:
U-Boot SPL 2013.04-dirty (Jul 10 2013 - 14:02:53)                               
Incorrect magic number (0xffffffff) in EEPROM                                   
Could not get board ID.                                                         
Unknown board, assuming Beaglebone LT/Black.

and it gets stuck there.

I thought it might be a hardware issue so I checked the test point voltages and all but TP3 seem to be fine. TP3 is about -15mV (when it should be around 500 mV in the original BB).

Any idea/suggestion/comment?
Thanks!

Maxim Podbereznyy

unread,
Sep 6, 2013, 8:31:41 AM9/6/13
to beagleboard
DDR3 is dead


2013/9/6 Víctor MV <v.may...@gmail.com>

--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--

Maxim Podbereznyy

unread,
Sep 6, 2013, 8:34:32 AM9/6/13
to beagleboard
Is your board with DDR3 or DDR2?

Beaglebone LT/Black
has DDR3, so if your board is with DDR2 then "Unknown board, assuming Beaglebone LT/Black" means that AM335x DRAM controller is configured for DDR3 memory.

You can use the Flasher because it does not care what's written to the EEPROM. However all others has to be functional. I guess your DDR3 is dead because SPL is loaded into the SRAM while u-boot is loaded into DDR3




2013/9/6 Maxim Podbereznyy <lisa...@gmail.com>

Robert Nelson

unread,
Sep 6, 2013, 8:35:10 AM9/6/13
to Beagle Board
On Fri, Sep 6, 2013 at 7:20 AM, Víctor MV <v.may...@gmail.com> wrote:
> Hi!
>
> I'm also sort of replicating the BB.
> When connecting the board to the PC through the miniUSB i get two
> interfaces:
>
> /dev/ttyUSB0
> /dev/ttyUSB1
>
> The board console seems to be /dev/ttyUSB1.
>
> If I use an SD card with the last Angstrom image:
> U-Boot SPL 2013.04-dirty (Jul 10 2013 - 14:02:53)
> Incorrect magic number (0xffffffff) in EEPROM
> Could not get board ID.
> Unknown board, assuming Beaglebone LT/Black.

Your answer is right ^^^^

So you 'cloned' a BB, did you also set the internal eeprom id?
Probally not.. So rebuild u-boot and bypass this check, for what
you've actually installed on the board for memory.

http://git.denx.de/?p=u-boot.git;a=blob;f=board/ti/am335x/board.c;hb=HEAD#l307

Regards,

--
Robert Nelson
http://www.rcn-ee.com/

Maxim Podbereznyy

unread,
Sep 6, 2013, 8:36:22 AM9/6/13
to beagleboard
Robert,

the official flasher image from CCO takes care of an empty EEPROM


2013/9/6 Robert Nelson <robert...@gmail.com>
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Robert Nelson

unread,
Sep 6, 2013, 8:39:24 AM9/6/13
to Beagle Board
On Fri, Sep 6, 2013 at 7:36 AM, Maxim Podbereznyy <lisa...@gmail.com> wrote:
> Robert,
>
> the official flasher image from CCO takes care of an empty EEPROM

Yeap it does.. Well assuming you have ddr3 and cloned the bbb...
However if he cloned the older BB, (he just mentions the BB) that
script with ddr2 is probably not a good idea..

Víctor MV

unread,
Sep 6, 2013, 8:42:22 AM9/6/13
to beagl...@googlegroups.com
Thanks for your answers guys.

It's actually DDR2. It's a BeagleBone (white) copy.


Gerald Coley

unread,
Sep 6, 2013, 8:42:40 AM9/6/13
to beagl...@googlegroups.com
If you do not clone it EXACTLY, PCB layout. then you have to run special SW using  Code Compose Studio to calculate the DDR timings. They are different if you change the routing on the DDR.

Gerald



Maxim Podbereznyy

unread,
Sep 6, 2013, 8:47:54 AM9/6/13
to beagleboard
Then all you need is a different u-boot version where empty EEPROM leads to DDR2 initialization. You can modify u-boot provided by Robert for it


2013/9/6 Gerald Coley <ger...@beagleboard.org>

Gerald Coley

unread,
Sep 6, 2013, 8:50:39 AM9/6/13
to beagl...@googlegroups.com
With the specific register setting for the layout implemented. Assuming of course the trace lengths are matched.

Gerald

Víctor MV

unread,
Sep 6, 2013, 8:54:19 AM9/6/13
to beagl...@googlegroups.com
Thanks.

The layout is copied without modification. However I extended it and added some sensors connected to P9 header. Do you think this is enough reason to run the "special software on CCS"? 

The EEPROM is empty. I was hoping to fill it through u-boot. I'll start patching the u-boot as you suggested and give it try.
Grateful :)! 

Gerald Coley

unread,
Sep 6, 2013, 9:00:18 AM9/6/13
to beagl...@googlegroups.com
If the EEPROM is empty, then the code does not know what the board is and cannot successfully configure it. You need to modify your UBoot code to default to your settings.

The layout question only applies to the DDR traces.

Gerald

Víctor MV

unread,
Sep 6, 2013, 10:34:56 AM9/6/13
to beagl...@googlegroups.com
All right,

Patched the line Robert suggested and i keep patching so i decided to give it a try with an old SD card containing Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.05-beaglebone-2012.11.22.img.xz (check the archive for it):

U-Boot SPL 2011.09-00053-gb423c52 (Aug 10 2012 - 11:26:55)                      
Texas Instruments Revision detection unimplemented                              
Incorrect magic number in EEPROM                                                
read_eeprom() failure. continuing with ddr3                                     
Incorrect magic number in EEPROM                                                
OMAP SD/MMC: 0                                                                  
reading u-boot.img                                                              
reading u-boot.img                                                              
                                                                                
                                                                                
U-Boot 2011.09-00053-gb423c52 (Aug 10 2012 - 11:26:55)                          
                                                                                
I2C:   ready                                                                    
DRAM:  256 MiB                                                                  
WARNING: Caches not enabled                                                     
Incorrect magic number in EEPROM                                                
NAND:  HW ECC Hamming Code selected                                             
nand_get_flash_type: unknown NAND device: Manufacturer ID: 0x30, Chip ID: 0x30  
No NAND device found!!!                                                         
0 MiB                                                                           
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1                                           
*** Warning - readenv() failed, using default environment                       
                                                                                
Net:   cpsw                                                                     
Hit any key to stop autoboot:  0                                                
SD/MMC found on device 0                                                        
reading uEnv.txt                                                                
                                                                                
33 bytes read                                                                   
Loaded environment from uEnv.txt                                                
Importing environment from mmc ...                                              
Loading file "/boot/uImage" from mmc device 0:2 xxa2                            
3489560 bytes read                                                              
## Booting kernel from Legacy Image at 80007fc0 ...                             
   Image Name:   Angstrom/3.2.34/beaglebone                                     
   Image Type:   ARM Linux Kernel Image (uncompressed)                          
   Data Size:    3489496 Bytes = 3.3 MiB                                        
   Load Address: 80008000                                                       
   Entry Point:  80008000                                                       
   Verifying Checksum ... OK                                                    
   XIP Kernel Image ... OK                                                      
OK                                                                              
                                                                                
Starting kernel ...                                                             
                                                                                
Uncompressing Linux... done, booting the kernel.                                
[    0.238037] AM335X: wrong header 0xffffffff, expected 0xee3355aa             
[    0.244384] The error message above indicates that there is an issue with    
[    0.244384] the EEPROM or the EEPROM contents.  After verifying the EEPROM   
[    0.244415] contents, if any, refer to the am335x_evm_setup function in the  
[    0.244415] arch/arm/mach-omap2/board-am335xevm.c file to modify the board   
[    0.244415] initialization code to match the hardware configuration          


Looks good to me and i'm able to access u-boot. I'll start writing the EEPROM from there and come back leaving record of it.

Víctor MV

unread,
Sep 6, 2013, 12:07:07 PM9/6/13
to beagl...@googlegroups.com
I'm trying to write the "BeagleBone clone" EEPROM using u-boot through instructions such as:
U-Boot# i2c mw 0x50 0 0x10 0x11
(while TP2 is grounded)

however it doesn't seem to change anything:
U-Boot# i2c md 0x50 0 0x10
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................

I also checked the values of the EEPROM of my original BB and the behaviour most of the time is:
U-Boot# i2c md 0x50 0 0x10
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
After pressing CTRL+C, i manage to read the first line but just the first one:
U-Boot# <INTERRUPT>
U-Boot# i2c md 0x50 0 0x10                                                      
0000: aa 55 33 ee 41 33 33 35 42 4f 4e 45 30 30 41 36    .U3.A335BONE00A6       
U-Boot#                                                                         
0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................       
U-Boot#                                                                         
0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................       
U-Boot#                                                                         
0030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................       

I've seen that some other users went through this problem and were able to write the EEPROM from the userspace but no chance for me to do it since it doesn't even boot. As my understanding goes i see only one option: modify u-boot to hardcode these values.
Any sugestions?

Gerald, i believe you use u-boot to initialize EEPROM, right?

Regards,

Gerald Coley

unread,
Sep 6, 2013, 12:16:49 PM9/6/13
to beagl...@googlegroups.com
Yes, we use Uboot to write to the EEPROM on the board. However, you need to use the expanded address format in your command.


i2c md 50 00.2 200


Gerald


--

Víctor MV

unread,
Sep 6, 2013, 7:54:33 PM9/6/13
to beagl...@googlegroups.com
Perfect. That was it.

I'm not able to use my board 100%. Thanks for the great support!

Víctor MV

unread,
Sep 6, 2013, 7:56:47 PM9/6/13
to beagl...@googlegroups.com

Apologies. What i meant is that "I'm now able to ..."

Regards

You received this message because you are subscribed to a topic in the Google Groups "BeagleBoard" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/beagleboard/Q65z5O4haYc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to beagleboard...@googlegroups.com.

Gerald Coley

unread,
Sep 6, 2013, 7:59:16 PM9/6/13
to beagl...@googlegroups.com
Excellent!

Gerald

victorleite

unread,
Nov 20, 2013, 8:40:57 AM11/20/13
to beagl...@googlegroups.com
Hi Victor MV,

I'm also cloning the same board (beaglebone white).

I've read the entire discussion but I'm not sure what steps you've been through for write the EEPROM.

Did you modified the u-boot or just used an older version?

What are the right i2c commands for writing the EEPROM?

Thank you very much!

Victor Leite

Víctor MV

unread,
Nov 20, 2013, 8:49:37 AM11/20/13
to beagl...@googlegroups.com
Hi Victor. I used an older version of Angstrom which let me access u-boot with my BB clone. Once there i was able to use the commands that Gerald suggested above to read/write the EEPROM memory.

Regarding the commands i wrote them above. You just have to make sure you use the expanded address format (also mentioned above).

shiwe...@gmail.com

unread,
Nov 25, 2013, 1:00:39 PM11/25/13
to beagl...@googlegroups.com
Hi Gerald,

I want to clone earlier version BeagleBone (whilte), just get rid of P8, P9 to make smaller size. I download u-boot,img and kernel from http://elinux.org/Beagleboard:BeagleBone#Image_Files. So basically my board will be same as BeagleBone (whilte). Do I still need to write some codes to EEPROM? 
From BeagleBone (whilte) schematic, EEPROM is to store MAC Address and Variables, does u-boot.img do this job to write codes to save MAC Address and Variables? Can you explain how it works? 
Thank you, pro.

shiwe...@gmail.com

unread,
Nov 25, 2013, 1:03:31 PM11/25/13
to beagl...@googlegroups.com
From Beaglebone schematic, the EEPROM is to store MAC Address and Variables, can you provides codes on what variables do I need to set and how to set  MAC Address and Variables?
Thank you.

Víctor MV

unread,
Nov 25, 2013, 4:57:41 PM11/25/13
to beagl...@googlegroups.com, shiwe...@gmail.com

You can get the EEPROM from a normal BeagleBone and i believe it's even written at the SRM.

Regards,
Message has been deleted

Mickae1

unread,
May 12, 2015, 3:19:02 AM5/12/15
to beagl...@googlegroups.com
Gerald, do you know a faster way to write on the eeprom than that :

U-Boot# i2c mw 0x50 00.2 0xaa 0x1
U-Boot# i2c mw 0x50 01.2 0x55 0x1
U-Boot# i2c mw 0x50 02.2 0x33 0x1

the last argument is the length to write, but how can I pass a string ? or an array of bytes ?

Gerald Coley

unread,
May 12, 2015, 9:38:06 AM5/12/15
to beagl...@googlegroups.com
You can write a piece of code or a script to do it .

GerladGerald

Robert Nelson

unread,
Jul 28, 2015, 7:13:51 AM7/28/15
to imra...@gmail.com, BeagleBoard
On Tue, Jul 28, 2015 at 5:59 AM, <imra...@gmail.com> wrote:
> Hello Robert,
> I was going through this forum to resolve my current problem with custom
> board copied from Beaglebone Black for our company's specific need.
> We are using AM3352 TI cpu and Alliance AS4C256M16D3 MEMORY chip set which
> has tCK 2.5 min 3.3 max.
>
> Hence, I board memory leveling though CCS 6.1.0 for DDR2, The following I
> noticed
> 1/ Jtag initialise and connect cortex A4 memory test seems to succeed
> 2/ When I try to set break point hard at s_init() CCS does NOT get set
> breakpoint
> 3/ Using Assembly code stepping system reach to following stage
>
> U-Boot SPL am335x (july 27 2015 16:46:16)
> Incorrect Magic Number (0xffffffff) in EEPROM
> Could not get Board Id.
> Unknown board, cannot configure pinmux. ####ERROR ###### Please RESET the
> board ####
>
> AND system hung permanently.
>
> After setting message and enumerated my structure am335x_baseboard_id
> in the function read_eeprom() the program fall out from lack of magic number
> while reading MLO file
> AS I noticed there were no values in the am335x_baseboard_id header
> structure.
>
> The question IS this check can be by passed? Including all EEPROM info
> board name serial SKU etc
>
> I ran diff on the provided link for the board.c which exists on git repo
> am335x/board.c I did not found any difference.
>
> If you please shed some light on this problem I am stuck on this almost a
> week.
> Much appreciated for your help.
> Thank you,

Yes you can bypass this. However you can't use any of the current
patches as-is..

Since you are using ddr2, this has to take the "beaglebone" route,
(not beaglebone black (ddr3))..

Do you have an eMMC to worry about?

Regards,

--
Robert Nelson
https://rcn-ee.com/

imra...@gmail.com

unread,
Jul 28, 2015, 8:36:17 AM7/28/15
to BeagleBoard, robert...@gmail.com
Hello Robert,
I was going through this forum to resolve my current problem with custom board copied from Beaglebone Black for our company's specific need.
We are using AM3352 TI cpu and Alliance AS4C256M16D3 MEMORY chip set which has tCK 2.5 min 3.3 max.

Hence, I board memory leveling though CCS 6.1.0  for DDR2, The following I noticed
1/ Jtag initialise and connect cortex A4 memory test seems to succeed 
2/ When I try to set break point hard at s_init() CCS does NOT get set breakpoint
3/ Using Assembly code stepping system reach to following stage 

U-Boot SPL am335x (july 27 2015 16:46:16)
Incorrect Magic Number (0xffffffff) in EEPROM
Could not get Board Id.
Unknown board, cannot configure pinmux. ####ERROR ###### Please RESET the board ####

AND system hung permanently.

After setting message and enumerated my structure am335x_baseboard_id 
in the function read_eeprom() the program fall out from lack of magic number while reading MLO file
AS I noticed there were no values in the am335x_baseboard_id header structure.

The question IS this check can be by passed?  Including all EEPROM info board name serial SKU etc

I ran diff on the provided link for the board.c which exists on git repo am335x/board.c I did not found any difference.

If you please shed some light on this problem I am stuck on this almost a week.
Much appreciated for your  help.
Thank you,

Imran K

Maxim Podbereznyy

unread,
Jul 29, 2015, 1:27:55 AM7/29/15
to beagleboard, Robert Nelson

I remember Robert shared u-boot sources where this eeprom check was omitted.

28 Июл 2015 г. 15:36 пользователь <imra...@gmail.com> написал:
--
Reply all
Reply to author
Forward
0 new messages