OSL System ACE Driver

Using System ACE For the Kernel

System ACE, on the Xilinx boards, allows compact flash (CF) to be used for loading the FPGA bitstream and the Linux kernel. This does not require the Linux kernel to know anything about System ACE as that's all hardware.

Use the genace tcl script to create the ace file which contains the FPGA bitstream and the linux kernel (or any elf).

xmd –tcl genace.tcl –jprog –target ppc_hw –hw <path/bit file> -elf <path/elf file> -board ml507 –ace <output file name>

Copy the ace file onto the CF FAT partition. If it's the only file it will be loaded by default. Ensure that any dip switches on the board are set correctly to allow the board to boot from system ACE. SW 3 on ML507 must be 00010101 for it to load from CF.

Resolved Issues

The driver had a bug such that if you don't have a CF card inserted in the slot it will lock up the kernel during boot. Putting a CF card in the slot worked around the issue. The bug was fixed in 2.6.31.

Using System ACE For the Root File System

The CF can be used for the Linux kernel root file system independent of if the kernel was loaded from the CF or not.

  • Enable the system ace driver in the kernel configuration (not the old driver as there were 2 with one being called "old").
  • Make sure the system ace is in the device tree file and the hardware build.
  • Enable ext3 filesystem in the kernel configuration.
    • CONFIG_EXT3_FS=y
  • Alter the boot args in device tree file to have the root=/dev/xsa2 (assuming root file system on 2nd partition) or alter the command line when the kernel boots.
  • You should see the system ace driver found in the console output.
xsysace 83600000.sysace: Xilinx SystemACE revision 1.0.12
xsysace 83600000.sysace: capacity: 2001888 sectors
 xsa: xsa1 xsa2

Compact Flash Partitions

The following table shows the partitions of a typical Compact Flash card used for Linux and System ACE. The FAT partition is for the system ace to load the bit stream and possibly (not necessarily) the kernel image also. The Linux partition is for a root file system. Swap space is not required for the kernel.

Device Start End Blocks Id System
/dev/sdc1 1 195 98248+ 6 FAT16
/dev/sdc2 196 993 402192 83 Linux
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License