diff options
author | Stephan Linz <linz@li-pro.net> | 2011-03-29 09:01:03 +0200 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2011-04-14 09:08:13 +0200 |
commit | 5dd27e8eb09c19d36686f8f09e93dc3563e78734 (patch) | |
tree | 4c3acd39f3f34ca87eb0753491da38f86e64dc80 /scripts | |
parent | b583d35beb7c27164de336e8a32dca4e93992b2a (diff) | |
download | ptxdist-5dd27e8eb09c19d36686f8f09e93dc3563e78734.tar.gz ptxdist-5dd27e8eb09c19d36686f8f09e93dc3563e78734.tar.xz |
V3: add Xilinx MicroBlaze architecture
This is support for Xilinx MicroBlaze processors. MicroBlaze
is a soft core processor designed for Xilinx FPGAs. With this
new architecture ptxdist have to handle dynamic platform
configurations exported by Xilinx design tools.
Some essential changes and extensions inside a few ptxdist core
scripts were made to merge external platform configurations into
the ptxdist platform configuration. That is very important since
the resulting build process have to know about the real CPU
features like hardware multiplier, barrel shifter or similar high
performance accelerators.
So ptxdist knows about this specialty, parse the new platform
directory "xlbsp" and use the content for its own platform
configuration. The content of the new platform directory "xlbsp"
comes from Xilinx design tools and have to be:
* auto-config.in (Linux Kernel 2.4 configuration)
* Kconfig.auto (Linux Kernel 2.6 configuration)
* xilinx.dts (Linux Kernel 2.6 configuration)
* config.mk (U-Boot configuration)
* xparameters.h (U-Boot configuration)
Signed-off-by: Stephan Linz <linz@li-pro.net>
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/lib/ptxd_lib_00-init.sh | 3 | ||||
-rw-r--r-- | scripts/lib/ptxd_make_00-init.sh | 5 | ||||
-rw-r--r-- | scripts/lib/ptxd_make_xilinx_bsp.sh | 148 |
3 files changed, 156 insertions, 0 deletions
diff --git a/scripts/lib/ptxd_lib_00-init.sh b/scripts/lib/ptxd_lib_00-init.sh index ac20b29fb..cfd89a3e5 100644 --- a/scripts/lib/ptxd_lib_00-init.sh +++ b/scripts/lib/ptxd_lib_00-init.sh @@ -104,6 +104,9 @@ ptxd_init_ptxdist_path() { PTXDIST_PATH_SCRIPTS="${PTXDIST_PATH//://scripts:}" export PTXDIST_PATH_SCRIPTS + PTXDIST_PATH_PLATFORMS_XLBSP="${PTXDIST_PATH_PLATFORMS//://xlbsp:}" + export PTXDIST_PATH_PLATFORMS_XLBSP + ptxd_init_ptxdist_path_sysroot } diff --git a/scripts/lib/ptxd_make_00-init.sh b/scripts/lib/ptxd_make_00-init.sh index b74e47a84..526dbae85 100644 --- a/scripts/lib/ptxd_make_00-init.sh +++ b/scripts/lib/ptxd_make_00-init.sh @@ -32,6 +32,11 @@ ptxd_init_arch() { ipkg_arch=arm ;; esac + ;; + + microblaze) + ipkg_arch=mb + ;; esac PTXDIST_IPKG_ARCH_STRING="${ipkg_arch}" diff --git a/scripts/lib/ptxd_make_xilinx_bsp.sh b/scripts/lib/ptxd_make_xilinx_bsp.sh new file mode 100644 index 000000000..3594d0aa2 --- /dev/null +++ b/scripts/lib/ptxd_make_xilinx_bsp.sh @@ -0,0 +1,148 @@ +#!/bin/bash +# +# Copyright (C) 2011 by Stephan Linz <linz@li-pro.net> +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# apply project files (remove old, link new) +# +ptxd_make_xilinx_bsp_apply_files() +{ + local ptx_xlbsp_dir + local pkg_xlbsp_file + local pkg_xlbsp_files + + if [ $# -ne 2 ]; then + echo "xlbsp: ${pkg_xlbsp_apply}: missing arguments (<dir>,<filelist>)" + return + fi + ptx_xlbsp_dir="${1}" + pkg_xlbsp_files="${2}" + + echo "xlbsp: ${pkg_xlbsp_apply}: board '$(ptxd_print_path "${ptx_xlbsp_dir:-<none>}")'" + pushd "${ptx_xlbsp_dir}" > /dev/null && + for pkg_xlbsp_file in ${pkg_xlbsp_files}; do + echo "xlbsp: ${pkg_xlbsp_apply}: rm/ln '$(ptxd_print_path "${pkg_xlbsp_file:-<none>}")'" + + local pkg_file="$(basename "${pkg_xlbsp_file}")" && + ln -sf ${pkg_xlbsp_file} ${pkg_file} + + done && + popd > /dev/null +} +export -f ptxd_make_xilinx_bsp_apply_files + +# apply Xilinx BSP for U-Boot +# +ptxd_make_xilinx_bsp_apply_uboot() +{ + local ptx_xlbsp_uboot_cfg="$(ptxd_get_ptxconf PTXCONF_U_BOOT_CONFIG)" + local pkg_xlbsp_uboot_files="${pkg_xlbsp_dir}config.mk \ + ${pkg_xlbsp_dir}xparameters.h" + local pkg_xlbsp_uboot_file + local ptx_xlbsp_uboot_dir + + # find ptx_xlbsp_uboot_dir + if ! ptxd_get_path "${pkg_build_dir}/board/xilinx/${ptx_xlbsp_uboot_cfg%%_config}"; then + echo "xlbsp: ${pkg_xlbsp_apply}: no board path found" + return + fi + ptx_xlbsp_uboot_dir="${ptxd_reply}" + + # apply files (remove old, link new) + ptxd_make_xilinx_bsp_apply_files "${ptx_xlbsp_uboot_dir}" "${pkg_xlbsp_uboot_files}" +} +export -f ptxd_make_xilinx_bsp_apply_uboot + +# +# apply Xilinx BSP for Linux kernel 2.6 +# +ptxd_make_xilinx_bsp_apply_kernel() +{ + local ptx_xlbsp_kernel_arch="$(ptxd_get_ptxconf PTXCONF_KERNEL_ARCH_STRING)" + local pkg_xlbsp_kernel24_files="${pkg_xlbsp_dir}auto-config.in" + local pkg_xlbsp_kernel26_files="${pkg_xlbsp_dir}Kconfig.auto" + local ptx_xlbsp_kernel_platform + local pkg_xlbsp_kernel_files + local pkg_xlbsp_kernel_file + local ptx_xlbsp_kernel_dir + + # files and platform to use per version + case "${pkg_pkg}" in + linux-24*|linux-2.4*) + pkg_xlbsp_kernel_files=${pkg_xlbsp_kernel24_files}; + ptx_xlbsp_kernel_platform="uclinux-auto"; + ;; + linux-26*|linux-2.6*) + pkg_xlbsp_kernel_files=${pkg_xlbsp_kernel26_files}; + ptx_xlbsp_kernel_platform="generic"; + ;; + *) + echo "xlbsp: ${pkg_xlbsp_apply}: unsupported kernel version: ${pkg_pkg##linux-}" + return + ;; + esac + + # find ptx_xlbsp_kernel_dir + if ! ptxd_get_path "${pkg_build_dir}/arch/${ptx_xlbsp_kernel_arch}/platform/${ptx_xlbsp_kernel_platform}"; then + echo "xlbsp: ${pkg_xlbsp_apply}: no board path found" + return + fi + ptx_xlbsp_kernel_dir="${ptxd_reply}" + + # apply files (remove old, link new) + ptxd_make_xilinx_bsp_apply_files "${ptx_xlbsp_kernel_dir}" "${pkg_xlbsp_kernel_files}" +} +export -f ptxd_make_xilinx_bsp_apply_kernel + +# +# generic apply Xilinx BSP function +# +ptxd_make_xilinx_bsp_apply() +{ + local pkg_xlbsp_dir + local pkg_xlbsp_apply + + ptxd_in_path PTXDIST_PATH_PLATFORMS_XLBSP || return + pkg_xlbsp_dir="${ptxd_reply}" + + # files to use per package + case "${pkg_pkg}" in + u-boot*) + pkg_xlbsp_apply="uboot"; + ;; + linux*) + pkg_xlbsp_apply="kernel"; + ;; + *) + echo "xlbsp: unsupported package: ${pkg_pkg}" + return + ;; + esac + + echo "pkg_xlbsp_dir: '$(ptxd_print_path "${pkg_xlbsp_dir:-<none>}")'" + echo "pkg_build_dir: '$(ptxd_print_path "${pkg_build_dir:-<none>}")'" + echo + + # apply Xilinx BSP per package if files are available + if [ -n "${pkg_xlbsp_apply}" ]; then + echo "xlbsp: ${pkg_xlbsp_apply}: apply '$(ptxd_print_path "${pkg_xlbsp_dir:-<none>}")'" + "ptxd_make_xilinx_bsp_apply_${pkg_xlbsp_apply}" || return + echo -e "xlbsp: ${pkg_xlbsp_apply}: done\n" + fi +} +export -f ptxd_make_xilinx_bsp_apply + +# +# copy and adjust per package +# +ptxd_make_xilinx_bsp() { + ptxd_make_world_init || return + ptxd_make_xilinx_bsp_apply +} +export -f ptxd_make_xilinx_bsp |