Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

DVEVM and DVSDK frequently asked questions

From Texas Instruments Wiki
Jump to: navigation, search

DVEVM FAQ

Contents

How do I search the davinci-linux-open-source@linux.davincidsp.com mailing list archives?

For this, there are two options. An online and an offline one.

The following script downloads the archives and searches them for a given string. It is a shell script for Linux but should work on Cygwin on Windows as well. Save this script as a file (search.sh), make sure it's executable (using chmod +x search.sh) and execute it with the search term as argument (./search.sh searchterm).

#!/bin/sh
 
mkdir -p /tmp/davinci-logs
pushd /tmp/davinci-logs
rm *.txt
 
for y in 2005 2006 2007; do
    for m in 1 2 3 4 5 6 7 8  9 10 11 12; do
        month=`printf "%02i" $m`
        ms=`date +%B -d ${month}/01/03`
        wget -nv -N http://linux.omap.com/pipermail/davinci-linux-open-source/${y}-${ms}.txt.gz
    done
done
 
for f in *.txt.gz; do
        echo $f
        gunzip $f
done
 
grep $1 *.txt
popd
rm -rf /tmp/davinci-logs

How do I upgrade u-boot on DM6446 DVEVM NOR Flash if I already have u-boot installed?

Note that these instructions include an erase of the flash where u-boot resides, and if something goes wrong during the upgrade you must use instructions below.

On the u-boot prompt, first load the new u-boot.bin file to RAM using tftp (u-boot.bin has to be in your tftp server directory, typically /tftpboot):

  tftp 0x80800000 u-boot.bin

(Write down the file size in hex returned by u-boot after the transfer)

Now erase the old u-boot using:

erase 0x2000000 0x201ffff

or

erase 0x02000000 +<size-in-hex>

and finally copy the new u-boot to NOR flash using:

cp.b 0x80800000 0x2000000 <size-in-hex>

The <size in hex> can be observed after executing the tftpboot command above, and contains the size of the u-boot image as a hexadecimal value. If you are using a DM6446 EVM rev E or newer which uses the Intel NOR flash, the size in hex has to be in multiples of 0x20000 block size. For u-boot, one block size of 0x20000 is usually enough.

NOTE: for DM6446 users of DVSDK 1.30 GA release, the u-boot binaries for NOR, located under ../dvsdk_1_30_01_41/PSP_01_20_00_014/bin folder, cannot be used as-is with this method. You will need to rebuild u-boot following the instructions from the LSP 1.20 DaVinci Linux Installation User's Guide. It's under the /dvsdk_1_30_01_41/PSP_01_20_00_014/docs folder. The u-boot tar itself is under /dvsdk_1_30_01_41/PSP_01_20_00_014/board_utilities folder. Before rebuilding, edit the file ../u-boot-1.2.0/include/configs/davinci.h and comment out line 173:

#define CONFIG_SKIP_LOWLEVEL_INIT

How do I flash u-boot to DM6446 DVEVM NOR Flash if I don't have u-boot installed?

If anything went wrong while you modify the NOR flash where u-boot resides (broken bootloader), you must use a JTAG debugger (e.g. with CCS, see http://c6000.spectrumdigital.com/davincievm, or Lauterbach) or serial flash utility, DVFlasher, to restore your system.

See official TI FAQ and RBL UBL and host tool collection article for this as well.

Where can I find the source code for the MSP430 on the DVEVM board?

This code is kept by Spectrum Digital at http://c6000.spectrumdigital.com/davincievm.

After running ./loadmodules.sh in the dvevm directory on the target I cannot run the "messagegpp" DSP Link example successfully even though the DSP Link kernel module is loaded, how come?

loadmodules.sh loads DSP Link with custom parameters (ddr_start and ddr_size) which put the shared memory in a certain location and makes it a certain size. The messagegpp application which comes with DSP Link expects a different memory map, indeed it expects the default memory map. Because of this you will need to insert the dsplinkk.ko kernel module without parameters like:

insmod dsplinkk.ko

How do I run the DVEVM/DVSDK installers on Linux if I do not have X-windows and cannot use a GUI?

All DVEVM/DVSDK installers (*.bin files) support the '-console' option which gives a text interface to the installation process.

Does the Linux version shipped with the DVEVM from TI and Montavista 4.0.1 shipped with the DVSDK come with a graphical target environment?

Both Linux versions come with an open source X server (see http://www.x.org). Execute 'startx' on the target to start the X server and the icewm window manager. They also ship with the open source GTK+ widget toolkit (http://www.gtk.org) and various open source graphics libraries (libfreetype, libjpeg, libpng etc.).

How do I set and get the value of the real time clock on the DM6446 DVEVM?

The RTC is managed by the msp430 on the DM6446 DVEVM board. The Linux user space library msp430lib which comes with the DVEVM under demos/utils/msp430lib has a function for setting the RTC value (msp430lib_set_rtc) and a function for getting the current RTC value (msp430lib_get_rtc).

How do I toggle the LED:s on the board from Linux user space?

It depends on what kernel you're using.

Current kernels (standard mainline LED interface)

All the LEDs are accessible through /sys/class/leds nodes, with names DS1, DS2, and so on through DS8.

To turn on DS5:

echo 1 > /sys/class/leds/DS5/brightness

To turn it off:

echo 0 > /sys/class/leds/DS5/brightness

There are also a number of standard standard kernel event triggers, and you can hook one of them up to each LED. By default, DS8 uses a heartbeat, so you can see that the system is working (and how much) based on how quickly it blinks.

Older kernels (legacy ARM interface)

First execute on the target:

echo claim > /sys/devices/system/leds/leds0/event

Then execute:

echo <color> on > /sys/devices/system/leds/leds0/event

to turn an LED on, or

echo <color> off > /sys/devices/system/leds/leds0/event

to turn an LED off, where <color> is either "red" for DS1, "amber" for DS2, "green" for DS3 or "blue" for DS4. Execute:

echo release > /sys/devices/system/leds/leds0/event

to release the LEDs and turn them all off.

How do I hide the OSD window on DM6446 so that I can see the video window behind it?

The OSD window on DM6446 is on top of the video window. The attribute window controlling the transparency of the OSD window is the Linux /dev/fb/2 device. Every pixel is represented by a nibble (4 bits) with values ranging from 7 (no transparency) to 0 (full transparency). Executing cat /dev/zero > /dev/fb/2 on the target will write all zeros into the attribute window making the OSD window completely transparent and the video window visible.

Why is u-boot trying to tftp my uImage from the wrong server address when executing 'dhcp'?

If u-boot is ignoring your serverip environment variable setting and instead tries to download from a different ip address (e.g. 192.168.1.1) when executing the dhcp command, it is likely that your u-boot has picked up this address from the dhcp response from your router. Some routers use a tftp server to update it's firmware and set this variable for these purposes, and u-boot will overwrite your serverip environment variable value with this address.

To work around this issue first execute setenv autoload no in u-boot. This will prevent the dhcp command from automatically downloading your uImage when it is executed and give you a chance to correct the serverip environment variable manually before executing tftpboot to load your uImage. For example, if your bootcmd environment variable was dhcp;bootm previously, it should now be:

dhcp;setenv serverip 1.2.3.4;tftpboot;bootm

where 1.2.3.4 is your tftp server's ip address.

How do I take a screenshot of the video window in Linux for DM6446?

To save the raw UYVY data to a file execute:

cat /dev/db/3 > screenshot.uyvy

Then use ImageMagick (http://www.imagemagick.org) on your Linux host to convert the image to PNG format using:

convert -size 720x480 screenshot.uyvy screenshot.png

Use size 720x480 for NTSC and 720x576 for PAL, and now you can view the resulting PNG image using any image viewer. If you are taking a screenshot of the DVEVM demos make sure you pause the demo before capturing the screenshot to avoid tearing in the picture (from data being rendered into the frame buffer while you are capturing it).

Why do I get "disagrees about version of symbol struct_module" when trying to insert CMEM?

CMEM invokes the Linux kernel's build system to build and it reads these top level files: localversion and localversion-mvl and concatenates them with the kernel version to form a version string (which for the DM6446 MVL kernel is: 2.6.10_mvl401-davinci_evm).

When you try to insmod CMEM (typically using the loadmodules.sh script) this version string will be checked against the currently running kernel version string (which you can obtain by executing uname -r) and if they do not match then the insmod will fail.

The solution is to rebuild CMEM against the kernel which you are running to make sure the version strings match.

Note that one quick way to determine the version string built into your kernel module binary (e.g. cmemk.ko) is by running:

strings cmemk.ko | grep vermagic

Why does my display not work properly when moving my application to Linux DM6446 kernel patch level 28.1 which comes with DVEVM 1.20?

The DM6446 patch level 28.1 display device driver allows you to configure video window 1 (/dev/fb/3) to be RGB888 (24bpp) as well as the YUV422I format (16bpp) more commonly used. As these formats use different sizes of pixel representation the worst case (RGB888) is allocated.

The DVEVM 1.00 and 1.10 demos assume 2 bytes per pixels in the device driver, and if you run these or any applications based on their display code, the display will look "smeared" across the screen.

The solution is to ask the device driver for which horizontal pitch to use by using the FBIOGET_FSCREENINFO ioctl and reading the fb_fix_screeninfo.line_length parameter. This tells you how much you should stride between writing each line.

Note that this ioctl solution works on old kernels as well. See the DVEVM 1.20 demos (display.c) for an example on how to use this parameter.

When the user tries to integrate an algorithm on the DSP side and tries to invoke HWI5 , the interrupt is not invoked.

Since DSPLink uses DSP HWI interrupt vectors 4 & 5, the problem with HWI 5 is observed.

The solution to this is, in /dsplink/config/all/CFG_Davinci_DM6446.c file, you can change the interrupt vector usage for the second instance of IPS from 5 to any free vector ID on the DSP-side:

I.e. in STATIC CONST LINKCFG_Ips LINKCFG_ipsTable_00 [] {}

This will ensure that vectors 4 & 5 are not used

I am using DM6446 and I need to enable "TI DaVinci board mappings" setting during my kernel build but I could not find such option in “Mapping drivers for chip access”. Do I need to apply any patch or do any configurations before running menuconfig?

You need to upgrade the LSP from the below weblink. https://www-a.ti.com/downloads/sds_support/targetcontent/index.html

You can get the LSP under Platform Support Packages (PSP) in the DaVinci MontaVista Linux based Platform Support section.

Where can I find the CSL lib for DM6446?

Unfortunately, there is no CSL available for DM6446; this is primarily because all the drivers (and corresponding header files with register definitions) are ARM/LINUX based.CSL in prior devices has effectively been replaced by the peripheral support package (PSP) which is made up of vaious Linux device drivers which is included in the DVSDK.

Is there a CSL available for DM648?

No. A DSP/BIOS based Platform Support Package will be provided, that is, a complete C driver package in source format for the board is developed and already available.

The Chip Support Library for these devices is not provided anymore as a separate release, nor there will be any functional chip support library for these devices.

Note: CSLs provided on the website / with CCS do not support DM648.

There is actually a Chip support library package included in the PSP drivers, but it is limited to the register layer; that is, it is limited to a set of macros in order to manipulate bit fields and to read / write to registers, or provide the register definitions and addresses to be used in the PSP. This since drivers are provided.

The only alternative there is that it can be downloaded after having registered your DM648 evm at the evm software update site, see http://www.ti.com/davinciregistration.

If you have already registered your board you can download this from http://www.ti.com/dvevmupdates. This is the only way to get the package, which is not available as a free download.

Where could I find DM6467 DSP side examples? Is there any CSL available for DSP?

Examples for DM6467 DSP are supplied by DSP/BIOS and are typically installed at the following folder: C:\CCStudio_v3.3\bios_5_32_03\packages\ti\bios\examples

Also, there are no DSP side CSL or PSP for DM6467. The EDMA3 LLD driver package is available for the DSP side on DM6467

What is the difference between the DM6446 and DM6467 Video input ports?

DM6446 supports an 8-bit BT.656, 8-bit or 16-bit YCbCr, or up to 16-bit RAW Bayer Pattern video input. Detailed information is provided in the DM6446 VPFE User's Guide.

DM6467 supports Two 8-Bit BT.656, Single 16-Bit BT.1120 (HD), or single RAW RGB 8,10 or 12-Bit video input Detailed information is provided in the DM6467 VPIF User's Guide.

I have installed DM648 DVSDK and when I try to compile few examples using CCS, it could not find few files(Even though those files exist)?

There are a few files you may need to edit to reflect their current installation directories.

  1. xdcpaths_evmDM648.dat found in c:\dvsdk_1_10_00_26_DM648
  2. psp_xdcpaths_common.dat file found in \pspdrivers_1_10_00_09\packages\ti\sdo\pspdrivers\common
  3. edma3_xdcpaths_common.dat found in \edma3_lld_1_03_01_01\packages\ti\sdo\edma3\common

Each of these should be updated (if necessary) to reflect the correct locations of each component. Please note that this is in the Release Notes under "Additional Information."

I am not able to use CF cards with DMA mode on DM6446. I wonder if DMA driver work for CF card on DM6446?

DM644x supports CF in TrueIDE mode. In this mode there is no support for DMA. Only PIO mode support is available with CF on DM644x platform. Type the "hdparm -I /dev/hda" command, and you will observe that the CF card itself does not list any DMA modes ... only PIO modes. ATA drives generally support the DMA modes, and can get about three times the throughput.

There are however some CF cards which support "MDMA" modes. These MDMA modes are unfortunately not the same ones as supported by normal IDE drives, and Linux does not handle them. You may need to use hdparm to switch to one of the PIO modes.

Can I boot DM355 from SDHC?

Yes, but tools from TI do not use this mode. See the DM355 SD card boot and flash utility page for more information.

It's easy to have your root filesystem on an SDHC card, however. Just provide the right command line parameters, such as root=/dev/mmcblk0p1 ro rootwait for current mainline-tracking kernels.

Is DM642 capable of booting via the I2C peripheral?

The DM642 can not boot via the I2C peripheral. The only boot modes available to the DM64x family are ROM boot, Host boot, and No boot. Reference the Bootmode section of the specific device data manual for more information.

I am trying to boot up my target using UBOOT but my target could not get a DHCP address. I don’t know where exactly I am missing? I could set all the other UBOOT environmental variables perfectly.

  1. Give a dhcp command in your uboot prompt and see if an ipaddress is assigned to the target. If you are not able to get an IP address then this denotes that the DHCP server is not configured properly.
  1. If there is no DHCP serer enabled in your network then use this configuration file (media:dhcpd.zip) to configure DHCP server on your RHEL machine. Please modify your netmask and network address according in the conf file. Now connect your target to the Linux machine where this DHCP server runs. Now you will be able to see the DHCP bound address.

I had booted up my DM6446 board (applicable to any target which is Linux ported) successfully using uboot but I could not login to the root filesystem (nfs). When I try to give root as login name it gives a message “login failed”.

Please ensure that your file system on the Linux host machine is mounted properly. One best solution is to remove the file system and copy the filesystem again to the same location and follow the procedure.

Ensure that you are logged in as a root user in the host machine.

  • host $ cp -a /opt/mv_pro_XX/montavista/pro/devkit/arm/v5t_le/target/* .
  • host $ chown -R <useracct> opt

/*Add following line in /etc/exports file in the Linux host system*/

  • /home/<useracct>/workdir/filesys *(rw,no_root_squash,no_all_squash,sync)
  • host $ /usr/sbin/exportfs -av
  • host $ /sbin/service nfs restart

/* Verify that the server firewall is turned off: */

  • host $ /etc/init.d/iptables status

/* Stop it if it is turned on */

  • host $ /etc/init.d/iptables stop

Now you should be able to login successfully.

Are DVSDK demos available to run on OMAP-L137 EVM software?

There is no DVSDK for OMAP-L137. As it's not a video part, there are no video codecs and no demos.

However, a Starter Kit is available, and releases of that Kit will include the same multimedia software framework (i.e., Codec Engine, DSP Link, etc) that are provided in the DVSDK releases.

How to install DVSDK software in Linux through command line if there is no xserver(ex: putty)?

If you provide "./installer.bin –mode console" option to some installers, then you should be able to run it without having X. Also, there maybe a -silent or /s option.

How many channels of the Video Port can be configured for Video Capture Mode in DM64x?

The DM64x has two channels per video port, A and B. Each channel can be configured for video port 8/10-bit capture mode. If the video port is configured for single channel operation then capture will take place on channel A only. Channel B alone cannot be used in single channel mode for video capture. The video port can not capture and display video on the same port. Both channels must be operating in the same mode, either capture or display.

I am not able to generate GPIO interrupt for DM648 processor. Looks like I have configured every register properly. What could be the possible reason for my failure? Are there any useful conditions to check?

The problem is typically caused if :

  1. GIE bit not set in CSR register
  2. Interrupt disabled in the IER register
  3. Interrupt vector table not correct


While running a GPIO example provided with DM648 DVSDK and I got an error saying that:"GPIO interrupt test: FAILED. Check jumper." Which pins do I need to connect?

You need to connect GPIO pin 8 and 9 respectively (INPUT_PIN and OUTPUT_PIN are defined in .pjt file of the example). By default GPIO pins 8 and 9 are not automatically connected. In order to get the GPIO example to work from the PSP drivers, you will need to stick a wire connecting the two GPIO pins. The easiest way to do this is to stick a wire connecting pins 66 and 68 of connector J15, which is the big black connector closest to the DM648 on the EVM.

To configure any registers of VP using DM648, is it necessary that VPCLK is always provided?

VPCLK is used only for capture/display operations and generation of control signals by the videoport.

Configuration (Read/Write) of VideoPort Registers makes use CLKDIV3 clock domain of System Power Domain. CLKDIV3 will be PLL1 output frequency/3. It is important to note that each of the Video Ports have a LPSC associated with them. The LPSC provides the module clock and reset control. On power up, the LPSC's associated with Video Ports do not gate the clock required for the Video Port to function. User would need to appropriately program the LPSC associated with Video Port to provide the clock to the desired Video Port before trying to access the configure the Videoport Registers and initiate a data transfer operation. Below is the info about LPSC associated with each of the video port.

           LPSC NUMBER                PERIPHERAL/ MODULE
               20                            VP0
               21                            VP1
               22                            VP2
               23                            VP3
               24                            VP4

Refer video port user’s guide for more details.

Is there EMAC Boot mode in DM6437?

No, there is no EMAC boot mode on the DM643x.

External FAQs and further infos