Experience with Embedded Planet BSP? EP8260

How to boot this BSP from flash?

Following the instructions in the QNX EP8260 BSP documentation,
I have been able to get QNX up and running on my EP8260
development board (with 8Mbytes Flash, 32Mbytes SDRAM,
part # 153B603CA08ME0S5BC5-10) by downloading the image
to RAM via TFTP over ethernet. I want to put this image
into flash and boot the board from flash, but did not
have any success doing this up to now.

The QNX EP8260 BSP documentation describes how to build
the image, download it into RAM via TFTP over ethernet,
and to start the OS by jumping into the image at the
correct location in RAM. The documentation does not
describe how to put the image into flash and booting
directly from flash.

My OS image is downloaded into RAM (via TFTP over ethernet)
at 0x00010000 throught 0x00187F1B, and the entry point is
0x000117b8. The generated S-record file of the OS image
specifies the address range where the image is to be
loaded as well as the code entry point. Find attached my buildfile.

I’ve copied this OS image from RAM
(at 0x00010000 throught 0x00187F1B) to flash
(0xFF840000 tot 0xFF9B7F1B) using the EP planet flashburner
utility, and jumped into it at address 0xFF8417B8 (by typing
“go FF8417B8” at the bootloader prompt), but the OS does not
boot, and the board freezes up.


###########################################################################

Neutrino on the Embedded Planet ep8260 board.

##########################################################################

[image=0x10000]
#[image=0xFF840000]
#[ram=0x00000000,32M]
[virtual=ppcbe,srec +compress] .bootstrap = {
startup-ep8260 -N ep8260:qnx1 -Dsmc1 -Ksmc1 -vvvvv
PATH=/proc/boot procnto-600 -vvvvv
}
[+script] startup.script = {
procmgr_symlink …/…/proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

These env variables inherited by all the programs which follow

SYSNAME=nto
TERM=qansi

devc-serppc8260 -e -b115200 -c16625000 smc1^8 &

devc-serppc8260 -e -b115200 -c16625000 smc1^8,0x1c00 &
reopen /dev/ser1
display_msg Welcome to Neutrino on an Embedded Planet 8260 board

Start the system logger

slogger &

Start the flash file system.

devf-generic -s0xff800000,8M

Start network driver - insert proper MAC and IP address.

io-net -dppc8260-ep mac=0010ec003273,channel=3 -ptcpip

waitfor /dev/io-net/en0

ifconfig en0 192.168.0.46

start inetd

inetd -d &

start devc-pty

devc-pty &

Start a pipe.

pipe &

Run startup script file.

/home/ben/newppc &

Start a shell.

[+session] PATH=:/proc/boot esh

[+session] login -p

}

[type=link] /dev/console=/dev/ser1
[type=link] /tmp=/dev/shmem

[type=link] /etc=/fs0p0/etc
[type=link] /home=/fs0p0/home
[type=link] /bin=/proc/boot

libc.so
libsocket.so

[data=c]

######################

Shell

esh

######################

security utilities

login
logout
passwd

######################

Generic components

cat
chmod
chown
cp
date
echo
elvis
grep
hostname
ls
mkdir
more
mv
pidin
pipe
rm
slay
sleep
vi
touch

######################

Character

devc-serppc8260
devc-pty

######################

Network

io-net
devn-ppc8260-ep.so
npm-tcpip.so
ifconfig
inetd
fs-cifs
ftp
telnet
ftpd
telnetd
fs-nfs2

dhcp.client

ping
nicinfo

######################

Flash filesystem

devf-generic
flashctl

######################

System logger

slogger
sloginfo

acellarius@yahoo.com wrote:

How to boot this BSP from flash?

Following the instructions in the QNX EP8260 BSP documentation,
I have been able to get QNX up and running on my EP8260
development board (with 8Mbytes Flash, 32Mbytes SDRAM,
part # 153B603CA08ME0S5BC5-10) by downloading the image
to RAM via TFTP over ethernet. I want to put this image
into flash and boot the board from flash, but did not
have any success doing this up to now.

The QNX EP8260 BSP documentation describes how to build
the image, download it into RAM via TFTP over ethernet,
and to start the OS by jumping into the image at the
correct location in RAM. The documentation does not
describe how to put the image into flash and booting
directly from flash.

My OS image is downloaded into RAM (via TFTP over ethernet)
at 0x00010000 throught 0x00187F1B, and the entry point is
0x000117b8. The generated S-record file of the OS image
specifies the address range where the image is to be
loaded as well as the code entry point. Find attached my buildfile.

I’ve copied this OS image from RAM
(at 0x00010000 throught 0x00187F1B) to flash
(0xFF840000 tot 0xFF9B7F1B) using the EP planet flashburner
utility, and jumped into it at address 0xFF8417B8 (by typing
“go FF8417B8” at the bootloader prompt), but the OS does not
boot, and the board freezes up.

It will not work this way. You have to have IPL which will copy your OS
image from FLASH to RAM and pass control there. Take a look at IPL
directory for ep8260 as well 8260ads BSP. Essentially you need to
convert s-rec IPL and image into binaries, concatenate them together and
burn.[Bare in mind that 8260’s Hardware Reset Word is sitting at the
begining of the FLASH. If HRW is erased or overwritten, 8260 won’t boot
at all. JTAG is only cure in this case.] BTW, I use ‘objcopy -Obinary’
to convert s-rec file(s) to binary.

I do not have ep8260 BSP so could not comment what is there what is not.
Speaking about 8260ads IPL, it is rather source for ideas than an
example to follow. Everything you need in ep8260 IPL is
image_scan/image_setup/image_start trio because all initial settings are
done by PlanetCore s/w.

###########################################################################

Neutrino on the Embedded Planet ep8260 board.

##########################################################################

[image=0x10000]
#[image=0xFF840000]
#[ram=0x00000000,32M]
[virtual=ppcbe,srec +compress] .bootstrap = {
startup-ep8260 -N ep8260:qnx1 -Dsmc1 -Ksmc1 -vvvvv
PATH=/proc/boot procnto-600 -vvvvv
}
[+script] startup.script = {
procmgr_symlink …/…/proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

These env variables inherited by all the programs which follow

SYSNAME=nto
TERM=qansi

devc-serppc8260 -e -b115200 -c16625000 smc1^8 &

devc-serppc8260 -e -b115200 -c16625000 smc1^8,0x1c00 &
reopen /dev/ser1
display_msg Welcome to Neutrino on an Embedded Planet 8260 board

Start the system logger

slogger &

Start the flash file system.

devf-generic -s0xff800000,8M

Start network driver - insert proper MAC and IP address.

io-net -dppc8260-ep mac=0010ec003273,channel=3 -ptcpip

waitfor /dev/io-net/en0

ifconfig en0 192.168.0.46

start inetd

inetd -d &

start devc-pty

devc-pty &

Start a pipe.

pipe &

Run startup script file.

/home/ben/newppc &

Start a shell.

[+session] PATH=:/proc/boot esh

[+session] login -p

}

[type=link] /dev/console=/dev/ser1
[type=link] /tmp=/dev/shmem

[type=link] /etc=/fs0p0/etc
[type=link] /home=/fs0p0/home
[type=link] /bin=/proc/boot

libc.so
libsocket.so

[data=c]

######################

Shell

esh

######################

security utilities

login
logout
passwd

######################

Generic components

cat
chmod
chown
cp
date
echo
elvis
grep
hostname
ls
mkdir
more
mv
pidin
pipe
rm
slay
sleep
vi
touch

######################

Character

devc-serppc8260
devc-pty

######################

Network

io-net
devn-ppc8260-ep.so
npm-tcpip.so
ifconfig
inetd
fs-cifs
ftp
telnet
ftpd
telnetd
fs-nfs2

dhcp.client

ping
nicinfo

######################

Flash filesystem

devf-generic
flashctl

######################

System logger

slogger
sloginfo

acellarius@yahoo.com wrote:

Thanks Dmitri!
Will try out your hints.

You are welcome. Another hint. ep8260 has on-board leds those you can
control through BCSR3 at 0xfa00003 from your IPL. I use them for
debugging. It is not quite informative as printf’s but at least
something if you do not have JTAG.

Dmitri Poustovalov wrote:

It will not work this way. You have to have IPL which will copy your OS
image from FLASH to RAM and pass control there. Take a look at IPL
directory for ep8260 as well 8260ads BSP. Essentially you need to
convert s-rec IPL and image into binaries, concatenate them together and
burn.[Bare in mind that 8260’s Hardware Reset Word is sitting at the
begining of the FLASH. If HRW is erased or overwritten, 8260 won’t boot
at all. JTAG is only cure in this case.] BTW, I use ‘objcopy -Obinary’
to convert s-rec file(s) to binary.

I do not have ep8260 BSP so could not comment what is there what is not.
Speaking about 8260ads IPL, it is rather source for ideas than an
example to follow. Everything you need in ep8260 IPL is
image_scan/image_setup/image_start trio because all initial settings are
done by PlanetCore s/w.

Thanks Dmitri!
Will try out your hints.

Dmitri Poustovalov wrote:

It will not work this way. You have to have IPL which will copy your OS
image from FLASH to RAM and pass control there. Take a look at IPL
directory for ep8260 as well 8260ads BSP. Essentially you need to
convert s-rec IPL and image into binaries, concatenate them together and
burn.[Bare in mind that 8260’s Hardware Reset Word is sitting at the
begining of the FLASH. If HRW is erased or overwritten, 8260 won’t boot
at all. JTAG is only cure in this case.] BTW, I use ‘objcopy -Obinary’
to convert s-rec file(s) to binary.

I do not have ep8260 BSP so could not comment what is there what is not.
Speaking about 8260ads IPL, it is rather source for ideas than an
example to follow. Everything you need in ep8260 IPL is
image_scan/image_setup/image_start trio because all initial settings are
done by PlanetCore s/w.

“Dmitri Poustovalov” <pdmitri@bbbiiigggfffoooooottt.com> wrote in message
news:c0j6ft$jve$1@inn.qnx.com

acellarius@yahoo.com > wrote:
How to boot this BSP from flash?

[…]
I’ve copied this OS image from RAM
(at 0x00010000 throught 0x00187F1B) to flash
(0xFF840000 tot 0xFF9B7F1B) using the EP planet flashburner
utility, and jumped into it at address 0xFF8417B8 (by typing
“go FF8417B8” at the bootloader prompt), but the OS does not
boot, and the board freezes up.

It will not work this way. You have to have IPL which will copy your OS
image from FLASH to RAM and pass control there. Take a look at IPL

You could try to cheat and use one of the popular Linux-based boot monitors,
instead of writing your own IPL. I believe PPCBoot (now known as Das U-Boot)
supports lot of boards, probably Embedded Planet too, it being relatively
popular. A nice thing about it is support for booting ELF images.

You can write an ELF image into flash and just do 'bootelf '.
Relocation to RAM and jumping to a real load address will be done
‘magically’.

I am using it with an Artesyn board and like it quite a bit.

There is no ipl-ep8260 supplied with the binary BSP.
There is a startup-ep8260.
Do you think it would be possible to use ipl-rpxlite,
since the RPX Lite should have the same boot monitor support
since it’s a Embedded Planet board?
Or maybe ipl-8260ads?
(Since it will know more about the 8260 to configure
chip selects etc).

Dmitri Poustovalov wrote:

It will not work this way. You have to have IPL which will copy your OS
image from FLASH to RAM and pass control there. Take a look at IPL
directory for ep8260 as well 8260ads BSP. Essentially you need to
convert s-rec IPL and image into binaries, concatenate them together and
burn.[Bare in mind that 8260’s Hardware Reset Word is sitting at the
begining of the FLASH. If HRW is erased or overwritten, 8260 won’t boot
at all. JTAG is only cure in this case.] BTW, I use ‘objcopy -Obinary’
to convert s-rec file(s) to binary.

I do not have ep8260 BSP so could not comment what is there what is not.
Speaking about 8260ads IPL, it is rather source for ideas than an
example to follow. Everything you need in ep8260 IPL is
image_scan/image_setup/image_start trio because all initial settings are
done by PlanetCore s/w.



###########################################################################

Neutrino on the Embedded Planet ep8260 board.

##########################################################################

[image=0x10000]
#[image=0xFF840000]
#[ram=0x00000000,32M]
[virtual=ppcbe,srec +compress] .bootstrap = {
startup-ep8260 -N ep8260:qnx1 -Dsmc1 -Ksmc1 -vvvvv
PATH=/proc/boot procnto-600 -vvvvv
}
[+script] startup.script = {
procmgr_symlink …/…/proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

These env variables inherited by all the programs which follow

SYSNAME=nto
TERM=qansi

devc-serppc8260 -e -b115200 -c16625000 smc1^8 &

devc-serppc8260 -e -b115200 -c16625000 smc1^8,0x1c00 &
reopen /dev/ser1
display_msg Welcome to Neutrino on an Embedded Planet 8260 board

Start the system logger

slogger &

Start the flash file system.

devf-generic -s0xff800000,8M

Start network driver - insert proper MAC and IP address.

io-net -dppc8260-ep mac=0010ec003273,channel=3 -ptcpip

waitfor /dev/io-net/en0

ifconfig en0 192.168.0.46

start inetd

inetd -d &

start devc-pty

devc-pty &

Start a pipe.

pipe &

Run startup script file.

/home/ben/newppc &

Start a shell.

[+session] PATH=:/proc/boot esh

[+session] login -p

}

[type=link] /dev/console=/dev/ser1
[type=link] /tmp=/dev/shmem

[type=link] /etc=/fs0p0/etc
[type=link] /home=/fs0p0/home
[type=link] /bin=/proc/boot

libc.so
libsocket.so

[data=c]

######################

Shell

esh

######################

security utilities

login
logout
passwd

######################

Generic components

cat
chmod
chown
cp
date
echo
elvis
grep
hostname
ls
mkdir
more
mv
pidin
pipe
rm
slay
sleep
vi
touch

######################

Character

devc-serppc8260
devc-pty

######################

Network

io-net
devn-ppc8260-ep.so
npm-tcpip.so
ifconfig
inetd
fs-cifs
ftp
telnet
ftpd
telnetd
fs-nfs2

dhcp.client

ping
nicinfo

######################

Flash filesystem

devf-generic
flashctl

######################

System logger

slogger
sloginfo

acellarius@yahoo.com wrote:

There is no ipl-ep8260 supplied with the binary BSP.
Do you have ep8260 source code in /usr/src/bsp-6.2.1/ppc ?If it is not

then what is so called ep8260 BSP anyway?

There is a startup-ep8260.
Do you think it would be possible to use ipl-rpxlite,
since the RPX Lite should have the same boot monitor support
since it’s a Embedded Planet board?
I do not remember if QNX original IPL is position independant or not, and

what is inside of that IPL. You can give it a try. In the worst case the
board will hang.
[I was about to check RPX IPL source code when realized that they moved it to \“Automotive bundle\” on the way from 6.1 to 6.2.1. But they left binary in 6.2.1 Heh, what a mess. I naively hope qss will clean it out in 6.3]

Or maybe ipl-8260ads?
(Since it will know more about the 8260 to configure
chip selects etc).
Not 8260ads, it will not work because this IPL reads/writes from/to

addresses those do not exist on ep8260 (specifically BCSRs). Chip selects
are board specific also and they get configured by PlanetCore Bootloader
anyway.

Dmitri Poustovalov wrote:
It will not work this way. You have to have IPL which will copy your OS
image from FLASH to RAM and pass control there. Take a look at IPL
directory for ep8260 as well 8260ads BSP. Essentially you need to
convert s-rec IPL and image into binaries, concatenate them together and
burn.[Bare in mind that 8260’s Hardware Reset Word is sitting at the
begining of the FLASH. If HRW is erased or overwritten, 8260 won’t boot
at all. JTAG is only cure in this case.] BTW, I use ‘objcopy -Obinary’
to convert s-rec file(s) to binary.

I do not have ep8260 BSP so could not comment what is there what is not.
Speaking about 8260ads IPL, it is rather source for ideas than an
example to follow. Everything you need in ep8260 IPL is
image_scan/image_setup/image_start trio because all initial settings are
done by PlanetCore s/w.




###########################################################################

Neutrino on the Embedded Planet ep8260 board.

##########################################################################

[image=0x10000]
#[image=0xFF840000]
#[ram=0x00000000,32M]
[virtual=ppcbe,srec +compress] .bootstrap = {
startup-ep8260 -N ep8260:qnx1 -Dsmc1 -Ksmc1 -vvvvv
PATH=/proc/boot procnto-600 -vvvvv
}
[+script] startup.script = {
procmgr_symlink …/…/proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

These env variables inherited by all the programs which follow

SYSNAME=nto
TERM=qansi

devc-serppc8260 -e -b115200 -c16625000 smc1^8 &

devc-serppc8260 -e -b115200 -c16625000 smc1^8,0x1c00 &
reopen /dev/ser1
display_msg Welcome to Neutrino on an Embedded Planet 8260 board

Start the system logger

slogger &

Start the flash file system.

devf-generic -s0xff800000,8M

Start network driver - insert proper MAC and IP address.

io-net -dppc8260-ep mac=0010ec003273,channel=3 -ptcpip

waitfor /dev/io-net/en0

ifconfig en0 192.168.0.46

start inetd

inetd -d &

start devc-pty

devc-pty &

Start a pipe.

pipe &

Run startup script file.

/home/ben/newppc &

Start a shell.

[+session] PATH=:/proc/boot esh

[+session] login -p

}

[type=link] /dev/console=/dev/ser1
[type=link] /tmp=/dev/shmem

[type=link] /etc=/fs0p0/etc
[type=link] /home=/fs0p0/home
[type=link] /bin=/proc/boot

libc.so
libsocket.so

[data=c]

######################

Shell

esh

######################

security utilities

login
logout
passwd

######################

Generic components

cat
chmod
chown
cp
date
echo
elvis
grep
hostname
ls
mkdir
more
mv
pidin
pipe
rm
slay
sleep
vi
touch

######################

Character

devc-serppc8260
devc-pty

######################

Network

io-net
devn-ppc8260-ep.so
npm-tcpip.so
ifconfig
inetd
fs-cifs
ftp
telnet
ftpd
telnetd
fs-nfs2

dhcp.client

ping
nicinfo

######################

Flash filesystem

devf-generic
flashctl

######################

System logger

slogger
sloginfo

acellarius@yahoo.com wrote:

How to boot this BSP from flash?

Following the instructions in the QNX EP8260 BSP documentation,
I have been able to get QNX up and running on my EP8260
development board (with 8Mbytes Flash, 32Mbytes SDRAM,
part # 153B603CA08ME0S5BC5-10) by downloading the image
to RAM via TFTP over ethernet. I want to put this image
into flash and boot the board from flash, but did not
have any success doing this up to now.

The QNX EP8260 BSP documentation describes how to build
the image, download it into RAM via TFTP over ethernet,
and to start the OS by jumping into the image at the
correct location in RAM. The documentation does not
describe how to put the image into flash and booting
directly from flash.

My OS image is downloaded into RAM (via TFTP over ethernet)
at 0x00010000 throught 0x00187F1B, and the entry point is
0x000117b8. The generated S-record file of the OS image
specifies the address range where the image is to be
loaded as well as the code entry point. Find attached my buildfile.

I’ve copied this OS image from RAM
(at 0x00010000 throught 0x00187F1B) to flash
(0xFF840000 tot 0xFF9B7F1B) using the EP planet flashburner
utility, and jumped into it at address 0xFF8417B8 (by typing
“go FF8417B8” at the bootloader prompt), but the OS does not
boot, and the board freezes up.

This will attempt to execute the startup code directly in flash,
which will not work. Since QNX does not provide an IPL for this
board, booting the board directly from flash would involve
getting the PlanetCore boot loader to copy an OS image from
flash to DRAM, and then jumping to that address in DRAM.
I’ve taken a quick look at the PlanetCore docs, but I don’t
see a direct method to do this. Their flash burner utility seems
capable of copying an image from memory to flash, and it appears to
take START, TARGET, and LENGTH as arguments. Perhaps it can be ‘tricked’
into copying from FLASH to DRAM, instead of the other way around…

Have you contacted Embedded Planet? Maybe they know of an undocumented
method of automatically copying a boot image from flash to DRAM and
then executing it.

###########################################################################

Neutrino on the Embedded Planet ep8260 board.

##########################################################################

[image=0x10000]
#[image=0xFF840000]
#[ram=0x00000000,32M]
[virtual=ppcbe,srec +compress] .bootstrap = {
startup-ep8260 -N ep8260:qnx1 -Dsmc1 -Ksmc1 -vvvvv
PATH=/proc/boot procnto-600 -vvvvv
}
[+script] startup.script = {
procmgr_symlink …/…/proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

These env variables inherited by all the programs which follow

SYSNAME=nto
TERM=qansi

devc-serppc8260 -e -b115200 -c16625000 smc1^8 &

devc-serppc8260 -e -b115200 -c16625000 smc1^8,0x1c00 &
reopen /dev/ser1
display_msg Welcome to Neutrino on an Embedded Planet 8260 board

Start the system logger

slogger &

Start the flash file system.

devf-generic -s0xff800000,8M

Start network driver - insert proper MAC and IP address.

io-net -dppc8260-ep mac=0010ec003273,channel=3 -ptcpip

waitfor /dev/io-net/en0

ifconfig en0 192.168.0.46

start inetd

inetd -d &

start devc-pty

devc-pty &

Start a pipe.

pipe &

Run startup script file.

/home/ben/newppc &

Start a shell.

[+session] PATH=:/proc/boot esh

[+session] login -p

}

[type=link] /dev/console=/dev/ser1
[type=link] /tmp=/dev/shmem

[type=link] /etc=/fs0p0/etc
[type=link] /home=/fs0p0/home
[type=link] /bin=/proc/boot

libc.so
libsocket.so

[data=c]

######################

Shell

esh

######################

security utilities

login
logout
passwd

######################

Generic components

cat
chmod
chown
cp
date
echo
elvis
grep
hostname
ls
mkdir
more
mv
pidin
pipe
rm
slay
sleep
vi
touch

######################

Character

devc-serppc8260
devc-pty

######################

Network

io-net
devn-ppc8260-ep.so
npm-tcpip.so
ifconfig
inetd
fs-cifs
ftp
telnet
ftpd
telnetd
fs-nfs2

dhcp.client

ping
nicinfo

######################

Flash filesystem

devf-generic
flashctl

######################

System logger

slogger
sloginfo

David Green (dgreen@qnx.com)
QNX Software Systems Ltd.
http://www.qnx.com

Thanks
Embedded Planet supplied a file showing how it’s done
for VxWorks.
Possibly the EP8260BSP can be expanded to include
something like this?

Dave Green wrote:

This will attempt to execute the startup code directly in flash,
which will not work. Since QNX does not provide an IPL for this
board, booting the board directly from flash would involve
getting the PlanetCore boot loader to copy an OS image from
flash to DRAM, and then jumping to that address in DRAM.
I’ve taken a quick look at the PlanetCore docs, but I don’t
see a direct method to do this. Their flash burner utility seems
capable of copying an image from memory to flash, and it appears to
take START, TARGET, and LENGTH as arguments. Perhaps it can be ‘tricked’
into copying from FLASH to DRAM, instead of the other way around…

Have you contacted Embedded Planet? Maybe they know of an undocumented
method of automatically copying a boot image from flash to DRAM and
then executing it.