On 26/6/20 1:25 am, Heinz Junkes wrote:
Hallo,

i just can't get it to load and start a rtems-exe via tftp in u-boot.
I have tried many variations now. Without success. This one should work, right?

pwd: 
build/b-xilinx_zynq_zedboard/arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples
ls -l ticker*

-rwxr-xr-x  1 junkes  staff  2822792 Jun 23 09:24 ticker.exe

ticker:
total 264
-rw-r--r--  1 junkes  staff  82416 Jun 23 09:24 ticker-init.o
-rw-r--r--  1 junkes  staff  48744 Jun 23 09:24 ticker-tasks.o

To create an image file for u-boot I make :

[junkes@h epics]$ more rtems-zynq-image
#!/bin/sh

OBJCOPY_FOR_TARGET=arm-rtems5-objcopy
OBJCOPY="$OBJCOPY_FOR_TARGET"

EXE_NAME=$1

START_ADDR=0x00104000
  ^^^^^^^^^^^^^^^^^^^^^
ENTRY_ADDR=0x00104000

${OBJCOPY} -R -S --strip-debug -O binary "$EXE_NAME" "$EXE_NAME.bin" || exit 1
cat "$EXE_NAME.bin" | gzip -9 >"$EXE_NAME.gz"
mkimage \
   -A arm -O rtems -T kernel -a $START_ADDR -e $ENTRY_ADDR -n "EPICS" \
   -C gzip -d "$EXE_NAME.gz" "$EXE_NAME.img”

Now when I want to start the ticker.img file on the Zync u-boot:

Zynq> set serverip 141.14.128.9
Zynq> tftpboot ticker.img
Using ethernet@e000b000 device
TFTP from server 141.14.128.9; our IP address is 141.14.128.46
Filename 'ticker.img'.
Load address: 0x10000000
Loading: ###
          523.4 KiB/s
done
Bytes transferred = 34847 (881f hex)
Zynq> bootm
Wrong Image Format for bootm command
ERROR: can't get kernel image!
Zynq> go 0x10000000

That is the load address and the above script to convert the exe to img uses 0x00104000 as the start address.

I just ran ticker on my microzed (zedboard BSP) with ..

$ rtems-run --rtems-bsp=xilinx_zynq_zedboard --debug-trace=console,tftp `find . -name ticker.exe`
                                                                  [1/1825]
RTEMS Testing - Run, 5.0.not_released
Command Line: /opt/work/rtems/5/bin/rtems-run --rtems-bsp=xilinx_zynq_zedboard --debug-trace=console,tftp ./arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/ticker.exe
 Host: FreeBSD ruru 12.1-RELEASE-p2 FreeBSD 12.1-RELEASE-p2 GENERIC amd64
Python: 3.7.6 (default, Mar 3 2020, 01:18:14) [Clang 8.0.1 (tags/RELEASE_801/final 366581)] Host: FreeBSD-12.1-RELEASE-p2-amd64-64bit-ELF (FreeBSD ruru 12.1-RELEASE-p2 FreeBSD 12.1-RELEASE-p2 GENERIC amd64 amd64) => target exe filter: find:\.exe subst:.exe.img -> ./arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/ticker.exe.img
=> target on: cs-pw-ctl 1 toggle-on 2 4
=> target pretest: rtems-zynq-mkimg ./arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/ticker.exe
=>  Image: ./arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/ticker.exe
=>  Image Name:   RTEMS
=>  Created:      Fri Jun 26 09:24:39 2020
=>  Image Type:   ARM RTEMS Kernel Image (gzip compressed)
=>  Data Size:    34851 Bytes = 34.03 KiB = 0.03 MiB
=>  Load Address: 00104000
=>  Entry Point:  00104000
=> tftp: exe: ./arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/ticker.exe.img
In:    serial@e0001000
Out:   serial@e0001000
Err:   serial@e0001000
Model: Zynq Zed Development Board
Board: Xilinx Zynq
Net:   ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id

Warning: ethernet@e000b000 (eth0) using random MAC address - 6e:3a:1c:22:aa:5f
eth0: ethernet@e000b000
reading uEnv.txt
165 bytes read in 11 ms (14.6 KiB/s)
Importing environment from mmc ...
Checking if uenvcmd is set ...
Running uenvcmd ...
Booting RTEMS from net
=> tftp: ./arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/ticker.exe.img
ethernet@e000b000 Waiting for PHY auto negotiation to complete..... done
BOOTP broadcast 1
DHCP client bound to address 10.10.5.132 (1 ms)
Using ethernet@e000b000 device
TFTP from server 10.10.5.2; our IP address is 10.10.5.132
Filename 'zed/rtems.img'.
Load address: 0x2000000
Loading: ###
         1.3 MiB/s
done
Bytes transferred = 34915 (8863 hex)
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   RTEMS
   Image Type:   ARM RTEMS Kernel Image (gzip compressed)
   Data Size:    34851 Bytes = 34 KiB
   Load Address: 00104000
   Entry Point:  00104000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Transferring control to RTEMS (at address 00104000) ...


=> test start: CLOCK TICK
*** BEGIN OF TEST CLOCK TICK ***
*** TEST VERSION: 5.0.0.084ea83a9be60ea14a9e59bdcd7eda086f9b8725
*** TEST STATE: EXPECTED_PASS
*** TEST BUILD: RTEMS_POSIX_API
*** TEST TOOLS: 7.5.0 20191114 (RTEMS 5, RSB 5 (8223d3b7c02e), Newlib 7947581)
TA1  - rtems_clock_get_tod - 09:00:00   12/31/1988
TA2  - rtems_clock_get_tod - 09:00:00   12/31/1988

The tester config is:

#
# Zedboard with U-Boot on an SD card.
#
[xilinx_zynq_zedboard]
tftp_port              = 9101
bsp_tty_dev            = cs-ser-2:30003
target_pretest_command = rtems-zynq-mkimg @EXE@
target_exe_filter      = /\.exe/.exe.img/
target_on_command      = cs-pw-ctl 1 toggle-on 2 4
target_off_command     = cs-pw-ctl 1 off 2
target_reset_command   = cs-pw-ctl 1 toggle-on 2 3

The uboot uEnv.txt is:

bootfile=zed/rtems.img
loadaddr=0x02000000
uenvcmd=echo Booting RTEMS Zed from net; set autoload no; dhcp; set serverip 10.10.5.2; tftpboot zed/rtems.img; bootm; reset;

My rtems-zynq-mkimg is basically the same. You could try '-O Linux' as Jan says but I do not think it matters for this BSP as it does not have any FDT support. It does matter on some BSPs.

FYI I am moving away from the uboot supplied `mkimage` to `mkimage.py` by Craig Barker. Amar has added it to rtems-tools:

https://git.rtems.org/rtems-tools/tree/misc/tools/mkimage.py

FreeBSD, MacOS and Windows do not have a `mkimage` package and this works nicely.

Chris
_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to