Page 4 of 6

Re: bare metal app

Posted: Wed Jun 17, 2015 9:44 pm
by pavel
Mike1010 wrote:May i ask you why your device tree only uses 0 - 0x1E000000 (480MB)?
I'm using the free memory region at the end of the DDR3 RAM address range for DMA. It could also be useful for some other project like this one.

Re: bare metal app

Posted: Thu Jun 18, 2015 9:08 am
by Mike1010
I can boot the ubuntu but cat /proc/cpuinfo shows two cores...

i set maxcpus=1 in the boot_args within scripts/devicetree.tcl ... Did i miss a change?

Here the kernel log: http://paste.ubuntu.com/11734402

Re: bare metal app

Posted: Thu Jun 18, 2015 10:26 am
by pavel
A couple of questions.

What SD card image are you using?

What are real kernel args returned by the following command?

Code: Select all

cat /proc/cmdline

Re: bare metal app

Posted: Thu Jun 18, 2015 10:37 am
by Mike1010
i built the SD card image by myself with the src from: https://github.com/pavel-demin/red-pitaya-notes

I changed the Makefile as discussed before:

Code: Select all

boot.bin: tmp/$(NAME).fsbl/executable.elf tmp/$(NAME).bit tmp/u-boot.elf 
echo "img:{[bootloader] tmp/red_pitaya_0_92.fsbl/executable.elf tmp/red_pitaya_0_92.bit tmp/u-boot.elf app_cpu1.elf}" > tmp/boot.bif bootgen -image tmp/boot.bif -w -o i boot.bin
here the output:

Code: Select all

cat /proc/cmdline
console=ttyPS0,115200 root=/dev/mmcblk0p2 ro rootfstype=ext4 earlyprintk rootwait maxcpus=1

Re: bare metal app

Posted: Thu Jun 18, 2015 11:08 am
by pavel
Thanks.

Code: Select all

maxcpus=1
is indeed where it should be. But the kernel still starts the second CPU core.

Still from the same blog: http://henryomd.blogspot.be/2014/09/smp ... -core.html
The second CPU can be stopped with the following command:

Code: Select all

echo 0 >> /sys/devices/system/cpu/cpu1/online
After looking at XAPP1078, XAPP1079 and this article, I think that the easiest would be to follow the article and XAPP1079.

Here is what I think could be done:
  • build the remoteproc module
  • add remoteproc to devicetree
  • take app_cpu1.c from XAPP1079 because it's much shorter
  • take BSP code from XAPP1078 because it's more recent
  • build app_cpu1.elf and copy it to the SD card
  • boot Red Pitaya with default kernel args and default boot.bin
  • stop CPU1 using

    Code: Select all

    echo 0 >> /sys/devices/system/cpu/cpu1/online
  • load the remoteproc module that should start CPU1 and run app_cpu1.elf

Re: bare metal app

Posted: Thu Jun 18, 2015 11:35 am
by pavel
Correction to my todo list. BSP from XAP1078 is not needed. SDK 2015.1 comes with a more recent version. Only scripts/fsbl.tcl should be modified to add -DUSE_AMP=1.

Re: bare metal app

Posted: Thu Jun 18, 2015 12:14 pm
by Mike1010
I had already added -DUSE_AMP=1 as mentioned in XAP1078.

Do you mean the app_cpu1_bsp project i created according to XAP1078?

1.) I created a board support package project. This one had the -DUSE_AMP=1 set! The code for this project was added by vivado 2015!

2.) i created the application project called app_cpu1 and added the files from XAP1078 (http://www.wiki.xilinx.com/file/view/xa ... 2014.4.zip) and removed the interrupt code + i changed the lscript.ld to use the correct ddram baseaddr and length. I didnt add a DUSE_AMP flag for this project.

Re: bare metal app

Posted: Thu Jun 18, 2015 12:24 pm
by pavel
Sorry for the confusion. I'm trying to understand how to generate FSBL from the command-line without GUI. In the same time, I'm trying to follow the blog article.

Re: bare metal app

Posted: Thu Jun 18, 2015 2:53 pm
by Mike1010
I again looked at http://www.wiki.xilinx.com/XAPP1078+Latest+Information

The following note seems to be important. i guess we need to patch the linux kernel as well?
Modifying the Linux Kernel
The Linux kernel contains initialization code for CPU1. This code needs to be modified to send CPU1 back to the WFE loop located at 0xFFFFFF2C.

Edit the file arch/arm/mach-zynq/platsmp.c search for the following line:
ret = zynq_cpu1_start(virt_to_phys(secondary_startup));

and change the line to:
ret = zynq_cpu1_start(0xFFFFFF2C);
The file to be modified: https://github.com/Xilinx/linux-xlnx/bl ... /platsmp.c

Re: bare metal app

Posted: Thu Jun 18, 2015 9:34 pm
by Mike1010
According to the link i posted before i need to generate and modify the cpu1_bootvec.bin
... But on the other hand xapp1079 latest information mentions that the cpu1_bootvec.bin is no longer required...!? What could i try !?