DIY Beagle Board

Gerald Coley wrote:

Yuli,

I will disagree with you on one point. There are no parts that are used on
Beagle that require and NDA. The Micron part is the only part that could be
in question, but Micron is working to put that information on their public
website. Even today you don't have to sign and NDA to get that information.
There is an easy way to contact Micron direct to get that information.

I've failed to find so much as a hint of the PoP RAM/NAND chips even
existing on the Micron website. Did I miss something?

Hi everyone,

It has been a while since I've dealt with Linux, I'm new to building
kernels, and I'm having trouble trying to build the kernel from source
under CygWin.

I'm trying to build the kernel from the Google sources (TI code) for the
BeagleBoard under Cygwin in Windows, which supposedly should be
possible, although I haven't seen anyone else out there in this group
using Cygwin instead of a native Linux system for development.

During the make of "omap3_beagle_defconfig", I get "undefined reference
to `_libintl_gettext'".

Here are the steps I have taken:

1. Installed Cygwin.

2. Installed the Sourcery G++ Lite for ARM GNU/Linux 2007q3-51 by going
to http://www.codesourcery.com/gnu_toolchains/arm/portal/release313,
selecting IA32 Windows Installer under downloads. File downloaded was
"arm-2007q3-51-arm-none-linux-gnueabi". Added an extension of .exe to
this file to be able to use. (I don't know why it wasn't an exe in the
first place.) Then executed it, resulting in the G++ Lite installation.

3. Downloaded Linux kernel source (Linux Kernel 2.6.22.18, file
"2.6_kernel_revb-v2.tar.gz") from
http://code.google.com/p/beagleboard/wiki/BeagleSourceCode . Extracted
all files (using WinRAR in my case).

3. Followed the directions at
http://code.google.com/p/beagleboard/wiki/BeagleSoftCompile for
compiling kernel, as shown below:

"Compile the Kernel as shown below
      make CROSS_COMPILE=arm-none-linux-gnueabi- distclean
      make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_defconfig
      make CROSS_COMPILE=arm-none-linux-gnueabi- uImage
File named "uImage" will be generated in arch/arm/boot directory"

4. The first make seems to work ok. The second one fails, with the
following output:

HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf.o:conf.c:(.text+0x91): undefined reference to
`_libintl_gettext'
scripts/kconfig/conf.o:conf.c:(.text+0xa5): undefined reference to
`_libintl_gettext'
scripts/kconfig/conf.o:conf.c:(.text+0xb9): undefined reference to
`_libintl_gettext'
scripts/kconfig/conf.o:conf.c:(.text+0x7c8): undefined reference to
`_libintl_gettext'
scripts/kconfig/conf.o:conf.c:(.text+0xf29): undefined reference to
`_libintl_gettext'
scripts/kconfig/conf.o:conf.c:(.text+0x1036): more undefined references
to `_libintl_gettext' follow
collect2: ld returned 1 exit status
make[1]: *** [scripts/kconfig/conf] Error 1
make: *** [omap3_beagle_defconfig] Error 2

Can anyone give me a clue as to what is going on? Obviously it is
trying to build conf.c into an executable and not finding
libintl_gettext in any library in the link step, but is this something
that is expected but not part of any Cygwin library?

Any hints as to what might be wrong and what step I might pursue next
would be greatly appreciated.

Thanks.
Dave Clarke
Sonavation, Inc.

This e-mail message from Sonavation, Inc. is intended only for the individual or entity to which it is addressed.
This e-mail may contain information that is privileged, confidential and exempt from disclosure under applicable law.
If you are not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited.
If you received this e-mail by accident, please notify the sender immediately and destroy this e-mail and all copies of it.

Måns

It appears that the OMAP, DRAM and NAND is packaged in a multi chip package (MCP), not a package on package (PoP). A PoP is built by combining already packaged parts, an MCP combines bare die in one package.

On the Micron web site, See: http://www.micron.com/products/mcps/ - Certainly not the same as a data sheet.

Samsung has similar parts. For example, see a recent teardown video of the latest Blackberry.
http://link.brightcove.com/services/link/bcpid1785324709/bctid1761990467

Cameron

Måns Rullgård wrote:

Hi Dave,

I'm one of the few Cygwin-based developers, but so far I've only
developed user code so I can't help with building a new kernel.

There are some useful Cygwin hints at the FAQ:
http://elinux.org/BeagleBoardFAQ#Windows.2FCygwin_.231

A request: could you please repost your question as a new topic and
restore the title of this thread to "DIY Beagle Board"?

John

No. As I said, this is being worked at Micorn to get his information out there. These parts ar enot yet on the website, but you can get information on them by emailing mcpsupport@micron.com or calling Apps Support at 208-368-3900.

These parts were under NDA before, just like the OMAP3 was. We are working with Micorn to get this out there in a more public manner.

Gerald

This is incorrect. The OMAP3530 is a separate device. On top of OMAP the MCP package from Micron, in a POP package, is mounted onto the OMAP3530 processor during the manufacturing process. These are not in the same package. You can refer to the Beagle System Reference Manual for more information on how this is done.

Gerald

If I'm right, to use POP package, we have to buy XOMAP3530BCBB for
example from digikey and POP Memory from Micron distribution channel.
Then we have two way to assembly them on a board, as stated in the in
the following Micron webminar:

http://download.micron.com/webinar/Record_Stacking/player.html

One-step reflow process
Two-step reflow process

Which of them has been used to produce the beagle board?

Thanks, Michele.

We have our own process that we use to build Beagle. we flow the back and then the top of the board with the OMAP3530. Then we apply the GEL to the top of OMAP3530 and run it back through the SMT machine to place the memory. We then reflow.

There is a POP assembly guidelines that can be found on the TI website under the OMAP3530 folder that gives some guidance on the issues with doing the POP assembly. POP is actually pretty easy. It just sounds scary. The most important aspect is the layout of the PCB. That is where issues can occur. You need to get the soldermask right or you will have issues.

http://focus.ti.com/docs/prod/folders/print/omap3530.html

Gerald

Gerald Coley wrote:

*OMAP3530 data sheet, product information and support | TI.com;

And now we know Gerald is a Bonnie Hunt fan :wink:

Guys two comments.

1. I did a board 10 layers, blind-buried, laser drilled, slightly
bigger than beagle,
made in china, quality was good, and it cost me US600. (All in) for 11
boards,
rohs compliant.

(So I'll use the same design pcb house for my beagle/omap design)

2. Second I've been kernel hacking for a long time, and forget
cygwin.
Grab you a ubuntu cd, and create you a vm on windows. Its fast and
easy.
You can then use all the normal linux tools, and your kernel compiles
will
go rather quick.

Kernel developers and Embedded developers in linux space use linux.
You can
automatically build the basic tools with crosstool.

So that did get in there. I thought I had deleted it when I did hte cut and paste. My wife made a comment about her and having a show, so I had looked her up!! Not a fan, just helping out my wife! I am only a fan of the Beagle.

Gerald

NAND 8bit does not boot...

Here is a question I forwarded to TI - if anybody knows anything about
it, any help would be arreciated. Thanks!
Yuli

Omap3530 does boot from 8 bit NAND.
I compared my system (which has the 8bit NAND) and the beagleboard
which has 16bit NAND, and found that the ECC values are different. The
ECC on the 16bit NAND system is generated using the internal HW
mechanism, while setting bit ECC16B in GPMC_ECC_CONFIG. When I
generate the 8 bit ECC, writing NAND in my system, I use the same
mechanism, but set this bit to 0. The ECC results are different
between the two boards.
My questions are:
1. On NAND boot - does the omap3 verify ECC?
2. Has ever been omap3 booted with 8bit NAND? (I suspect there is a
bug in the chip).
3. Can you send me the source code of the boot loader inside the omap3
so I could debug it myself.

Some updates regarding my omap3 system: http://www.magniel.com/omap3.html
It is booting u-boot from MMC. Serial works.
SDRAM works, NAND reads & writes, but does not boot. JTAG works. I can
run compile and run C programs using code composer on the board.

Hi,

First of all - great thread!

I was hoping to ask for some advice on a board design based on the
beagleboard (well, the omap processor at least).

I'm designing a general purpose coprocessor module based on the
omap3530 in mini PCI express (1 slot) or mini PCI (type IIIB) form
factor. My design differs from the BeagleBoard in that I would like to
incorporate a user-programmable fpga on the board as well, and that I
don't need any of the multimedia I/O. The end user of this board would
probably just be somebody from the scientific community (those doing
work on cryptography, signal processing, or even just embedded linux
work). Fabrication is not yet financable, so I have some flexibiity
until that point, which is why I would like to get 2nd and 3rd
opinions.

Ideally, I would like to share one bank of ram between the fpga and
the omap so that some user fpga applications could have direct access
to memory. I can imagine that the shared bank of RAM should not be
part of the OMAP's 'system ram', but rather that access to it would be
controlled by a multiplexer (likely on the fpga).

Is Linux capable of intentially ignoring a specific bank of RAM for
general use, even while that bank is mapped in the MMU? This woud be
so that, e.g., the ram would not be blindly used by general purpose
applications when it was not selected by the multiplexer, and could
only be accessed by first checking a GPIO pin tied to the fpga?

What kind of memory control strategies are viable for an omap / fpga
shared memory scenario?

Many thanks,

Christopher

I would think so. For example, the OMAP internal registers are memory
mapped so the Linux kernel must be able to make them non-cacheable and
separate from general-purpose RAM. I've never been in the Linux
kernel so I don't know where it sets up the memory mapping. You'd
most likely need to make a kernel modification.

Many FPGAs (including the inexpensive Xilinx Spartan3A) provide a
small but usable amount of dual-port SRAM, which eliminates the need
for multiplexing logic.

How were you planning to do PCI express? It can be done in an FPGA
(usually with external PHY), but takes a lot of resource and the IP is
pricey. Regular 33 MHz 32-bit PCI isn't too hard.

John

Have you looked at some of the Modules that are out there for OMAP
35x? They might give you a big headstart on the hardware design.
Check out Gumstix's Overo, Logic Product Development's SoM and Cogent
Computer's module. Gumstix and Logic are shipping already.

Best regards,
Geof

Is Linux capable of intentially ignoring a specific bank of RAM for
general use, even while that bank is mapped in the MMU?

I believe that the 'mem' kernel command line option allows one to
specify exactly how much memory that Linux uses for itself and for
userspace processes, mem=<bytes>[KMG]. Then the
memmap=<bytes>[KMG]@<location><KMG> parameter allows the memory map to
be determined at boot (although a static mmap is just as good).

How were you planning to do PCI express? It can be done in an FPGA
(usually with external PHY), but takes a lot of resource and the IP is
pricey. Regular 33 MHz 32-bit PCI isn't too hard.

I was planning on using mini pci (IIIB) which fits in quite a few
notebooks. The only reason I was thinking about PCIe was because that
is what's available on newer models.