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
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
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
With the specific register setting for the layout implemented. Assuming of course the trace lengths are matched.
Gerald
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 :)!
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
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.
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#
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,
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
Perfect. That was it.
I’m not able to use my board 100%. Thanks for the great support!
Apologies. What i meant is that “I’m now able to …”
Regards
Excellent!
Gerald
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
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).
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.
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.
You can get the EEPROM from a normal BeagleBone and i believe it’s even written at the SRM.
Regards,
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 ?
You can write a piece of code or a script to do it .
GerladGerald
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
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,