SGX and DSP integration、 DSP stack 部分 †2010/07/05 ビルド †以下を実行して DSP を統合した android kernel および userland をビルドします。 $ make TARGET_PRODUCT=beagleboard BUILD_WITH_GST=true dvsdk ビルドエラーの修正 †ただし、kernel を 2.6.32 に更新したことで DSP stack のビルド時にエラーが出るようになります。 1. external/ti-dsp/dvsdk_3_00_02_44/dsplink_1_61_03/packages/dsplink/gpp/src/arch/OMAP3530/shmem/Linux/omap3530_phy_shmem.c ~/rowboat-eclair-dsp/external/ti-dsp/dvsdk_3_00_02_44/dsplink_1_61_03/packages/dsplink/gpp/src/../../gpp/src/arch/OMAP3530/shmem/Linux/omap3530_phy_shmem.c:131: error: implicit declaration of function 'IO_ADDRESS' $ diff -u omap3530_phy_shmem.c.orig omap3530_phy_shmem.c --- omap3530_phy_shmem.c.orig 2010-06-29 20:53:20.341371121 +0900 +++ omap3530_phy_shmem.c 2010-07-05 14:19:04.614552881 +0900 @@ -128,12 +128,12 @@ halObject = (OMAP3530_HalObj *) halObj ; - halObject->generalCtrlBase = (Uint32)IO_ADDRESS(GENERAL_CONTROL_BASE) ; - halObject->iva2CmBase = (Uint32)IO_ADDRESS(IVA2_CM_BASE) ; - halObject->coreCmBase = (Uint32)IO_ADDRESS(CORE_CM_BASE) ; - halObject->perCmBase = (Uint32)IO_ADDRESS(PER_CM_BASE) ; - halObject->iva2PrmBase = (Uint32)IO_ADDRESS(IVA2_PRM_BASE) ; - halObject->mailboxBase = (Uint32)IO_ADDRESS(MAILBOX_BASE) ; + halObject->generalCtrlBase = (Uint32)ioremap(GENERAL_CONTROL_BASE, 4096) ; + halObject->iva2CmBase = (Uint32)ioremap(IVA2_CM_BASE, 8192) ; + halObject->coreCmBase = (Uint32)ioremap(CORE_CM_BASE, 8192) ; + halObject->perCmBase = (Uint32)ioremap(PER_CM_BASE, 8192) ; + halObject->iva2PrmBase = (Uint32)ioremap(IVA2_PRM_BASE, 8192) ; + halObject->mailboxBase = (Uint32)ioremap(MAILBOX_BASE, 4096) ; 2. external/ti-dsp/dvsdk_3_00_02_44/codec_engine_2_24_01/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c ~/rowboat-eclair-dsp/external/ti-dsp/dvsdk_3_00_02_44/codec_engine_2_24_01/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c:1086: error: 'L_PTE_CACHEABLE' undeclared (first use in this function) $ diff -u cmemk.c.orig cmemk.c --- cmemk.c.orig 2010-06-29 21:05:39.718696468 +0900 +++ cmemk.c 2010-07-05 14:28:27.767315616 +0900 @@ -1084,7 +1084,7 @@ static int set_cached(struct vm_area_struct *vma) { vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | - (L_PTE_CACHEABLE | L_PTE_BUFFERABLE) + (L_PTE_MT_WRITETHROUGH | L_PTE_MT_BUFFERABLE) ); vma->vm_flags |= VM_RESERVED | VM_IO; 3. external/ti-dsp/dvsdk_3_00_02_44/codec_engine_2_24_01/cetools/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.c ~/rowboat-eclair-dsp/external/ti-dsp/dvsdk_3_00_02_44/codec_engine_2_24_01/cetools/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.c:45:22: error: mach/dma.h: No such file or directory $ diff -u sdmak.c.orig sdmak.c --- sdmak.c.orig 2010-06-29 21:13:45.434697722 +0900 +++ sdmak.c 2010-06-29 21:22:33.300049114 +0900 @@ -42,8 +42,8 @@ #include <asm/arch/tc.h> #else #include <mach/hardware.h> -#include <mach/dma.h> -#include <mach/tc.h> +#include <plat/dma.h> +#include <linux/tc.h> #endif /* 4. external/ti-dsp/dvsdk_3_00_02_44/dmai_2_00_01_04/packages/ti/sdo/dmai/linux/Display_fbdev.c linux/Display_fbdev.c:45:29: error: mach/omapfb.h: No such file or directory diff -u Display_fbdev.c.orig Display_fbdev.c --- Display_fbdev.c.orig 2010-06-29 21:48:52.347886578 +0900 +++ Display_fbdev.c 2010-06-29 21:46:37.214483328 +0900 @@ -42,7 +42,7 @@ #include <linux/fb.h> #ifdef Dmai_Device_omap3530 - #include <mach/omapfb.h> + #include <linux/omapfb.h> #else // #include <video/davincifb.h> #endif 5. external/ti-dsp/dvsdk_3_00_02_44/dmai_2_00_01_04/packages/ti/sdo/dmai/Makefile ~/rowboat-eclair-dsp/kernel/include/asm-generic/signal.h:94: error:'__BITS_PER_LONG' undeclared here (not in a function) $ diff -u Makefile.orig Makefile --- Makefile.orig 2010-06-29 22:01:32.699753968 +0900 +++ Makefile 2010-06-29 22:12:20.791781379 +0900 @@ -103,7 +103,7 @@ CPP_FLAGS += -I$(XDC_INSTALL_DIR)/packages -I$(DMAI_INSTALL_DIR)/packages -I$(CE_INSTALL_DIR)/packages -I$(FC_INSTALL_DIR)/packages -I$(XDAIS_INSTALL_DIR)/packages -DDmai_Device_$(PLATFORM_DEVICE) -GCC_CPP_FLAGS += $(CPP_FLAGS) -I$(LINUXKERNEL_INSTALL_DIR)/include -I$(LINUXKERNEL_INSTALL_DIR)/arch/arm/$(PLATFORM_ARCH)/include $(HAVE_AUTOCONFIG) -I$(CMEM_INSTALL_DIR)/packages -I$(LINK_INSTALL_DIR)/packages -DDmai_BuildOs_linux -Dxdc_target_types__=gnu/targets/std.h -I$(LINUXLIBS_INSTALL_DIR)/include -Dxdc_target_name__=arm/GCArmv7A +GCC_CPP_FLAGS += $(CPP_FLAGS) -I$(LINUXKERNEL_INSTALL_DIR)/arch/arm/$(PLATFORM_ARCH)/include $(HAVE_AUTOCONFIG) -I$(CMEM_INSTALL_DIR)/packages -I$(LINK_INSTALL_DIR)/packages -DDmai_BuildOs_linux -Dxdc_target_types__=gnu/targets/std.h -I$(LINUXLIBS_INSTALL_DIR)/include -Dxdc_target_name__=arm/GCArmv7A C64P_CPP_FLAGS += $(CPP_FLAGS) -I$(BIOS_INSTALL_DIR)/packages/ti/bios/include -I$(BIOS_INSTALL_DIR)/packages -DDmai_BuildOs_bios -Dxdc_target__='<ti/targets/std.h>' -I$(CODEGEN_INSTALL_DIR)/include -mv6400+ -pdse225 -eo$(PLATFORM_DEVICE).o$(EXT) #GCC_C_FLAGS += $(C_FLAGS) -Wall -Werror $(ANDROID_CFLAGS) 6. external/ti-dsp/dvsdk_3_00_02_44/dmai_2_00_01_04/packages/ti/sdo/dmai/Makefile linux/omap3530/Framecopy_accel.c:51:32: error: linux/omap_resizer.h: No such file or directory 上記の5で行った include path の変更を元に戻す $ diff -u Makefile.modified Makefile --- Makefile.modified 2010-06-29 22:12:20.791781379 +0900 +++ Makefile 2010-06-29 22:01:32.699753968 +0900 @@ -103,7 +103,7 @@ CPP_FLAGS += -I$(XDC_INSTALL_DIR)/packages -I$(DMAI_INSTALL_DIR)/packages -I$(CE_INSTALL_DIR)/packages -I$(FC_INSTALL_DIR)/packages -I$(XDAIS_INSTALL_DIR)/packages -DDmai_Device_$(PLATFORM_DEVICE) -GCC_CPP_FLAGS += $(CPP_FLAGS) -I$(LINUXKERNEL_INSTALL_DIR)/arch/arm/$(PLATFORM_ARCH)/include $(HAVE_AUTOCONFIG) -I$(CMEM_INSTALL_DIR)/packages -I$(LINK_INSTALL_DIR)/packages -DDmai_BuildOs_linux -Dxdc_target_types__=gnu/targets/std.h -I$(LINUXLIBS_INSTALL_DIR)/include -Dxdc_target_name__=arm/GCArmv7A +GCC_CPP_FLAGS += $(CPP_FLAGS) -I$(LINUXKERNEL_INSTALL_DIR)/include -I$(LINUXKERNEL_INSTALL_DIR)/arch/arm/$(PLATFORM_ARCH)/include $(HAVE_AUTOCONFIG) -I$(CMEM_INSTALL_DIR)/packages -I$(LINK_INSTALL_DIR)/packages -DDmai_BuildOs_linux -Dxdc_target_types__=gnu/targets/std.h -I$(LINUXLIBS_INSTALL_DIR)/include -Dxdc_target_name__=arm/GCArmv7A C64P_CPP_FLAGS += $(CPP_FLAGS) -I$(BIOS_INSTALL_DIR)/packages/ti/bios/include -I$(BIOS_INSTALL_DIR)/packages -DDmai_BuildOs_bios -Dxdc_target__='<ti/targets/std.h>' -I$(CODEGEN_INSTALL_DIR)/include -mv6400+ -pdse225 -eo$(PLATFORM_DEVICE).o$(EXT) #GCC_C_FLAGS += $(C_FLAGS) -Wall -Werror $(ANDROID_CFLAGS) 実行時エラーを回避するための修正 †上記の修正でビルドは通るようになりますが、起動後にエラーが出る箇所があるのでその箇所も修正します。 1. cmemk まず kernel の config を一箇所変更します。 $ cd source buid/envsetup.sh $ cd kernel $ make menuconfig Kernel hacking → Enable unused/obsolete exported symbols を有効にして保存 external/ti-dsp/dvsdk_3_00_02_44/codec_engine_2_24_01/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c $ diff -u cmemk.c.orig cmemk.c --- cmemk.c.orig 2010-06-29 21:05:39.718696468 +0900 +++ cmemk.c 2010-07-05 14:27:31.782329823 +0900 @@ -1026,10 +1026,10 @@ void show_pte(struct mm_struct *mm, unsigned long addr) { pgd_t *pgd; - +#if 0 if (!mm) mm = &init_mm; - +#endif printk(KERN_ALERT "pgd = %p\n", mm->pgd); pgd = pgd_offset(mm, addr); printk(KERN_ALERT "[%08lx] *pgd=%08lx", addr, pgd_val(*pgd)); @@ -1084,7 +1084,7 @@ static int set_cached(struct vm_area_struct *vma) { vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | - (L_PTE_CACHEABLE | L_PTE_BUFFERABLE) + (L_PTE_MT_WRITETHROUGH | L_PTE_MT_BUFFERABLE) ); external/ti-dsp/dvsdk_3_00_02_44/linuxutils_2_24_02/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c $ diff -u cmemk.c.orig cmemk.c --- cmemk.c.orig 2010-07-01 19:58:23.436891292 +0900 +++ cmemk.c 2010-07-01 19:59:01.642238507 +0900 @@ -1026,10 +1026,10 @@ void show_pte(struct mm_struct *mm, unsigned long addr) { pgd_t *pgd; - +#if 0 if (!mm) mm = &init_mm; - +#endif printk(KERN_ALERT "pgd = %p\n", mm->pgd); pgd = pgd_offset(mm, addr); printk(KERN_ALERT "[%08lx] *pgd=%08lx", addr, pgd_val(*pgd)); 2. DMAI external/ti-dsp/dvsdk_3_00_02_44/dmai_2_00_01_04/packages/ti/sdo/dmai/linux/Display.c $ diff -u Display.c.orig Display.c --- Display.c.orig 2010-07-05 16:23:35.693115944 +0900 +++ Display.c 2010-07-01 20:13:28.761149734 +0900 @@ -523,6 +523,7 @@ Char* displayDevice, VideoStd_Type *videoType, Int *rotation) { +#if 0 /* #ifdef Dmai_Device_omap3530 */ FsOptionsSequence *sequence = NULL; Display_Output currentDisplayOutput; 上記の変更を加えたあとでビルドを実行します。 $ make TARGET_PRODUCT=beagleboard BUILD_WITH_GST=true dvsdk DSP stack のビルドを最初から再実行したい場合は、 $ make TARGET_PRODUCT=beagleboard BUILD_WITH_GST=true dvsdk_clean $ make TARGET_PRODUCT=beagleboard BUILD_WITH_GST=true dvsdk します。 rootfsの作成 †ビルドがエラーなく終了したら、android の rootfs を起動可能な配置に整えます。 $ cd out/target/product/beagleboad $ mkdir android_rootfs $ cp -r root/* android_rootfs $ cp -r system android_rootfs network設定 †rowboatで起動した際にnetworkが使えるよう、android rootfs に設定を加えます。
init.rc の他に、device ごとの設定ファイルを記述する initi.***.rc が使用できますので、 on boot setprop net.dns1 8.8.8.8 service lan-setup /system/etc/init.omap3.sh oneshot 上記設定ではDNSサーバに Google Public DNS を設定していますが、 つぎに以下の内容で /android_rootfs/system/etc/init.omap3.sh を作成します。 #!/system/bin/sh netcfg eth0 up netcfg eth0 dhcp これで起動時に USB ether が DHCP でアドレスを取得して使用可能になります。 #!/system/bin/sh insmod /system/lib/modules/rt3070sta.ro netcfg ra0 up netcfg ra0 dhcp
Kernel 2.6.32 with DSP & SGX Drivers
Getting build errors after repo sync Rowboat Android Compile for BeagleBoard |