Problem port beagleboard-xm to Gumstix IceStorm

Hello, I need guidance.

I have a project with QNX Neutrino 6.5 using BeagleBoard-xm, success!
Now we are trying to use a Gumstix Icestorm(store.gumstix.com/overo-icestorm-com.html), which has the same processor BeagleBoard-xm, but with more RAM memory and NAND flash.

But the image does not start.

Question:

  1. Only change memory capacity RAM influences on startup?
  2. The problem is having with MLO boot and U-Boot and IPL.
  3. In case of change, what should I customize / modify / study in BSP?

Any help will be welcome.

Hi,

A BSP is not dedicated to a processor. It is dedicated to a board.
Of course, the processor is of importance but the BSP also configures I/O multiplexors, PLL frequencies… in accordance to the board schematics.
The BSP also takes into account the boot process. If u-boot does some initialisation, the BSP does not have to do them. If you don’t use u-boot but an IPL, the BSP has to initialise more things (depending on the IPL).
Changing RAM capacity will prevent a system from booting. SDRAM is a complex system. SDRAM timings are critical. Changing memory organisation (capacity) is critical also.
a) What boot process do you use on BeagleBoard ? u-boot ? IPL ?
b) Same question with Icestorm ?

Nicolas

Thank you for Nicolas answer, answering your questions:

a) What boot process do you use on BeagleBoard ? u-boot ? IPL ?
Using U-Boot and XLoader default of Beagleboard-xm.

b) Same question with Icestorm ?
Using U-Boot 10.2016(I tried earlier to 2011). Try IPL unsuccessful!

And does not booting, stopped in:

Starting application at 0x80200000 …

You mentioned BeagleBoard-xm so I assume you use this BSP : community.qnx.com/sf/wiki/do/vie … 730_beagle

There’s no IPL in this BleagleBoard BSP. Which IPL have you tried ?

The BeagleBoard BSP is made to be run from u_boot. You have to use similar u-boot configuration and parameters (BSP load address, BSP run address…) on both boards.
The BSP is made to be loaded and run at fix addresses.

You have to modify the BSP to match the gumstyx board schematics.
First, go to \src\hardware\startup\boards\omap3730_beagle_xm and modify the following files to match new board requirements :

  • init_pinmux.c
  • init_beagle.c
  • init_raminfo.c
  • main.c

Be very careful when modifying these files. They are pre-OS initialisation code. They can make the target crash immediately or later when the OS is running.

Nicolas

You mentioned BeagleBoard-xm so I assume you use this BSP : community.qnx.com/sf/wiki/do/vie … 730_beagle
Yeah!

There’s no IPL in this BleagleBoard BSP. Which IPL have you tried ?
I used this one as an example:
community.qnx.com/sf/wiki/do/vie … p_3530_evm

But the way the address handling does not match OMAP3730.

The BeagleBoard BSP is made to be run from u_boot. You have to use similar u-boot configuration and parameters (BSP load address, BSP run address…) on both boards.
The BSP is made to be loaded and run at fix addresses.

You have to modify the BSP to match the gumstyx board schematics.
First, go to \src\hardware\startup\boards\omap3730_beagle_xm and modify the following files to match new board requirements :

  • init_pinmux.c
  • init_beagle.c
  • init_raminfo.c
  • main.c

Yes, I try to boot with the U Boot, I used omap_beagle_conf and omap_overo_conf as a basis to set the QNX BSP files.
The base address is the same 0x80000000, I’m checking related to memory, because the rest is almost equal, I lack the document part of Gumstix.
Using QNX project Beagleboarx-xm but changing add_ram() in init_raminfo.c to 1G it starts, but this wrong, because it has 512MB.

My guideline: qnx.com/developers/docs/6.3. … artup.html

Thanks for your help.

The QNX startup code is closely related to the way you boot the board.
The IPL is in charge of basic initialisation and system load (from non volatile memory to RAM).
The startup code, finishes initialisation and run procnto.
Typically, you use either IPL or u-boot.
u-boot often does more initialisation than IPL. So, startup code used with u-boot often does less things.
If you use a BSP which is made to run with IPL, I recommended not to use u-boot. The opposite is true also.
If you use IPL, you have to modify it for the new board. IPL is the most critical part of the boot process.

At first, I want to settle with the u-boot which is the shortest route, recognizing 512MB of RAM and starting the RTOS, to and will study the IPL think the most consistent.

News!

This weekend, I took an intensive on QNX, got the following error bsp-BeagleBoard-xm1.0.5 official for DM3730.

ERROR in BOOT:

[code]…
System page at phys: 80010000 user: fc404000 kern: fc404000
Starting next program at vfe04e604
cpu_startnext: cpu0 → fe04e604
VFPv3: fpsid = 410330c3
coproc_attach (10) replacing fe07e01c with fe07d8bc
coproc_attach (11): replacing fe07e01c with fe07d8bc
Welcome to QNX Neutrino 6.5.0 SP1 on the Texas Instruments OMAP3730 (ARMv7 Cortex-A8 core) - Beagle Board xM

Shutdown [0,0] S / C / F = 11/1 / 11C / D = fe02468c / fe0a1ff4 state (c0) = now lock
QNX Version 6.5.0 Release 2010/07 / 09-14: 26: 46EDT
[0] PID-TID = 1-6? P / T FL = 00019001/05020000 “proc / boot / procnto-instr”
[0] Aspace PID = 2 PF = 00,008,012
armle context [effe8f4c]:
0000: 8ffb7000 8ffb7000 8ffb7c01 effcdbf8 00000181 01000000 00000000 fc004000
0020: fc004000 effdf47c 01072fff 00000008 00000000 effe8f90 fe04e878 fe048e0c
0040: 60,000,013
instruction [fe048e0c]:
06 30 98 e7 1c 20 94 11 00 12 e5 e3 00 70 94 15 18 20 9d 15 07 70 82 11 00 0C
stack [effe8f90]
0000: 00000000 e8000000 effe8fbc efffb348 effeddcc 003fffff 00000a6e e807fbc0
0020: 8ffb7000 fffff000 00000000 00000007 00000040 01000000 effcdbf8 fe0a1ff0
0040: 00,000,108 00,000,073 00,000,096 efff0090 effee4a8 fe04c744 effcdbf8 fe04cad0
0060: efffb348 fe071bac efffb348 fe079e30 effe9018 00000000 00000000 00000000[/code]

After much research, I saw that those who cause this Shutdown [0,0] … is init_system_private () → init_system_private.h, this function performs other things, checking and got this one INIT_ENTRY (intrinfo);

Now checking the init_intrinfo.c.

I know something that can help me.

Have you modified the files I told you in my message on “15 Mar, 2016 - 09:44” ?

Yeah!

Modified memory capacity for 512 and removed some entry init_bealge.c.

This error by the traceback that did occur here:

add_interrupt_array (introns, sizeof (introns)) → init_intrinfo.c

Have you checked the following values are correct for your board ?

static paddr_t omap3530_intc_base = OMAP3530_INTC_BASE;
static paddr_t omap3530_gpio1_base = OMAP3530_GPIO1_BASE;
static paddr_t omap3530_gpio2_base = OMAP3530_GPIO2_BASE;
static paddr_t omap3530_gpio3_base = OMAP3530_GPIO3_BASE;
static paddr_t omap3530_gpio4_base = OMAP3530_GPIO4_BASE;
static paddr_t omap3530_gpio6_base = OMAP3530_GPIO6_BASE;
static paddr_t omap3530_gpio5_base = OMAP3530_GPIO5_BASE;
static paddr_t omap3530_sdma_base = 0x48056000;

Hello, I just fading due to other demands on the company.

We got good results with .ifs but using MLO + U-Boot.

Now my work is in the IPL, I can compile, but after granvar NAND not the boot.

Indicate a how-to to carry “customize” the IPL based I’m using a joint of a project IPL with the same processor?

What is the boot device on you board ? NAND FLASH or µSD card ?

NAND Flash.
I am studying the U-boot start.s for my board to see what he could do and even enjoy the IPL example of BeagleBoard-xm I have.

If I understand correctly, you compile IPL, write it in NAND Flash memory but i.MX6 does not boot. Right ?

Almost that!
I have in un BSP hands BeagleBoard-xm with a working IPL.
I am using a Gumstix Icestorm with OMAP3730 and I’m “trying” to adapt the IPL BeagleBoard-XM in BSP Gumstix.
For this, I see the source-code of Gumstix board the U-boot for the part of start.s.
Then edited the start.s and changed the Assembly for the U-boot makes Gumstix Overo OMAP3730.
Compiling the U-boot and booting him via microSD or NAND Flash works.

Besides start.s am studying the call:

init_watchdog();
init_clocks();
secure_unlock();
v7_flush_dcache_all(get_device_type());
icache_enable();
l2cache_enable();
setup_auxcr();
init_mux();
init_gpmc();
init_sdram();
dss_init();

I Improved the question?

Maybe your problem is not in an assembly file.
For example, Freescale i.MX6 processors use a parameter table to initialise some chip registers before executing code. Some of these parameters are SDRAM configuration.
You might face the same kind of problems.

Nicolas

OK.
In this case it would be the start.s, right? With startup of the CPU, Cache, Memory Controller and the basics to proceed.

The IPL BeagleBoard-xm (OMAP3530) or not of signal on UART Serial.

I’m checking the start.s and the ASsembly in hardware/ipl/boards/omap3530beagle /_start.S, boot_header.S and omap3530beagle.lnk

With the U-boot for Overo (OMAP3730):
arch/arm/cpu/armv7 $ tree
.
├── arch_timer.c
├── cache_v7.c
├── config.mk
├── cp15.c
├── cpu.c
├── Kconfig
├── lowlevel_init.S
├── Makefile
├── nonsec_virt.S
├── OMAP3
│ ├── am35x_musb.c
│ ├── board.c
│ ├── clock.c
│ ├── config.mk
│ ├── emac.c
│ ├── emif4.c
│ ├── Kconfig
│ ├── lowlevel_init.S
│ ├── Makefile
│ ├── sdrc.c
│ ├── spl_id_nand.c
│ └── sys_info.c
├── start.s
├── syslib.c
├── virt-dt.c
└── virt-v7.c