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.

soft-UART implementation on OMAPL-13X PRU error

Other Parts Discussed in Thread: AM1808, OMAP-L138, DA8XX, PMP, OMAPL138

Hi,

   I am using AM1808-OMAPL13X LOGICPD ZOOM EXP KIT with L13X UART expansion Board of mistral. I want to use soft-UART so i done following steps.

- using l13xdc_quick start guide.pdf  installing the driver sources for DaVinci-PSP-SDK-03.20.00.12 for patches from pru-linux-06-23-2011-1121-v3.1.patch.tar.gz

-Building the firmware Execute the script build_linux.sh Copy the files from under the “pru/firmware/bin” directory into the filesystem
“lib/firmware/omapl_pru”.
$ cp bin/* lib/firmware/omapl_pru

-from http://processors.wiki.ti.com/index.php/Soft-UART_Implementation_on_OMAPL_PRU_-_Software_Users_Guide Building the linux kernel & device driver

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules

make INSTALL_MOD_PATH=/home/user/target_rootfs modules_install

upto this it is working fine but

-With this uImage AM1808 decompressed it but not booting & its hang up after "uncompressing kernel....done.Booting the kernel."

-With all modules installed if i used the older uImage then if i do "modprobe suart_emu" then i got error that suart_emu.ko is not a file or directories but actually that suart_emu.ko file is there.so how to solve this problem?

  • Hi Jitendra,

    What is the difference between the first kernel that boots and second that does not?  What kernel versions are each of these?

    The error message seen with modprobe may indicate that there is a mismatch between the kernel version and the version the module expects.  Are you able to install the module by changing directories to where the suart_emu.ko is located and doing "insmod suart_emu"?

    Also, please note that the latest driver and firmware are available here.

    Regards,
    Melissa

  • Hi Melissa,

    The first kernel version is 2.6.33 -rc4(from AM1808-OMAPL138 Exp.Kit) & second kernel version 2.6.37 -rc2 (from http://processors.wiki.ti.com/index.php/Soft-UART_Implementation_on_OMAPL_PRU_-_Software_Users_Guide)    

    If i used the pre-built uImage with Root File system from above link then there is problem in

    Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) as shown in booting sequence...

     

    Booting with TI UBL

    Device OPP (456MHz, 1.3V)

    U-Boot 2009.11 (Apr 15 2011 - 13:22:24)

    I2C: ready

    DRAM: 64 MB

    MMC: davinci: 0

    In: serial

    Out: serial

    Err: serial

    ARM Clock : 456000000 Hz

    DDR Clock : 132000000 Hz

    Net: Ethernet PHY: GENERIC @ 0x00

    Hit any key to stop autoboot: 0

    Using device

    TFTP from server 192.168.90.184; our IP address is 192.168.90.150

    Filename 'uImage'.

    Load address: 0xc0700000

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

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

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

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

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

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

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

    done

    Bytes transferred = 2305132 (232c6c hex)

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

    Image Name: Linux-2.6.37

    Image Type: ARM Linux Kernel Image (uncompressed)

    Data Size: 2305068 Bytes = 2.2 MB

    Load Address: c0008000

    Entry Point: c0008000

    Verifying Checksum ... OK

    Loading Kernel Image ... OK

    OK

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel.

    Linux version 2.6.37 (rohit@rohit-desktop) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 PREEMPT Tue Dec 13 17:09:52 IST 2011

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

    CPU: VIVT data cache, VIVT instruction cache

    Machine: DaVinci DA850/OMAP-L138/AM18x EVM

    Memory policy: ECC disabled, Data cache writeback

    DaVinci da850/omap-l138/am18x variant 0x1

    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256

    Kernel command line: console=ttyS2,115200n8 rw noinitrd mem=64M root=/dev/nfs nfsroot=192.168.90.184:/home/rohit/NFS,nolock,rsize=1024,wsize=1024 ip=192.168.90.150:19f

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

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

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

    Memory: 64MB = 64MB total

    Memory: 60036k/60036k available, 5500k reserved, 0K highmem

    Virtual kernel memory layout:

    vector : 0xffff0000 - 0xffff1000 ( 4 kB)

    fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)

    DMA : 0xff000000 - 0xffe00000 ( 14 MB)

    vmalloc : 0xc4800000 - 0xfea00000 ( 930 MB)

    lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)

    modules : 0xbf000000 - 0xc0000000 ( 16 MB)

    .init : 0xc0008000 - 0xc0031000 ( 164 kB)

    .text : 0xc0031000 - 0xc047b000 (4392 kB)

    .data : 0xc047c000 - 0xc04a6a20 ( 171 kB)

    SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1

    Preemptable hierarchical RCU implementation.

    RCU-based detection of stalled CPUs is disabled.

    Verbose stalled-CPUs detection is disabled.

    NR_IRQS:245

    Console: colour dummy device 80x30

    Calibrating delay loop... 226.91 BogoMIPS (lpj=1134592)

    pid_max: default: 32768 minimum: 301

    Security Framework initialized

    Mount-cache hash table entries: 512

    CPU: Testing write buffer coherency: ok

    DaVinci: 144 gpio irqs

    regulator: core version 0.5

    regulator: dummy:

    NET: Registered protocol family 16

    WARNING: both McASP and McBSP are enabled, but they share pins.

    Only McASP will work. If you want McBSP support, disable McASP.

    WARNING: both McASP and UART1_AFE are enabled, but they share pins.

    Disable one of them.

    da850_evm_init: eHRPWM module 0 cannot be used since it is being used by MII interface

    da850_evm_init: eHRPWM module1 outputA cannot be used since it is being used by LCD

    da850_evm_init: eHRPWM module1 outputB cannot be used since it is being used by spi1

    bio: create slab <bio-0> at 0

    SCSI subsystem initialized

    usbcore: registered new interface driver usbfs

    usbcore: registered new interface driver hub

    usbcore: registered new device driver usb

    pca953x 1-0020: failed reading register

    pca953x 1-0021: interrupt support not compiled in

    regulator: VDCDC1: 3200 <--> 3300 mV at 3300 mV

    regulator: VDCDC2: 1750 <--> 3300 mV at 3300 mV

    regulator: VDCDC3: 950 <--> 1350 mV at 1300 mV

    regulator: LDO1: 1800 mV

    regulator: LDO2: 1150 <--> 1300 mV at 1200 mV

    i2c-gpio i2c-gpio.1: using pins 20 (SDA) and 21 (SCL)

    Advanced Linux Sound Architecture Driver Version 1.0.23.

    Bluetooth: Core ver 2.15

    NET: Registered protocol family 31

    Bluetooth: HCI device and connection manager initialized

    Bluetooth: HCI socket layer initialized

    Switching to clocksource timer0_1

    musb-hdrc: version 6.0, host, debug=0

    musb-hdrc musb-hdrc: dma type: dma-cppi41

    Waiting for USB PHY clock good...

    musb-hdrc musb-hdrc: MUSB HDRC host driver

    musb-hdrc musb-hdrc: new USB bus registered, assigned bus number 1

    hub 1-0:1.0: USB hub found

    hub 1-0:1.0: 1 port detected

    musb-hdrc musb-hdrc: USB Host mode controller at fee00000 using DMA, IRQ 58

    NET: Registered protocol family 2

    IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

    TCP established hash table entries: 2048 (order: 2, 16384 bytes)

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

    TCP: Hash tables configured (established 2048 bind 2048)

    TCP reno registered

    UDP hash table entries: 256 (order: 0, 4096 bytes)

    UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

    NET: Registered protocol family 1

    RPC: Registered udp transport module.

    RPC: Registered tcp transport module.

    RPC: Registered tcp NFSv4.1 backchannel transport module.

    EMAC: MII PHY configured, RMII PHY will not be functional

    McBSP:Probed McBSP1

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

    msgmni has been set to 117

    io scheduler noop registered (default)

    da8xx_lcdc da8xx_lcdc.0: GLCD: Found Sharp_LK043T1DG01 panel

    Console: switching to colour frame buffer device 60x34

    Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled

    serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a AR7

    serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a AR7

    serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a AR7

    console [ttyS2] enabled

    brd: module loaded

    at24 1-0050: 32768 byte 24c256 EEPROM (writable)

    ahci ahci: forcing PORTS_IMPL to 0x1

    ahci ahci: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl platform mode

    ahci ahci: flags: ncq sntf pm led clo only pmp pio slum part ccc

    scsi0 : ahci_platform

    ata1: SATA max UDMA/133 mmio [mem 0x01e18000-0x01e19fff] port 0x100 irq 67

    spi_davinci spi_davinci.1: DMA: supported

    spi_davinci spi_davinci.1: DMA: RX channel: 18, TX channel: 19, event queue: 0

    m25p80 spi1.0: m25p64 (8192 Kbytes)

    Creating 6 MTD partitions on "m25p80":

    0x000000000000-0x000000010000 : "UBL"

    0x000000010000-0x000000090000 : "U-Boot"

    0x000000090000-0x0000000a0000 : "U-Boot-Env"

    0x0000000a0000-0x000000320000 : "Kernel"

    0x000000320000-0x000000720000 : "Filesystem"

    0x0000007f0000-0x000000800000 : "MAC-Address"

    Read MAC addr from SPI Flash: 00:08:ee:05:17:2d

    spi_davinci spi_davinci.1: Controller at 0xfef0e000

    davinci_mdio davinci_mdio.0: davinci mdio revision 1.5

    davinci_mdio davinci_mdio.0: detected phy mask fffffffe

    davinci_mdio.0: probed

    davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver SMSC LAN8710/LAN8720

    console [netcon0] enabled

    netconsole: network logging started

    ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver

    ohci ohci.0: DA8xx OHCI

    ohci ohci.0: new USB bus registered, assigned bus number 2

    Waiting for USB PHY clock good...

    ohci ohci.0: irq 59, io mem 0x01e25000

    hub 2-0:1.0: USB hub found

    hub 2-0:1.0: 1 port detected

    Initializing USB Mass Storage driver...

    usbcore: registered new interface driver usb-storage

    USB Mass Storage support registered.

    input: gpio-keys-polled as /devices/platform/gpio-keys-polled.1/input/input0

    input: TPS6507x Touchscreen as /devices/platform/i2c-gpio.1/i2c-1/1-0048/input/input1

    omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0

    omap_rtc: RTC power up reset detected

    omap_rtc: already running

    ata1: SATA link down (SStatus 0 SControl 300)

    i2c /dev entries driver

    watchdog watchdog: heartbeat 60 sec

    Bluetooth: HCI UART driver ver 2.2

    Bluetooth: HCI H4 protocol initialized

    Bluetooth: HCILL protocol initialized

    cpuidle: using governor ladder

    cpuidle: using governor menu

    davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode

    davinci_mmc davinci_mmc.1: Using DMA, 4-bit mode

    usbcore: registered new interface driver usbhid

    usbhid: USB HID core driver

    1-0018 supply IOVDD not found, using dummy regulator

    1-0018 supply DVDD not found, using dummy regulator

    1-0018 supply AVDD not found, using dummy regulator

    1-0018 supply DRVDD not found, using dummy regulator

    asoc: tlv320aic3x-hifi <-> davinci-mcasp.0 mapping ok

    ALSA device list:

    #0: DA850/OMAP-L138 EVM

    nf_conntrack version 0.5.0 (938 buckets, 3752 max)

    ip_tables: (C) 2000-2006 Netfilter Core Team

    TCP cubic registered

    NET: Registered protocol family 17

    Bluetooth: L2CAP ver 2.15

    Bluetooth: L2CAP socket layer initialized

    Bluetooth: SCO (Voice Link) ver 0.6

    Bluetooth: SCO socket layer initialized

    Bluetooth: RFCOMM TTY layer initialized

    Bluetooth: RFCOMM socket layer initialized

    mmc0: new high speed SDHC card at address b368

    Bluetooth: RFCOMM ver 1.11

    Bluetooth: BNEP (Ethernet Emulation) ver 1.3

    Bluetooth: BNEP filters: protocol multicast

    mmcblk0: mmc0:b368 00000 3.74 GiB

    Bluetooth: HIDP (Human Interface Emulation) ver 1.2

    mmcblk0: p1 p2 p3

    regulator_init_complete: incomplete constraints, leaving LDO2 on

    regulator_init_complete: incomplete constraints, leaving LDO1 on

    regulator_init_complete: incomplete constraints, leaving VDCDC3 on

    regulator_init_complete: incomplete constraints, leaving VDCDC2 on

    regulator_init_complete: incomplete constraints, leaving VDCDC1 on

    omap_rtc omap_rtc: setting system clock to 2011-07-07 13:46:33 UTC (1310046393)

    davinci_mdio davinci_mdio.0: resetting idled controller

    net eth0: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=0:00, id=7c0f1)

    IP-Config: Complete:

    device=eth0, addr=192.168.90.150, mask=255.255.255.0, gw=192.168.90.254,

    host=gtmoc, domain=, nis-domain=(none),

    bootserver=192.168.90.184, rootserver=192.168.90.184, rootpath=

    PHY: 0:00 - Link is Up - 10/Half

    VFS: Unable to mount root fs via NFS, trying floppy.

    VFS: Cannot open root device "nfs" or unknown-block(2,0)

    Please append a correct "root=" boot option; here are the available partitions:

    1f00 64 mtdblock0 (driver?)

    1f01 512 mtdblock1 (driver?)

    1f02 64 mtdblock2 (driver?)

    1f03 2560 mtdblock3 (driver?)

    1f04 4096 mtdblock4 (driver?)

    1f05 64 mtdblock5 (driver?)

    b300 3931136 mmcblk0 driver: mmcblk

    b301 64260 mmcblk0p1 00000000-0000-0000-0000-000000000mmcblk0p1

    b302 923737 mmcblk0p2 00000000-0000-0000-0000-000000000mmcblk0p2

    b303 2891700 mmcblk0p3 00000000-0000-0000-0000-000000000mmcblk0p3

    Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

    Backtrace:

    [<c0035730>] (dump_backtrace+0x0/0x114) from [<c036e548>] (dump_stack+0x18/0x1c)

    r7:00008000 r6:c3814000 r5:c00284c4 r4:c04a6ff0

    [<c036e530>] (dump_stack+0x0/0x1c) from [<c036e5c4>] (panic+0x78/0x19c)

    [<c036e54c>] (panic+0x0/0x19c) from [<c0008fd4>] (mount_block_root+0x1e0/0x220)

    r3:00000000 r2:00000000 r1:c3827f58 r0:c041795c

    [<c0008df4>] (mount_block_root+0x0/0x220) from [<c00090c0>] (mount_root+0xac/0xd0)

    r8:00000000 r7:00000013 r6:c004a27c r5:c00284c4 r4:00200000

    [<c0009014>] (mount_root+0x0/0xd0) from [<c0009254>] (prepare_namespace+0x170/0x1c8)

    r4:c04a6a84

    [<c00090e4>] (prepare_namespace+0x0/0x1c8) from [<c00084c0>] (kernel_init+0x114/0x154)

    r5:c00083ac r4:c04a6a20

    [<c00083ac>] (kernel_init+0x0/0x154) from [<c004a27c>] (do_exit+0x0/0x6e0)

    r5:c00083ac r4:00000000

     

    So now how to solve this problem?

    also i tried with kernel 2.6.33-rc4 uImage with Root file system from above link then it is working fine upto booting but i got following issue

     root@am180x-evm:~# modprobe suart_emu

    FATAL: Could not open 'kernel/drivers/serial/omapl_pru/suart_emu.ko': No such file or directory

    root@am180x-evm:~# cd /lib/modules/2.6.33-rc4/kernel/drivers/serial/omapl_pru/ 

    root@am180x-evm:/lib/modules/2.6.33-rc4/kernel/drivers/serial/omapl_pru# ls

    suart_emu.ko

    root@am180x-evm:/lib/modules/2.6.33-rc4/kernel/drivers/serial/omapl_pru# insmod

    suart_emu.ko

    suart_emu: Unknown symbol release_firmware

    suart_emu: Unknown symbol request_firmware

    insmod: error inserting 'suart_emu.ko': -1 Unknown symbol in module

     So how to solve this problem? 

     

     

  • Hi Jitendra,

    Can you try using a 2.6.32 kernel version?  The Linux driver was implemented on the 2.6.32 kernel and will not work with the 2.6.37 kernel.  You can obtain this kernel from the Linux Kernel and Driver Sources on the soft-UART wiki page.

    Also, what toolchain (i.e. CodeSourcery) and version was used to build both the image and module?

    Regards,

    Melissa

  • Hi Jitendra,

    Another thought is to make sure firmware support is enabled by your kernel.  For example, the following firmware support should be enabled by the da850_am18x_pru_defconfig file:

            CONFIG_PREVENT_FIRMWARE_BUILD=y
            CONFIG_FW_LOADER=y
            CONFIG_FIRMWARE_IN_KERNEL=y
            CONFIG_EXTRA_FIRMWARE=""

    The steps to build the kernel using this defconfig file are give on the wiki.

    Regards,
    Melissa

  • Hi Melissa,

        I also tried with kernel version 2.6.32 but it is giving me the same problem. I used the CodeSourcery (Sourcery G++ Lite 2009q1-203) toolchain for GCC version 4.3.3 from CD provided with ZOOM AM1808 Experimenter Kit (LOGICPD).

  • Hi Jitendra,

    What steps / commands are you using to build the kernel? 

    Make sure you use da850_am18x_pru_defconfig (note this is different than da850_omapl138_defconfig).

    Regards,

    Melissa

  • Hi Melissa,

       I tried with "da850_am18x_pru_defconfig" but it hang up at " Uncompressing Linux... done, booting the kernel.

     

    Regards,

    jitendra

  • It looks like you have a later rev of the chip. On the older kernel versions, you might have to add the later rev to the ID table in arch/arm/mach-davinci/da850.c. The table should look something like this:

    /* Contents of JTAG ID register used to identify exact cpu type */
    static struct davinci_id da850_ids[] = {
        {
            .variant    = 0x0,
            .part_no    = 0xb7d1,
            .manufacturer    = 0x017,    /* 0x02f >> 1 */
            .cpu_id        = DAVINCI_CPU_ID_DA850,
            .name        = "da850/omap-l138",
        },
        {
            .variant    = 0x1,
            .part_no    = 0xb7d1,
            .manufacturer    = 0x017,    /* 0x02f >> 1 */
            .cpu_id        = DAVINCI_CPU_ID_DA850,
            .name        = "da850/omap-l138/am18x",
        },
    };

    That might be the source of your "Uncompressing Linux" problem.



  • Hi Norman,

         The ID table in arch/arm/mach-davinci/da850.c is same as you mentioned in above post.

     

    Regards,

    Jitendra

  • The "Uncompressing Linux...done" problem is pretty common. This forum has a lot of posts on the matter. The usual causes are:

    - u-boot and linux have different mach type IDs. Odds are your u-boot and various versions of linux are matched. To check, you have to trace the which ID is used in mach-types.h.

    - The Linux doesn't support a newer processor variant.

    - Some versions of TI's kernels use ttyO2 rather ttyS2 to identify the serial ports. Not sure if that applies to your processor.

    - A lot of posts suggest adding earlyprintk to the bootargs and configure the kernel for earlyprintk. This might get something out the serial port to diagnose the problem.

    As for the NFS problem. If NFS mounts on one version of a kernel but not on another, then you might have the problem where NFS starts up faster than the network. The usual solution is to add rootdelay=5 to the bootargs. This will delay the NFS mount by an arbitrary amount by 5 seconds. There are a lot of ways for NFS to fail. This forum has a lot of posts on this problem as well.

    Is U-boot the same for all versions of the kernel you are trying to boot? Is the bootargs the same? Not clear on which failures belong to which version. Can the symptoms be summarized as:

    2.6.32 - "Uncompressing Liinux"
    2.6.33-rc4 - "Unable to mount root fs via NFS"
    2.6.37-rc2 - modprobe problems

  • I have also had a "Uncompressing Linux...done" problem with the kernel from this wiki page http://processors.wiki.ti.com/index.php/Soft-UART_Implementation_on_OMAPL_PRU_-_Software_Users_Guide

    After enabling CONFIG_DEBUG_LL and patching printk() function by adding printascii() function I understood that problem is with incorrect JTAG ID. For me problem was solved by improving IDs as said  few posts before. I added second ID structure into da850_ids[ ] table in arch/arm/mach-davinci/da850.c.

    There is corresponded posts:

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/70047.aspx

    http://e2e.ti.com/support/embedded/f/354/p/67290/248486.aspx#248486