TI DaVinci Linux + Codec Engine Entry: OSD2 Date: Tue May 19 11:58:10 CEST 2009 Ha I gots a nuw toi! http://store.neurostechnology.com/neuros-osd2-platform-p-55.html After playing with OpenWRT for a while, it's time for some "vendor supported" hardware. I'm compiling build tools following these instructions: http://wiki.neurostechnology.com/index.php/OSD2.0_Development#One-time_build_environment_setup There's nothing on the screen when it boots up empty. There's activity on the serial port but my settings seem to be wrong. Serial port at 115200 baud: neuros login: root login[887]: root login on 'ttyS0' BusyBox v1.11.1 (2008-08-01 15:59:37 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. # cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 148.27 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 16384 I assoc : 4 I line length : 32 I sets : 128 D size : 8192 D assoc : 4 D line length : 32 D sets : 64 Hardware : Neuros OSD 644x Revision A Revision : 64460000 Serial : 0000000000000000 # cat /proc/version Linux version 2.6.23-davinci1 (pqiu@localhost.localdomain) (gcc version 3.4.3 (MontaVista 3.4.3-25.0.30.0501131 2005-07-23)) #1 Fri Aug 1 15:57:46 CST 2008 # df Filesystem 1k-blocks Used Available Use% Mounted on rootfs 255232 16984 238248 7% / /dev/root 255232 16984 238248 7% / # free total used free shared buffers Mem: 199472 25948 173524 0 0 Swap: 0 0 0 Total: 199472 25948 173524 Entry: DSP Date: Tue May 19 13:28:52 CEST 2009 http://wiki.neurostechnology.com/index.php/OSD2.0_Development#VLC.2C_Codecs_and_Multimedia VLC, Codecs and Multimedia Currently we are still in negotiation with Texas Instruments to obtain a deal for releasing a few components as GPL. They are released as binary for now: * cmemk (out-of-kernel memory manager) and dsplink (DSP interface) kernel modules. We currently can redistribute this only as module * codec engine (CE). A library to allow applications, in this case VLC to interface with the DSP). You find both in the binary-components repository. In addition there are the DSP codecs themselves. These are binary only by design and they don't consitute a violation of GPL as they run on the DSP. These codecs live in the binary-components repo too, and are installed in /opt/ticel on the device. Hmm.. Anyways. Let's see if I can get it to play movies today.. build problem apt-get install git-core fakeroot mtd-utils linux-headers linux-headers-2.6.24-19-generic build-essential mono-gmcs zlib1g-dev libdbus-1-dev subversion gettext cvs Entry: Done compiling Date: Tue May 19 19:36:38 CEST 2009 Next step is to netboot it. http://wiki.neurostechnology.com/index.php/OSD2.0_Development#Net-booting_your_device Net-booting your device This is a more complex procedure that will allow you to run your device from your PC, allowing to edit in real time files in the device file system without need to reboot, or try new kernels without the need to flash them. 1. You first need to setup a TFTP server on your host machine. Instructions on how to do this are the same as for OSD1, so i'll just link you to the TFTP setup chapter. The only difference is that you want to point your TFTP root to ##BASEDIR 2. Then you need to setup NFS on your host machine. Again, the NFS setup chapter in there is what you need. The only difference for the NFS setup is that when you edit /etc/exports you should only add this line: ##BASEDIR/rootfs/nfs-rootfs network-acl(rw,sync,no_root_squash,subtree_check) 3. Then you need to install the rootfs in a way that can be booted. To do this, you need to be able to gain root privilege, since we will need to install some files as root (you may be asked for password when you run the command below): make -C rootfs install-nfs 4. The above command will create a directory named rootfs/nfs-rootfs which is the directory that the OSD2 kernel will try to mount with NFS. Each time you do a modification that affect the rootfs, you run again the above command to transfer it to the live rootfs (and of course you can also manually edit files in nfs-rootfs, but be aware that they may be over-written by further runs of the command). 5. Force NFS server to reload the configuration. In debian and ubuntu it's the following command. But may be different for your distribution: /etc/init.d/nfs-kernel-server reload 6. Now we need to configure OSD2 to pick kernel and rootfs and use them to boot. To do this you need to access uboot console via serial port. If you have a bare board, the connector is labeled J14 (left-most when facing the side, see also pictures on OSD2 HW page). It should be labeled on the outside of the case if you have the mini-ITX case version. Once it's connected, follow the Serial setup chapter on OSD1 setup guide to know about adapter cable and terminal parameters. 7. When serial setup is done, reboot the OSD2 and at the uboot timeout press any key in serial console to stop it and access uboot prompt. Then type the following commands: setenv bootcmd run devkernel setenv ipaddr ##YOUR_OSD2_IP setenv serverip ##YOUR_HOST_IP setenv tftp_root /images setenv nfs_root ##BASEDIR/rootfs/nfs-rootfs run update-locs run update-ipstatic saveenv I get this: TFTP from server 192.168.16.254; our IP address is 192.168.16.39 Filename '/tftpboot/uImage'. Load address: 0x82000000 Loading: TFTP error: 'File not found' (1) Starting again So where is uImage ? Ok, i understand. I put the image in /tftpboot/neuros/uImage on the server, then use this: setenv tftp_root /neuros Ok. This does it. I'm in! Let's see if it works with a plain link too.. No. It needs to reside in the directory, no symlinks allowed outside apparently. My config with the boot image on the server in /tftpboot/neuros/uImage and the root directory copyied from ~/src/neuros/rootfs/nfs-rootfs and chown -R root:root. setenv bootcmd run devkernel setenv ipaddr 192.168.16.39 setenv serverip 192.168.16.254 setenv tftp_root /neuros setenv nfs_root /opt/diskless/nfsroot run update-locs run update-ipstatic saveenv Now it seems that i no longer have colours on the composite output.. probably NTFS signal.. Entry: More neuros stuff online Date: Tue May 19 20:01:57 CEST 2009 http://www.youtube.com/watch?v=1UBwHYQcFf8 http://www.linuxdevices.com/news/NS9949081537.html http://linuxdevices.com/news/NS4461378279.html http://open.neurostechnology.com/content/neuros-osd-20-hd-developer-kits-sale http://www.youtube.com/watch?gl=GB&hl=en-GB&v=DtLFywjnIas dev stuff: http://wiki.neurostechnology.com/index.php/Developer_FAQ http://open.neurostechnology.com/irclogs/ Entry: OSD2 Debian arm Date: Wed May 20 12:11:29 CEST 2009 debootstrap --arch armel --foreign lenny neuros-debian/ http://debian.i/debian http://iomem.com/archives/2-Running-Linux-for-ARM-processors-under-QEMU.html Hmm.. i can't seem to get it.. chrooting into that image from the neuros box gives this: Illegal instruction Let's try to run this: http://packages.debian.org/stable/shells/busybox-static # /bin/busybox-static /bin/busybox-static Illegal instruction Something's wrong.. Either endianness is not LE or there's an ABI problem. http://cluster.aleph1.co.uk/~martin/qemu.html mentions something about EABI binaries not being supported by qemu. http://wiki.debian.org/ArmEabiPort talks about EABI and Debian. http://wiki.debian.org/ArmEabiHowto has info on linux .config You need to enable the following options to enable both EABI and OLDABI CONFIG_ARM_THUMB=y CONFIG_AEABI=y CONFIG_OABI_COMPAT=y The neuros box has: # CONFIG_AEABI is not set Apparently this needs GCC 4.0.0 and the neuros build uses 3.4.3 Linux version 2.6.23-davinci1 (tom@zzz) (gcc version 3.4.3 (MontaVista 3.4.3-25.0.30.0501131 2005-07-23)) #5 Tue May 19 17:48:54 CEST 2009 Maybe it's easier to get a hold of a debian version with the old ABI then to start changing the project's GCC version. The old debian "arm" (instead of "armel") binaries do not work either. Maybe it is this: http://osdir.com/ml/debian.ports.arm/2006-02/msg00035.html Trying with: tom@zzz:~/src/neuros/linux-davinci-2.6$ diff .config .config.original 4c4 < # Wed May 20 14:31:54 2009 --- > # Tue May 19 17:48:35 2009 246,247c246 < CONFIG_FPE_NWFPE=y < # CONFIG_FPE_NWFPE_XP is not set --- > # CONFIG_FPE_NWFPE is not set Ha! Static binary now works. Trying chroot: # chroot /neuros-debian-arm chroot /neuros-debian-arm Yes, that was it. Let's try to boot from it. Warning: unable to open an initial console. I've run into that before... It's some device node missing. indeed: this fixed it: mknod console c 5 1 http://emqbit.com/deboostrap-debian I probably just need to run the debootstrap stage 2 script.. Let's boot with old image and try again: # chroot /neuros-debian-arm # /debootstrap/debootstrap --second-stage ... I: Base system installed successfully. Let's try it. I can login after enabling the T0 line in /etc/inittab and creating the /dev/ttyS0 node Then i get this: http://www.debianhelp.org/node/15412 Entry: hda=noprobe Date: Wed May 20 14:42:27 CEST 2009 Kernel command line: console=ttyS0,115200n8 root=/dev/nfs rw \ nfsroot=192.168.16.254:/opt/diskless/neuros,udp,v3,rsize=4096,wsize=4096 \ ip=192.168.16.39:192.168.16.254:192.168.1.1:255.255.255.0:neuros-osd::off \ mem=200M hdb=noprobe trying this: setenv ide_params hda=noprobe hdb=noprobe saveenv That works. Entry: TODO Date: Wed May 20 16:16:55 CEST 2009 To fix: kernel autoconfig + ntpdate + NTSC Entry: PAL Date: Sat May 23 10:55:42 CEST 2009 # pwd /usr/local/bin # ./fbhelper.sh mode pal dm_vid0_fb mode = 576i same mode, do nothing!! fb device (/dev/fb3) plane 3 size 640x480 (640x576) line_length 320 bpp = 4 pos x = 0 y = 0 Loading images ... /usr/local/share/test/320x240_duck.rgb565 /usr/local/share/test/720x480_bars.uyvy Running output test setting to w = 640 h = 480 vw = 640 vh = 480 fb device (/dev/fb0) plane 0 size 640x480 (640x2880) line_length 1280 bpp = 16 pos x = 0 y = 0 Loading images ... /usr/local/share/test/320x240_duck.rgb565 /usr/local/share/test/720x480_bars.uyvy Running output test setting to w = 640 h = 480 vw = 640 vh = 480 fb device (/dev/fb2) plane 2 size 640x480 (640x540) line_length 1280 bpp = 16 pos x = 0 y = 0 Loading images ... /usr/local/share/test/320x240_duck.rgb565 /usr/local/share/test/720x480_bars.uyvy Running output test setting to w = 640 h = 480 vw = 640 vh = 480 Now, what are these 4 framebuffers? Entry: community status Date: Sat May 23 11:05:12 CEST 2009 Neuros google group: http://groups.google.com/group/neuros/browse_thread/thread/ac8ddae047ae5e93# What I gather from this: * Neuros ppl: Joe, Jason, Ugo(nero) * TI has open-sourced DSPLink and Codec Engine (CE) * OSD2 is intended as a recording device In jan/feb there were some problems with integration with mainline kernel. Is this fixed now? I am running Linux version 2.6.23-davinci1 so I guess this is not the neuros kernel? No. That's the neuros kernel. The last commit is: commit c7eef815abb4131b7c39fddf417aece6f7cfa4fa Author: Michael Gao Date: Mon Mar 9 21:37:01 2009 -0500 http://groups.google.com/group/neuros/browse_thread/thread/7920bee9cc2c9ae2 [1] http://focus.ti.com/docs/toolsw/folders/print/sprc831.html [2] https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/index.html [3] https://www-a.ti.com/downloads/sds_support/targetcontent/link/index.html (1.60 for Linux, not the porting kit) [4] https://www-a.ti.com/downloads/sds_support/targetcontent/CE/index.html (2.21 now BSD licensed) [5] http://wiki.eclipse.org/DSDP/RTSC [6] https://community.ti.com/ TI davinci mailing list: http://www.mail-archive.com/davinci-linux-open-source@linux.davincidsp.com/ Merging neuros changes by Jorge Luis Zapata: http://www.mail-archive.com/davinci-linux-open-source@linux.davincidsp.com/msg11376.html So, where's the action? I tried "make vlc" but this didn't work.. What's the quickest way to get to working a/v playback? http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-April/044994.html One problem that they pointed out (and I think just might be the show-stopper) is that there are yet no free compilers for the DM6446 DSP used by DaVinci. There was a port of GCC for the earlier DSPs, but I don't know how that's going with the new ones. So if I understand correctly, it is now possible to get at the tools, but it requires a TI registration. OK. registered and i get this: Free downloads of TI Code Generation Tools for all instruction set architectures produced by TI are available here. ... Ok, done for today. I don't know what to do with it.. Entry: trying to get vlc going Date: Fri Jul 3 19:34:44 CEST 2009 Where were we? VLC refused to compile correctly. I did an update: tom@zni:/opt/src/neuros/vlc$ git pull remote: Counting objects: 7978, done. remote: Compressing objects: 100% (4674/4674), done. remote: Total 6608 (delta 5337), reused 2390 (delta 1923) Receiving objects: 100% (6608/6608), 8.05 MiB | 101 KiB/s, done. Resolving deltas: 100% (5337/5337), completed with 693 local objects. From git://git.videolan.org/vlc bb95be1..d4ea2cb 0.9-bugfix -> origin/0.9-bugfix 30ceb37..26c1bad 1.0-bugfix -> origin/1.0-bugfix 0680c6e..c093b63 master -> origin/master From git://git.videolan.org/vlc * [new tag] 1.0.0-rc2 -> 1.0.0-rc2 * [new tag] 1.0.0-rc3 -> 1.0.0-rc3 * [new tag] 1.0.0-rc4 -> 1.0.0-rc4 Current branch 0.8.6-neuros is up to date. OSD2 wiki VLC compilation instructions are here[1]. I don't get it.. [1] http://wiki.neurostechnology.com/index.php/OSD2.0_Development Entry: neuros / vlc build system Date: Sat Jul 4 10:07:59 CEST 2009 Makefile:: # This is a temporary solution until we get a better way to build VLC # and dependencies. It's not part of the "all" build target for now. vlc: binary-components build-tools/scripts/vlc-build-helper.sh build-tools/scripts/vlc-build-helper.sh:: cd vlc/extras/contrib/ ./bootstrap arm-linux davinci make vlc/extras/contrib/Makefile:: Here I needed to cd src/faad2 autoreconf -vif Currently I'm quite confused as what is patched and what is original. The idea seems to be quite simple: vlc contains the "contrib" system to download and compile all its dependencies. This is where things go wrong in the neuros build, probably due to version mismatches.. Entry: mainstream davinci kernel works Date: Sat Jul 4 11:46:24 CEST 2009 [1] http://open.neurostechnology.com/irclogs/2009/neuros-2009-03-27.html [2] http://www.google.be/search?q=site%3Aopen.neurostechnology.com%2Firclogs+OSD2 Entry: examining OSD2 build system Date: Sat Jul 4 11:59:28 CEST 2009 This is a summary of [1]. apt-get install git-core fakeroot mtd-utils mtd-tools \ build-essential mono-gmcs \ zlib1g-dev libdbus-1-dev subversion gettext cvs i also needed apt-get install mono-dev libtool export PATH=/usr/sbin:$PATH # for mkfs.jffs2 # get the build system root repo git clone git://github.com/neuros/build-tools.git # clone all source repositories. only once. idempotent. ./build-tools/scripts/git-helper.sh clone # creates neuros-env ./build-tools/run-me-first.sh # update. pull all repositories. ./build-tools/scripts/git-helper.sh pull source neuros-env make all install make vlc # I've modified the git-helper.sh script to do this instead of the git # command: _git () { echo "(`pwd`) git $@" git "$@" } # looks like the ntfs-3g/Makefile is fixed in the external-components repo. (/opt/src/neuros/external-components) git pull --rebase ntfs-3g/Makefile: needs update refusing to pull with rebase: your working tree is not up-to-date [1] http://wiki.neurostechnology.com/index.php/OSD2.0_Development Entry: neuros VLC Date: Sat Jul 4 12:06:14 CEST 2009 pulling ./libraries/vlc ... (/opt/src/neuros/vlc) git pull --rebase remote: Counting objects: 73, done. remote: Compressing objects: 100% (50/50), done. remote: Total 50 (delta 42), reused 0 (delta 0) Unpacking objects: 100% (50/50), done. From git://git.videolan.org/vlc 26c1bad..f86d0e6 1.0-bugfix -> origin/1.0-bugfix c093b63..c0233ec master -> origin/master Current branch 0.8.6-neuros is up to date. It looks like the neuros branch is hosted at git.videolan.org repo. In the git-helper.sh these are defined: VLC_REPO=git://git.videolan.org/vlc.git VLC_NEUROS_BRANCH=0.8.6-neuros I asked on #neuros 12:29 < ILEoo> doelie: you should get vlc build by just running build-tools/scripts/vlc-build-helper.sh 12:29 < doelie> currently it fails at building faad2 12:30 < ILEoo> hmm.. actually it shouldn't need faad2 in princible :/ 12:39 < doelie> i commented out .faad in the distro.mak and now the build continues with downloading ffmpeg So it looks the bootstrap script does soemthing wrong? I commented out .faad and .ffmpeg .ffmpeg is needed later, so let's try to fix that first. doing an "svn update" in the dir. The problem is this: swscale.h:: struct SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int dstW, int dstH, enum PixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param); imgresample.c:: struct SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH, int dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, double *param) ^^^^^^^^^^^^^ now, where does this come from? if the svn version used in vlc/extra/contrib is specified then one would expect it at least wouldn't survive an error like this due to many eyes... vlc/extras/contrib/src/Makefile:: ffmpeg: $(SVN) co $(FFMPEG_SVN) ffmpeg -r 7407 (cd $@; patch -p 0 < ../Patches/ffmpeg-swscale-headers.patch) (cd $@; patch -p 0 < ../Patches/ffmpeg-g726.diff) The patches don't touch this file, so let's fix it in the tree. Next thing is vlc configure wants faad. Can this be just disabled in the config? vlc/configure-neuros.sh:: changed --enable-faad to --disable-faad next problem: /bin/sh ../../libtool --tag=CC --mode=link arm-linux-gcc -Wsign-compare -Wall -Os -march=armv5te -I/opt/src/neuros/linux-davinci-2.6/include -I/opt/src/neuros/toolchains/default/target/usr/include -msoft-float -mlittle-endian -I/opt/src/neuros/vlc/extras/contrib/include -pipe -Wl,-z,defs -Wl,-z,defs -L/opt/src/neuros/vlc/extras/contrib/lib -o libaccess_file_plugin.so libaccess_file_plugin.a -g -shared -lpthread -fpic -fPIC -u vlc_entry__0_8_7neuros libtool: link: arm-linux-gcc -Wsign-compare -Wall -Os -march=armv5te -I/opt/src/neuros/linux-davinci-2.6/include -I/opt/src/neuros/toolchains/default/target/usr/include -msoft-float -mlittle-endian -I/opt/src/neuros/vlc/extras/contrib/include -pipe -Wl,-z -Wl,defs -Wl,-z -Wl,defs -o libaccess_file_plugin.so -g -fpic -fPIC -u vlc_entry__0_8_7neuros -L/opt/src/neuros/vlc/extras/contrib/lib libaccess_file_plugin.a -lpthread /opt/src/neuros/toolchains/mvista-3.4.3/bin/../lib/gcc/armv5tl-montavista-linuxeabi/3.4.3/../../../../armv5tl-montavista-linuxeabi/bin/ld: libaccess_file_plugin.a(libaccess_file_plugin_a-file.o): warning: duplicate section `.note.gnu.arm.ident' has different contents /opt/src/neuros/toolchains/mvista-3.4.3/bin/../target/usr/lib/crt1.o(.text+0x30): In function `_start': ../sysdeps/arm/elf/start.S:99: undefined reference to `main' collect2: ld returned 1 exit status make[5]: *** [libaccess_file_plugin.so] Error 1 make[5]: Leaving directory `/opt/src/neuros/vlc/vlc-build-davinci/modules/access' [1] http://www.google.com/search?q=warning%3A+duplicate+section+.note.gnu.arm.ident+has+different+contents [2] http://groups.google.com/group/neuros/browse_thread/thread/3c0941a2fb9702ac [3] http://groups.google.com/group/neuros/msg/8ead9ec5e94037c9 Entry: montavista toolchain Date: Sat Jul 4 19:05:59 CEST 2009 maybe it's because the montavista toolchain doesn't work with newer libs, or amd64? really strange: the mvista binaries don't work running in a 32bit lenny schroot. Entry: rebuilding on klimop Date: Sat Jul 4 22:38:48 CEST 2009 I tried a fresh rebuild on a debian unstable system. After adding some minor patch to ntfs-3g the root system builds fine. After adding patches to faad2 and lavcodec the vlc build exits on a linker error[1]. The host tools used are: $ autoconf --version autoconf (GNU Autoconf) 2.61 Copyright (C) 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License . There is NO WARRANTY, to the extent permitted by law. Written by David J. MacKenzie and Akim Demaille. $ automake --version automake (GNU automake) 1.10.1 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv2+: GNU GPL version 2 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Tom Tromey and Alexandre Duret-Lutz . $ libtool --version ltmain.sh (GNU libtool) 2.2.6 Written by Gordon Matzigkeit , 1996 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Patches: Had to patch external-components/ntfs-3g/Makefile: - TVER=2009.1.1 + TVER=2009.4.4 vlc/extras/contrib/src: faad2 before running ./bootstrap after unpacking from the downloaded tarball, in configure.in do: - dnl AC_PROG_CXX + AC_PROG_CXX then run ./bootstrap otherwise automake gives: (cd faad2; ./bootstrap) configure.in:14: installing `./config.guess' configure.in:14: installing `./config.sub' configure.in:12: installing `./install-sh' configure.in:12: installing `./missing' common/mp4ff/Makefile.am: installing `./depcomp' /usr/share/automake-1.10/am/depend2.am: am__fastdepCXX does not appear in AM_CONDITIONAL /usr/share/automake-1.10/am/depend2.am: The usual way to define `am__fastdepCXX' is to add `AC_PROG_CXX' /usr/share/automake-1.10/am/depend2.am: to `configure.in' and run `aclocal' and `autoconf' again. plugins/mpeg4ip/Makefile.am: C++ source seen but `CXX' is undefined plugins/mpeg4ip/Makefile.am: The usual way to define `CXX' is to add `AC_PROG_CXX' for ffmpeg it's the same as before: Index: libavcodec/imgresample.c =================================================================== --- libavcodec/imgresample.c (revision 7407) +++ libavcodec/imgresample.c (working copy) @@ -641,7 +641,7 @@ struct SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH, int dstFormat, int flags, SwsFilter *srcFilter, - SwsFilter *dstFilter, double *param) + SwsFilter *dstFilter, const double *param) { struct SwsContext *ctx; @@ -695,7 +695,7 @@ struct SwsContext *sws_getCachedContext(struct SwsContext *ctx, int srcW, int srcH, int srcFormat, int dstW, int dstH, int dstFormat, int flags, - SwsFilter *srcFilter, SwsFilter *dstFilter, double *param) + SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param) { if (ctx != NULL) { if ((ctx->resampling_ctx->iwidth != srcW) || [1] http://zwizwa.be/archive/vlc-build-log.txt Entry: trying again Date: Mon Jul 6 09:25:58 CEST 2009 before i can do distclean, i first have to make sure there is a makefile. configure only wants to run after apt-get build-dep vlc ./configure --disable-dbus --disable-ffmpeg --disable-libmpeg2 Entry: broken libtool 2.2.6? (OSD2 VLC works with libtool 1.5.26) Date: Wed Jul 8 09:43:05 CEST 2009 i doubt it.. something else is going on. problem is that i don't really understand the error message so let's figure that out first. make[5]: Entering directory `/opt/debian-i386/opt/src/neuros/vlc/vlc-build-davinci/modules/access' /bin/sh ../../libtool --tag=CC --mode=link arm-linux-gcc -Wsign-compare -Wall -Os -march=armv5te -I/opt/src/neuros/linux-davinci-2.6/include -I/opt/src/neuros/toolchains/default/target/usr/include -msoft-float -mlittle-endian -I/opt/src/neuros/vlc/extras/contrib/include -pipe -Wl,-z,defs -Wl,-z,defs -L/opt/src/neuros/vlc/extras/contrib/lib -o libaccess_file_plugin.so libaccess_file_plugin.a -g -shared -lpthread -fpic -fPIC -u vlc_entry__0_8_7neuros libtool: link: arm-linux-gcc -Wsign-compare -Wall -Os -march=armv5te -I/opt/src/neuros/linux-davinci-2.6/include -I/opt/src/neuros/toolchains/default/target/usr/include -msoft-float -mlittle-endian -I/opt/src/neuros/vlc/extras/contrib/include -pipe -Wl,-z -Wl,defs -Wl,-z -Wl,defs -o libaccess_file_plugin.so -g -fpic -fPIC -u vlc_entry__0_8_7neuros -L/opt/src/neuros/vlc/extras/contrib/lib libaccess_file_plugin.a -lpthread /opt/debian-i386/opt/src/neuros/toolchains/mvista-3.4.3/bin/../lib/gcc/armv5tl-montavista-linuxeabi/3.4.3/../../../../armv5tl-montavista-linuxeabi/bin/ld: libaccess_file_plugin.a(libaccess_file_plugin_a-file.o): warning: duplicate section `.note.gnu.arm.ident' has different contents /opt/debian-i386/opt/src/neuros/toolchains/mvista-3.4.3/bin/../target/usr/lib/crt1.o(.text+0x30): In function `_start': ../sysdeps/arm/elf/start.S:99: undefined reference to `main' collect2: ld returned 1 exit status the libtool script that's run is vlc/vlc-build-davinci/libtool tom@zni:/opt/src/neuros/vlc/vlc-build-davinci$ ./libtool --version ltmain.sh (GNU libtool) 2.2.6 why isn't this the same as this? tom@zni:/opt/src/neuros/vlc/vlc-build-davinci$ libtool --version ltmain.sh (GNU libtool) 1.5.26 Debian 1.5.26-4 (1.1220.2.493 2008/02/01 16:58:18) first, where does the script come from? # Generated automatically by config.status (vlc) 0.8.7 # Libtool was configured on host zni: # NOTE: Changes made to this file will be lost: look at ltmain.sh. I tried a distclean in the vlc-build-davinci directory.. Let's have a look at the build script itself build-tools/scripts/vlc-build-helper.sh: 1. Build VLC deps cd vlc/ pushd extras/contrib ./bootstrap arm-linux davinci make popd The bootstrap file is patched in VLC git. It says it's a bit neuros specific. This step seems to work after patching faad and ffmpeg. It _only_ outputs config.mak and distro.mak, and doesn't do anything else. It uses src/Distributions/davinci.mak for distro.mak while config.mak contains variables. This works and is independent of the main build. 2. Build VLC ./bootstrap mkdir -p vlc-build-davinci/staging cd vlc-build-davinci ../configure-neuros.sh make The configure-neuros.sh script is in git. One thing i noticed: even after downgrading my libtool, it still shows version 2.2.6 for the generated script. What version of ltmain.sh is used then? Aha. There is a directory vlc/autotools which contains ltmain.sh and other things. Let's remove it and regenerate it with ./bootstrap Yes. This seems to work. At least it brings us to the following problem. Entry: more VLC build problems Date: Wed Jul 8 10:38:56 CEST 2009 /bin/sh ../../libtool --tag=CC --mode=link arm-linux-gcc -Wsign-compare -Wall -Os -march=armv5te -I/opt/src/neuros/linux-davinci-2.6/include -I/opt/src/neuros/toolchains/default/target/usr/include -msoft-float -mlittle-endian -I/opt/src/neuros/vlc/extras/contrib/include -pipe -Wl,-z,defs -Wl,-z,defs -L/opt/src/neuros/vlc/extras/contrib/lib -o libaccess_file_plugin.so libaccess_file_plugin.a -g -shared -lpthread -fpic -fPIC -u vlc_entry__0_8_7neuros ../../libtool: line 847: X--tag=CC: command not found ../../libtool: line 880: libtool: ignoring unknown tag : command not found ../../libtool: line 847: X--mode=link: command not found ../../libtool: line 1014: *** Warning: inferring the mode of operation is deprecated.: command not found ../../libtool: line 1015: *** Future versions of Libtool will require --mode=MODE be specified.: command not found ../../libtool: line 2259: X-Wsign-compare: command not found ../../libtool: line 2259: X-Wall: command not found ../../libtool: line 2259: X-Os: command not found ../../libtool: line 2094: X-march=armv5te: command not found ../../libtool: line 2259: X-I/opt/src/neuros/linux-davinci-2.6/include: No such file or directory ../../libtool: line 2259: X-I/opt/src/neuros/toolchains/default/target/usr/include: No such file or directory ../../libtool: line 2094: X-msoft-float: command not found ../../libtool: line 2094: X-mlittle-endian: command not found ../../libtool: line 2259: X-I/opt/src/neuros/vlc/extras/contrib/include: No such file or directory ../../libtool: line 2259: X-pipe: command not found ../../libtool: line 2222: X-Wl,-z,defs: command not found X: user not authorized to run the X server, aborting. ../../libtool: line 2222: X-Wl,-z,defs: command not found X: user not authorized to run the X server, aborting. ../../libtool: line 1973: X-L/opt/src/neuros/vlc/extras/contrib/lib: No such file or directory ../../libtool: line 2259: X-g: command not found ../../libtool: line 2259: X-shared: command not found ../../libtool: line 2259: X-fpic: command not found ../../libtool: line 2259: X-fPIC: command not found ../../libtool: line 2259: X-u: command not found ../../libtool: line 2398: Xvlc_entry__0_8_7neuros: command not found ../../libtool: line 2428: Xlibaccess_file_plugin.so: command not found X: user not authorized to run the X server, aborting. ../../libtool: line 2440: Xlibaccess_file_plugin.so: command not found ../../libtool: line 2448: mkdir /.libs: No such file or directory mkdir: cannot create directory `/.libs': Permission denied make[5]: *** [libaccess_file_plugin.so] Error 1 make[5]: Leaving directory `/opt/debian-i386/opt/src/neuros/vlc/vlc-build-davinci/modules/access' I suspect this is due to mismatch between libtool used to compile the deps and the downgraded libtool used to compile VLC. Let's rebuild. tom@zni:/opt/src/neuros/vlc/extras$ find -name ltmain.sh ./contrib/src/flac/ltmain.sh ./contrib/src/libtheora/ltmain.sh ./contrib/src/libmad/ltmain.sh ./contrib/src/faad2/ltmain.sh ./contrib/src/libpng/ltmain.sh ./contrib/src/lame/ltmain.sh ./contrib/src/libogg/ltmain.sh ./contrib/src/tremor/ltmain.sh ./contrib/src/faac/ltmain.sh ./contrib/src/libid3tag/ltmain.sh ./contrib/src/a52dec/autotools/ltmain.sh ./contrib/src/libdvbpsi/autotools/ltmain.sh for i in `find -name libtool`; do echo; echo $i; $i --version |grep ltmain; done there's one that's still at 2.2.3 (libpng): ./vlc/extras/contrib/src/libpng/libtool ltmain.sh (GNU libtool 1.2971 2008-04-29) 2.2.3a ltmain.sh v 2.2.3.a seems to be included in the tarball. so, summary upto now: - first problem is solved by downgrade to 1.5.26 Debian 1.5.26-4 (1.1220.2.493 2008/02/01 16:58:18) - second problem is a known issue [1] According to jpsaman the following version works: libtool 1.5.24 (1.1220.2.456 2007/06/24 02:25:32) Trying the version from etch: http://packages.debian.org/etch/amd64/libtool/download ltmain.sh (GNU libtool) 1.5.22 Debian 1.5.22-4 (1.1220.2.365 2005/12/18 22:14:06) Then in vlc/ rm -rf autotools # make distclean doesn't do this! ./bootstrap Hmm.. this still gives the same problem. Let's read that thread[1] again.. Apparently the problem there is different versions of libtool in the build.. Probably the same as what's happening here. [1] http://www.mail-archive.com/libtool@gnu.org/msg10239.html Entry: trying with ubuntu 8.04 Date: Wed Jul 8 15:47:04 CEST 2009 Installing build tools[1] on ubuntu. Same crap.. What the fuck is going on here! Then I run into this[2]. And then this[3] which says that 0.8.4 is really old and only builds on old systems. It looks like the problem is with this "-shared" flag bug in the VLC makefile from 0.8.4 Next: try a debian etch chroot to compile the whole thing once more.. Figure out a way to properly clean it so all autotools crums are removed. Alternatively. How hard would it be to upgrade the neuros vlc to 1.0? Let's look at what's actually different from clean 0.8.4 branch. [1] entry://../neuros/20090704-115928 [2] http://lists.gnu.org/archive/html/bug-libtool/2009-07/msg00001.html [3] https://forum.videolan.org/viewtopic.php?f=13&t=57481 Entry: Clean the m4/ directory Date: Wed Jul 8 16:44:02 CEST 2009 (neuros mailing list) I managed to compile vlc by downgrading to libtool 1.5.26 from the 2.2.6a in current debian unstable. I tried many many variations until I finally figured out there were generated files from previous libtool versions. After removing these it worked. The "distclean" target apparently leaves them intact. cd vlc rm -rf m4 autotools vlc-build-davinci git checkout m4 ./bootstrap After this it builds fine using "make vlc" in the top dir. Entry: running it Date: Wed Jul 8 17:33:17 CEST 2009 Need to update my nfsroot first. setenv nfs_root /opt/nfsroot/neuros run update-locs saveenv This makes it boot, now how to build the tree again? cd rootfs sudo make install-nfs Tree boots. cd /usr/local/bin ./fbhelper.sh mode pal I get an image. Now, how to make vlc work? Here[2] is more info. Basicly, use run-vlc.sh To mount an nfs share, extra options to mount are necessary: mount -t nfs -o nolock,nfsvers=3,udp zni:/pub /mnt/pub Ok, i can run vlc and it seems to be decoding, but there's nothing on the composite output I'm using. Ok.. i got some output after: fbhelper.sh mode pal fbhelper.sh plane vid0 But overall it seems to decode pretty badly to composite output. Maybe things are different with the digital out? There is also no audio.. This is really in very early stage. [1] http://wiki.neurostechnology.com/index.php/OSD2.0_Development#Net-booting_your_device [2] http://wiki.neurostechnology.com/index.php/Development_Resource#VLC_Command_line_usage_examples Entry: TI stuff Date: Fri Jul 10 12:07:55 CEST 2009 So.. If this is not really usable (yet) for use in the living room, maybe try to dig a bit deeper in the tools themselves. The thing I'd like to figure out is how the TI software is accessible, and what we can do with it. Maybe wrap the libs in a scripting language. This all seems a bit more feasible from a debian install, leaving the neuros root fs alone. Let's have a look at the TI components. This messages is from http://groups.google.com/group/neuros/browse_thread/thread/7920bee9cc2c9ae2 TI is continuing to make our devices more and more open. In addition to the low-cost C64x+ DSP tools[2], open source DSP Link[3], and open source Codec Engine[4] plus configuration tool[5], the DM6446 VICP is now usable by everyone via the VICP Signal Processing Library[1]. The VICP is a collection of loosely coupled accelerators attached to the C64x+ DSP within the DM6446. The VICP signal processing library provides a simple way of programming these accelerators to provide additional DSP performance within your system. I hope this is good news to the Neuros OSD2 community and will encourage further software development. I'll be looking for responses to this e-mail for questions and encourage further suggestions and comments on TI's community forums[6]. Thanks for such a great project! -Jason Kridner, TI catalog processors open platforms principal architect So. Let's have a look at these one by one. The C64x+ DSP tools[2] download secion currently clicks through to the installer[7] for "Code Generation Tools v6.1.10 Linux", the Compiler UG[8], Assembler UG[9], and the C64x+ instruction ref[10]. The DSP/BIOS Link[11] connects the host CPU to the DSP. The Codec Engine[12] manages XDAIS[13] codecs and algorithms. More info about Algorithm Standard here[14], SDK download here[15]. xDAIS = eXpressDSP™ Algorithm Interoperability Standard xDM = eXpressDSP Digital Media VISA = video, imaging, speech and audio (= APIs in xDM) VICP = Video and Imaging Coprocessor (parallel MAC engine) [1] http://focus.ti.com/docs/toolsw/folders/print/sprc831.html [2] https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/index.html [3] https://www-a.ti.com/downloads/sds_support/targetcontent/link/index.html (1.60 for Linux, not the porting kit) [4] https://www-a.ti.com/downloads/sds_support/targetcontent/CE/index.html (2.21 now BSD licensed) [5] http://wiki.eclipse.org/DSDP/RTSC [6] https://community.ti.com/ [7] http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_ccstudio/codegen/C6000/6.1.10/ti_cgt_c6000_6.1.10_setup_linux_x86.bin [8] http://www-s.ti.com/sc/techlit/SPRU187 [9] http://www-s.ti.com/sc/techlit/SPRU186 [10] http://www-s.ti.com/sc/techlit/SPRU732 [11] http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent//link/link_1_60/index.html [12] http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent//CE/index.html [13] http://en.wikipedia.org/wiki/XDAIS_algorithms [14] http://focus.ti.com/docs/toolsw/folders/print/tmdxdaisxdm.html [15] http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent//xdaisxdm/index.html Entry: TI C compiler Date: Sat Jul 11 22:00:12 CEST 2009 man /opt/TI/C6000CGT6.1.10/man/man1/cl6x.1 [1] http://www-s.ti.com/sc/techlit/SPRU187 Entry: OSD3 Date: Thu Jul 16 07:42:30 CEST 2009 RIP OSD2 2008 - 2009 http://groups.google.com/group/neuros/browse_thread/thread/38e367110ff57f3 http://forums.neurostechnology.com/index.php?topic=10248.0 To me the OSD2 box still seems like a nice way to be able to check out TI C64x DSPs, but I am a bit disappointed in how this was presented and then let die. Anyways, people learn I guess.. I'm all for the OSD3 to get off the ground though. However, from a pure amateur p.o.v. I think I've learned my lesson this time: don't invest in systems with closed components. This is the stuff that gets food on the table, but is not worth your soul. Richard is right! :) Entry: VLC / TI code Date: Wed Jul 22 14:06:21 CEST 2009 Let's have a look at how these things are pieced together. A good starting point seems to be a TI wiki[2] and the OSD2 VLC code. Starting from vlc/configure.ac it mentions ticel-config, which can be fond in binary-components/ti/ticel-config This script manages the libs: tom@zni:/opt/xc/osd2/binary-components/ti/lib$ find . ./codec ./codec/decode_x470MV.a ./codec/encodedecode_x470MV.a ./codec/encode_x470MV.a ./visa ./visa/video.a ./visa/audio.a ./visa/speech.a ./module ./module/dsplink.lib ./module/cmem.a ./common ./common/XdmUtils.a ./common/osal_dsplink_linux.a ./common/Algorithm_noOS.a ./common/ce.a ./common/osal_dsplink_linux_6446.a ./common/TraceUtil.a ./common/acpy3.a ./common/bioslog.a ./common/gt.a ./common/alg.a ./common/dman3Cfg.a and the include files: tom@zni:/opt/xc/osd2/binary-components/ti/include$ find . ./xdc ./xdc/std.h ./ti ./ti/xdais ./ti/xdais/xdas.h ./ti/xdais/ialg.h ./ti/xdais/ires.h ./ti/xdais/acpy2.h ./ti/xdais/idma3.h ./ti/xdais/idma2.h ./ti/xdais/dm ./ti/xdais/dm/ispeech1_g726.h ./ti/xdais/dm/iimgenc1.h ./ti/xdais/dm/ispeech1_amr.h ./ti/xdais/dm/iaudio.h ./ti/xdais/dm/ispeech1_pcm.h ./ti/xdais/dm/ividdec.h ./ti/xdais/dm/isphdec1.h ./ti/xdais/dm/iauddec1.h ./ti/xdais/dm/ispeech1_g723.h ./ti/xdais/dm/iaudenc.h ./ti/xdais/dm/ividanalytics.h ./ti/xdais/dm/ividdec1.h ./ti/xdais/dm/iaudenc1.h ./ti/xdais/dm/iimgdec1.h ./ti/xdais/dm/isphenc.h ./ti/xdais/dm/iimgenc.h ./ti/xdais/dm/ispeech1_smv.h ./ti/xdais/dm/ispeech1.h ./ti/xdais/dm/ividdec2.h ./ti/xdais/dm/ivideo.h ./ti/xdais/dm/iauddec.h ./ti/xdais/dm/isphdec.h ./ti/xdais/dm/iimgdec.h ./ti/xdais/dm/isphenc1.h ./ti/xdais/dm/ispeech.h ./ti/xdais/dm/xdm.h ./ti/xdais/dm/ividenc1.h ./ti/xdais/dm/ispeech1_evrc.h ./ti/xdais/dm/ividtranscode.h ./ti/xdais/dm/ividenc.h ./ti/xdais/dm/ispeech1_wbamr.h ./ti/xdais/acpy.h ./ti/xdais/idma.h ./ti/xdais/ires_common.h ./ti/sdo ./ti/sdo/ce ./ti/sdo/ce/speech1 ./ti/sdo/ce/speech1/_sphdec1.h ./ti/sdo/ce/speech1/sphdec1.h ./ti/sdo/ce/speech1/sphenc1.h ./ti/sdo/ce/speech1/_sphenc1.h ./ti/sdo/ce/osal ./ti/sdo/ce/osal/Memory.h ./ti/sdo/ce/osal/Comm.h ./ti/sdo/ce/skel.h ./ti/sdo/ce/speech ./ti/sdo/ce/speech/sphenc.h ./ti/sdo/ce/speech/_sphdec.h ./ti/sdo/ce/speech/sphdec.h ./ti/sdo/ce/speech/_sphenc.h ./ti/sdo/ce/video2 ./ti/sdo/ce/video2/viddec2.h ./ti/sdo/ce/video2/_viddec2.h ./ti/sdo/ce/utils ./ti/sdo/ce/utils/trace ./ti/sdo/ce/utils/trace/TraceUtil.h ./ti/sdo/ce/visa.h ./ti/sdo/ce/CERuntime.h ./ti/sdo/ce/audio1 ./ti/sdo/ce/audio1/_auddec1.h ./ti/sdo/ce/audio1/_audenc1.h ./ti/sdo/ce/audio1/auddec1.h ./ti/sdo/ce/audio1/audenc1.h ./ti/sdo/ce/video ./ti/sdo/ce/video/viddec.h ./ti/sdo/ce/video/_videnc.h ./ti/sdo/ce/video/_viddec.h ./ti/sdo/ce/video/videnc.h ./ti/sdo/ce/node ./ti/sdo/ce/node/node.h ./ti/sdo/ce/Engine.h ./ti/sdo/ce/Server.h ./ti/sdo/ce/video1 ./ti/sdo/ce/video1/_videnc1.h ./ti/sdo/ce/video1/videnc1.h ./ti/sdo/ce/video1/viddec1.h ./ti/sdo/ce/video1/_viddec1.h ./ti/sdo/ce/image1 ./ti/sdo/ce/image1/_imgenc1.h ./ti/sdo/ce/image1/imgenc1.h ./ti/sdo/ce/image1/_imgdec1.h ./ti/sdo/ce/image1/imgdec1.h ./ti/sdo/ce/rms.h ./ti/sdo/ce/image ./ti/sdo/ce/image/imgdec.h ./ti/sdo/ce/image/imgenc.h ./ti/sdo/ce/image/_imgenc.h ./ti/sdo/ce/image/_imgdec.h ./ti/sdo/ce/trace ./ti/sdo/ce/trace/gt.h ./ti/sdo/ce/audio ./ti/sdo/ce/audio/audenc.h ./ti/sdo/ce/audio/_audenc.h ./ti/sdo/ce/audio/_auddec.h ./ti/sdo/ce/audio/auddec.h ./ti/sdo/utils ./ti/sdo/utils/trace ./ti/sdo/utils/trace/gt.h ./ti/targets ./ti/targets/arm ./ti/targets/arm/std.h ./ti/targets/std.h ./gnu ./gnu/targets ./gnu/targets/std.h In the VLC source, the davinci code can be found here: vlc/modules/codec/davinci let's start with viddec.c and look at the deps. it includes: #include "davinci.h" #include which is in binary-components/ti/include/ti/sdo/ce/video/viddec.h I guess CE = codec engine, SDO = ? This header defines "The 0.9 Video Decoder Codec Interface. Provides the user an interface to create and interact with xDAIS algorithms that are compliant with the xDM 0.9 video decoder interface." A VIDEC is an object supporting the following messages: - init / deinit - process in terms of IO buffers and arguments - control messages #include "The Codec Engine System Programming Interface. Provides system developers with services necessary to implement stubs and skeletons." #include "The Codec Engine System Programming Interface (SPI) for skeleton developers." A `skeleton' seems to be a virtual class of some sort[1]. [1] http://tiexpressdsp.com/index.php/Overriding_stubs_and_skeletons [2] http://tiexpressdsp.com/index.php/Codec_Engine_Overview Entry: First contact Date: Wed Jul 22 15:07:29 CEST 2009 Trying to link an empty program using the montavista toolchain from the Neuros OSD2 tree. This works: CC=arm-linux-gcc TI_CFLAGS=`ticel-config --cflags` TI_LIBS=`ticel-config --libs` LDFLAGS=-lpthread test: . vars ; $(CC) $(TI_CFLAGS) test.c $(TI_LIBS) $(LDFLAGS) Start here [1]. [1] http://tiexpressdsp.com/index.php/Codec_Engine_Overview Entry: Setting up gdb Date: Wed Jul 22 15:19:59 CEST 2009 The idea is that I'm going to grow an application by interacting with a live app using gdb. 1. How to run gdb on the target? Is it installed on the OSD2? gdb is not installed.. Let's solve that first. I should have a arm-...-gdb binary. Indeed. tom@zni:~/davinci$ arm-linux-gdb GNU gdb 6.3 (MontaVista 6.3-20.0.22.0501131 2005-07-23) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "--host=i686-pc-linux-gnu --target=armv5tl-montavista-linuxeabi". (gdb) Now, how does the target side work? The first I can find is this[1]. They say I'm looking for arm-stub.c which handlers the client side. Hmm.. I don't find anything in 5 minutes which makes me suspicious.. Let's try [2]. Some more for ARM7[3] and some stuff from the Neuros OSD[4]. Looks like I need to build from source[5]. tom@zni:/opt/src/gdb-6.8/gdb/gdbserver$ CC=arm-linux-gcc ./configure --host=arm-*-linux && make After compiling, upload `gdbserver' to the target:/usr/bin/ To use, do this on the target: # gdbserver x:12345 ./test Process ./test created; pid = 922 Listening on port 12345 An on the host (from gdb manual[6] and an article[7]): tom@zni:~/davinci$ arm-linux-gdb test GNU gdb 6.3 (MontaVista 6.3-20.0.22.0501131 2005-07-23) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "--host=i686-pc-linux-gnu --target=armv5tl-montavista-linuxeabi"... (gdb) target remote neuros:12345 Remote debugging using neuros:12345 [New Thread 952] 0x40000790 in ?? () (gdb) break main Breakpoint 1 at 0xa12c (gdb) c Continuing. Program exited with code 01. (gdb) That doesn't seem right. The program is: #include #include #include #include #include #include void foo(void) { printf("foo!\n"); } int main(int argc, char **argv){ foo(); return 0; } Maybe try again with gdbserver from 6.3? Or maybe first build my own gdb from source.. tom@zni:/opt/src/gdb-6.8/build$ ../configure \ --prefix=/opt/xc/arm9 \ --target=arm-linux-gnu \ && make && sudo make install This seems to work: tom@zni:~/davinci$ ./gdb GNU gdb 6.8 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=arm-linux-gnu"... [New Thread 989] warning: Unable to find dynamic linker breakpoint function. GDB will be unable to debug shared library initializers and track explicitly loaded dynamic code. 0x40000790 in ?? () Breakpoint 1 at 0xa18c: file test.c, line 20. Error while mapping shared library sections: "/lib/libpthread.so.0": not in executable format: File format not recognized. Error while mapping shared library sections: "/lib/libc.so.6": not in executable format: File format not recognized. Error while mapping shared library sections: /lib/ld-linux.so.3: No such file or directory. Error while reading shared library symbols: "/lib/libpthread.so.0": can't read symbols: File format not recognized. Error while reading shared library symbols: "/lib/libc.so.6": can't read symbols: File format not recognized. Breakpoint 1, main (argc=1, argv=0xbec72e94) at test.c:20 20 foo(3); (gdb) break bar Breakpoint 2 at 0xa11c: file test.c, line 10. (gdb) c Continuing. Breakpoint 2, bar () at test.c:10 10 printf("bar!\n"); (gdb) bt #0 bar () at test.c:10 #1 0x0000a168 in foo (n=0) at test.c:16 #2 0x0000a160 in foo (n=1) at test.c:15 #3 0x0000a160 in foo (n=2) at test.c:15 #4 0x0000a160 in foo (n=3) at test.c:15 #5 0x0000a194 in main (argc=1, argv=0xbec72e94) at test.c:20 (gdb) c Continuing. Program exited normally. (gdb) Next: emacs/gud. OK. These are the files. Host side, can be run in emacs as M-x gdb: #!/bin/bash cd `dirname $0` [ -z "$INSIDE_EMACS" ] || EMACS="--annotate=3" . vars CMD=gdb.cmd GDB=/opt/xc/arm9/bin/arm-linux-gnu-gdb exec $GDB $EMACS -command=$CMD test The command file `gdb.cmd': target remote neuros:12345 break main continue And the target file started once over telnet, and kept open in a buffer to see the output: #!/bin/sh while sleep 1; do gdbserver x:12345 test; done [1] http://www.builderau.com.au/architect/sdi/soa/Debug-embedded-systems-with-GDB/0,339024602,320283114,00.htm [2] http://www.kegel.com/linux/gdbserver.html [3] http://lists.busybox.net/pipermail/uclibc/2006-July/016001.html [4] http://wiki.neurostechnology.com/index.php/Derobert%27s_Guide_to_the_On-Screen_Display:_Developing_for_the_OSD [5] http://ftp.gnu.org/gnu/gdb/gdb-6.8.tar.bz2 [6] http://sources.redhat.com/gdb/onlinedocs/gdb_17.html#SEC137 [7] http://www.linux.com/archive/feature/121735 Entry: tinyscheme Date: Wed Jul 22 17:43:06 CEST 2009 Another thing to figure out is how to use tinyscheme's[1] FFI, or find a way to cross-compile mzscheme. Ok, tinyscheme is linked in as a static library. Currently, it doesn't seem to do much. I disabled USE_SCHEME_STACK so I can at least trace it with the debugger. Not using call/cc yet.. Hmm.. Nope, it gives up when s_save is called.. I traced it down and the data gets printed to the output port, however, this doesn't seem to be connected to stdout? Exactly. Inspecting the standalone startup I found this: scheme_set_output_port_file(sc, stdout); Next: my primitive doesn't run. Problem in the input.. Apparently some care should be taken since error reporting seems to be minimal. Next: list scheme bindings. use the `oblist' function Next: creating new datatypes. How to wrap a C pointer + handle its allocation/deallocation? [1] http://community.schemewiki.org/?TinyScheme [2] http://tinyscheme.sourceforge.net/home.html [3] http://delicious.com/doelie/tinyscheme [4] http://www.alphageeksinc.com/tinyscheme/doc/tinyscheme.html [5] http://ccrma.stanford.edu/software/snd/snd/grfsnd.html#sndands7 Entry: About the approach Date: Thu Jul 23 09:17:06 CEST 2009 I've learned my lesson: no more will I ever build a C application without an internal interpreter for writing setup code. Goal is to quickly get a handle on the TI codec API by using principles distilled from work on Staapl: - make gdb part of the project (done) * run a gdbserver loop on the target and do the same for gdb on the host. `q' will restart the app. * set a breakpoint in a "test()" function and keep looping: make it difficult for gdb to exit the app if you press `c' accedentally. * write `functional C' which means that it should be easy for gdb to call functions in the binary using the `p' command. - setup tinyscheme (done) - setup a meta system for programming the scheme interpreter and gdb. (todo) Entry: rlogin / socat Date: Thu Jul 23 11:55:20 CEST 2009 The osd2 busybox doesn't have rlogin. Maybe I should install socat then.. By default it includes some kernel headers which doesn't seem to work for the neuros build tools.. CC=arm-linux-gcc ../configure --host=arm-*-linux \ --disable-ext2 --disable-termios // sysincludes.h: #ifdef WITH_EXT2 #if HAVE_LINUX_FS_H #include /* somewhere required for ext2_fs.h */ #endif #if HAVE_LINUX_EXT2_FS_H #include /* Linux ext2 filesystem definitions */ #endif #endif There are a number of variables that are not set due to cross-compiling build: configure:13405: result: please determine CRDLY_SHIFT manually configure:13489: result: please determine TABDLY_SHIFT manually configure:13573: result: please determine CSIZE_SHIFT manually I'm not going to bother with this atm, but looks like it's not terribly hard to fix & send a patch upstream. I do have a working debian, at least in chroot. Maybe I shouldn't bother? [1] http://ftp.de.debian.org/debian/pool/main/r/rsh-redone/rsh-redone_85.orig.tar.gz [2] ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/netkit-rsh-0.17.tar.gz Entry: C <-> Scheme wrapping Date: Thu Jul 23 14:05:02 CEST 2009 I've added an extension to tinyscheme to support an external "void" datatype which is collected using a finalize function. Then, if there's one thing I've learned with PF is that dynamic typing is fun on the user side, but a pain in the butt on the implementor side. Type checking and throwing exceptions definitely needs some abstraction. I.o.w. bridging the typed C and untyped Scheme needs an adaptor. So let's see where it goes, but keep this in mind. Entry: Instantiating some codecs Date: Thu Jul 23 16:30:02 CEST 2009 The stack goes quite deep, but as far as I understand the Codec Engine is very highlevel. Maybe the first thing to figure out is how to decode _something_ and send it to an output. I'm trying to call Engine_open() which is defined in ti/lib/common/ca.a 00001e14 g F .text 0000070c Engine_open But apparently linking doesn't pick it up.. It was a typo. Copying libs locally, in right order (see `ti.libs') ./ti/lib/codec/encodedecode_x470MV.a ./ti/lib/common/TraceUtil.a ./ti/lib/common/bioslog.a ./ti/lib/visa/video.a ./ti/lib/visa/audio.a ./ti/lib/visa/speech.a ./ti/lib/common/ce.a ./ti/lib/common/Algorithm_noOS.a ./ti/lib/common/alg.a ./ti/lib/common/osal_dsplink_linux.a ./ti/lib/common/osal_dsplink_linux_6446.a ./ti/lib/common/dman3Cfg.a ./ti/lib/common/acpy3.a ./ti/lib/module/cmem.a ./ti/lib/module/dsplink.lib ./ti/lib/common/XdmUtils.a ./ti/lib/common/gt.a [1] http://tiexpressdsp.com/index.php/Codec_Engine_Roles Entry: global Codec Engine structures Date: Fri Jul 24 15:55:59 CEST 2009 I found a code sequence in the VLC code that seems a bit odd: there is a combination of local (object-specific) and global initializations. I tried to move the global init CERuntime_init(); to the start of the program but then I get: Program received signal SIG32, Real-time event 32. 0x40028e10 in ?? () Looks like i've messed up my system.. Hmm.. Hard reboot seemed to have fixed it. Looks like there is some kind of locking mechanism. Let's try to nail this down. First: does tinyscheme actually destruct all data on _deinit() ? It looks like it does: # ./test > (make-blob) # > (quit) free(): blob scheme_deinit() DONE The code sets all root pointers to nill and then calls gc, cleaning up everything. So what's wrong? Everything works fine from the scheme command line, but when I attempt to start something from the debugger it borks, and the scheme side won't startup again. The problem might be that Engine_close doesn't get called? It's not possible to open the engine from two different programs. It throws error 3. Let's make these readable first. The vlc code uses `ppsz_engine_error'. Where is that defined? Not in the TI .a files. It's in vlc/modules/codec/davinci/davinci.c Ok, now I try again I can open it multiple times.. Hmm.. Let's try to go on, sense will come later. It looks like the engine is better managed as a singleton though. The VLC code contains a PrintAvailableAlgorithms function that doesn't seem to use the codec engine instance. This[1] brings clarity[1]. The Engine_open just returns a handle to a global engine object. So what does CERuntime_init() do? Let's change the c code to reflect this. [1] http://wiki.davincidsp.com/index.php/Multiple_Threads_using_Codec_Engine_Handle Entry: next Date: Fri Jul 24 19:04:32 CEST 2009 I'm at the point where I'm about the print out available algorithms, but I'd like to first figure out how to raise errors in tinyscheme. Apparently scheme_apply1() is what I need, but this gives linker errors. Entry: stripped libraries Date: Sat Jul 25 09:18:44 CEST 2009 Apparently gdb gets confused when library symbols are missing[1]. Indeed we have: tom@zni:/opt/xc/osd2$ file rootfs/fs/lib/libpthread-0.10.so rootfs/fs/lib/libpthread-0.10.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.17, stripped gdb gives the error Error while mapping shared library sections: : not in executable format: File format not recognized. For in: "/lib/libpthread.so.0" "/lib/libm.so.6" "/lib/libc.so.6" and an other error: /lib/ld-linux.so.3: No such file or directory. Apart from the libraries not being stripped, it looks like gdb tries host system libraries instead of those for the target. Looking into the neuros build system, the config comes from configs/defconfig-1.11.2 This has CONFIG_DEBUG not set, which is I guess what's needed.. Temporarily reconfigure by going to busybox/_build/busybox-1.11.2 and running "make config". But.. this doesn't seem to include the libraries. Ouch.. tom@zni:/opt/xc/osd2$ find -name libm.so ./toolchains/mvista-3.4.3/target/usr/lib/libm.so That doesn't look too good. Libraries are provided by TI / montavista. I'm done with this crap. I'm switching to debian. [1] http://www.mail-archive.com/bug-gdb@gnu.org/msg01102.html Entry: Debian arm cross toolchain Date: Sat Jul 25 09:51:40 CEST 2009 Getting a filesystem bootstrapped wasn't so difficult. See [1]. I'd like to figure out how to run some things in the emulator though. But that can wait. Let's first install an xc for zni -> debian-arm. Add this line to /etc/apt/sources.list: deb http://www.emdebian.org/debian/ unstable main Then install with: apt-get update apt-get install gcc-4.3-arm-linux-gnu Ok. It can build executables that work in the arm debian fs previously installed. Now the question is, does this also work for the TI code? Apparently tinyscheme chokes on linux/limits.s not being installed. This should be just a kernel headers problem. apt-get install linux-kernel-headers-arm-cross This compiles tinyscheme. But the TI objects choke on ABI problems: /usr/bin/arm-linux-gnu-gcc -o test test.o ./ti/lib/codec/encodedecode_x470MV.a ./ti/lib/common/TraceUtil.a ./ti/lib/common/bioslog.a ./ti/lib/visa/video.a ./ti/lib/visa/audio.a ./ti/lib/visa/speech.a ./ti/lib/common/ce.a ./ti/lib/common/Algorithm_noOS.a ./ti/lib/common/alg.a ./ti/lib/common/osal_dsplink_linux.a ./ti/lib/common/osal_dsplink_linux_6446.a ./ti/lib/common/dman3Cfg.a ./ti/lib/common/acpy3.a ./ti/lib/module/cmem.a ./ti/lib/module/dsplink.lib ./ti/lib/common/XdmUtils.a ./ti/lib/common/gt.a -lpthread tinyscheme/libtinyscheme.a -lm /usr/lib/gcc/arm-linux-gnu/4.3.3/../../../../arm-linux-gnu/bin/ld: ERROR: Source object /usr/arm-linux-gnu/lib/libpthread.so.0 has EABI version 0, but target test has EABI version 4 I don't understand why libpthread.so.0 should have version 0 since it is bundled with the arm gcc for debian? tom@zni:/var/lib/dpkg/info$ dpkg -S /usr/arm-linux-gnu/ linux-kernel-headers-arm-cross, libc6-arm-cross, libgcc1-arm-cross, libc6-dev-arm-cross, binutils-arm-linux-gnu: /usr/arm-linux-gnu I guess the problem is presenting the linker with the .a files from TI which have a different ABI. I can't check this.. How to instruct the compiler to produce this ABI version? Let's google a bit more.. Trying this: apt-get install gcc-4.4-arm-linux-gnueabi Ok, but that one doesn't have associated kernel headers.. Maybe I can link it from the other? cd /usr/arm-linux-gnueabi/include sudo ln -s ../../arm-linux-gnu/include/linux . Ha. It builds and links using /usr/bin/arm-linux-gnueabi-gcc But it probably won't run on the debian.. And I'm not sure if foefeling the headers like that is a good idea. [1] entry://20090520-121129 [2] http://forums.arm.com/lofiversion/index.php?t8842.html Entry: Arm EABI Date: Sat Jul 25 11:31:28 CEST 2009 Starting with Debian nomenclature, there are two different arm targets: arm-linux-gnueabi-gcc /usr/arm-linux-gnueabi arm-linux-gnu-gcc /usr/arm-linux-gnu The Montavista toolchain and more importantly, the closed source TI object files use the former. Doesn't look like there is a way around this. The linux config side is confusing though. Dumping the current config (see [4]) I see: # CONFIG_AEABI is not set I'm not sure what that is about.. Linux uses the old ABI, and the userland the new? [1] http://wiki.debian.org/ArmEabiPort [2] http://cateee.net/lkddb/web-lkddb/AEABI.html [3] http://cateee.net/lkddb/web-lkddb/OABI_COMPAT.html [4] entry://20090725-115612 [5] http://wiki.debian.org/ArmEabiHowto Entry: currently running .config Date: Sat Jul 25 11:56:12 CEST 2009 zcat /proc/config.gz # # Automatically generated make config: don't edit # Linux kernel version: 2.6.23-davinci1 # Wed May 20 14:31:54 2009 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_MMU=y # CONFIG_NO_IOPORT is not set CONFIG_GENERIC_HARDIRQS=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_HARDIRQS_SW_RESEND=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_ARCH_HAS_ILOG2_U32 is not set # CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ZONE_DMA=y CONFIG_VECTORS_BASE=0xffff0000 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # General setup # CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set # CONFIG_SWAP is not set CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_USER_NS is not set # CONFIG_AUDIT is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=14 CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y CONFIG_EMBEDDED=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_MODVERSIONS=y # CONFIG_MODULE_SRCVERSION_ALL is not set CONFIG_KMOD=y CONFIG_BLOCK=y # CONFIG_LBD is not set # CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_LSF is not set # CONFIG_BLK_DEV_BSG is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y # CONFIG_IOSCHED_DEADLINE is not set # CONFIG_IOSCHED_CFQ is not set CONFIG_DEFAULT_AS=y # CONFIG_DEFAULT_DEADLINE is not set # CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="anticipatory" # # System Type # # CONFIG_ARCH_AAEC2000 is not set # CONFIG_ARCH_INTEGRATOR is not set # CONFIG_ARCH_REALVIEW is not set # CONFIG_ARCH_VERSATILE is not set # CONFIG_ARCH_AT91 is not set # CONFIG_ARCH_CLPS7500 is not set # CONFIG_ARCH_CLPS711X is not set # CONFIG_ARCH_CO285 is not set # CONFIG_ARCH_EBSA110 is not set # CONFIG_ARCH_EP93XX is not set # CONFIG_ARCH_FOOTBRIDGE is not set # CONFIG_ARCH_NETX is not set # CONFIG_ARCH_H720X is not set # CONFIG_ARCH_IMX is not set # CONFIG_ARCH_IOP13XX is not set # CONFIG_ARCH_IOP32X is not set # CONFIG_ARCH_IOP33X is not set # CONFIG_ARCH_IXP23XX is not set # CONFIG_ARCH_IXP2000 is not set # CONFIG_ARCH_IXP4XX is not set # CONFIG_ARCH_L7200 is not set # CONFIG_ARCH_KS8695 is not set # CONFIG_ARCH_NS9XXX is not set # CONFIG_ARCH_MXC is not set # CONFIG_ARCH_PNX4008 is not set # CONFIG_ARCH_PXA is not set # CONFIG_ARCH_RPC is not set # CONFIG_ARCH_SA1100 is not set # CONFIG_ARCH_S3C2410 is not set # CONFIG_ARCH_SHARK is not set # CONFIG_ARCH_LH7A40X is not set CONFIG_ARCH_DAVINCI=y # CONFIG_ARCH_OMAP is not set # # Boot options # # # Power management # # # TI DaVinci Implementations # # # DaVinci Core Type # CONFIG_ARCH_DAVINCI644x=y # # DaVinci Board Type # CONFIG_MACH_NTOSD_644XA=y # CONFIG_MACH_DAVINCI_EVM is not set CONFIG_DAVINCI_I2C_EXPANDER=y CONFIG_DAVINCI_MCBSP=y # # DaVinci Options # # CONFIG_DAVINCI_BLK_DEV_CF is not set # # Processor Type # CONFIG_CPU_32=y CONFIG_CPU_ARM926T=y CONFIG_CPU_32v5=y CONFIG_CPU_ABRT_EV5TJ=y CONFIG_CPU_PABRT_NOIFAR=y CONFIG_CPU_CACHE_VIVT=y CONFIG_CPU_COPY_V4WB=y CONFIG_CPU_TLB_V4WBI=y CONFIG_CPU_CP15=y CONFIG_CPU_CP15_MMU=y # # Processor Features # CONFIG_ARM_THUMB=y # CONFIG_CPU_ICACHE_DISABLE is not set # CONFIG_CPU_DCACHE_DISABLE is not set # CONFIG_CPU_DCACHE_WRITETHROUGH is not set # CONFIG_CPU_CACHE_ROUND_ROBIN is not set # CONFIG_OUTER_CACHE is not set CONFIG_FORCE_MAX_ZONEORDER=13 # # Bus support # # CONFIG_PCI_SYSCALL is not set # CONFIG_ARCH_SUPPORTS_MSI is not set # # PCCARD (PCMCIA/CardBus) support # # CONFIG_PCCARD is not set # # Kernel Features # # CONFIG_TICK_ONESHOT is not set # CONFIG_NO_HZ is not set # CONFIG_HIGH_RES_TIMERS is not set # CONFIG_PREEMPT is not set CONFIG_HZ=100 # CONFIG_AEABI is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y # CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y # CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPLIT_PTLOCK_CPUS=4096 # CONFIG_RESOURCES_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_LEDS=y # CONFIG_LEDS_CPU is not set CONFIG_ALIGNMENT_TRAP=y # # Boot options # CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_CMDLINE="" # CONFIG_XIP_KERNEL is not set # CONFIG_KEXEC is not set # # Floating point emulation # # # At least one emulation must be selected # CONFIG_FPE_NWFPE=y # CONFIG_FPE_NWFPE_XP is not set # CONFIG_FPE_FASTFPE is not set # CONFIG_VFP is not set # # Userspace binary formats # CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_AOUT is not set # CONFIG_BINFMT_MISC is not set # CONFIG_ARTHUR is not set # # Power management options # # CONFIG_PM is not set CONFIG_SUSPEND_UP_POSSIBLE=y # # Networking # CONFIG_NET=y # # Networking options # CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set CONFIG_UNIX=y CONFIG_XFRM=y # CONFIG_XFRM_USER is not set # CONFIG_XFRM_SUB_POLICY is not set # CONFIG_XFRM_MIGRATE is not set # CONFIG_NET_KEY is not set CONFIG_INET=y # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_FIB_HASH=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y # CONFIG_IP_PNP_BOOTP is not set # CONFIG_IP_PNP_RARP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_ARPD is not set # CONFIG_SYN_COOKIES is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set CONFIG_INET_TUNNEL=m CONFIG_INET_XFRM_MODE_TRANSPORT=y CONFIG_INET_XFRM_MODE_TUNNEL=y CONFIG_INET_XFRM_MODE_BEET=y CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IP_VS is not set CONFIG_IPV6=m # CONFIG_IPV6_PRIVACY is not set # CONFIG_IPV6_ROUTER_PREF is not set # CONFIG_IPV6_OPTIMISTIC_DAD is not set # CONFIG_INET6_AH is not set # CONFIG_INET6_ESP is not set # CONFIG_INET6_IPCOMP is not set # CONFIG_IPV6_MIP6 is not set # CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set CONFIG_INET6_XFRM_MODE_TRANSPORT=m CONFIG_INET6_XFRM_MODE_TUNNEL=m CONFIG_INET6_XFRM_MODE_BEET=m # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set CONFIG_IPV6_SIT=m # CONFIG_IPV6_TUNNEL is not set # CONFIG_IPV6_MULTIPLE_TABLES is not set # CONFIG_NETWORK_SECMARK is not set CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set # # Core Netfilter Configuration # # CONFIG_NETFILTER_NETLINK is not set # CONFIG_NF_CONNTRACK_ENABLED is not set # CONFIG_NF_CONNTRACK is not set # CONFIG_NETFILTER_XTABLES is not set # # IP: Netfilter Configuration # # CONFIG_IP_NF_QUEUE is not set # CONFIG_IP_NF_IPTABLES is not set # CONFIG_IP_NF_ARPTABLES is not set # # IPv6: Netfilter Configuration (EXPERIMENTAL) # # CONFIG_IP6_NF_QUEUE is not set # CONFIG_IP6_NF_IPTABLES is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set # # Network testing # # CONFIG_NET_PKTGEN is not set # CONFIG_HAMRADIO is not set # CONFIG_IRDA is not set # CONFIG_BT is not set # CONFIG_AF_RXRPC is not set # # Wireless # # CONFIG_CFG80211 is not set CONFIG_WIRELESS_EXT=y # CONFIG_MAC80211 is not set CONFIG_IEEE80211=y # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=y # CONFIG_IEEE80211_CRYPT_CCMP is not set # CONFIG_IEEE80211_CRYPT_TKIP is not set CONFIG_IEEE80211_SOFTMAC=y # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set # # Device Drivers # # # Generic Driver Options # CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set CONFIG_MTD=y # CONFIG_MTD_DEBUG is not set # CONFIG_MTD_CONCAT is not set CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_REDBOOT_PARTS is not set CONFIG_MTD_CMDLINE_PARTS=y # CONFIG_MTD_AFS_PARTS is not set # # User Modules And Translation Layers # CONFIG_MTD_CHAR=y CONFIG_MTD_BLKDEVS=y CONFIG_MTD_BLOCK=y # CONFIG_FTL is not set # CONFIG_NFTL is not set # CONFIG_INFTL is not set # CONFIG_RFD_FTL is not set # CONFIG_SSFDC is not set # # RAM/ROM/Flash chip drivers # CONFIG_MTD_CFI=y # CONFIG_MTD_JEDECPROBE is not set CONFIG_MTD_GEN_PROBE=y # CONFIG_MTD_CFI_ADV_OPTIONS is not set CONFIG_MTD_MAP_BANK_WIDTH_1=y CONFIG_MTD_MAP_BANK_WIDTH_2=y CONFIG_MTD_MAP_BANK_WIDTH_4=y # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set CONFIG_MTD_CFI_I1=y CONFIG_MTD_CFI_I2=y # CONFIG_MTD_CFI_I4 is not set # CONFIG_MTD_CFI_I8 is not set # CONFIG_MTD_CFI_INTELEXT is not set CONFIG_MTD_CFI_AMDSTD=y # CONFIG_MTD_CFI_STAA is not set CONFIG_MTD_CFI_UTIL=y # CONFIG_MTD_RAM is not set # CONFIG_MTD_ROM is not set # CONFIG_MTD_ABSENT is not set # # Mapping drivers for chip access # # CONFIG_MTD_COMPLEX_MAPPINGS is not set CONFIG_MTD_PHYSMAP=y CONFIG_MTD_PHYSMAP_START=0x8000000 CONFIG_MTD_PHYSMAP_LEN=0x0 CONFIG_MTD_PHYSMAP_BANKWIDTH=2 # CONFIG_MTD_ARM_INTEGRATOR is not set # CONFIG_MTD_PLATRAM is not set # # Self-contained MTD device drivers # # CONFIG_MTD_SLRAM is not set # CONFIG_MTD_PHRAM is not set # CONFIG_MTD_MTDRAM is not set # CONFIG_MTD_BLOCK2MTD is not set # # Disk-On-Chip Device Drivers # # CONFIG_MTD_DOC2000 is not set # CONFIG_MTD_DOC2001 is not set # CONFIG_MTD_DOC2001PLUS is not set CONFIG_MTD_NAND=y CONFIG_MTD_NAND_VERIFY_WRITE=y # CONFIG_MTD_NAND_ECC_SMC is not set # CONFIG_MTD_NAND_MUSEUM_IDS is not set CONFIG_MTD_NAND_IDS=y # CONFIG_MTD_NAND_DISKONCHIP is not set # CONFIG_MTD_NAND_NANDSIM is not set # CONFIG_MTD_NAND_PLATFORM is not set CONFIG_MTD_NAND_DAVINCI=y CONFIG_NAND_FLASH_HW_ECC=y # CONFIG_MTD_ONENAND is not set # # UBI - Unsorted block images # # CONFIG_MTD_UBI is not set # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=m # CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=1 CONFIG_BLK_DEV_RAM_SIZE=32768 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set CONFIG_IDE=y CONFIG_IDE_MAX_HWIFS=1 CONFIG_BLK_DEV_IDE=y # # Please see Documentation/ide.txt for help/info on IDE drives # # CONFIG_BLK_DEV_IDE_SATA is not set CONFIG_BLK_DEV_IDEDISK=y # CONFIG_IDEDISK_MULTI_MODE is not set # CONFIG_BLK_DEV_IDECD is not set # CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set # CONFIG_BLK_DEV_IDESCSI is not set CONFIG_IDE_TASK_IOCTL=y CONFIG_IDE_PROC_FS=y # # IDE chipset support/bugfixes # CONFIG_IDE_GENERIC=y # CONFIG_IDEPCI_PCIBUS_ORDER is not set CONFIG_BLK_DEV_IDEDMA_PCI=y # CONFIG_BLK_DEV_IDEDMA_FORCED is not set # CONFIG_IDEDMA_ONLYDISK is not set # CONFIG_BLK_DEV_AEC62XX is not set # CONFIG_BLK_DEV_ALI15X3 is not set # CONFIG_BLK_DEV_AMD74XX is not set # CONFIG_BLK_DEV_CMD64X is not set # CONFIG_BLK_DEV_TRIFLEX is not set # CONFIG_BLK_DEV_CY82C693 is not set # CONFIG_BLK_DEV_CS5520 is not set # CONFIG_BLK_DEV_CS5530 is not set # CONFIG_BLK_DEV_HPT34X is not set # CONFIG_BLK_DEV_HPT366 is not set # CONFIG_BLK_DEV_JMICRON is not set # CONFIG_BLK_DEV_SC1200 is not set # CONFIG_BLK_DEV_PIIX is not set # CONFIG_BLK_DEV_IT8213 is not set # CONFIG_BLK_DEV_IT821X is not set # CONFIG_BLK_DEV_NS87415 is not set # CONFIG_BLK_DEV_PDC202XX_OLD is not set # CONFIG_BLK_DEV_PDC202XX_NEW is not set # CONFIG_BLK_DEV_SVWKS is not set # CONFIG_BLK_DEV_SIIMAGE is not set # CONFIG_BLK_DEV_SL82C105 is not set # CONFIG_BLK_DEV_SLC90E66 is not set # CONFIG_BLK_DEV_TRM290 is not set # CONFIG_BLK_DEV_VIA82CXXX is not set # CONFIG_BLK_DEV_TC86C001 is not set # CONFIG_IDE_ARM is not set CONFIG_BLK_DEV_DAVINCI=y CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_IVB is not set # CONFIG_BLK_DEV_HD is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set CONFIG_SCSI=y CONFIG_SCSI_DMA=y # CONFIG_SCSI_TGT is not set # CONFIG_SCSI_NETLINK is not set CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set # CONFIG_BLK_DEV_SR is not set # CONFIG_CHR_DEV_SG is not set # CONFIG_CHR_DEV_SCH is not set # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # # CONFIG_SCSI_MULTI_LUN is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set # CONFIG_SCSI_SCAN_ASYNC is not set CONFIG_SCSI_WAIT_SCAN=m # # SCSI Transports # # CONFIG_SCSI_SPI_ATTRS is not set # CONFIG_SCSI_FC_ATTRS is not set # CONFIG_SCSI_ISCSI_ATTRS is not set # CONFIG_SCSI_SAS_LIBSAS is not set CONFIG_SCSI_LOWLEVEL=y # CONFIG_ISCSI_TCP is not set # CONFIG_SCSI_DEBUG is not set # CONFIG_ATA is not set # CONFIG_MD is not set CONFIG_NETDEVICES=y # CONFIG_NETDEVICES_MULTIQUEUE is not set # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set CONFIG_TUN=m # CONFIG_PHYLIB is not set CONFIG_NET_ETHERNET=y # CONFIG_MII is not set # CONFIG_AX88796 is not set # CONFIG_SMC91X is not set CONFIG_TI_DAVINCI_EMAC=y # CONFIG_DM9000 is not set CONFIG_NETDEV_1000=y CONFIG_NETDEV_10000=y # # Wireless LAN # # CONFIG_WLAN_PRE80211 is not set CONFIG_WLAN_80211=y # CONFIG_LIBERTAS is not set # CONFIG_USB_ZD1201 is not set # CONFIG_HOSTAP is not set CONFIG_ZD1211RW=y # CONFIG_ZD1211RW_DEBUG is not set # # USB Network Adapters # # CONFIG_USB_CATC is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_PEGASUS is not set # CONFIG_USB_RTL8150 is not set # CONFIG_USB_USBNET_MII is not set # CONFIG_USB_USBNET is not set # CONFIG_WAN is not set CONFIG_PPP=m # CONFIG_PPP_MULTILINK is not set # CONFIG_PPP_FILTER is not set CONFIG_PPP_ASYNC=m CONFIG_PPP_SYNC_TTY=m CONFIG_PPP_DEFLATE=m # CONFIG_PPP_BSDCOMP is not set # CONFIG_PPP_MPPE is not set # CONFIG_PPPOE is not set # CONFIG_PPPOL2TP is not set # CONFIG_SLIP is not set CONFIG_SLHC=m # CONFIG_SHAPER is not set CONFIG_NETCONSOLE=y CONFIG_NETPOLL=y CONFIG_NETPOLL_TRAP=y CONFIG_NET_POLL_CONTROLLER=y # CONFIG_ISDN is not set # # Input device support # CONFIG_INPUT=y # CONFIG_INPUT_FF_MEMLESS is not set # CONFIG_INPUT_POLLDEV is not set # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_TSDEV is not set CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_EVBUG is not set # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set CONFIG_KEYBOARD_XTKBD=y # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_KEYBOARD_GPIO is not set # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set # CONFIG_INPUT_TOUCHSCREEN is not set CONFIG_INPUT_MISC=y # CONFIG_INPUT_ATI_REMOTE is not set # CONFIG_INPUT_ATI_REMOTE2 is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set # CONFIG_INPUT_POWERMATE is not set # CONFIG_INPUT_YEALINK is not set # CONFIG_INPUT_UINPUT is not set CONFIG_INPUT_NEUROS_IR=m # # Hardware I/O ports # CONFIG_SERIO=y CONFIG_SERIO_SERPORT=y CONFIG_SERIO_LIBPS2=y # CONFIG_SERIO_RAW is not set # CONFIG_GAMEPORT is not set # # Character devices # CONFIG_VT=y # CONFIG_VT_CONSOLE is not set CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set # CONFIG_SERIAL_NONSTANDARD is not set # # Serial drivers # CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_NR_UARTS=2 CONFIG_SERIAL_8250_RUNTIME_UARTS=2 # CONFIG_SERIAL_8250_EXTENDED is not set # # Non-8250 serial port support # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 # CONFIG_IPMI_HANDLER is not set # CONFIG_WATCHDOG is not set CONFIG_HW_RANDOM=y # CONFIG_NVRAM is not set # CONFIG_R3964 is not set # CONFIG_RAW_DRIVER is not set CONFIG_RESIZER=y # CONFIG_TCG_TPM is not set # CONFIG_PREVIEWER is not set CONFIG_THS7313=y CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=y # # I2C Algorithms # # CONFIG_I2C_ALGOBIT is not set # CONFIG_I2C_ALGOPCF is not set # CONFIG_I2C_ALGOPCA is not set # # I2C Hardware Bus support # # CONFIG_I2C_GPIO is not set # CONFIG_I2C_OCORES is not set # CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_SIMTEC is not set # CONFIG_I2C_TAOS_EVM is not set # CONFIG_I2C_STUB is not set # CONFIG_I2C_TINY_USB is not set CONFIG_I2C_DAVINCI=y # # Miscellaneous I2C Chip support # # CONFIG_SENSORS_DS1337 is not set # CONFIG_SENSORS_DS1374 is not set # CONFIG_DS1682 is not set # CONFIG_SENSORS_EEPROM is not set # CONFIG_SENSORS_PCF8574 is not set # CONFIG_SENSORS_PCA9539 is not set # CONFIG_SENSORS_PCF8591 is not set CONFIG_SENSORS_TLV320AIC23=y CONFIG_SENSORS_TLV320AIC32=y CONFIG_SENSORS_TLV320AIC33=y # CONFIG_SENSORS_MAX6875 is not set # CONFIG_SENSORS_TSL2550 is not set # CONFIG_GPIOEXPANDER_DAVINCI is not set CONFIG_I2C_NEUROS_MSP430=m CONFIG_I2C_NEUROS_SIL9034HDMI=m # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CHIP is not set # # SPI support # # CONFIG_SPI is not set # CONFIG_SPI_MASTER is not set # CONFIG_W1 is not set CONFIG_HWMON=y # CONFIG_HWMON_VID is not set # CONFIG_SENSORS_ABITUGURU is not set # CONFIG_SENSORS_ABITUGURU3 is not set # CONFIG_SENSORS_AD7418 is not set # CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1029 is not set # CONFIG_SENSORS_ADM1031 is not set # CONFIG_SENSORS_ADM9240 is not set # CONFIG_SENSORS_ASB100 is not set # CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_DS1621 is not set # CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_FSCHER is not set # CONFIG_SENSORS_FSCPOS is not set # CONFIG_SENSORS_GL518SM is not set # CONFIG_SENSORS_GL520SM is not set # CONFIG_SENSORS_IT87 is not set # CONFIG_SENSORS_LM63 is not set # CONFIG_SENSORS_LM75 is not set # CONFIG_SENSORS_LM77 is not set # CONFIG_SENSORS_LM78 is not set # CONFIG_SENSORS_LM80 is not set # CONFIG_SENSORS_LM83 is not set # CONFIG_SENSORS_LM85 is not set # CONFIG_SENSORS_LM87 is not set # CONFIG_SENSORS_LM90 is not set # CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM93 is not set # CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX6650 is not set # CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87427 is not set # CONFIG_SENSORS_DME1737 is not set # CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M192 is not set # CONFIG_SENSORS_SMSC47B397 is not set # CONFIG_SENSORS_THMC50 is not set # CONFIG_SENSORS_VT1211 is not set # CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83791D is not set # CONFIG_SENSORS_W83792D is not set # CONFIG_SENSORS_W83793 is not set # CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627EHF is not set # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_MISC_DEVICES=y # CONFIG_EEPROM_93CX6 is not set CONFIG_NEUROS_IR_BLASTER=m # # Multifunction device drivers # # CONFIG_MFD_SM501 is not set CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y # # LED drivers # CONFIG_LEDS_GPIO=y # # LED Triggers # # CONFIG_LEDS_TRIGGERS is not set # # Multimedia devices # CONFIG_VIDEO_DEV=y CONFIG_VIDEO_V4L1=y CONFIG_VIDEO_V4L1_COMPAT=y CONFIG_VIDEO_V4L2=y CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set CONFIG_VIDEO_HELPER_CHIPS_AUTO=y CONFIG_VIDEO_TVP5150=y CONFIG_VIDEO_DAVINCI=y # # Video Capture Decoder # # CONFIG_VIDEO_TVP5146 is not set CONFIG_VIDEO_TVP7000=y # CONFIG_VIDEO_CPIA is not set # CONFIG_VIDEO_CPIA2 is not set # CONFIG_VIDEO_SAA5246A is not set # CONFIG_VIDEO_SAA5249 is not set # CONFIG_TUNER_3036 is not set # CONFIG_TUNER_TEA5761 is not set CONFIG_V4L_USB_DRIVERS=y # CONFIG_VIDEO_PVRUSB2 is not set # CONFIG_VIDEO_EM28XX is not set # CONFIG_VIDEO_USBVISION is not set # CONFIG_USB_VICAM is not set # CONFIG_USB_IBMCAM is not set # CONFIG_USB_KONICAWC is not set # CONFIG_USB_QUICKCAM_MESSENGER is not set # CONFIG_USB_ET61X251 is not set # CONFIG_VIDEO_OVCAMCHIP is not set # CONFIG_USB_W9968CF is not set # CONFIG_USB_OV511 is not set # CONFIG_USB_SE401 is not set # CONFIG_USB_SN9C102 is not set # CONFIG_USB_STV680 is not set # CONFIG_USB_ZC0301 is not set # CONFIG_USB_PWC is not set # CONFIG_USB_ZR364XX is not set CONFIG_RADIO_ADAPTERS=y # CONFIG_RADIO_TEA5761 is not set # CONFIG_USB_DSBR is not set # CONFIG_DVB_CORE is not set CONFIG_VIDEO_BUF=y CONFIG_DAB=y # CONFIG_USB_DABUSB is not set # # Graphics support # # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # # Display device support # # CONFIG_DISPLAY_SUPPORT is not set # CONFIG_VGASTATE is not set CONFIG_VIDEO_OUTPUT_CONTROL=y CONFIG_THS8200=y CONFIG_FB=y CONFIG_FIRMWARE_EDID=y # CONFIG_FB_DDC is not set # CONFIG_FB_CFB_FILLRECT is not set # CONFIG_FB_CFB_COPYAREA is not set # CONFIG_FB_CFB_IMAGEBLIT is not set # CONFIG_FB_SYS_FILLRECT is not set # CONFIG_FB_SYS_COPYAREA is not set # CONFIG_FB_SYS_IMAGEBLIT is not set # CONFIG_FB_SYS_FOPS is not set CONFIG_FB_DEFERRED_IO=y # CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set # CONFIG_FB_BACKLIGHT is not set # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set # # Frame buffer hardware drivers # # CONFIG_FB_S1D13XXX is not set # CONFIG_FB_DAVINCI is not set # CONFIG_FB_VIRTUAL is not set CONFIG_FB_DM=y # # Console display driver support # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_LOGO=y CONFIG_LOGO_LINUX_MONO=y CONFIG_LOGO_LINUX_VGA16=y CONFIG_LOGO_LINUX_CLUT224=y # # Sound # CONFIG_SOUND=y # # Advanced Linux Sound Architecture # # CONFIG_SND is not set # # Open Sound System # CONFIG_SOUND_PRIME=y # CONFIG_SOUND_MSNDCLAS is not set # CONFIG_SOUND_MSNDPIN is not set CONFIG_SOUND_DAVINCI=y CONFIG_SOUND_DAVINCI_AIC32=y # CONFIG_SOUND_DAVINCI_AIC33 is not set # # DaVinci Audio Options # # CONFIG_MONOSTEREO_DIFFJACK is not set CONFIG_MONOSTEREO_SAMEJACK=y CONFIG_HID_SUPPORT=y CONFIG_HID=y # CONFIG_HID_DEBUG is not set # # USB Input Devices # CONFIG_USB_HID=m # CONFIG_USB_HIDINPUT_POWERBOOK is not set # CONFIG_HID_FF is not set # CONFIG_USB_HIDDEV is not set # # USB HID Boot Protocol drivers # # CONFIG_USB_KBD is not set # CONFIG_USB_MOUSE is not set CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y # CONFIG_USB_ARCH_HAS_OHCI is not set # CONFIG_USB_ARCH_HAS_EHCI is not set CONFIG_USB=y # CONFIG_USB_DEBUG is not set # # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y CONFIG_USB_DEVICE_CLASS=y # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_OTG is not set # # USB Host Controller Drivers # # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set CONFIG_USB_MUSB_HDRC=y CONFIG_USB_MUSB_SOC=y # # DaVinci 644x USB support # CONFIG_USB_MUSB_HOST=y # CONFIG_USB_MUSB_PERIPHERAL is not set # CONFIG_USB_MUSB_OTG is not set # CONFIG_USB_GADGET_MUSB_HDRC is not set CONFIG_USB_MUSB_HDRC_HCD=y # CONFIG_MUSB_PIO_ONLY is not set # CONFIG_USB_INVENTRA_DMA is not set CONFIG_USB_TI_CPPI_DMA=y CONFIG_USB_MUSB_LOGLEVEL=0 # # USB Device Class drivers # # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # # # may also be needed; see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_DPCM is not set # CONFIG_USB_STORAGE_USBAT is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_STORAGE_ALAUDA is not set # CONFIG_USB_STORAGE_ONETOUCH is not set # CONFIG_USB_STORAGE_KARMA is not set # CONFIG_USB_LIBUSUAL is not set # # USB Imaging devices # # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set CONFIG_USB_MON=y # # USB port drivers # # # USB Serial Converter support # # CONFIG_USB_SERIAL is not set # # USB Miscellaneous drivers # # CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set # CONFIG_USB_AUERSWALD is not set # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set # CONFIG_USB_BERRY_CHARGE is not set # CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_PHIDGET is not set # CONFIG_USB_IDMOUSE is not set # CONFIG_USB_FTDI_ELAN is not set # CONFIG_USB_APPLEDISPLAY is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # # USB DSL modem support # # # USB Gadget Support # CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_DEBUG_FILES is not set CONFIG_USB_GADGET_SELECTED=y # CONFIG_USB_GADGET_AMD5536UDC is not set # CONFIG_USB_GADGET_FSL_USB2 is not set # CONFIG_USB_GADGET_NET2280 is not set # CONFIG_USB_GADGET_PXA2XX is not set CONFIG_USB_GADGET_M66592=y CONFIG_USB_M66592=m # CONFIG_USB_GADGET_GOKU is not set # CONFIG_USB_GADGET_LH7A40X is not set # CONFIG_USB_GADGET_OMAP is not set # CONFIG_USB_GADGET_S3C2410 is not set # CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_DUMMY_HCD is not set CONFIG_USB_GADGET_DUALSPEED=y CONFIG_USB_ZERO=m CONFIG_USB_ETH=m CONFIG_USB_ETH_RNDIS=y CONFIG_USB_GADGETFS=m CONFIG_USB_FILE_STORAGE=m # CONFIG_USB_FILE_STORAGE_TEST is not set CONFIG_USB_G_SERIAL=m # CONFIG_USB_MIDI_GADGET is not set CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set # CONFIG_MMC_UNSAFE_RESUME is not set # # MMC/SD Card Drivers # CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_BOUNCE=y # # MMC/SD Host Controller Drivers # CONFIG_MMC_DAVINCI=y CONFIG_RTC_LIB=y # CONFIG_RTC_CLASS is not set # # DMA Engine support # # CONFIG_DMA_ENGINE is not set # # DMA Clients # # # DMA Devices # # # File systems # CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XATTR is not set # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y # CONFIG_EXT3_FS_POSIX_ACL is not set # CONFIG_EXT3_FS_SECURITY is not set # CONFIG_EXT4DEV_FS is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set CONFIG_XFS_FS=m # CONFIG_XFS_QUOTA is not set # CONFIG_XFS_SECURITY is not set # CONFIG_XFS_POSIX_ACL is not set # CONFIG_XFS_RT is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set CONFIG_MINIX_FS=m # CONFIG_ROMFS_FS is not set CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_QUOTA is not set CONFIG_DNOTIFY=y # CONFIG_AUTOFS_FS is not set CONFIG_AUTOFS4_FS=m CONFIG_FUSE_FS=y # # CD-ROM/DVD Filesystems # # CONFIG_ISO9660_FS is not set # CONFIG_UDF_FS is not set # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_NTFS_FS is not set # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y CONFIG_TMPFS=y # CONFIG_TMPFS_POSIX_ACL is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y # CONFIG_CONFIGFS_FS is not set # # Miscellaneous filesystems # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set CONFIG_YAFFS_FS=y CONFIG_YAFFS_YAFFS1=y # CONFIG_YAFFS_9BYTE_TAGS is not set # CONFIG_YAFFS_DOES_ECC is not set CONFIG_YAFFS_YAFFS2=y CONFIG_YAFFS_AUTO_YAFFS2=y # CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set # CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set # CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y # CONFIG_JFFS2_SUMMARY is not set # CONFIG_JFFS2_FS_XATTR is not set # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y # CONFIG_JFFS2_RUBIN is not set CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # # Network File Systems # CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_NFS_V3_ACL is not set # CONFIG_NFS_V4 is not set # CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y # CONFIG_NFSD_V3_ACL is not set # CONFIG_NFSD_V4 is not set CONFIG_NFSD_TCP=y CONFIG_ROOT_NFS=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y # CONFIG_SUNRPC_BIND34 is not set # CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set CONFIG_SMB_FS=m # CONFIG_SMB_NLS_DEFAULT is not set # CONFIG_CIFS is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set # # Partition Types # CONFIG_PARTITION_ADVANCED=y # CONFIG_ACORN_PARTITION is not set # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set # CONFIG_ATARI_PARTITION is not set # CONFIG_MAC_PARTITION is not set CONFIG_MSDOS_PARTITION=y # CONFIG_BSD_DISKLABEL is not set # CONFIG_MINIX_SUBPARTITION is not set # CONFIG_SOLARIS_X86_PARTITION is not set # CONFIG_UNIXWARE_DISKLABEL is not set # CONFIG_LDM_PARTITION is not set # CONFIG_SGI_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set # CONFIG_KARMA_PARTITION is not set # CONFIG_EFI_PARTITION is not set # CONFIG_SYSV68_PARTITION is not set # # Native Language Support # CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set # CONFIG_NLS_CODEPAGE_850 is not set # CONFIG_NLS_CODEPAGE_852 is not set # CONFIG_NLS_CODEPAGE_855 is not set # CONFIG_NLS_CODEPAGE_857 is not set # CONFIG_NLS_CODEPAGE_860 is not set # CONFIG_NLS_CODEPAGE_861 is not set # CONFIG_NLS_CODEPAGE_862 is not set # CONFIG_NLS_CODEPAGE_863 is not set # CONFIG_NLS_CODEPAGE_864 is not set # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set # CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set CONFIG_NLS_ASCII=m CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set # CONFIG_NLS_ISO8859_4 is not set # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_U is not set CONFIG_NLS_UTF8=m # # Distributed Lock Manager # # CONFIG_DLM is not set # # Profiling support # # CONFIG_PROFILING is not set # # Kernel hacking # # CONFIG_PRINTK_TIME is not set CONFIG_ENABLE_MUST_CHECK=y # CONFIG_MAGIC_SYSRQ is not set # CONFIG_UNUSED_SYMBOLS is not set # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_KERNEL is not set # CONFIG_DEBUG_BUGVERBOSE is not set CONFIG_FRAME_POINTER=y # CONFIG_DEBUG_USER is not set # # Security options # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set CONFIG_CRYPTO=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_MANAGER=y # CONFIG_CRYPTO_HMAC is not set # CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_MD4 is not set # CONFIG_CRYPTO_MD5 is not set # CONFIG_CRYPTO_SHA1 is not set # CONFIG_CRYPTO_SHA256 is not set # CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_GF128MUL is not set CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_CBC=m CONFIG_CRYPTO_PCBC=m # CONFIG_CRYPTO_LRW is not set # CONFIG_CRYPTO_CRYPTD is not set # CONFIG_CRYPTO_DES is not set # CONFIG_CRYPTO_FCRYPT is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_TWOFISH is not set # CONFIG_CRYPTO_SERPENT is not set # CONFIG_CRYPTO_AES is not set # CONFIG_CRYPTO_CAST5 is not set # CONFIG_CRYPTO_CAST6 is not set # CONFIG_CRYPTO_TEA is not set CONFIG_CRYPTO_ARC4=y # CONFIG_CRYPTO_KHAZAD is not set # CONFIG_CRYPTO_ANUBIS is not set # CONFIG_CRYPTO_DEFLATE is not set # CONFIG_CRYPTO_MICHAEL_MIC is not set # CONFIG_CRYPTO_CRC32C is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_TEST is not set CONFIG_CRYPTO_HW=y # # Library routines # CONFIG_BITREVERSE=y CONFIG_CRC_CCITT=m # CONFIG_CRC16 is not set # CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y # CONFIG_CRC7 is not set # CONFIG_LIBCRC32C is not set CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_PLIST=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y # Entry: ARM926EJ-S and floating point Date: Sat Jul 25 12:06:50 CEST 2009 Looking at this[1] I wonder what this is about: Linux does not currently support floating point hardware so you need to say Y here even if your machine has an FPA or floating point co-processor podule. I needed to enable CONFIG_FPE_NWFPE to make the debian binaries work. < CONFIG_FPE_NWFPE=y > # CONFIG_FPE_NWFPE is not set I wonder why this wasn't necessary for the neuros userland.. Maybe because it's uclibc? So, does the davinci Arm have float support? It doesn't look like it (no `fpu' in /proc/cpuinfo). From here[4] no mention of FPU either, only fixed point DSP extensions (single cycle mac and 16x32 bit multiplier). It uses the ARMv5TEJ instruction set[5]. Makes sense, since the DSP is also fixed point. Are there any Arm chips with float support? [1] http://cateee.net/lkddb/web-lkddb/FPE_NWFPE.html [2] http://www.arm.linux.org.uk/mailinglists/faq.php#f3 [3] http://focus.ti.com/docs/prod/folders/print/tms320dm365.html [4] http://www.arm.com/products/CPUs/ARM926EJ-S.html [5] http://www.arm.com/products/CPUs/architecture.html Entry: Debian eabi Date: Sat Jul 25 12:29:01 CEST 2009 So it's clear that in order to run the TI code on a system with debian libs I need to install the eabi version. It looks like (yeah!) the toolchain is called `eabi' but the distro is called `armel'. debootstrap --arch armel --foreign lenny debian-armel http://debian.i/debian The 2nd stage needs to be executed on the arm: chroot /debian-armel /debootstrap/debootstrap --second-stage Doesn't work: Illegal instruction. Now I'm really confused. This probably needs the CONFIG_AEABI=y and related options for emulation in the kernel config. But what I don't understand is why it seems that the TI .a files use the new abi (because gcc-arm-gnueabi-gcc is able to link it) that doesn't seem to be the case. This is confusing stuff.. Let's try to build the kernel with eabi support. Hmm.. looks like this needs a newer GCC. Maybe I use the debian GCC to compile it? First it needs uboot: apt-get install uboot-mkimage Then it needs the whole shebang specified: make -j 6 \ CC=arm-linux-gnueabi-gcc \ LD=arm-linux-gnueabi-ld \ AR=arm-linux-gnueabi-ar \ AS=arm-linux-gnueabi-as \ NM=arm-linux-gnueabi-nm \ OBJCOPY=arm-linux-gnueabi-objcopy \ OBJDUMP=arm-linux-gnueabi-objdump \ INSTALL_MOD_PATH=/tmp/osd2 \ uImage modules_install I first tried with only CC but that then used some of the old toolchain's components that were in the path. Ok. It boots and runs the eabi binaries. /debian-armel is now bootstrapped. Let's see if it runs the scheme. It starts the app, but I get this: CMEM Error: init: Failed to open /dev/cmem: 'No such file or directory' Looks like there are a couple of problems with the new kernel.. cmem and dsplink need to be loaded. see /etc/init.d/ti-modules [1] http://wiki.debian.org/ArmEabiHowto [2] entry://20090725-113128 Entry: Montavista with debugging symbols Date: Sat Jul 25 12:42:43 CEST 2009 I wonder if the debugging libs are simply not included by neuros? Maybe the TI download has a Montavista toolchain with debugging libs? All DaVinci tools search[1]. Maybe I'm looking for the DVSDK[2]? It's probably here[3] then click on MVL 5.0 System Tools [needed for all platforms]. The libraries in montavista/pro/devkit/arm/v5t_le/target/lib are not stripped. target/ is a 1.4G tree. the rest is .mvl (rpm v3) packages. [1] http://focus.ti.com/dsp/docs/dspfindtoolswresults.tsp?sectionId=3&tabId=1620&familyId=1302&toolTypeId=24&go=Go [2] http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-dv.html [3] http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/2_00_00_22/index_FDS.html [4] http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/2_00_00_22//exports/mvl_5_0_0801921_demo_sys_setuplinux.bin Entry: compiling cmemk and dsplinkk from source Date: Sat Jul 25 14:39:32 CEST 2009 ... Entry: debugging symbols Date: Sat Jul 25 14:40:38 CEST 2009 Wait. Maybe I missed something: does gdb need debugging symbols to be able to catch the pthread signals, or just linker symbols? This[1] might be the reason. Using the following command file some errors disappear, but I'm still getting the SIG32: set confirm off set solib-absolute-prefix /opt/xc/osd2/rootfs/fs/ file test target remote neuros:12345 break debug continue [New Thread 908] BFD: /opt/xc/osd2/rootfs/fs/lib/ld-linux.so.3: warning: sh_link not set for section `.ARM.exidx' BFD: /opt/xc/osd2/rootfs/fs/lib/ld-linux.so.3: warning: sh_link not set for section `.ARM.exidx' BFD: /opt/debian-lenny-i386/opt/xc/osd2/rootfs/default/lib/ld-linux.so.3: warning: sh_link not set for section `.ARM.exidx' warning: Unable to find dynamic linker breakpoint function. GDB will be unable to debug shared library initializers and track explicitly loaded dynamic code. 0x40000790 in ?? () from /opt/xc/osd2/rootfs/fs/lib/ld-linux.so.3 Breakpoint 1 at 0xb0bc: file test.c, line 264. BFD: /opt/xc/osd2/rootfs/fs/lib/libpthread.so.0: warning: sh_link not set for section `.ARM.exidx' BFD: /opt/xc/osd2/rootfs/fs/lib/libc.so.6: warning: sh_link not set for section `.ARM.exidx' BFD: /opt/debian-lenny-i386/opt/xc/osd2/rootfs/default/lib/libpthread.so.0: warning: sh_link not set for section `.ARM.exidx' BFD: /opt/debian-lenny-i386/opt/xc/osd2/rootfs/default/lib/libc.so.6: warning: sh_link not set for section `.ARM.exidx' Program received signal SIG32, Real-time event 32. 0x40028e10 in ?? () from /opt/xc/osd2/rootfs/fs/lib/libpthread.so.0 (gdb) BUT.. with a couple of `continues' after this, it finally stops at the breakpoint. Let's simply add these to the startup script. Yep. It starts fine now. [1] http://stackoverflow.com/questions/84341/how-do-i-prepend-a-directory-the-library-path-when-loading-a-core-file-in-gdb-on Entry: todo Date: Sat Jul 25 14:42:01 CEST 2009 weekend: Play a bit more with tinyscheme. Make sure it can throw errors. DONE See how to use PLT Scheme as macro preprocessor. later: - check debug libs path problem DONE - check montavista debug libraries DONE - compile dsplink cmem from source Entry: linker adventures Date: Mon Jul 27 14:21:29 CEST 2009 When linking an application with a couple of .o files it will only take the objects actually needed. Now, how can this be overridden? I.e. I want to include stuff into an application so that the app can dlopen() a .so that uses functions from the object. I don't know how to fix this other than putting everything in a shared library and write a small wrapper app around the lib. Use the -rdynamic flag passed to gcc - it will then pass the correct options to the linker. Entry: Davinci kernel on OSD2 Date: Mon Jul 27 16:58:01 CEST 2009 [1] http://www.zerobeat.in/wiki/doku.php?id=osd2_kernel Entry: instantiating viddec Date: Tue Jul 28 18:16:10 CEST 2009 With the right params it was possible to instantiate a video decoder. Can only instantiate mpeg4dec once, but mpeg2dec multiple times. NEXT: look at VLC's DecodeVideoBlockInner in viddec.c and wrap the basic ops as tinyscheme primitives. As far as I understand, this needs a demux operation on an mpeg file, which should produce blocks that can be fed to the decoder. App should manage memory, so i've added a `viddec_iobufs' that queries the viddec and allocates buffers. Next is VIDDEC_process() which takes a compressed frame and performs the decompression. So.. How to get at a sequence of compressed frames? Maybe it's simplest to start experimenting with decoders first? Entry: contiguous buffers Date: Wed Jul 29 15:04:29 CEST 2009 This cought my attention: The buffers in @c inBufs and @c outBufs are physically contiguous and owned by the calling application. What is that supposed to mean? `physically' contiguous I'm not sure I can control. VLC uses Memory_contigAlloc(). Looks like this function is from TI libs. Defined in ti/lib/common/osal_dsplink_linux.a Ok, so DSP doesn't use virtual memory. Entry: TI docs + examples Date: Wed Jul 29 17:05:44 CEST 2009 After reading some code it's time to go for the docs[1]. For the codec engine there doesn't seem to be too much to know. The page does contain some interesting remarks about the buffer memory, which is in memory shared by the GPP and DSP. It notes that in order to ensure contiguous memory for codec _instances_ one might need to be careful with the order of codec create and delete operations. The leaky abstraction fun starts right here!! So let's have a look at an encoder example. Where to find? In codec_engine_2_24.tar.gz from here[4]. First, let's list the acronyms again: CE codec engine FC framework components (resource management) SDO (not specified.. includes CE and FC) XDM eXpressDSP Digital Media XDAIS eXpressDSP Algorithm Interoperability Standard XDC eXpressDSP Components VISA video image speech audio (APIs \in XDM) Apparently there is a scripting language[5] for the XDC packaging system based on JavaScript 1.5 (Mozilla Rhino). Good for TI. Looks like it is used in the red-tape part of the codec engine. In codec_engine_2_24/examples/ti/sdo/ce/examples/codecs/videnc_copy is an example of how to write a codec. It doesn't look too bad. Mostly DMA start+wait to get the data from shared memory to local (SRAM?) and back. But that's not what I want right now. Using the CE is demonstrated in codec_engine_2_24/examples/ti/sdo/ce/examples/apps. Let's looks at vidtranscode/app.c first. It uses the VIDTRANSCODE_* api. [1] http://tiexpressdsp.com/index.php/Codec_Engine_Application_Developers_Guide [2] http://tiexpressdsp.com/index.php/Codec_Engine_FAQ [3] http://wiki.davincidsp.com/index.php/Codec_Engine_Examples [4] http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent//CE/index.html [5] http://focus.ti.com/lit/ug/spruex4/spruex4.pdf Entry: XDM 0.9 deprecated interface Date: Thu Jul 30 09:41:08 CEST 2009 [1] http://wiki.davincidsp.com/index.php/XDM_1.x_Semantics Entry: test signals Date: Thu Jul 30 10:01:37 CEST 2009 OK. It looks like the codec is actually doing something. It gives skipped frames probably because the input isn't different enough? When I set Iframe interval to 1 it gives a sequence of Iframes. So.. Let's look at what actually comes out. Concatenating 3 frames to the file /tmp/mpeg gives: tom@zzz:/opt/nfsroot/neuros/tmp$ file mpeg mpeg: MPEG sequence, v4, video tom@zzz:/opt/nfsroot/neuros/tmp$ mplayer mpeg Playing mpeg. libavformat file format detected. [lavf] Video stream found, -vid 0 VIDEO: [FMP4] 720x576 0bpp 30000.000 fps 0.0 kbps ( 0.0 kbyte/s) ========================================================================== Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4) ========================================================================== Audio: no sound Starting playback... VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12) VDec: using Planar YV12 as output csp (no 0) Movie-Aspect is 1.25:1 - prescaling to correct movie aspect. VO: [xv] 720x576 => 720x576 Planar YV12 No pts value from demuxer to use for frame! pts after filters MISSING No pts value from demuxer to use for frame!,?% 0 0 pts after filters MISSING V:-9223372036854775808.0 0/ 0 ??% ??% ??,?% 0 0 Exiting... (End of file) Dumping a bit more it seems to be able to play it. Alright. The rest seems to be tweaking. However it is much slower than I expected. Entry: demuxer Date: Thu Jul 30 10:53:49 CEST 2009 Apparently the MPEG4 container design is based[3] on Quicktime[2]? This is a nice surprise. Let's write a quicktime->s-exp parser. An interesting excercise. The mpeg4/quicktime format is a binary format which encodes a tree. I'm wondering how to write a parser without knowing all the data types. The main distinction seems to be between leaf nodes and container nodes (files and directories). The decision to be made is to descend and parse a list of atoms or access raw data. Based on the container tags (moov trak edts mdia minf stbl), a full parse of an .mp4 file from www.ted.com is: ((ftyp 8 16) (moov (mvhd 40 100) (trak (tkhd 156 84) (edts (elst 256 20)) (mdia (mdhd 292 24) (hdlr 324 50) (minf (vmhd 390 12) (dinf 410 28) (stbl (stsd 454 164) (stts 626 16) (stss 650 892) (stsc 1550 52580) (stsz 54138 105936) (stco 160082 17632))))) (trak (tkhd 177730 84) (edts (elst 177830 20)) (mdia (mdhd 177866 24) (hdlr 177898 50) (minf (smhd 177964 8) (dinf 177980 28) (stbl (stsd 178024 83) (stts 178115 16) (stsc 178139 61256) (stsz 239403 190080) (stco 429491 20424))))) (udta 449923 432774)) (free 882705 2040) (mdat 884753 62229870)) The parser is here[6]. The numbers indicate start and endx of the contained data. Apparently mdat is raw data (not a concatenated container list). It seems to contain raw data that is indexed from the structured header. I need a decent spec of the box structures. [5] isn't so great.. I don't understand the 'OR'. [1] http://wiki.multimedia.cx/index.php?title=FFmpeg_demuxer_howto [2] http://wiki.multimedia.cx/index.php?title=QuickTime_container [3] http://www.chiariglione.org/mpeg/standards/MPEG-4/MPEG-4.htm#10.9 [4] http://en.wikipedia.org/wiki/MPEG-4_Part_14 [5] http://www.geocities.com/xhelmboyx/quicktime/formats/mp4-layout.txt [6] http://zwizwa.be/darcs/plt/plt/mpeg4.ss [7] http://www.digitalpreservation.gov/formats/fdd/fdd000155.shtml Entry: next Date: Fri Jul 31 12:30:19 CEST 2009 So, what's next? I'm really almost done. It would be interesting to figure out how to perform playback on the OSD2 so I could actually use it on a TV screen.. Next: - demux a mpeg4/qt stream's mdata - OSD2 playback - whole chain: C6000 asm to codec engine Entry: autowrap Date: Fri Jul 31 15:34:06 CEST 2009 This scheme stuff is nice, but there is still too much effort in wrapping the C<->scheme functions. I'd like to automate that from header files. IN: .h file with functions operating on type_xxx C types. OUT: .c file with typechecker wrapper functions Infortunately, the problem isn't that simple. In many cases one really wants to mix C types and scheme objects in the same function. So, let's approach the problem differently. Is it possible to fully split C and Scheme? One idea is going through my head: it is really just lists and 'cons' that are problematic, so use generators instead of lists, and make functions use single assignment? Delimited continuations (segments of the C stack) are useful ways to represent iteration over data structures. Can this be used to solve the problem elegantly? Entry: towards autowrap: replacing data structures with enumerators Date: Mon Aug 3 11:52:09 CEST 2009 So, what is needed is a clean separation between C code and external code. This means that given a C function spec, a function that does _not_ depend on the scripting side's memory and control model should be automatically wrappable. As a concrete example I'm going to take the algo_info() function in test.c : it takes a string input argument and produces a table. This contains the following problems: * read data (pointer) * write data (pointer, integer) * suspension with communication The idea is to turn this into a pure, non-consing C function and a wrapper. 1. It is simplest to make all memory (object pointers) owned by the external mechanism. However, this doesn't work because an externally provided object might need to be retained during the life of the task. The Scheme GC should just keep the args alive, that might be simplest. This requires transitive mark(). 2. How can argument passing across "yield" be abstracted properly? C's semantics only allows a single return value, allowing yield() do transfer only a single value. Will this get us in trouble due to absence of containers? Is a single argument abstraction to strong? It can always be extended using struct values, which are quite straightforward to wrap. See [1]. Essentially it's about the slogan: ``C primitive shouldn't CONS. Replace all data structures with serial protocols.'' So, I'm rediscovering concurrency-oriented programming by looking for the simplest way to interface C code with more exotic memory and control mechanisms. What remains is tasks + first and second order functions! Given a set of pure C functions, wrappers that integrate and possibly transform this code are quite straightforward to write. In the end it sounds quite plausible: eliminate state, so the only remaining state is the continuation! I replaced all functions in test.c to use the new yield syntax. This can be simplified further to traversal syntax and automatic inversion. If I'm going this route, I do need a cheaper context switch: stack copying is out of the question. Also, this is worth a separate project `cprim'. [1] entry://../compsci/20090803-143610 Entry: cross compiling linux kernel (linux-davinci) Date: Sat Feb 20 09:12:00 CET 2010 git clone git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci.git cd linux-davinci make ARCH=arm CROSS_COMPILE=arm-linux-uclibcgnueabi- menuconfig System Type -> ARM system type -> TI DaVinci TI DaVinci Implementations -> DaVinci 644x based system -> Neuros OSD2 Open Television Set Top Box To make it link I also had to: * disable VGA console * enable I2C Hardware Bus support -> DaVinci I2C driver * built-in: "I2C support" * built-in: "PHY Device support and infrastructure" [1] http://wiki.davincidsp.com/index.php?title=DaVinci_GIT_Linux_Kernel Entry: Got another board: MP4900-BRD-DM6446-32 Date: Fri Mar 12 15:13:13 CET 2010 jketreno@linux.intel.com> Sending DHCP requests . Corporation Sending DHCP requests . Corporation Sending DHCP requests . U-Boot 1.1.4 (Sep 5 2006 - 09:23:24) U-Boot code: 81080000 -> 810B0468 BSS: -> 810E5568 RAM Configuration: Bank #0: 80000000 128 MB MY AMD Flash: 16 MB In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 Reset IDE: palm_bk3710_setpiomode: Set PIO Mode 0, cycletime 0 palm_bk3710_setpiomode: Cycletime adjusted to 600 palm_bk3710_setpiomode: t0=50 t2=13 t2i=35 palm_bk3710_setpiomode: datastb=0x000d datarcvr=0x0023 regstb=0x0018 regrcvr=0x0018 palm_bk3710_setpiomode: Set PIO Mode 0, cycletime 0 palm_bk3710_setpiomode: Cycletime adjusted to 600 palm_bk3710_setpiomode: t0=50 t2=13 t2i=35 palm_bk3710_setpiomode: datastb=0x0d0d datarcvr=0x2323 regstb=0x1818 regrcvr=0x1818 Bus 0: OK Device 0: Model: HTS721060G9AT00 Firm: MC3OA51A Ser#: PM3D213YVG2KEX Type: Hard Disk Capacity: 57231.5 MB = 55.8 GB (117210240 x 512) 1289356 bytes read ## Booting image at 82000000 ... Image Name: Linux-2.6.18 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1289292 Bytes = 1.2 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK OK Starting kernel ... Uncompressing Linu.................................................................................. done, booting the Linux version 2.6.18 (bspuser@hone-1) (gcc version 3.4.6) #3 PREEMPT Tue Aug 19 17:57:08 CEST 2008 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 Machine: IT DM644X-10 Memory policy: ECC disabled, Data cache writeback CPU0: D VIVT write-back cache CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets Built 1 zonelists. Total pages: 6656 Kernel command line: console=ttyS0,115200n8 root=/dev/hda1 rw ip=::::dx644-3::dhcp mem=26M eth=80:4C:EF:54:87:0A TI DaVinci EMAC: Kernel Boot params Eth address: 80:4C:EF:54:87:0A PID hash table entries: 128 (order: 7, 512 bytes) Console: colour dummy device 80x30 Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) Memory: 26MB = 26MB total Memory: 23652KB available (2184K code, 393K data, 100K init) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 Registered USB platform device. Registered USB platform device. I2C: Toggle clock to clear THS7353 false ACK NET: Registered protocol family 2 IP route cache hash table entries: 256 (order: -2, 1024 bytes) TCP established hash table entries: 1024 (order: 0, 4096 bytes) TCP bind hash table entries: 512 (order: -1, 2048 bytes) TCP: Hash tables configured (established 1024 bind 512) TCP reno registered Initialize I2C expanders for ITDM644x NetWinder Floating Point Emulator V0.97 (double precision) JFFS2 version 2.2. (NAND) (SUMMARY) (C) 2001-2006 Red Hat, Inc. Initializing Cryptographic API io scheduler noop registered io scheduler anticipatory registered (default) Serial: 8250/16550 driver $Revision: 1.5 $ 3 ports, IRQ sharing disabled serial8250: ttyS0 at MMIO 0xe1420000 (irq = 40) is a 16550A RAMDISK driver initialized: 1 RAM disks of 8192K size 1024 blocksize TI DaVinci EMAC: MAC address is 80:4C:EF:54:87:0A TI DaVinci EMAC Linux version updated 4.0 TI DaVinci EMAC: Installed 1 instances. i2c /dev entries driver TCP bic registered NET: Registered protocol family 1 NET: Registered protocol family 17 ieee80211: 802.11 data/management/control stack, git-1.1.13 ieee80211: Copyright (C) 2004-2005 Intel Corporation Sending DHCP requests ...... Entry: Beagleboard Date: Mon Apr 19 10:13:07 EDT 2010 Maybe time to get a beagleboard[1]. Man, a year has passed since I got the OSD2 and I didn't really use it for anything. Two important questions: * "what works?" in the open-source sense, i.e. how much restriction is there on proprietary components (the stuff that runs on the DSP). * How does the OMAP3530 chip differ from the DaVinci DM644x [1] http://en.wikipedia.org/wiki/Beagle_Board Entry: DaVinci HD-VICP Date: Mon Apr 19 10:59:53 EDT 2010 Video[1] about the DM6467 HD-VICP. For video ecoding/decoding, many functions are fixed in standards so they can be implemented in hardware: - motion compensation - motion estimation - DC transform + inverse - quantization + inverse - inter/intra prediction - entropy coding - deblocking The video talks about 2/3 -> 1 chip for 720p encoding. These functions are available[2] to the codec designer, and not only shrink-wrapped codec software provided by TI. The VICP is a SIMD 8 x 8/16 MAC engine. There are 3 libraries (royalty-free code): high-level signal processing, and low-level computation and scheduling units. [1] http://www.youtube.com/watch?v=i0nrtE38Wk4 [2] http://e2e.ti.com/videos/m/digital_media_processors/108983.aspx [3] http://www.ti.com/vicp Entry: BeagleBoard-XM boot console log Date: Sat Jun 15 17:01:23 EDT 2013 Texas Instruments X-Loader 1.5.0 (Mar 27 2011 - 17:37:56) Beagle xM Reading boot sector Loading u-boot.bin from mmc U-Boot 2011.03-rc1-00000-g9a3cc57-dirty (Apr 01 2011 - 17:41:42) OMAP36XX/37XX-GP ES2.1, CPU-OPP2, L3-165MHz, Max CPU Clock 1 Ghz OMAP3 Beagle board + LPDDR/NAND I2C: ready DRAM: 512 MiB NAND: 0 MiB MMC: OMAP SD/MMC: 0 *** Warning - readenv() failed, using default environment In: serial Out: serial Err: serial Beagle xM Rev C No EEPROM on expansion board Die ID #2fa800029ff80000016842c91001a021 Hit any key to stop autoboot: 0 OMAP3 beagleboard.org # boot boot The user button is currently NOT pressed. SD/MMC found on device 0 reading uEnv.txt 134 bytes read Loaded environment from uEnv.txt Importing environment from mmc ... Loading file "/boot/uImage" from mmc device 0:2 (xxa2) 3194256 bytes read Booting from mmc ... ## Booting kernel from Legacy Image at 80200000 ... Image Name: Angstrom/2.6.32/beagleboard Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3194192 Bytes = 3 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux................................................................................................................................................................................................................ done, booting the kernel. [ 0.000000] Linux version 2.6.32 (koen@dominion) (gcc version 4.3.3 (GCC) ) #3 PREEMPT Thu Mar 17 08:56:19 CET 2011 [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f [ 0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache [ 0.000000] Machine: OMAP3 Beagle Board [ 0.000000] Memory policy: ECC disabled, Data cache writeback [ 0.000000] OMAP3630/DM3730 ES1.0 (l2cache iva sgx neon isp 192mhz_clk ) [ 0.000000] SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x100000 [ 0.000000] Reserving 16777216 bytes SDRAM for VRAM [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 omapdss.def_disp=dvi root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait [ 0.000000] Beagle expansionboard: none [ 0.000000] Beagle cameraboard: lbcm3m1 [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Memory: 256MB 256MB = 512MB total [ 0.000000] Memory: 496256KB available (5884K code, 671K data, 204K init, 0K highmem) [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:402 [ 0.000000] Clocking rate (Crystal/Core/MPU): 26.0/332/600 MHz [ 0.000000] Reprogramming SDRC clock to 332000000 Hz [ 0.000000] GPMC revision 5.0 [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts [ 0.000000] Total of 96 interrupts on 1 active controller [ 0.000000] OMAP GPIO hardware version 2.5 [ 0.000000] OMAP clockevent source: GPTIMER12 at 32768 Hz [ 0.000000] Console: colour dummy device 80x30 [ 0.000000] console [tty0] enabled [ 0.000000] Calibrating delay loop... 505.22 BogoMIPS (lpj=1974272) [ 0.000000] Mount-cache hash table entries: 512 [ 0.000000] CPU: Testing write buffer coherency: ok [ 0.000000] tmpfs: No value for mount option 'mode' [ 0.000000] devtmpfs: initialized [ 0.000000] regulator: core version 0.5 [ 0.000000] NET: Registered protocol family 16 [ 0.000000] OMAP3 Beagle Rev: xM C [ 0.000000] Beagle cameraboard: registering i2c2 bus for lbcm3m1 [ 0.000000] Found NAND on CS0 [ 0.000000] Registering NAND on CS0 [ 0.000000] Unable to get DVI reset GPIO [ 0.000000] omap_init_mbox: platform not supported [ 0.000000] Target VDD1 OPP = 4, VDD2 OPP = 2 [ 69.861450] OMAP DMA hardware revision 5.0 [ 69.867645] bio: create slab at 0 [ 69.868896] SCSI subsystem initialized [ 69.870208] usbcore: registered new interface driver usbfs [ 69.870452] usbcore: registered new interface driver hub [ 69.870635] usbcore: registered new device driver usb [ 69.883514] i2c_omap i2c_omap.1: bus 1 rev4.0 at 2600 kHz [ 69.886169] twl4030: PIH (irq 7) chaining IRQs 368..375 [ 69.886230] twl4030: power (irq 373) chaining IRQs 376..383 [ 69.886505] twl4030: gpio (irq 368) chaining IRQs 384..401 [ 69.888244] regulator: VUSB1V5: 1500 mV normal standby [ 69.888488] regulator: VUSB1V8: 1800 mV normal standby [ 69.888702] regulator: VUSB3V1: 3100 mV normal standby [ 69.889984] twl4030_usb twl4030_usb: Initialized TWL4030 USB module [ 69.890441] regulator: VMMC1: 1850 <--> 3150 mV normal standby [ 69.890716] regulator: VDAC: 1800 mV normal standby [ 69.890960] regulator: VPLL2: 1800 mV normal standby [ 69.891235] regulator: VSIM: 1800 <--> 3000 mV normal standby [ 69.891601] regulator: VAUX3: 1800 mV normal standby [ 69.891967] regulator: VAUX4: 1800 mV normal standby [ 69.892150] i2c_omap i2c_omap.2: bus 2 rev4.0 at 400 kHz [ 69.892456] i2c_omap i2c_omap.3: bus 3 rev4.0 at 100 kHz [ 69.893768] Switching to clocksource 32k_counter [ 69.903045] musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0 [ 69.907073] musb_hdrc: USB OTG mode controller at fa0ab000 using DMA, IRQ 92 [ 69.907104] musb_hdrc musb_hdrc: MUSB HDRC host driver [ 69.907257] musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1 [ 69.907409] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 69.907470] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 69.907501] usb usb1: Product: MUSB HDRC host driver [ 69.907531] usb usb1: Manufacturer: Linux 2.6.32 musb-hcd [ 69.907562] usb usb1: SerialNumber: musb_hdrc [ 69.908203] hub 1-0:1.0: USB hub found [ 69.908264] hub 1-0:1.0: 1 port detected [ 69.909332] NET: Registered protocol family 2 [ 69.909637] IP route cache hash table entries: 4096 (order: 2, 16384 bytes) [ 69.910186] TCP established hash table entries: 16384 (order: 5, 131072 bytes) [ 69.910614] TCP bind hash table entries: 16384 (order: 4, 65536 bytes) [ 69.910858] TCP: Hash tables configured (established 16384 bind 16384) [ 69.910888] TCP reno registered [ 69.910919] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 69.910980] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 69.911224] NET: Registered protocol family 1 [ 69.911682] RPC: Registered udp transport module. [ 69.911712] RPC: Registered tcp transport module. [ 69.911743] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 69.912658] omap-iommu omap-iommu.0: isp registered [ 69.914398] VFS: Disk quotas dquot_6.5.2 [ 69.914520] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 69.915618] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 69.916442] JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. [ 69.917297] msgmni has been set to 969 [ 69.921051] alg: No test for stdrng (krng) [ 69.921386] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254) [ 69.921417] io scheduler noop registered [ 69.921447] io scheduler deadline registered [ 69.921630] io scheduler cfq registered (default) [ 69.979980] OMAP DSS rev 2.0 [ 69.980072] OMAP DISPC rev 3.0 [ 69.980133] OMAP VENC rev 2 [ 69.980377] OMAP DSI rev 1.0 [ 70.316894] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 70.334991] serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16654 [ 70.352478] serial8250.1: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16654 [ 70.369903] serial8250.2: ttyS2 at MMIO 0x49020000 (irq = 74) is a ST16654 [ 70.950469] console [ttyS2] enabled [ 70.960662] brd: module loaded [ 70.967010] loop: module loaded [ 70.971527] omap2-nand driver initializing [ 70.976013] No NAND device found!!! [ 70.979705] No NAND device found!!! [ 70.984252] usbcore: registered new interface driver catc [ 70.989776] catc: v2.8:CATC EL1210A NetMate USB Ethernet driver [ 70.995849] usbcore: registered new interface driver kaweth [ 71.001495] pegasus: v0.6.14 (2006/09/27), Pegasus/Pegasus II USB Ethernet driver [ 71.009155] usbcore: registered new interface driver pegasus [ 71.014892] rtl8150: v0.6.2 (2004/08/27):rtl8150 based usb-ethernet driver [ 71.021911] usbcore: registered new interface driver rtl8150 [ 71.027740] usbcore: registered new interface driver asix [ 71.033264] usbcore: registered new interface driver cdc_ether [ 71.039245] usbcore: registered new interface driver dm9601 [ 71.044982] usbcore: registered new interface driver smsc95xx [ 71.050903] usbcore: registered new interface driver gl620a [ 71.056579] usbcore: registered new interface driver net1080 [ 71.062408] usbcore: registered new interface driver plusb [ 71.068054] usbcore: registered new interface driver rndis_host [ 71.074127] usbcore: registered new interface driver cdc_subset [ 71.080169] usbcore: registered new interface driver zaurus [ 71.085906] usbcore: registered new interface driver MOSCHIP usb-ethernet driver [ 71.093994] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 71.100860] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller [ 71.106903] ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 2 [ 71.114532] ehci-omap ehci-omap.0: irq 77, io mem 0x48064800 [ 71.128295] ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00 [ 71.134185] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002 [ 71.141082] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 71.148406] usb usb2: Product: OMAP-EHCI Host Controller [ 71.153808] usb usb2: Manufacturer: Linux 2.6.32 ehci_hcd [ 71.159271] usb usb2: SerialNumber: ehci-omap.0 [ 71.164520] hub 2-0:1.0: USB hub found [ 71.168395] hub 2-0:1.0: 3 ports detected [ 71.198699] Initializing USB Mass Storage driver... [ 71.203826] usbcore: registered new interface driver usb-storage [ 71.209930] USB Mass Storage support registered. [ 71.214965] mice: PS/2 mouse device common for all mice [ 71.220642] input: gpio-keys as /devices/platform/gpio-keys/input/input0 [ 71.228454] input: twl4030_pwrbutton as /devices/platform/i2c_omap.1/i2c-1/1-0049/twl4030_pwrbutton/input/input1 [ 71.239227] i2c /dev entries driver [ 71.243347] Linux video capture interface: v2.00 [ 71.248352] omap-iommu omap-iommu.0: isp: version 1.1 [ 71.254730] vpfe_init [ 71.257629] OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec [ 71.370849] mmci-omap-hs mmci-omap-hs.1: err -16 configuring card detect [ 71.377929] Registered led device: beagleboard::usr0 [ 71.383117] Registered led device: beagleboard::usr1 [ 71.389709] Registered led device: beagleboard::pmu_stat [ 71.396789] usbcore: registered new interface driver usbhid [ 71.402496] usbhid: USB HID core driver [ 71.406524] Advanced Linux Sound Architecture Driver Version 1.0.21. [ 71.413482] usbcore: registered new interface driver snd-usb-audio [ 71.490661] No device for DAI omap-mcbsp-dai-0 [ 71.495147] No device for DAI omap-mcbsp-dai-1 [ 71.499694] No device for DAI omap-mcbsp-dai-2 [ 71.504211] No device for DAI omap-mcbsp-dai-3 [ 71.508697] No device for DAI omap-mcbsp-dai-4 [ 71.513214] OMAP3 Beagle SoC init [ 71.517333] asoc: twl4030 <-> omap-mcbsp-dai-0 mapping ok [ 71.528900] ALSA device list: [ 71.531921] #0: omap3beagle (twl4030) [ 71.535919] oprofile: using arm/armv7 [ 71.539825] TCP cubic registered [ 71.543151] NET: Registered protocol family 17 [ 71.547668] NET: Registered protocol family 15 [ 71.552276] lib80211: common routines for IEEE802.11 drivers [ 71.558044] ThumbEE CPU extension supported. [ 71.562347] Power Management for TI OMAP3. [ 71.566894] usb 2-2: new high speed USB device using ehci-omap and address 2 [ 71.575042] Unable to set L3 frequency (400000000) [ 71.579956] Switched to new clocking rate (Crystal/Core/MPU): 26.0/332/1000 MHz [ 71.587341] IVA2 clocking rate: 800 MHz [ 71.761138] SmartReflex driver initialized [ 71.765380] omap3beaglelmb: Driver registration complete [ 71.776184] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 [ 71.784515] registered taskstats version 1 [ 71.886566] usb 2-2: New USB device found, idVendor=0424, idProduct=9514 [ 71.893341] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 71.901306] hub 2-2:1.0: USB hub found [ 71.918762] Console: switching to colour frame buffer device 160x45 [ 71.940795] hub 2-2:1.0: 5 ports detected [ 71.945343] regulator_init_complete: incomplete constraints, leaving VAUX3 on [ 71.953155] regulator_init_complete: incomplete constraints, leaving VDAC on [ 71.961212] omap_vout omap_vout: probed for an unknown device [ 71.967529] Waiting for root device /dev/mmcblk0p2... [ 71.975341] mmc0: host does not support reading read-only switch. assuming write-enable. [ 71.983734] mmc0: new high speed SDHC card at address 1234 [ 71.989715] mmcblk0: mmc0:1234 SA04G 3.63 GiB [ 71.994537] mmcblk0: p1 p2 [ 72.087036] kjournald starting. Commit interval 5 seconds [ 72.096405] EXT3-fs (mmcblk0p2): using internal journal [ 72.105560] EXT3-fs (mmcblk0p2): mounted filesystem with writeback data mode [ 72.116546] VFS: Mounted root (ext3 filesystem) on device 179:2. [ 72.130157] devtmpfs: mounted [ 72.137145] Freeing init memory: 204K INIT: [ 72.245788] usb 2-2.1: new high speed USB device using ehci-omap and address 3 version 2.86 booting [ 72.378967] usb 2-2.1: New USB device found, idVendor=0424, idProduct=ec00 [ 72.390167] usb 2-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 72.405517] smsc95xx v1.0.4 [ 72.465820] usb0: register 'smsc95xx' at usb-ehci-omap.0-2.1, smsc95xx USB 2.0 Ethernet, 12:ef:ea:61:c9:68 Please wait: booting... Starting udev [ 72.566192] usb 2-2.2: new low speed USB device using ehci-omap and address 4 [ 72.705657] usb 2-2.2: New USB device found, idVendor=03f9, idProduct=0100 [ 72.717681] usb 2-2.2: New USB device strings: Mfr=4, Product=26, SerialNumber=0 [ 72.730194] usb 2-2.2: Product: Keytronic USB Keyboard [ 72.740386] usb 2-2.2: Manufacturer: Key Tronic [ 72.769958] input: Key Tronic Keytronic USB Keyboard as /devices/platform/ehci-omap.0/usb2/2-2/2-2.2/2-2.2:1.0/input/input2 [ 72.787231] generic-usb 0003:03F9:0100.0001: input: USB HID v1.10 Keyboard [Key Tronic Keytronic USB Keyboard] on usb-ehci-omap.0-2.2/input0 [ 72.886566] usb 2-2.4: new low speed USB device using ehci-omap and address 5 [ 73.016815] usb 2-2.4: New USB device found, idVendor=045e, idProduct=0040 [ 73.181121] usb 2-2.4: New USB device strings: Mfr=1, Product=3, SerialNumber=0 [ 73.604766] usb 2-2.4: Product: Microsoft 3-Button Mouse with IntelliEye(TM) [ 74.225280] usb 2-2.4: Manufacturer: Microsoft [ 75.030853] input: Microsoft Microsoft 3-Button Mouse with IntelliEye(TM) as /devices/platform/ehci-omap.0/usb2/2-2/2-2.4/2-2.4:1.0/input/input3 [ 75.475128] generic-usb 0003:045E:0040.0002: input: USB HID v1.10 Mouse [Microsoft Microsoft 3-Button Mouse with IntelliEye(TM)] on usb-ehci-omap.0-2.4/input0 Remounting root file system... Caching udev devnodes Populating dev cache [ 86.258361] Bluetooth: Core ver 2.15 [ 86.268371] NET: Registered protocol family 31 [ 86.278167] Bluetooth: HCI device and connection manager initialized [ 86.289855] Bluetooth: HCI socket layer initialized [ 86.315704] Bluetooth: L2CAP ver 2.14 [ 86.324951] Bluetooth: L2CAP socket layer initialized [ 86.350555] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 [ 86.465698] NET: Registered protocol family 10 [ 86.503692] Bluetooth: RFCOMM TTY layer initialized [ 86.514221] Bluetooth: RFCOMM socket layer initialized [ 86.524475] Bluetooth: RFCOMM ver 1.11 ALSA: Restoring mixer settings... Configuring network interfaces... ifconfig: SIOCGIFFLAGS: No such device ifconfig: SIOCGIFFLAGS: No such device eth0 No such device ifconfig: SIOCGIFFLAGS: No such device usb0 no wireless extensions. udhcpc (v1.13.2) started run-parts: /etc/udhcpc.d/00avahi-autoipd exited with code 1 Sending discover... [ 90.720184] usb0: link up, 100Mbps, full-duplex, lpa 0x4DE1 Sending discover... Sending select for 1.2.3.120... Lease of 1.2.3.120 obtained, lease time 3600 run-parts: /etc/udhcpc.d/00avahi-autoipd exited with code 1 adding dns 1.2.3.254 done. Starting portmap daemon: portmap. net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 hwclock: can't open '/dev/misc/rtc': No such file or directory Tue Apr 19 18:30:00 BST 2011 hwclock: can't open '/dev/misc/rtc': No such file or directory INIT: Entering runlevel: 5 Starting system message bus: dbus. Starting Hardware abstraction layer hald Configuring leds: beagleboard::pmu_stat: none beagleboard::usr0: heartbeat beagleboard::usr1: mmc0 Starting Dropbear SSH server: dropbear. Starting advanced power management daemon: No APM support in kernel (failed.) Starting Vixie-cron. Starting Samba: smbd nmbd. Starting syslogd/klogd: done Starting internet superserver: xinetd. * Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon ...done. Starting Network connection manager daemon: NetworkManager. Starting GNOME Display Manager gdm .-------. | | .-. | | |-----.-----.-----.| | .----..-----.-----. | | | __ | ---'| '--.| .-'| | | | | | | | |--- || --'| | | ' | | | | '---'---'--'--'--. |-----''----''--' '-----'-'-'-' -' | '---' The Angstrom Distribution beagleboard ttyS2 Angstrom 2010.7-test-20110220 beagleboard ttyS2 beagleboard login: Entry: DVSDK on Angstrom Date: Sat Jun 15 17:17:04 EDT 2013 How to get the DSP-specific parts from DVSDK to run on Angstrom linux that comes out-of-the box on a BeagleBoard-XM? First step: dsplink kernel module. root@beagleboard:/lib/modules/2.6.32# find |grep dsp find |grep dsp ./kernel/drivers/dsp ./kernel/drivers/dsp/lpm_omap3530.ko ./kernel/drivers/dsp/dsplinkk.ko After "modprobe dsplinkk" : @beagleboard:/lib# dmesg |grep DSP [ 1018.494140] DSPLINK Module (1.65.00.03) created on Date: Jan 25 2011 Time: 20:51:12 In the current DSVSK 4.03 : tom@zoo:/opt/xc/davinci/dvsdk4$ find -name '*h264*' ./gstreamer-ti_svnr919/src/gsttiquicktime_h264.h ./gstreamer-ti_svnr919/src/gsttiquicktime_h264.c ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/dm365/xh264dec2.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/dm365/xh264enc1.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/omap3530/h264dec2.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/omap3530/h264enc1.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/dm3730/h264dec2.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/dm3730/h264enc1.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/dm6467/h264dec2.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/dm6467/h264fhdenc1.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/dm6467/h2641080pdec2.dvs ./dvtb_4_20_18/packages/ti/sdo/dvtb/scripts/dm6467/h264enc1.dvs ./example-applications/matrix-gui-e-1.3/dm365/bin/gst_encode_h264 ./example-applications/matrix-gui-e-1.3/dm365/bin/gst_decode_h264 ./example-applications/matrix-gui-e-1.3/am3517/html/desc_arm_multimedia_h264dec.html ./example-applications/matrix-gui-e-1.3/beagleboard/html/desc_arm_multimedia_h264dec.html ./example-applications/matrix-gui-e-1.3/am3715/html/desc_arm_multimedia_h264dec.html ./codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs/h264enc ./codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs/h264enc/ih264venc.h ./codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs/h264enc/lib_production/h264venc_prod.l64P ./codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs/h264dec ./codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs/h264dec/ih264vdec.h ./codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs/h264dec/lib_production/h264_dec.l64P So let's look at those first, see what they are.