This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

attribute window device problem in decode demo

My custom dm355 board does not have msp430 chip. So, to get the demo program working I stripped (#if 0 ... #endif) all the msp430 related code out. The program compiled without errors. However, when starting the program I get the following error:

root@custombrd:/opt/dvsdk/dm355# ./decode -v/mnt/card/video/cap2.m4v
Decode demo started.
Error: Failed to create attribute window device
Error: Failed to create UI

What could be the problem?

  • After looking at the code, it appears that the failing function is Display_create().

    Here are my bootargs (if it helps):

    bootargs=mem=96M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x82000000,10M
    ip=off video=davincifb:vid0=OFF:vid1=OFF:osd0=720x576x16,2025K v4l2_video_captur
    e=device:MT9T031 vpfe_capture.interface=1

    Another thing is that I had my kernel custom configured to remove features that are not present in my board. Is there something I need to check in the kernel configuration?

    Thank you.

  • Hi,

    I am going to move your post into the Linux forum, there appropriate audience will better answer your questions.

    Thanks.

    -Tai

  • Here is the list of device notes after the kernel boots (if it helps tackle the problem):

    root@custombrd:~# ls /dev/
    apm_bios   hda1       hda3       mmcblk0p2  mtd6       pts        tty5
    console    hda10      hda4       mmcblk0p3  mtd7       ram0       tty6
    event0     hda11      hda5       mmcblk0p4  mtdblock0  ram1       tty7
    event1     hda12      hda6       mmcblk0p5  mtdblock1  ram2       tty8
    event2     hda13      hda7       mmcblk0p6  mtdblock2  ram3       ttyS0
    event3     hda14      hda8       mmcblk0p7  mtdblock3  random     ttySA0
    event4     hda15      hda9       mtd0       mtdblock4  tty        urandom
    event5     hda16      initctl    mtd1       mtdblock5  tty0       zero
    event6     hda17      kmem       mtd2       mtdblock6  tty1
    event7     hda18      mem        mtd3       mtdblock7  tty2
    fb0        hda19      mmcblk0    mtd4       null       tty3
    hda        hda2       mmcblk0p1  mtd5       ptmx       tty4
    root@custombrd:~#

  • And here is dmesg:

    Linux version 2.6.32-rc2-davinci1 (vmplanet@ubuntu) (gcc version 4.3.3 (Sourcery
     G++ Lite 2009q1-203) ) #5 PREEMPT Fri Nov 19 10:37:23 EST 2010
    CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
    CPU: VIVT data cache, VIVT instruction cache
    Machine: DaVinci DM355 EVM
    Memory policy: ECC disabled, Data cache writeback
    On node 0 totalpages: 24576
    free_area_init_node: node 0, pgdat c0282c04, node_mem_map c02ae000
      DMA zone: 192 pages used for memmap
      DMA zone: 0 pages reserved
      DMA zone: 24384 pages, LIFO batch:3
    DaVinci dm355 variant 0x0
    Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 24384
    Kernel command line: mem=96M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x8
    2000000,10M ip=off video=davincifb:vid0=720x576x16,2500K:vid1=720x576x16,2500:os
    d0=720x576x16,2025K davinci_enc_mngr.ch0_output=COMPOSITE davinci_enc_mngr.ch0_m
    ode=ntsc v4l2_video_capture=device:MT9T031 vpfe_capture.interface=1
    PID hash table entries: 512 (order: -1, 2048 bytes)
    Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
    Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
    Memory: 96MB = 96MB total
    Memory: 84392KB available (2288K code, 307K data, 108K init, 0K highmem)
    SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    Hierarchical RCU implementation.
    NR_IRQS:245
    Console: colour dummy device 80x30
    Calibrating delay loop... 66.96 BogoMIPS (lpj=334848)
    Mount-cache hash table entries: 512
    CPU: Testing write buffer coherency: ok
    DaVinci: 104 gpio irqs
    bio: create slab <bio-0> at 0
    DM355 IPIPE intialized in Single Shot mode
    SCSI subsystem initialized
    dm355evm_msp: probe of 1-0025 failed with error -121
    vpss vpss: dm355_vpss vpss probed
    vpss vpss: dm355_vpss vpss probe success
    ch0 default output "COMPOSITE", mode "NTSC"
    be_encoder_setoutput>
    Start of vpbe_encoder_setmode..
    pbe_encoder_setmode>
    pbe_encoder_setoutput>
    VPBE Encoder initialized
    be_encoder_enumoutput>
    pbe_encoder_enumoutput>
    be_encoder_setoutput>
    Start of vpbe_encoder_setmode..
    pbe_encoder_setmode>
    pbe_encoder_setoutput>
    Start of vpbe_encoder_setmode..
    pbe_encoder_setmode>
    be_encoder_getoutput>
    pbe_encoder_getoutput>
    be_encoder_getmode>
    be_encoder_getmode/>
    VPBE Encoder Initialized
    LogicPD encoder initialized
    Switching to clocksource timer0_1
    Switched to high resolution mode on CPU 0
    Trying to unpack rootfs image as initramfs...
    rootfs image is not initramfs (no cpio magic); looks like an initrd
    Freeing initrd memory: 10240K
    msgmni has been set to 184
    alg: No test for stdrng (krng)
    io scheduler noop registered
    io scheduler anticipatory registered (default)
    be_encoder_getmode>
    be_encoder_getmode/>
    be_encoder_getmode>
    be_encoder_getmode/>
    davincifb davincifb.0: dm_osd0_fb: Initial window configuration is invalid.
    be_encoder_getmode>
    be_encoder_getmode/>
    Console: switching to colour frame buffer device 90x36
    davincifb davincifb.0: dm_osd0_fb: 720x576x16@0,0 with framebuffer size 2025KB
    be_encoder_getmode>
    be_encoder_getmode/>
    davincifb davincifb.0: dm_vid0_fb: Initial window configuration is invalid.
    davincifb davincifb.0: dm_vid0_fb: 720x576x16@0,0 with framebuffer size 2500KB
    be_encoder_getmode>
    be_encoder_getmode/>
    be_encoder_getmode>
    be_encoder_getmode/>
    davincifb davincifb.0: dm_osd1_fb: 720x480x4@0,0 with framebuffer size 1350KB
    be_encoder_getmode>
    be_encoder_getmode/>
    davincifb davincifb.0: dm_vid1_fb: Initial window configuration is invalid.
    davincifb davincifb.0: dm_vid1_fb: 720x576x16@0,0 with framebuffer size 2KB
    imp serializer initialized
    davinci_previewer initialized
    davinci_resizer initialized
    Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
    serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A
    console [ttyS0] enabled
    serial8250.0: ttyS1 at MMIO 0x1c20400 (irq = 41) is a 16550A
    serial8250.0: ttyS2 at MMIO 0x1e06000 (irq = 14) is a 16550A
    brd: module loaded
    NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit
    )
    2 NAND chips detected
    Bad block table not found for chip 0
    Bad block table not found for chip 1
    Bad block table not found for chip 0
    Bad block table not found for chip 1
    Scanning device for bad blocks
    Bad eraseblock 1 at 0x000000020000
    Bad eraseblock 20 at 0x000000280000
    Bad eraseblock 25 at 0x000000320000
    Bad eraseblock 26 at 0x000000340000
    Bad eraseblock 32 at 0x000000400000
    Bad eraseblock 33 at 0x000000420000
    Bad eraseblock 34 at 0x000000440000
    Bad eraseblock 35 at 0x000000460000
    Bad eraseblock 36 at 0x000000480000
    Bad eraseblock 37 at 0x0000004a0000
    Bad eraseblock 38 at 0x0000004c0000
    Bad eraseblock 39 at 0x0000004e0000
    Bad eraseblock 40 at 0x000000500000
    Bad eraseblock 41 at 0x000000520000
    Bad eraseblock 42 at 0x000000540000
    Bad eraseblock 43 at 0x000000560000
    Bad eraseblock 44 at 0x000000580000
    Bad eraseblock 45 at 0x0000005a0000
    Bad eraseblock 46 at 0x0000005c0000
    Bad eraseblock 47 at 0x0000005e0000
    Bad eraseblock 48 at 0x000000600000
    Bad eraseblock 49 at 0x000000620000
    Bad eraseblock 50 at 0x000000640000
    Bad eraseblock 51 at 0x000000660000
    Bad eraseblock 52 at 0x000000680000
    Bad eraseblock 53 at 0x0000006a0000
    Bad eraseblock 54 at 0x0000006c0000
    Bad eraseblock 55 at 0x0000006e0000
    Bad eraseblock 56 at 0x000000700000
    Bad eraseblock 57 at 0x000000720000
    Bad eraseblock 58 at 0x000000740000
    Bad eraseblock 59 at 0x000000760000
    Bad eraseblock 60 at 0x000000780000
    Bad eraseblock 61 at 0x0000007a0000
    Bad eraseblock 62 at 0x0000007c0000
    Bad eraseblock 63 at 0x0000007e0000
    Bad eraseblock 64 at 0x000000800000
    Bad eraseblock 65 at 0x000000820000
    Bad eraseblock 66 at 0x000000840000
    Bad eraseblock 67 at 0x000000860000
    Bad eraseblock 68 at 0x000000880000
    Bad eraseblock 69 at 0x0000008a0000
    Bad eraseblock 70 at 0x0000008c0000
    Bad eraseblock 71 at 0x0000008e0000
    Bad eraseblock 72 at 0x000000900000
    Bad eraseblock 73 at 0x000000920000
    Bad eraseblock 74 at 0x000000940000
    Bad eraseblock 75 at 0x000000960000
    Bad eraseblock 76 at 0x000000980000
    Bad eraseblock 77 at 0x0000009a0000
    Bad eraseblock 78 at 0x0000009c0000
    Bad eraseblock 79 at 0x0000009e0000
    Bad eraseblock 80 at 0x000000a00000
    Bad eraseblock 81 at 0x000000a20000
    Bad eraseblock 82 at 0x000000a40000
    Bad eraseblock 83 at 0x000000a60000
    Bad eraseblock 84 at 0x000000a80000
    Bad eraseblock 85 at 0x000000aa0000
    Bad eraseblock 86 at 0x000000ac0000
    Bad eraseblock 87 at 0x000000ae0000
    Bad eraseblock 88 at 0x000000b00000
    Bad eraseblock 89 at 0x000000b20000
    Bad eraseblock 90 at 0x000000b40000
    Bad eraseblock 91 at 0x000000b60000
    Bad eraseblock 92 at 0x000000b80000
    Bad eraseblock 93 at 0x000000ba0000
    Bad eraseblock 94 at 0x000000bc0000
    Bad eraseblock 95 at 0x000000be0000
    Bad eraseblock 96 at 0x000000c00000
    Bad eraseblock 97 at 0x000000c20000
    Bad eraseblock 98 at 0x000000c40000
    Bad eraseblock 99 at 0x000000c60000
    Bad eraseblock 100 at 0x000000c80000
    Bad eraseblock 101 at 0x000000ca0000
    Bad eraseblock 102 at 0x000000cc0000
    Bad eraseblock 103 at 0x000000ce0000
    Bad eraseblock 104 at 0x000000d00000
    Bad eraseblock 105 at 0x000000d20000
    Bad eraseblock 106 at 0x000000d40000
    Bad eraseblock 107 at 0x000000d60000
    Bad eraseblock 108 at 0x000000d80000
    Bad eraseblock 109 at 0x000000da0000
    Bad eraseblock 110 at 0x000000dc0000
    Bad eraseblock 111 at 0x000000de0000
    Bad block table written to 0x00000ffe0000, version 0x01
    Bad block table written to 0x00000ffc0000, version 0x01
    Scanning device for bad blocks
    Bad eraseblock 2049 at 0x000010020000
    Bad eraseblock 2068 at 0x000010280000
    Bad eraseblock 2073 at 0x000010320000
    Bad eraseblock 2074 at 0x000010340000
    Bad eraseblock 2080 at 0x000010400000
    Bad eraseblock 2081 at 0x000010420000
    Bad eraseblock 2082 at 0x000010440000
    Bad eraseblock 2083 at 0x000010460000
    Bad eraseblock 2084 at 0x000010480000
    Bad eraseblock 2085 at 0x0000104a0000
    Bad eraseblock 2086 at 0x0000104c0000
    Bad eraseblock 2087 at 0x0000104e0000
    Bad eraseblock 2088 at 0x000010500000
    Bad eraseblock 2089 at 0x000010520000
    Bad eraseblock 2090 at 0x000010540000
    Bad eraseblock 2091 at 0x000010560000
    Bad eraseblock 2092 at 0x000010580000
    Bad eraseblock 2093 at 0x0000105a0000
    Bad eraseblock 2094 at 0x0000105c0000
    Bad eraseblock 2095 at 0x0000105e0000
    Bad eraseblock 2096 at 0x000010600000
    Bad eraseblock 2097 at 0x000010620000
    Bad eraseblock 2098 at 0x000010640000
    Bad eraseblock 2099 at 0x000010660000
    Bad eraseblock 2100 at 0x000010680000
    Bad eraseblock 2101 at 0x0000106a0000
    Bad eraseblock 2102 at 0x0000106c0000
    Bad eraseblock 2103 at 0x0000106e0000
    Bad eraseblock 2104 at 0x000010700000
    Bad eraseblock 2105 at 0x000010720000
    Bad eraseblock 2106 at 0x000010740000
    Bad eraseblock 2107 at 0x000010760000
    Bad eraseblock 2108 at 0x000010780000
    Bad eraseblock 2109 at 0x0000107a0000
    Bad eraseblock 2110 at 0x0000107c0000
    Bad eraseblock 2111 at 0x0000107e0000
    Bad eraseblock 2112 at 0x000010800000
    Bad eraseblock 2113 at 0x000010820000
    Bad eraseblock 2114 at 0x000010840000
    Bad eraseblock 2115 at 0x000010860000
    Bad eraseblock 2116 at 0x000010880000
    Bad eraseblock 2117 at 0x0000108a0000
    Bad eraseblock 2118 at 0x0000108c0000
    Bad eraseblock 2119 at 0x0000108e0000
    Bad eraseblock 2120 at 0x000010900000
    Bad eraseblock 2121 at 0x000010920000
    Bad eraseblock 2122 at 0x000010940000
    Bad eraseblock 2123 at 0x000010960000
    Bad eraseblock 2124 at 0x000010980000
    Bad eraseblock 2125 at 0x0000109a0000
    Bad eraseblock 2126 at 0x0000109c0000
    Bad eraseblock 2127 at 0x0000109e0000
    Bad eraseblock 2128 at 0x000010a00000
    Bad eraseblock 2129 at 0x000010a20000
    Bad eraseblock 2130 at 0x000010a40000
    Bad eraseblock 2131 at 0x000010a60000
    Bad eraseblock 2132 at 0x000010a80000
    Bad eraseblock 2133 at 0x000010aa0000
    Bad eraseblock 2134 at 0x000010ac0000
    Bad eraseblock 2135 at 0x000010ae0000
    Bad eraseblock 2136 at 0x000010b00000
    Bad eraseblock 2137 at 0x000010b20000
    Bad eraseblock 2138 at 0x000010b40000
    Bad eraseblock 2139 at 0x000010b60000
    Bad eraseblock 2140 at 0x000010b80000
    Bad eraseblock 2141 at 0x000010ba0000
    Bad eraseblock 2142 at 0x000010bc0000
    Bad eraseblock 2143 at 0x000010be0000
    Bad eraseblock 2144 at 0x000010c00000
    Bad eraseblock 2145 at 0x000010c20000
    Bad eraseblock 2146 at 0x000010c40000
    Bad eraseblock 2147 at 0x000010c60000
    Bad eraseblock 2148 at 0x000010c80000
    Bad eraseblock 2149 at 0x000010ca0000
    Bad eraseblock 2150 at 0x000010cc0000
    Bad eraseblock 2151 at 0x000010ce0000
    Bad eraseblock 2152 at 0x000010d00000
    Bad eraseblock 2153 at 0x000010d20000
    Bad eraseblock 2154 at 0x000010d40000
    Bad eraseblock 2155 at 0x000010d60000
    Bad eraseblock 2156 at 0x000010d80000
    Bad eraseblock 2157 at 0x000010da0000
    Bad eraseblock 2158 at 0x000010dc0000
    Bad eraseblock 2159 at 0x000010de0000
    Bad block table written to 0x00001ffe0000, version 0x01
    Bad block table written to 0x00001ffc0000, version 0x01
    Creating 5 MTD partitions on "davinci_nand.0":
    0x000000000000-0x0000003c0000 : "bootloader"
    0x0000003c0000-0x000000400000 : "params"
    0x000000400000-0x000000800000 : "kernel"
    0x000000800000-0x000020800000 : "filesystem1"
    mtd: partition "filesystem1" extends beyond the end of device "davinci_nand.0" -
    - size truncated to 0x1f800000
    0x000020000000-0x000020000000 : "filesystem2"
    mtd: partition "filesystem2" is out of reach -- disabled
    davinci_nand davinci_nand.0: controller rev. 2.3
    spi_davinci spi_davinci.0: DaVinci SPI driver in EDMA mode
    Using RX channel = 17 , TX channel = 16 and event queue = 1
    spi_davinci spi_davinci.0: Controller at 0xfec66000
    i2c /dev entries driver
    Linux video capture interface: v2.00
    vpfe_init
    vpfe-capture: vpss clock vpss_master enabled
    vpfe-capture: vpss clock vpss_slave enabled
    vpfe-capture vpfe-capture: v4l2 device registered
    vpfe-capture vpfe-capture: video device registered
    mt9t031 1-005d: No MT9T031 chip detected, register read ffffff87
    vpfe-capture vpfe-capture: v4l2 sub device mt9t031 register fails
    No sub devices registered
    vpfe-capture: vpfe capture clocks disabled
    vpfe_register_ccdc_device: DM355 CCDC
    dm355_ccdc: probe of dm355_ccdc failed with error -22
    aew major#: 252, minor# 0
    vinci_display_init>
    Trying to register davinci display video device.
    layer=c4f68800,layer->video_dev=c4f68970
    Trying to register davinci display video device.
    layer=c4f68400,layer->video_dev=c4f68570
    davinci_init:DaVinci V4L2 Display Driver V1.0 loaded
    avinci_init>
    watchdog watchdog: heartbeat 60 sec
    davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode
    Clocks: disable unused mjcp
    Clocks: disable unused asp0
    Clocks: disable unused asp1
    Clocks: disable unused mmcsd1
    Clocks: disable unused spi1
    Clocks: disable unused spi2
    Clocks: disable unused pwm0
    Clocks: disable unused pwm1
    Clocks: disable unused pwm2
    Clocks: disable unused pwm3
    Clocks: disable unused timer1
    Clocks: disable unused timer3
    Clocks: disable unused rto
    Clocks: disable unused usb
    RAMDISK: gzip image found at block 0
    mmc0: host does not support reading read-only switch. assuming write-enable.
    mmc0: new high speed SD card at address 0007
    mmcblk0: mmc0:0007 SD02G 1.86 GiB
     mmcblk0: p1 p2
    VFS: Mounted root (ext2 filesystem) on device 1:0.
    Freeing init memory: 108K

  • And here is what I have under /proc/devices:

    root@custombrd:~# cat /proc/devices
    Character devices:
      1 mem
      2 pty
      3 ttyp
      4 /dev/vc/0
      4 tty
      4 ttyS
      5 /dev/tty
      5 /dev/console
      5 /dev/ptmx
      7 vcs
     10 misc
     13 input
     29 fb
     81 video4linux
     89 i2c
     90 mtd
    128 ptm
    136 pts
    251 ttySDIO
    252 DM355AEW
    253 DaVinciResizer
    254 DaVinciPreviewer

    Block devices:
      1 ramdisk
    259 blkext
      8 sd
     31 mtdblock
     65 sd
     66 sd
     67 sd
     68 sd
     69 sd
     70 sd
     71 sd
    128 sd
    129 sd
    130 sd
    131 sd
    132 sd
    133 sd
    134 sd
    135 sd
    179 mmc
    root@custombrd:~#

  • Looks like I am getting somewhere. Still not working but I have progress in debugging the ./decode program.

    Here is what I did:

    root@custom:/opt/dvsdk/dm355# DMAI_DEBUG=2 ./decode -v/mnt/card/video/jeff.m4v
    Decode demo started.
    @0x00094835:[T:0x4001fce0] ti.sdo.dmai - [Dmai] Dmai log level set to '2'. Note
    that calling CERuntime_init after this point may cause unexpected change to DMAI
     tracing behavior.
    @0x0011fd39:[T:0x4001fce0] ti.sdo.dmai - [Display] Failed to open fb device /dev
    /fb2 (No such file or directory)
    Error: Failed to create attribute window device
    Error: Failed to create UI
    root@custom:/opt/dvsdk/dm355#

    That explains why it fails. I don't have /dev/fb2.

    What is /dev/fb2 ? Why not fb1 or fb0?

     

  • Gennadiy Kiryukhin said:
    What is /dev/fb2 ? Why not fb1 or fb0?

    The /dev/fb2 should be your attribute window, fb1 and fb0 should be the two video windows, unfortunately this is not well documented by the PSP, you have to look in the old LSP 2.10 release documentation (SPRUG92A) to see anything about this, and there the labels were different (they referred to VID0 VID1 OSD0 OSD1 instead).

    As to why you do not have them it is hard to say, my DM355 EVM booting DVSDK 3.10.00.19 is showing all 4 frame buffers:

    root@dm355-evm:~# ls /dev/fb*
    /dev/fb   /dev/fb0  /dev/fb1  /dev/fb2  /dev/fb3

    These frame buffers should be generated by the display drivers when the kernel boots, if they are not showing up there is probably some underlying problem with your display driver or hardware, though you can try to mknod them manually it is likely that it will not work either. I guess the next question would be, how is your custom hardware different from the EVM from a display hardware perspective, and to ensure that the kernel you are booting is capable of handling that. If there is some failure on the the display side (i.e. failure to contact a video DAC/encoder via I2C) you could see the frame buffers fail to instantiate.

    It may also be worth searching through dmesg for any errors, failures, warnings, etc that might point out what happened.

  • The MT9T031 driver fails to load now because I have not figured out how to change GPIO signals and pull reset signal high. Because of that, the sensor does not respond to I2C commands. Could that be the problem?

  • The sensor failing should not be a problem since that is on the capture end (it would prevent /dev/vid nodes from forming), but if that I2C problem was preventing the display driver from talking something it expected to that would cause a failure, it is possible they are related in that more abstract fashion.

  • I have the following items under /proc/fb

    root@custombrd:~# cat /proc/fb
    0 dm_osd0_fb
    1 dm_vid0_fb
    2 dm_osd1_fb
    3 dm_vid1_fb

    If I understand it correctly, everything seems to be loading properly. It is just the device nodes are not created properly. Right?

    I tried creating the device nodes using the following commands:

    mknod /dev/cmem c `awk "\\$2==\"cmem\" {print \\$1}" /proc/devices` 0
    mknod /dev/irqk c `awk "\\$2==\"irqk\" {print \\$1}" /proc/devices` 0
    mknod /dev/edma c `awk "\\$2==\"edma\" {print \\$1}" /proc/devices` 0
    mknod /dev/fb2 c `awk "\\$2==\"fb\" {print \\$1}" /proc/devices` 2
    mknod /dev/video1 c `awk "\\$2==\"fb\" {print \\$1}" /proc/devices` 1
    mknod /dev/video3 c `awk "\\$2==\"fb\" {print \\$1}" /proc/devices` 3

    Is it a proper way to create the missing device nodes?

    Please note, /dev/fb0 was created without my intervention (there is no /dev/fb0 on my root file system image).

    After creating the nodes manually and running the ./decode, I get the following error:

    root@custombrd:/opt/dvsdk/dm355# ./decode -v/mnt/card/video/test.m4v
    Decode demo started.
    Error: Failed to get attribute window buffer
    Error: Failed to create display device

    Thank you

     

  • Gennadiy Kiryukhin said:
    If I understand it correctly, everything seems to be loading properly. It is just the device nodes are not created properly. Right?

    I am not sure, since the nodes are not created automatically, there is something wrong somewhere, the contents of /proc/fb may be generated before the failure so this may not be a guarantee that the driver is ok. 

    Gennadiy Kiryukhin said:
    Is it a proper way to create the missing device nodes?

    I am not sure this will work either, I tried running your embedded awk command and it seems to fail on the EVM. You may want to try putting in the major number manually instead of that awk command, at least for the fb devices it should be 29 as defined by /Documentation/devices.txt in the kernel sources.

    Gennadiy Kiryukhin said:

    After creating the nodes manually and running the ./decode, I get the following error:

    root@custombrd:/opt/dvsdk/dm355# ./decode -v/mnt/card/video/test.m4v
    Decode demo started.
    Error: Failed to get attribute window buffer
    Error: Failed to create display device

    This could be because the node creation failed, or that there is some other failure behind the scenes in the display driver.

    In general there must be something unique about your hardware that is causing the display driver to fail, just as a quick test you may want to try running your modified kernel and filesystem for the custom board on the EVM to see if you still get the display nodes to instantiate properly. This will likely require some debugging of the modifications for your board and tracing through the kernel boot.

     

  • I was wrong about fb0. The node is present in the root file system and does not get created during runtime.

    I will try my kernel on the EVM hardware. But as far as I understand all the display hardware is inside the micro except for a few caps and inductors. Because of that it should be identical to the EVM hardware (unless there is a significant difference in the chip version)

    If you run the awk command as is you have to replace double backslash with single backslash. try replacing mknod with echo and you will see the arguments to the mknod command.

     

  • Here is the ls -l for /dev directory. As you may notice fb0 and fb2 have correct major numbers.

    crw-rw----    1 root     plugdev   10, 134 Jun 21  2010 apm_bios
    crw-r--r--    1 root     root     249,   0 Jan  1 00:22 cmem
    crw-rw--w-    1 root     tty        5,   1 Jan  1 00:09 console
    crw-r--r--    1 root     root     246,   0 Jan  1 00:11 dm350mmap
    crw-r--r--    1 root     root     247,   0 Jan  1 00:22 edma
    crw-rw----    1 root     root      13,  64 Jun 21  2010 event0
    crw-rw----    1 root     root      13,  65 Jun 21  2010 event1
    crw-rw----    1 root     root      13,  66 Jun 21  2010 event2
    crw-rw----    1 root     root      13,  67 Jun 21  2010 event3
    crw-rw----    1 root     root      13,  68 Jun 21  2010 event4
    crw-rw----    1 root     root      13,  69 Jun 21  2010 event5
    crw-rw----    1 root     root      13,  70 Jun 21  2010 event6
    crw-rw----    1 root     root      13,  71 Jun 21  2010 event7
    crw-------    1 root     root      29,   0 Jun 21  2010 fb0
    crw-r--r--    1 root     root      29,   2 Jan  1 00:22 fb2
    brw-rw----    1 root     disk       3,   0 Jun 21  2010 hda
    brw-rw----    1 root     root       3,   1 Jun 21  2010 hda1
    brw-rw----    1 root     root       3,  10 Jun 21  2010 hda10
    brw-rw----    1 root     root       3,  11 Jun 21  2010 hda11
    brw-rw----    1 root     root       3,  12 Jun 21  2010 hda12
    brw-rw----    1 root     root       3,  13 Jun 21  2010 hda13
    brw-rw----    1 root     root       3,  14 Jun 21  2010 hda14
    brw-rw----    1 root     root       3,  15 Jun 21  2010 hda15
    brw-rw----    1 root     root       3,  16 Jun 21  2010 hda16
    brw-rw----    1 root     root       3,  17 Jun 21  2010 hda17
    brw-rw----    1 root     root       3,  18 Jun 21  2010 hda18
    brw-rw----    1 root     root       3,  19 Jun 21  2010 hda19
    brw-rw----    1 root     root       3,   2 Jun 21  2010 hda2
    brw-rw----    1 root     root       3,   3 Jun 21  2010 hda3
    brw-rw----    1 root     root       3,   4 Jun 21  2010 hda4
    brw-rw----    1 root     root       3,   5 Jun 21  2010 hda5
    brw-rw----    1 root     root       3,   6 Jun 21  2010 hda6
    brw-rw----    1 root     root       3,   7 Jun 21  2010 hda7
    brw-rw----    1 root     root       3,   8 Jun 21  2010 hda8
    brw-rw----    1 root     root       3,   9 Jun 21  2010 hda9
    prw-------    1 root     root            0 Jun 21  2010 initctl
    crw-r--r--    1 root     root     248,   0 Jan  1 00:22 irqk
    crw-r-----    1 root     kmem       1,   2 Jun 21  2010 kmem
    crw-r-----    1 root     kmem       1,   1 Jun 21  2010 mem
    brw-rw----    1 root     disk     179,   0 Jun 21  2010 mmcblk0
    brw-rw----    1 root     root     179,   1 Jun 21  2010 mmcblk0p1
    brw-rw----    1 root     root     179,   2 Jun 21  2010 mmcblk0p2
    brw-rw----    1 root     root     179,   3 Jun 21  2010 mmcblk0p3
    brw-rw----    1 root     root     179,   4 Jun 21  2010 mmcblk0p4
    brw-rw----    1 root     root     179,   5 Jun 21  2010 mmcblk0p5
    brw-rw----    1 root     root     179,   6 Jun 21  2010 mmcblk0p6
    brw-rw----    1 root     root     179,   7 Jun 21  2010 mmcblk0p7
    crw-rw----    1 root     root      90,   0 Jun 21  2010 mtd0
    crw-rw----    1 root     root      90,   2 Jun 21  2010 mtd1
    crw-rw----    1 root     root      90,   4 Jun 21  2010 mtd2
    crw-rw----    1 root     root      90,   6 Jun 21  2010 mtd3
    crw-rw----    1 root     root      90,   8 Jun 21  2010 mtd4
    crw-rw----    1 root     root      90,  10 Jun 21  2010 mtd5
    crw-rw----    1 root     root      90,  12 Jun 21  2010 mtd6
    crw-rw----    1 root     root      90,  14 Jun 21  2010 mtd7
    brw-r-----    1 root     root      31,   0 Jun 21  2010 mtdblock0
    brw-r-----    1 root     root      31,   1 Jun 21  2010 mtdblock1
    brw-r-----    1 root     root      31,   2 Jun 21  2010 mtdblock2
    brw-r-----    1 root     root      31,   3 Jun 21  2010 mtdblock3
    brw-r-----    1 root     root      31,   4 Jun 21  2010 mtdblock4
    brw-r-----    1 root     root      31,   5 Jun 21  2010 mtdblock5
    brw-r-----    1 root     root      31,   6 Jun 21  2010 mtdblock6
    brw-r-----    1 root     root      31,   7 Jun 21  2010 mtdblock7
    crw-rw-rw-    1 root     root       1,   3 Jun 21  2010 null
    crw-r--r--    1 root     root       5,   2 Jun 21  2010 ptmx
    drwxr-xr-x    2 root     root            0 Jan  1 00:00 pts
    brw-r-----    1 root     root       1,   0 Jun 21  2010 ram0
    brw-r-----    1 root     root       1,   1 Jun 21  2010 ram1
    brw-r-----    1 root     root       1,   2 Jun 21  2010 ram2
    brw-r-----    1 root     root       1,   3 Jun 21  2010 ram3
    crw-r--r--    1 root     root       1,   8 Jun 21  2010 random
    crw-rw--w-    1 root     tty        5,   0 Jun 21  2010 tty
    crw-rw-rw-    1 root     root       4,   0 Jun 21  2010 tty0
    crw-rw-rw-    1 root     root       4,   1 Jun 21  2010 tty1
    crw-rw-rw-    1 root     root       4,   2 Jun 21  2010 tty2
    crw-rw-rw-    1 root     root       4,   3 Jun 21  2010 tty3
    crw-rw-rw-    1 root     root       4,   4 Jun 21  2010 tty4
    crw-rw-rw-    1 root     root       4,   5 Jun 21  2010 tty5
    crw-rw-rw-    1 root     root       4,   6 Jun 21  2010 tty6
    crw-rw-rw-    1 root     root       4,   7 Jun 21  2010 tty7
    crw-rw-rw-    1 root     root       4,   8 Jun 21  2010 tty8
    crw-------    1 root     root       4,  64 Jan  1 00:23 ttyS0
    crw-r-----    1 root     root     204,   5 Jun 21  2010 ttySA0
    crw-r--r--    1 root     root       1,   9 Jun 21  2010 urandom
    crw-r--r--    1 root     root      29,   1 Jan  1 00:23 video1
    crw-r--r--    1 root     root      29,   3 Jan  1 00:22 video3
    crw-r--r--    1 root     root       1,   5 Jun 21  2010 zero

  • When you boot the board do you see the Arago log in prompt on the TV output?

    After you have made the nodes, have you tried running fbset? If the newly created nodes are functional you should be able to set them to various resolutions and display types, for example if you run:

    root@dm355-evm:~# fbset -fb /dev/fb2 -xres 720 -yres 480 -vxres 720 -vyres 960 -nonstd 1

    You should see the log in prompt dissappear, based on the old PSP documentation this should make /dev/fb2 into an attribute window, but it seems to show up as a normal OSD window to me based on the following test, unfortunately I do not know of any updated PSP documentation. To fill in the display with something try running the command below:

    root@dm355-evm:~# cat /dev/urandom > /dev/fb2

    This should fill in the screen with random values (which look somewhat like static noise), so you can prove that the buffer exists and is being displayed. You can then get the command prompt back by running:

    root@dm355-evm:~# fbset -fb /dev/fb2 -xres 0

    This wipes out that OSD window so the old window should be viewable again, y ou can also cat /dev/urandom into the /dev/fb0 node to turn the command prompt into static too. Using these you should be able to find what portions of your driver are functional.

     

  • When the kernel boots, I don't see the login prompt. Firstl, I see a Linux logo in the upper left corner. After that, the screen turns blue. I definitely know there is a valid signals, because when signal is not there, I get a "No Input Signal" message on the display.

    None of the commands you suggested change the screen.

     

     

  • Bernie,

    Could you try booting with vpfe_capture.interface=1 without the actual sensor plugged in. This should make the hardware look more like it is on my board. On my board the image sensor (MT9T) is not responding because the sensor is held in reset by the signal from the micron.

    After the board boots, try filing fb0 with something.

    Update:

    We added the following parameters in bootargs:

    v4l2_video_capture=device:MT9T031 vpfe_capture.interface=1

    After the board booted we tried filling fb0 with junk (cat busybox > /dev/fb0) and nothing changed. Pretty much the DM355EVM was working just like my board.

     

  • One more thing, in case somebody might be interested.

    udev will hang during boot if Networking Support -> Networking Options -> Unix Domain sockets option in Linux kernel configuration is turned off. It must be turned on for udev to work.

  • Gennadiy Kiryukhin said:
    Could you try booting with vpfe_capture.interface=1 without the actual sensor plugged in. This should make the hardware look more like it is on my board. On my board the image sensor (MT9T) is not responding because the sensor is held in reset by the signal from the micron.

    This is a most interesting obeservation, it appears that if the capture driver fails it messes up the display driver too, I tried this on my board and got the same results, with the capture settings you suggest I get a blank screen, without them I get the terminal login screen.

    The question of how they are connected is harder to answer, I was under the impression that they should work independently. I will see if we can get some eyes from the PSP team on this thread for their commentary on what could be happening.

  • I was able to get the set my GPIOs properly and MT9T031 driver was able to load after that. This for some reason affected the frame buffer and it began to work. I don't have the console one the video output (something to do with the was init script is working) but I was able to "see" the busybox code by dumping it to the screen:
    cat /bin/busybox > /dev/fb0

    The ./decode program began to work too.

    What is the relationship between loading fb driver and MT9T031 driver?