V8.2.2 Xilinx Repository Makefile Issues (Ubuntu)

razed11 wrote on Saturday, September 26, 2015:

Hi,

I’m using Xilinx SDK 15.2 and there are some minor issues when using the repository to create a BSP on Linux.

First, CreateRepoDirectoryStructure.bat doesn’t work on Linux :slight_smile: but it’s easy enough to change .bat to .sh, replace copy with cp, and switch the direction of the slashes.

After including the repository and creating the BSP the build failed. It complains that arm-none-eabi-* commands do not exist. I noticed that Makefile, Makefile_dep, and makefile_ps7_cortexa9 contain the following.

ARCH_PREFIX = arm-none-eabi

#
# gnu tools for Makefile
#
CC = $(ARCH_PREFIX)-gcc
AS = arm-none-as
AR = $(ARCH_PREFIX)-ar
CP = cp

I changed the ARCH_PREFIX and AS to use arm-xilinx-eabi and everything built but I have not yet linked and tried the application (I wanted to submit this before going home for the weekend). It’s been a while since I wrote a fancy makefile but I thought there was a way to inherit ARCH_PREFIX because it is passed explicitly as arm-xilinx.eabi to the top level make file.

Also the file *.s is created under src. I think this may be because there are no lower case .s files so the following expands to literally *.s on Linux. On windows it probably duplicates the files but I’m not sure.

KERNEL_AR_OBJS = *.c *.S *.s

rtel wrote on Saturday, September 26, 2015:

Thanks for the information. When you have everything sorted out I can add a link to this post from the web page that describes how to use the BSP version to help other Linux users.

Note the makesfiles etc. are all generated by the Xilinx tools, which is predominently a Linux tool, although I only use it on Windows. Could the mismatch in compiler names be due to a mismatch in SDK versions?

Regards.

razed11 wrote on Monday, September 28, 2015:

I believe I have this sorted out.

First, please find a shell script that is equivilent to the .bat script attached.

While Xilinx generates the makefiles it seems to simply copy the one included in the repository to BSP_DIRECTORY/ps7_cortexa9_1/libsrc/freertos822_xilinx_v1_0/src. Unlike the other libraries which simply have a single makefile called Makefile, Makefile_dep and Makefile_ps7_cortexa9 are also generated. These three makefiles have the same contents.

I made two changes to Makefile_ps7_cortexa9 which is the repository makefile.

I changed the AS definition to also use $(ARCH_PREFIX). The definition of ARCH_PREFIX is fine because it is indeed overridden by the definition passed at the command line (arm-xilinx-eabi).

ARCH_PREFIX = arm-none-eabi

#
# gnu tools for Makefile
#
CC = $(ARCH_PREFIX)-gcc
AS = $(ARCH_PREFIX)-as
AR = $(ARCH_PREFIX)-ar

To correct the *.s file that is created (literally a file named *.s is created) I used $(wildcard):

KERNEL_AR_OBJS = $(wildcard *.c *.S *.s)

I think these two changes will work for both Windows and Linux.

Finally “make clean” does not remove libfreertos.a. This is something that needs to be added to the root makefile. I’m not sure how to get that one fixed as I’ve found the Xilinx forum to be an unreliable place to post.

rtel wrote on Tuesday, September 29, 2015:

Thanks for the valuable information. I would be grateful if you could
post the updated makefiles so I can see if I can update (or request
updates) that will ensure everything works on both host platforms. I
can also then link to this post from the documentation page on the
FreeRTOS.org website so Linux users can get the information quickly.

Regards.