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.

IPNC not working on DM368-IMX036 Appro

As I mentioned in another thread (http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/p/130560/467798.aspx#467798), I can't get IPNC 2.6.1 to build and run correctly on an Appro DM368-IMX036 camera.

When I build in the release configuration (using davinci_dm368_ipnc_defconfig_rel), the boot sequence ends at

Loading iSCSI transport class v1.1-646.<5>iscsi: registered transport (tcp)

and then there is no login prompt. If the camera's boa server is running, it does not respond to HTTP requests. See the console output below.

When I build in the debug configuration (using davinci_dm368_ipnc_defconfig_dbg), the boot sequence completes and I get a login prompt. The usual IPNC processes appear to be running (system_server, av_server.out, boa) but the boa server does not respond to HTTP requests.

I'm using the 2.6.1 package provided by Appro. If I install Appro's pre-built 2.6.1 binaries into the camera's flash, the camera works correctly and responds to HTTP requests. It seems like I must be doing something wrong when building or installing Linux or the root filesystem. How can I resolve these problems?

Console output from release configuration:

---------------------------------------------------------


DM368 IPNC :>tftpboot 0x80700000 uImage_ipnc_DM368_IMX036

TFTP from server 192.168.20.142; our IP address is 192.168.20.20

Filename 'uImage_ipnc_DM368_IMX036'.

Load address: 0x80700000

Loading: #################################################################

         ###########################################################

done

Bytes transferred = 1809576 (1b9ca8 hex)

DM368 IPNC :>tftpboot 0x82000000 cramfsImage_ipnc_DM368_IMX036

TFTP from server 192.168.20.142; our IP address is 192.168.20.20

Filename 'cramfsImage_ipnc_DM368_IMX036'.

Load address: 0x82000000

Loading: #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         #################################################################

         ###################

done

Bytes transferred = 14577664 (de7000 hex)

DM368 IPNC :>nand erase 0x500000 0x1000000

 

NAND erase: device 0 offset 0x500000, size 0x1000000

Erasing at 0x14e0000 -- 100% complete.

OK

DM368 IPNC :>nand write 0x80700000 0x500000 0x200000

 

NAND write: device 0 offset 0x500000, size 0x200000

 2097152 bytes written: OK

DM368 IPNC :>nand write 0x82000000 0x700000 0xE00000

 

NAND write: device 0 offset 0x700000, size 0xe00000

 14680064 bytes written: OK

 

DM368 IPNC :>setenv bootargs 'mem=48M console=ttyS1,115200n8 root=/dev/mtdblock3 rootfstype=cramfs ip=192.168.20.20:192.168.20.1:192.168.20.1:255.255.255.0 eth=00:0C:0C:A0:06:94'

DM368 IPNC :>saveenv

Saving Environment to NAND...

Erasing Nand...

Erasing at 0x240000 -- 100% complete.

Writing to Nand... done

DM368 IPNC :>printenv

bootdelay=4

baudrate=115200

bootfile="uImage"

setboot=setenv bootargs $(bootargs)

ethaddr=00:0C:0C:A0:06:94

dnsip=192.168.20.1

nfshost=192.168.20.142

rootpath=/home/troy/disk/ipnc_2.6.1/ipnc/target/filesys

stdin=serial

stdout=serial

stderr=serial

ver=U-Boot 1.3.4 (Dec  9 2010 - 17:44:14) DM368-IPNC-1.0.1

filesize=DE7000

fileaddr=82000000

gatewayip=192.168.20.1

netmask=255.255.255.0

ipaddr=192.168.20.20

serverip=192.168.20.142

bootargs=mem=48M console=ttyS1,115200n8 root=/dev/mtdblock3 rootfstype=cramfs ip=192.168.20.20:192.168.20.1:192.168.20.1:255.255.255.0 eth=00:0C:0C:A0:06:94

bootcmd=nboot 0x80700000 0 0x500000;bootm 0x80700000

 

Environment size: 640/131068 bytes

 

DM368 IPNC :>reset

DM36x initialization passed!

TI UBL Base Version: 1.50

Boot Loader BootMode = NAND

Starting NAND Copy...

Valid magicnum, 0xA1ACED66, found in block 0x00000008.

Boot Mode Task Completed

 

IPNC UBL Version: 1.1.0

Platform: DM368

 

Jumping to entry point at 0x81080000

 

U-Boot 1.3.4 (Dec  9 2010 - 17:44:14) DM368-IPNC-1.0.1

 

I2C:   ready

DRAM:  128 MB

NAND:  NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit)

Bad block table found at page 65472, version 0x01

Bad block table found at page 65408, version 0x01

128 MiB

In:    serial

Out:   serial

Err:   serial

ARM Clock :- 432MHz

DDR Clock :- 340MHz

Ethernet PHY: GENERIC @ 0x01

Hit any key to stop autoboot:  0

 

Loading from NAND 128MiB 3,3V 8-bit, offset 0x500000

   Image Name:   Linux-2.6.18_pro500-davinci_IPNC

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    1809512 Bytes =  1.7 MB

   Load Address: 80008000

   Entry Point:  80008000

## Booting kernel from Legacy Image at 80700000 ...

   Image Name:   Linux-2.6.18_pro500-davinci_IPNC

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    1809512 Bytes =  1.7 MB

   Load Address: 80008000

   Entry Point:  80008000

   Verifying Checksum ... OK

   Loading Kernel Image ... OK

OK

 

Starting kernel ...

 

Linux version 2.6.18_pro500-davinci_IPNC_DM368_2.6.0 (troy@ubuntu) (gcc version 4.2.0 (MontaVista 4.2.0-16.0.32.0801914 2008-08-30)) #1 PREEMPT Tue Sep 6 15:16:10 CDT 2011

CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177

Machine: DaVinci DM368 IPNC

Memory policy: ECC disabled, Data cache writeback

DaVinci DM0365 variant 0x8

PLL0: fixedrate: 24000000, commonrate: 170000000, vpssrate: 340000000

PLL0: vencrate_sd: 75555555, ddrrate: 340000000 mmcsdrate: 48571428

PLL1: armrate: 432000000, voicerate: 20571428, vencrate_hd: 27000000

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: 12288

Kernel command line: mem=48M console=ttyS1,115200n8 root=/dev/mtdblock3 rootfstype=cramfs ip=192.168.20.20:192.168.20.1:192.168.20.1:255.255.255.0 eth=00:0C:0C:A0:06:94

PID hash table entries: 256 (order: 8, 1024 bytes)

Clock event device timer0_0 configured with caps set: 07

Console: colour dummy device 80x30

Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)

Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)

Memory: 48MB = 48MB total

Memory: 44684KB available (3101K code, 644K data, 176K init)

Security Framework v1.0.0 initialized

Capability LSM initialized

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

NET: Registered protocol family 16

DaVinci: 104 gpio irqs

MUX: initialized GPIO20

MUX: initialized I2C_SCL

Generic PHY: Registered new driver

ch0 default output "COMPOSITE", mode "NTSC"

VPBE Encoder Initialized

SCSI subsystem initialized

NET: Registered protocol family 2

IP route cache hash table entries: 512 (order: -1, 2048 bytes)

TCP established hash table entries: 2048 (order: 1, 8192 bytes)

TCP bind hash table entries: 1024 (order: 0, 4096 bytes)

TCP: Hash tables configured (established 2048 bind 1024)

TCP reno registered

 

 ***davinci_spi_board_init()!<6>

 ***davinci_spi_board_init_End(0)!<5>VFS: Disk quotas dquot_6.5.1

Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)

squashfs: version 3.1 (2006/08/19) Phillip Lougher

JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.

yaffs Sep  6 2011 15:13:27 Installing.

SGI XFS with no debug enabled

Initializing Cryptographic API

io scheduler noop registered

io scheduler anticipatory registered (default)

LTT : ltt-facilities init

LTT : ltt-facility-core init in kernel

DAVINCI-WDT: DaVinci Watchdog Timer: heartbeat 60 sec

Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled

serial8250.0: ttyS0 at MMIO map 0x1c20000 mem 0xfbc20000 (irq = 40) is a 16550A

serial8250.0: ttyS1 at MMIO map 0x1d06000 mem 0xfbd06000 (irq = 41) is a 16550A

RAMDISK driver initialized: 1 RAM disks of 32768K size 1024 blocksize

Linux video capture interface: v2.00

Trying to register davinci display video device.

layer=c060ea00,layer->video_dev=c060eb60

Trying to register davinci display video device.

layer=c060e800,layer->video_dev=c060e960

davinci_init:DaVinci V4L2 Display Driver V1.0 loaded

i2c /dev entries driver

nand_davinci nand_davinci.0: Using 4-bit hardware ECC

NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit)

Creating 7 MTD partitions on "nand_davinci.0":

0x00000000-0x00300000 : "bootloader"

0x00300000-0x00500000 : "params"

0x00500000-0x00700000 : "kernel"

0x00700000-0x02700000 : "filesystem"

0x02700000-0x02900000 : "data1"

0x02900000-0x02d00000 : "Calibration"

0x02d00000-0x08000000 : "data2"

nand_davinci nand_davinci.0: hardware revision: 2.3

rtc_davinci_dm365 rtc_davinci_dm365.0: rtc intf: proc

rtc_davinci_dm365 rtc_davinci_dm365.0: rtc intf: dev (254:0)

rtc_davinci_dm365 rtc_davinci_dm365.0: rtc core: registered rtc_davinci_dm365 as rtc0

Advanced Linux Sound Architecture Driver Version 1.0.12rc1 (Thu Jun 22 13:55:50 2006 UTC).

ASoC version 0.13.1

CQ0093 Voice Codec 0.1

asoc: cq93vc <-> davinci-vcif mapping ok

ALSA device list:

  #0: On-chip voice codec (cq93vc)

IPv4 over IPv4 tunneling driver

TCP bic registered

NET: Registered protocol family 1

NET: Registered protocol family 17

rtc_davinci_dm365 rtc_davinci_dm365.0: setting the system clock to 2000-01-07 01:49:48 (947209788)

Time: timer0_1 clocksource has been installed.

Clock event device timer0_0 configured with caps set: 08

Switched to high resolution mode on CPU 0

IP-Config: No network devices available.

VFS: Mounted root (cramfs filesystem) readonly.

Freeing init memory: 176K

Warning: unable to open an initial console.

CSL: Module install successful, device major num = 253

CSL: Module version 0.10.00, built on Sep  6 2011 15:18:29

I2C: Module install successful, device major num = 252

DMA: Module install successful, device major num = 251

DRV: Module install successful

DRV: Module built on Sep  6 2011 15:18:33

DRV: EDMACC.QUEPRI  = 00000777

DRV: SYSTEM.MSTPRI0 = 00440022

DRV: SYSTEM.MSTPRI1 = 00000244

DRV: ISP.BCR        = 00000002

DRV: SYSTEM.MISC    = 00000391

CMEMK module: built on Sep  6 2011 at 15:18:02

  Reference Linux version 2.6.18

  File /media/LinuxExt2/ipnc_2.6.1/dvsdk_2_10_01_18_v2.6/linuxutils_2_24_03/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c

allocated heap buffer 0xc4000000 of size 0x5000000

CMEM Range Overlaps Kernel Physical - allowing overlap

CMEM phys_start (0x1000) overlaps kernel (0x80000000 -> 0x83000000)

cmemk initialized

EDMAK module: built on Sep  6 2011 at 15:18:05

  Reference Linux version 2.6.18

  File /media/LinuxExt2/ipnc_2.6.1/dvsdk_2_10_01_18_v2.6/linuxutils_2_24_03/packages/ti/sdo/linuxutils/edma/src/module/edmak.c

IRQK module: built on Sep  6 2011 at 15:18:06

  Reference Linux version 2.6.18

  File /media/LinuxExt2/ipnc_2.6.1/dvsdk_2_10_01_18_v2.6/linuxutils_2_24_03/packages/ti/sdo/linuxutils/irq/src/module/irqk.c

irqk initialized

io scheduler deadline registered

io scheduler cfq registered

 sbulla: unknown partition table

Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

loop: loaded (max 8 devices)

tun: Universal TUN/TAP device driver, 1.6

tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>

CSLIP: code copyright 1989 Regents of the University of California

netconsole: not configured, aborting

PPP generic driver version 2.4.2

PPP Deflate Compression module registered

Davinci EMAC MII Bus: probed

MAC address is deadbeaf

TI DaVinci EMAC Linux version updated 4.0

davinci-mmc davinci-mmc.0: Supporting 4-bit mode

davinci-mmc davinci-mmc.0: Using DMA mode

usbcore: registered new driver usbfs

usbcore: registered new driver hub

musb_hdrc: version 6.0, cppi-dma, peripheral, debug=0

musb_hdrc musb_hdrc: No DMA interrupt line

musb_hdrc: USB Peripheral mode controller at c38f8000 using DMA, IRQ 12

Loading iSCSI transport class v1.1-646.<5>iscsi: registered transport (tcp)

  • Try to delete  the file of  the struct sysInfo.

    rm  /mnt/nand/sysenv.cfg

  • Thanks for the suggestion. Using the debug build, I removed the systenv.cfg file and rebooted the camera but it didn't help. The camera boots successfully but the boa web server does not respond to requests from Internet Explorer.

    # ps
      PID  Uid     VmSize Stat Command
        1 root        568 S   init [3]
        2 root            SW  [posix_cpu_timer]
        3 root            SW  [softirq-high/0]
        4 root            SW  [softirq-timer/0]
        5 root            SW  [softirq-net-tx/]
        6 root            SW  [softirq-net-rx/]
        7 root            SW  [softirq-block/0]
        8 root            SW  [softirq-tasklet]
        9 root            SW  [softirq-hrtimer]
       10 root            SW  [softirq-rcu/0]
       11 root            SW< [desched/0]
       12 root            SW< [events/0]
       13 root            SW< [khelper]
       14 root            SW< [kthread]
       25 root            SW< [kblockd/0]
       79 root            SW  [pdflush]
       80 root            SW  [pdflush]
       81 root            SW< [kswapd0]
       82 root            SW< [aio/0]
       83 root            SW< [xfslogd/0]
       84 root            SW< [xfsdatad/0]
      176 root            SW  [mtdblockd]
      203 root            SW< [kmmcd]
      218 root            SW< [rpciod/0]
      273 root        404 S < udevd --daemon
      519 root            SWN [jffs2_gcd_mtd4]
      521 root        952 S   ./system_server
      533 root       2296 S   ./av_server.out DM368 NTSC APPRO2A AEWB 1080P H264 50
      649 bin         368 S   /sbin/portmap
      659 root        636 S   /usr/sbin/inetd
      748 root        532 S   ./boa -c /etc
      751 root        492 S   avahi-autoipd: [eth0] sleeping
      752 root        308 S   avahi-autoipd: [eth0] callout dispatcher
      755 root       1208 S   avahi-daemon: running [192.local]
      758 root        520 S   /usr/sbin/avahi-dnsconfd -D
      761 root        932 S   -sh
      768 root        748 R   ps

     

  • I have made some progress. Here are a few observations:

    1. The document "IPNC Reference Design on DM36x, User Guide" says that one can build either a "release" build or a "debug" build (see step 13 in section 3.1.1). To build the release build, copy davinci_dm368_ipnc_defconfig_rel to davinci_dm368_ipnc_defconfig. To build the debug build, copy davinci_dm368_ipnc_defconfig_dbg todavinci_dm368_ipnc_defconfig. However, this is NOT correct. Appro told me to build with the version of davinci_dm368_ipnc_defconfig that was included in the published distribution package. If you compare the various versions of these files, the most significant difference is that the various SPI flags need to be enabled. These include CONFIG_SPI, CONFIG_SPI_MASTER, CONFIG_SPI_DAVINCI, CONFIG_SPI_DAVINCI_DMA, CONFIG_SPI_BITBANG and CONFIG_SPI_SPIDEV.

    2. Appro also advised that to use an NFS filesystem, boot with a NAND-resident root filesystem and then mount an NFS filesystem during the boot sequence or later. To do this, copy the rcS.nfs file to rcS in the /etc/init.d directory. Edit the rcS script to adjust the mount command to refer to the IP address of the NFS server.

    3. The only way I have successfully built a "release" configuration and booted it from NAND using a NAND-resident root filesystem is to use the root userid when unpacking and building the IPNC software. If I use a non-root userid, the kernel and root filesystem images result in a failed boot sequence, as described earlier in this thread. The documentation states that using the root userid is not necessary (see step 14 in section 3.1.1) but it seems to be necessary. It is insufficient to simply re-build everything as root. It must be installed as root and built as root. I have not determined why this is necessary.