[Buildroot] [PATCH 10/17] TI's DVSDK for DM365 processors
Pierre-Luc Simard
pierreluc.simard at admetric.ca
Fri Sep 17 17:59:55 UTC 2010
---
package/ti/Config.in | 1 +
package/ti/ti-dvsdk-dm365/Config.in | 6 +
.../ti/ti-dvsdk-dm365/ti-dvsdk-dm365-extract.py | 52 ++++++++++
package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365.mk | 105 ++++++++++++++++++++
4 files changed, 164 insertions(+), 0 deletions(-)
create mode 100644 package/ti/ti-dvsdk-dm365/Config.in
create mode 100644 package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365-extract.py
create mode 100644 package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365.mk
diff --git a/package/ti/Config.in b/package/ti/Config.in
index 9827b44..d64500e 100644
--- a/package/ti/Config.in
+++ b/package/ti/Config.in
@@ -47,5 +47,6 @@ source "package/ti/ti-cgt6x/Config.in"
source "package/ti/ti-codec-engine/Config.in"
source "package/ti/ti-dmai/Config.in"
source "package/ti/ti-dspbios/Config.in"
+source "package/ti/ti-dvsdk-dm365/Config.in"
endif
diff --git a/package/ti/ti-dvsdk-dm365/Config.in b/package/ti/ti-dvsdk-dm365/Config.in
new file mode 100644
index 0000000..05a798b
--- /dev/null
+++ b/package/ti/ti-dvsdk-dm365/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_TI_DVSDK_DM365
+ bool "DVSDK for TI's DM365 processor"
+ depends on BR2_PACKAGE_TI_PLATFORM_dm365 || BR2_PACKAGE_TI_PLATFORM_dm368
+ select BR2_PACKAGE_ALSA_LIB
+ help
+ TI's DVSDK
\ No newline at end of file
diff --git a/package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365-extract.py b/package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365-extract.py
new file mode 100644
index 0000000..8bc1205
--- /dev/null
+++ b/package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365-extract.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+import sys
+from subprocess import Popen, PIPE
+
+
+if len(sys.argv) < 4:
+ print "usage: ",
+ print sys.argv[0],
+ print " <installer> <codesourcery> <destination>"
+ print " "
+ print " installer : the DVSDK installer location "
+ print " (eg: ~/Downloads/dvsdk_..._setuplinux.bin)"
+ print " codesourcery: location of the CodeSourcery installation"
+ print " (eg: ~/CodeSourcery/Sourcery_G++_Lite/bin)"
+ print " destination : where to install the files"
+ print " (eg: ~/dvsdk)"
+ sys.exit(2)
+else:
+ installer=sys.argv[1]
+ codesourcery=sys.argv[2]
+ destination=sys.argv[3]
+ print "Installer: ",
+ print installer
+ print "CodeSourcery: ",
+ print codesourcery
+ print "Destination: ",
+ print destination
+
+pb = Popen(installer, shell=False, stdout=PIPE, stdin=PIPE, stderr=PIPE)
+question = 0
+data = pb.stdout.read(1)
+while data:
+ sys.stdout.write(data)
+ if data == ']':
+ if question == 0:
+ pb.stdin.write("Y\n")
+ question = 1
+ elif question == 1:
+ pb.stdin.write(codesourcery)
+ pb.stdin.write("\n")
+ sys.stdout.write(codesourcery)
+ sys.stdout.write("\n")
+ question = 2
+ elif question == 2:
+ pb.stdin.write(destination)
+ pb.stdin.write("\n")
+ sys.stdout.write(destination)
+ sys.stdout.write("\n")
+ question = 3
+ data = pb.stdout.read(1)
+
+sys.exit(pb.wait())
\ No newline at end of file
diff --git a/package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365.mk b/package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365.mk
new file mode 100644
index 0000000..a2fe9d7
--- /dev/null
+++ b/package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365.mk
@@ -0,0 +1,105 @@
+################################################################################
+#
+# ti-dvsdk-dm365
+#
+################################################################################
+TI_DVSDK_DM365_VERSION:=4.00.00.17
+TI_DVSDK_DM365_FILE_VERSION_MAJOR:=4_00
+TI_DVSDK_DM365_FILE_VERSION:=$(TI_DVSDK_DM365_FILE_VERSION_MAJOR)_00_17
+
+TI_DVSDK_DM365_SOURCE:=ti-dvsdk-dm365-$(TI_DVSDK_DM365_VERSION).tar.gz
+TI_DVSDK_DM365_SOURCE_BIN:=dvsdk_dm365-evm_$(TI_DVSDK_DM365_FILE_VERSION)_setuplinux.bin
+TI_DVSDK_DM365_SOURCE_BIN_FOLDER:=dvsdk_dm365-evm_$(TI_DVSDK_DM365_FILE_VERSION)
+TI_DVSDK_DM365_SITE:=http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_$(TI_DVSDK_DM365_FILE_VERSION_MAJOR)/latest/exports
+TI_DVSDK_DM365_DIR:=$(BUILD_DIR)/ti-dvsdk-dm365-$(TI_DVSDK_DM365_VERSION)
+
+TI_DVSDK_DM365_INSTALL_STAGING = NO
+TI_DVSDK_DM365_DEPENDENCIES = linux26 alsa-lib
+
+# The DVSDK installer from TI will REFUSE to install itself if it does not find
+# the right version of the CodeSourcery compiler. This package will download
+# then extract the CodeSourcery compiler to a temp directory and keep it there
+# just long enough to run the DVSDK installer.
+# It's not the best solution but, for the moment, it's the only one that works.
+TI_DVSDK_DM365_CS_VERSION_MAJOR=2009q1
+TI_DVSDK_DM365_CS_VERSION=$(TI_DVSDK_DM365_CS_VERSION_MAJOR)-203
+TI_DVSDK_DM365_CS_FILE=arm-$(TI_DVSDK_DM365_CS_VERSION)-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
+TI_DVSDK_DM365_CS_SITE=http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi
+TI_DVSDK_DM365_CS_DIR=arm-$(TI_DVSDK_DM365_CS_VERSION_MAJOR)
+
+# Extracting the DVSDK unattended, requires a python script.
+TI_DVSDK_DM365_EXTRACT=$(TOPDIR)/package/ti/ti-dvsdk-dm365/ti-dvsdk-dm365-extract.py
+
+# Some directory settings will be required by other tools.
+TI_DVSDK_DM365_CE_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 CE_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+TI_DVSDK_DM365_CODEC_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 CODEC_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+TI_DVSDK_DM365_DMAI_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 DMAI_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+TI_DVSDK_DM365_DVTB_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 DVTB_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+TI_DVSDK_DM365_FC_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 FC_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+TI_DVSDK_DM365_DM365MM_MODULE_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 DM365MM_MODULE_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+TI_DVSDK_DM365_XDAIS_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 XDAIS_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+TI_DVSDK_DM365_XDC_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 XDC_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+TI_DVSDK_DM365_LINUXUTILS_INSTALL_DIR:=$(TI_DVSDK_DM365_DIR)/`grep -m 1 LINUXUTILS_INSTALL_DIR $(TI_DVSDK_DM365_DIR)/Rules.make | cut -f2 -d'/'`
+
+# Select what will be built in the DVSDK (not using build all)
+TI_DVSDK_DM365_TARGETS=cmem irq edma dm365mm dmai
+
+# Where to install the kernel modules
+$(DL_DIR)/$(TI_DVSDK_DM365_CS_FILE):
+ $(call DOWNLOAD,$(TI_DVSDK_DM365_CS_SITE),$(TI_DVSDK_DM365_CS_FILE))
+
+# NOTE:
+# Archive contains hardlinks and it may fails on some filesystem. Ignoring
+# return values will adding the missing symlink will resolve the issue.
+# Anyway, CodeSourcery is not used in this package.
+$(DL_DIR)/$(TI_DVSDK_DM365_SOURCE): $(DL_DIR)/$(TI_DVSDK_DM365_CS_FILE)
+ $(call DOWNLOAD,$(TI_DVSDK_DM365_SITE),$(TI_DVSDK_DM365_SOURCE_BIN))
+ - (cd $(DL_DIR);tar -xf $(DL_DIR)/$(TI_DVSDK_DM365_CS_FILE))
+ ( if [ ! -e $(DL_DIR)/$(TI_DVSDK_DM365_CS_DIR)/bin/arm-none-linux-gnueabi-gcc ]; then\
+ ln -s $(DL_DIR)/$(TI_DVSDK_DM365_CS_DIR)/bin/arm-none-linux-gnueabi-gcc-4.3.3 $(DL_DIR)/$(TI_DVSDK_DM365_CS_DIR)/bin/arm-none-linux-gnueabi-gcc;\
+ fi\
+ )
+ chmod +x $(DL_DIR)/$(TI_DVSDK_DM365_SOURCE_BIN)
+ python $(TI_DVSDK_DM365_EXTRACT) \
+ $(DL_DIR)/$(TI_DVSDK_DM365_SOURCE_BIN) \
+ $(DL_DIR)/$(TI_DVSDK_DM365_CS_DIR)/bin \
+ $(DL_DIR)/$(TI_DVSDK_DM365_SOURCE_BIN_FOLDER)
+ find $(DL_DIR)/$(TI_DVSDK_DM365_SOURCE_BIN_FOLDER) -type f -not -readable -exec sudo chmod gou+r {} \;
+ find $(DL_DIR)/$(TI_DVSDK_DM365_SOURCE_BIN_FOLDER) -type d -not -executable -exec sudo chmod gou+rx {} \;
+ (cd $(DL_DIR); \
+ tar -czf $(TI_DVSDK_DM365_SOURCE) $(TI_DVSDK_DM365_SOURCE_BIN_FOLDER)\
+ )
+ rm -rf $(DL_DIR)/$(TI_DVSDK_DM365_SOURCE_BIN_FOLDER)
+ rm -rf $(DL_DIR)/$(TI_DVSDK_DM365_CS_DIR)
+
+
+define TI_DVSDK_DM365_CONFIGURE_CMDS
+ $(SED) s:DVSDK_INSTALL_DIR=.*:DVSDK_INSTALL_DIR=$(@D):g $(@D)/Rules.make
+ $(SED) s:LINUXKERNEL_INSTALL_DIR=.*:LINUXKERNEL_INSTALL_DIR=$(BUILD_DIR)/linux-$(LINUX26_VERSION):g $(@D)/Rules.make
+ $(SED) s:CSTOOL_DIR=.*:CSTOOL_DIR=$(dir $(TARGET_CROSS))/..:g $(@D)/Rules.make
+ $(SED) s:CSTOOL_PREFIX=.*:CSTOOL_PREFIX=$(TARGET_CROSS):g $(@D)/Rules.make
+ $(SED) s:EXEC_DIR=.*:EXEC_DIR=$(STAGING_DIR)/usr/bin:g $(@D)/Rules.make
+ $(SED) s:LINUXLIBS_INSTALL_DIR=.*:LINUXLIBS_INSTALL_DIR=$(TARGET_DIR)/usr:g $(@D)/Rules.make
+ for i in $(TI_DVSDK_DM365_TARGETS) ; do \
+ $(MAKE) -C $(@D) $${i}_clean; \
+ done
+ $(SED) s:^GCC_LD_FLAGS.*:\&\ -L$(TARGET_DIR)/lib:g $(TI_DVSDK_DM365_DMAI_INSTALL_DIR)/packages/ti/sdo/dmai/apps/Makefile.app
+endef
+
+define TI_DVSDK_DM365_BUILD_CMDS
+ for i in $(TI_DVSDK_DM365_TARGETS) ; do \
+ $(MAKE) -C $(@D) $${i}; \
+ done
+endef
+
+define TI_DVSDK_DM365_INSTALL_TARGET_CMDS
+ $(INSTALL) -d $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION_PROBED)/kernel/drivers/dsp
+ $(INSTALL) $(TI_DVSDK_DM365_LINUXUTILS_INSTALL_DIR)/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION_PROBED)/kernel/drivers/dsp/cmemk.ko
+ $(INSTALL) $(TI_DVSDK_DM365_LINUXUTILS_INSTALL_DIR)/packages/ti/sdo/linuxutils/irq/src/module/irqk.ko $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION_PROBED)/kernel/drivers/dsp/irqk.ko
+ $(INSTALL) $(TI_DVSDK_DM365_LINUXUTILS_INSTALL_DIR)/packages/ti/sdo/linuxutils/edma/src/module/edmak.ko $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION_PROBED)/kernel/drivers/dsp/edmak.ko
+ $(INSTALL) $(TI_DVSDK_DM365_DM365MM_MODULE_INSTALL_DIR)/module/dm365mmap.ko $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION_PROBED)/kernel/drivers/dsp/dm365mmap.ko
+endef
+
+ti-dvsdk-dm365-source: $(DL_DIR)/$(TI_DVSDK_DM365_SOURCE)
+
+$(eval $(call GENTARGETS,package/ti,ti-dvsdk-dm365))
--
1.7.0.4
More information about the buildroot
mailing list