NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
DaVinci PSP 03.21.00.04 Device Driver Features and Performance Guide
Contents
- 1 Document License
- 2 Read This First
- 3 Support Overview
- 4 Boot-time measurement
- 5 ALSA SoC Audio Driver
- 6 Ethernet Driver
- 7 Graphical LCD (GLCD) Driver (DA850/OMAP-L138/AM18x)
- 8 NAND Driver
- 9 NOR flash Driver
- 10 SPI Flash Driver
- 11 MMC/SD Driver
- 12 UART Driver
- 13 I2C Driver
- 14 EDMA Driver
- 15 Watchdog(WDT) Driver
- 16 USB Driver
- 17 SATA
- 18 Video Port Interface (VPIF)
- 19 McBSP
- 20 eCAP
- 21 eHRPWM
- 22 VPFE V4L2 Driver
Document License[edit]
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 United States License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/us/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
Read This First[edit]
About This Manual[edit]
This document provides an overview and performance data for the device drivers which are part of the DaVinci Linux PSP package.
NOTE
For DA850/OMAP-L138/AM18x EVM, the performance numbers have been recorded with cpuidle driver enabled and with cpufreq governor set to userspace.
If You Need Assistance[edit]
For further information or to report any problems, contact http://community.ti.com/ or http://support.ti.com/
Trademarks[edit]
OMAPTM and DaVinciTM are trademarks of Texas Instruments, Incorporated. All other trademarks are the properties of their respective owners.
Support Overview[edit]
Boot Modes Supported[edit]
The following table provides information on the boot modes supported in User Boot Loader (UBL). Green colored box in the table below means that the particular boot mode is supported on the device.
Boot Mode | DM644x | DM6467 | DM355 | DM36x | DA830/OMAP-L137/AM17xx | DA850/OMAP-L138/AM18x |
---|---|---|---|---|---|---|
SPI EEPROM | ||||||
SPI Flash | ||||||
NAND Flash | ||||||
NOR Flash | ||||||
I2C EEPROM | ||||||
MMC/SD |
NOTE
These are supported boot modes in PSP software, the actual hardware may support many more boot modes than shown here. Please refer to hardware documentation for list of all supported boot modes.
U-Boot Support[edit]
U-Boot is the defacto bootloader for Linux kernel on ARM. The following features of U-Boot are supported in this release:
Feature | DM36x | DA850/OMAP-L138/AM18x |
---|---|---|
UART | ||
Ethernet Download (TFTP) | ||
USB DFU | ||
MMC/SD | ||
SPI Flash | ||
NAND flash | ||
NOR Flash | ||
USB Mass Storage |
Device Driver List[edit]
The following table list the various device drivers supported and the device they are supported on. On detailed information on specific features or limitations of a pariticular driver, refer to the chapter catering to that driver in this document.
Peripheral | Description | Linux driver type | DMA usage | Devices supported on |
---|---|---|---|---|
Audio (McASP) | Audio Record and Playback | ALSA SoC | EDMA3 | DA850/OMAP-L138/AM18x |
Voice Codec | Voice Record and Playback | ALSA SoC | EDMA3 |
DM36x |
Audio (McBSP) | Audio Record and Playback | ALSA SoC | EDMA3 | DM36x |
McBSP | Serial Communication Interface | Kernel API driver | EDMA3 | DA850/OMAP-L138/AM18x |
EMAC | Ethernet Network driver | Netdev |
EMAC Internal DMA |
DM36x, DA850/OMAP-L138/AM18x |
USB MSC Host | USB Mass Storage Class Host Driver | Block | USB Internal DMA | DM36x, DA850/OMAP-L138/AM18x |
USB HID Host | USB Human Interface Device Host Driver | Input driver | USB Internal DMA | DM36x, DA850/OMAP-L138/AM18x |
USB MUSB HCD | MUSB Host controller driver | USB HCD | USB Internal DMA | DM36x, DA850/OMAP-L138/AM18x |
USB OHCI HCD | OHCI Host controller driver | USB HCD | USB Internal DMA | DM36x, DA850/OMAP-L138/AM18x |
NAND Flash | Flash storage system | MTD Character and Block | Not Supported |
DM36x, DA850/OMAP-L138/AM18x |
NOR Flash | Flash storage system | MTD Character and Block | Not Supported | DA850/OMAP-L138/AM18x |
GLCD | Graphical LCD driver | Frame Buffer | LCDC Internal DMA | DM36x, DA850/OMAP-L138/AM18x |
CLCD | Character LCD driver | Parallel port based driver | None | DA850/OMAP-L138/AM18x |
SPI Flash | Flash storage system | MTD Character and Block | EDMA3 | DA850/OMAP-L138/AM18x |
MMC/SD | Interface to MultiMedia Secure Digital cards | Block | EDMA3 | DM36x, DA850/OMAP-L138/AM18x |
UART | Serial Communication Interface | Character | Not Supported |
DM36x, DA850/OMAP-L138/AM18x |
I2C | Inter-IC Communication | Character | Not Supported |
DM36x, DA850/OMAP-L138/AM18x |
RTC | Real-time clock | Character | None | DM36x, DA850/OMAP-L138/AM18x |
Watchdog | Watchdog Timer | Miscellaneous | None | DM36x, DA850/OMAP-L138/AM18x |
SPI (/dev/spi) | Serial Peripheral Interface | Character | EDMA3 | DM36x, DA850/OMAP-L138/AM18x |
SATA | Serial ATA Interface | Block | SATA Internal DMA | DA850/OMAP-L138/AM18x |
Video Port Interface (VPIF) | Video Display and Capture | V4L2 (Video for Linux version 2) | VPIF Internal DMA | DA850/OMAP-L138/AM18x |
VPBE and VPFE | Video Display and Capture | V4L2 (Video for Linux version 2) | Internal DMA | DM36x |
Power Management | Linux drivers cpuidle, cpufreq and Suspend-to-RAM | Misc | None | DA850/OMAP-L138/AM18x |
Touchscreen | Drivers for TPS65070 and TSC2004 | Input driver | None | DM36x, DA850/OMAP-L138/AM18x |
eCAP | PWM generation | Miscellaneous | None | DA850/OMAP-L138/AM18x |
eHRPWM | PWM generation | Miscellaneous | None | DA850/OMAP-L138/AM18x |
Boot-time measurement[edit]
Utility available here was used to find out the boot-time.
DA850/OMAP-L138/AM18x[edit]
For boot-time measurement following setup was used:
- UBL was in SPI flash and U-Boot was in SD card
- Kernel image size of 2105672 bytes (picked from release package) stored in FAT partition of SD card
- arago-base image as file system stored in EXT2 partition of SD card
- Sandisk 8GB SD card
- U-Boot had 3 seconds of boot delay
0.000 0.000: OMAP-L138 initialization passed! 0.000 0.000: Booting TI User Boot Loader 0.320 0.320: UBL Version: DOMMC: davinci: 0 0.320 0.000: SF: Detected M25P64 with page size 256, total 8 MiB 0.440 0.120: In: serial 0.440 0.000: Out: serial 0.440 0.000: Err: serial 0.440 0.000: ARM Clock : 300000000 Hz 0.440 0.000: DDR Clock : 132000000 Hz 0.440 0.000: SF: Detected M25P64 with page size 256, total 8 MiB 0.451 0.011: Net: Ethernet PHY: GENERIC @ 0x00 0.451 0.000: DaVinci-EMAC 3.461 3.010: Hit any key to stop autoboot: 0 3.490 0.029: reading boot.scr 3.490 0.000: 3.502 0.012: ** Unable to read "boot.scr" from mmc 0:1 ** 3.502 0.000: reading uImage 4.142 0.640: 4.142 0.000: 2105736 bytes read 4.152 0.010: ## Booting kernel from Legacy Image at c0700000 ... 4.152 0.000: Image Name: Linux-2.6.37+ 5.420 1.268: Image Type: ARM Linux Kernel Image (uncng Checksum ... OK 5.420 0.000: OK 6.980 1.560: done, booting the kernel. 8.251 1.271: Linux version 2.6.37+ (x0029463@psplinux051) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 PREEMPT Thu Apr 21 11:03:40 IST 2011 8.261 0.010: CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 8.261 0.000: CPU: VIVT data cache, VIVT instruction cache 8.261 0.000: Machine: DaVinci DA850/OMAP-L138/AM18x EVM 8.271 0.010: Memory policy: ECC disabled, Data cache writeback 8.271 0.000: DaVinci da850/omap-l138 variant 0x0 8.280 0.009: Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 8.291 0.011: Kernel command line: mem=32M console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off 8.291 0.000: PID hash table entries: 128 (order: -3, 512 bytes) 8.300 0.009: Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) 8.300 0.000: Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) 8.300 0.000: Memory: 32MB = 32MB total 8.311 0.011: Memory: 27976k/27976k available, 4792k reserved, 0K highmem 8.311 0.000: Virtual kernel memory layout: 8.320 0.009: vector : 0xffff0000 - 0xffff1000 ( 4 kB) 8.320 0.000: fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) 8.341 0.021: DMA : 0xff000000 - 0xffe00000 s : 0xbf000000 - 0xc0000000 ( 16 MB) 8.341 0.000: .init : 0xc0008000 - 0xc002e000 ( 152 kB) 8.361 0.020: .text : 0xc002e00r=0-3, MinObjects=0, CPUs=1, Nodes=1 8.361 0.000: Preemptable hierarchical RCU implementation. 8.381 0.020: RCU-based detection of stalled 8.381 0.000: Calibrating delay loop... 149.50 BogoMIPS (lpj=747520) 8.381 0.000: pid_max: default: 32768 minimum: 301 8.391 0.010: Mount-cache hash table entries: 512 8.391 0.000: CPU: Testing write buffer coherency: ok 8.391 0.000: DaVinci: 144 gpio irqs 8.391 0.000: regulator: core version 0.5 8.411 0.020: regs. 8.411 0.000: Only McASP will work. If you want McBSP support, disable McASP. 8.421 0.010: da850_evm_init: eHRPWM module 0 cannot be used since it is being used by MII interface 8.431 0.010: da850_evm_init: eHRPWM module1 outputA cannot be used since it is being used by LCD 8.431 0.000: da850_evm_init: eHRPWM module1 outputB cannot be used since it is being used by spi1 8.441 0.010: bio: create slab <bio-0> at 0 8.441 0.000: SCSI subsystem initialized 8.441 0.000: usbcore: registered new interface driver usbfs 8.451 0.010: usbcore: registered new interface driver hub 8.451 0.000: usbcore: registered new device driver usb 8.451 0.000: pca953x 1-0020: failed reading register 8.461 0.010: pca953x 1-0021: interrupt support not compiled in 8.461 0.000: regulator: VDCDC1: 3200 <--> 3300 mV at 3300 mV 8.471 0.010: regulator: VDCDC2: 1750 <--> 3300 mV at 3300 mV 8.471 0.000: regulator: VDCDC3: 950 <--> 1350 mV at 1200 mV 8.471 0.000: regulator: LDO1: 1800 mV 8.481 0.010: regulator: LDO2: 1150 <--> 1300 mV at 1200 mV 8.481 0.000: i2c-gpio i2c-gpio.1: using pins 20 (SDA) and 21 (SCL) 8.491 0.010: Advanced Linux Sound Architecture Driver Version 1.0.23. 8.491 0.000: Switching to clocksource timer0_1 8.491 0.000: musb-hdrc: version 6.0, host, debug=0 8.501 0.010: musb-hdrc musb-hdrc: dma type: dma-cppi41 8.501 0.000: Waiting for USB PHY clock good... 8.511 0.010: musb-hdrc musb-hdrc: MUSB HDRC host driver 8.511 0.000: musb-hdrc musb-hdrc: new USB bus registered, assigned bus number 1 8.511 0.000: hub 1-0:1.0: USB hub found 8.521 0.010: hub 1-0:1.0: 1 port detected 8.521 0.000: musb-hdrc musb-hdrc: USB Host mode controller at fee00000 using DMA, IRQ 58 8.541 0.020: NET: Registered prot1024 (order: 1, 8192 bytes) 8.541 0.000: TCP bind hash table entries: 1024 (order: 0, 4096 bytes) 8.551 0.010: TCP: Hash tables configured (established 1024 bind 1024) 8.551 0.000: TCP reno registered 8.551 0.000: UDP hash table entries: 256 (order: 0, 4096 bytes) 8.561 0.010: UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) 8.561 0.000: NET: Registered protocol family 1 8.571 0.010: RPC: Registered udp transport module. 8.571 0.000: RPC: Registered tcp transport module. 8.571 0.000: RPC: Registered tcp NFSv4.1 backchannel transport module. 8.581 0.010: EMAC: MII PHY configured, RMII PHY will not be functional 8.581 0.000: McBSP:Probed McBSP1 8.601 0.020: JFFS2 version 2.2. (NAND) © 2001-2006 Red Haharp_LK043T1DG01 panel 8.601 0.000: Console: switching to colour frame buffer device 60x34 8.611 0.010: Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled 8.611 0.000: serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a AR7 8.621 0.010: serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a AR7 8.621 0.000: serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a AR7 8.632 0.011: console [ttyS2] enabled 8.662 0.030: brd: module loaded 8.672 0.010: at24 1-0050: 32768 byte 24c256 EEPROM (writable) 8.742 0.070: S_IMPL to 0x1 8.742 0.000: ahci ahci: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl platform mode 8.762 0.020: ahci ahci: flags: ncq sntf pm led clo only pmp pio sata1: SATA max UDMA/133 mmio [mem 0x01e18000-0x01e19fff] port 0x100 irq 67 8.784 0.022: pported 8.784 0.000: spi_davinci spi_davinci.1: DMA: RX channel: 18, TX channel: 19, event queue: 0 8.803 0.019: m00000000-0x000000010000 : "UBL" 8.811 0.008: 0x000000010000-0x000000090000 : "U-Boot" 8.833 0.022: 0a0000-0x000000320000 : "Kernel" 8.856 0.023: 0x0000007f0000-0x000000800000 : "MAC-Address" 8.862 0.006: Read MAC addr from SPI Flash: 00:08:ee:03:f1:f9 8.932 0.070: spi_davinci spidavinci_mdio davinci_mdio.0: davinci mdio revision 1.5 8.941 0.009: davinci_mdio davinci_mdio.0: detected phy mask fffffffe 8.941 0.000: davinci_mdio.0: probed 8.953 0.012: davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver SMSC LAN8710/LAN8720 8.953 0.000: console [netcon0] enabled 8.953 0.000: netconsole: network logging started 8.963 0.010: ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver 8.963 0.000: ohci ohci.0: DA8xx OHCI 8.981 0.018: ohci ohci.0: new USB bus registered, assigned bus number 2 9.001 0.020: Waiting for USB PHY clock good... 9.001 0.000: ohci ohci.0: irq 59, io mem 0x01e25000 9.053 0.052: hub 2-0:1.0: USB hub found 9.061 0.008: hub 2-0:1.0: 1 port detected 9.073 0.012: Initializing USB Mass Storage driver... 9.073 0.000: usbcore: registered new interface driver usb-storage 9.073 0.000: USB Mass Storage support registered. 9.095 0.022: input: gpio-keys-polled as /devices/platform/gpio-keys-polled.1/input/input0 9.112 0.017: input: TPS6507x Touchscreen as /devices/platform/i2c-gpio.1/i2c-1/1-0048/input/input1 9.112 0.000: ata1: SATA link down (SStatus 0 SControl 300) 9.122 0.010: omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0 9.122 0.000: omap_rtc: RTC power up reset detected 9.138 0.016: i2c /dev entries driver 9.138 0.000: watchdog watchdog: heartbeat 60 sec 9.142 0.004: cpuidle: using governor ladder 9.153 0.011: cpuidle: using governor menu 9.163 0.010: davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode 9.175 0.013: usbcore: registered new interface driver usbhid 9.175 0.000: usbhid: USB HID core driver 9.191 0.015: 1-0018 supply IOVDD not found, using dummy regulator 9.191 0.000: 1-0018 supply DVDD not found, using dummy regulator 9.231 0.040: 1-0018 supply AVDD notasoc: tlv320aic3x-hifi <-> davinci-mcasp.0 mapping ok 9.251 0.020: ALSA device list: 9.251 0.000: #0: DA850/OMAP-L138 EVM 9.251 0.000: TCP cubic registered 9.251 0.000: NET: Registered protocol family 17 9.271 0.020: regulator_init_complete: incomplete constraints, leaving LDO2 on 9.271 0.000: mmc0: new SDHC card at address e624 9.283 0.012: regulator_init_complete: incomplete constraints, leaving LDO1 on 9.283 0.000: mmcblk0: mmc0:e624 SD08G 7.40 GiB 9.293 0.010: regulator_init_complete: incomplete constraints, leaving VDCDC3 on 9.293 0.000: mmcblk0: p1 p2 9.301 0.008: regulator_init_complete: incomplete constraints, leaving VDCDC2 on 9.331 0.030: regulatmap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800) 9.361 0.030: VFS: Mounted root (ext2 filesystem) on device 179:2. 9.361 0.000: Freeing init memory: 152K INIT: 0.249: 9.920 0.310: Please wait: booting... 10.051 0.131: dev 10.442 0.391: please use /proc/552/oom_score_adj instead. 17.420 6.978: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 17.420 0.000: 17.642 0.222: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 17.642 0.000: 19.840 2.198: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 19.840 0.000: 19.862 0.022: file or directory 19.862 0.000: 19.892 0.030: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 19.892 0.000: 19.902 0.010: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 19.902 0.000: 20.710 0.808: Populating dev cache 20.950 0.240: Remounting root file system... 22.232 1.282: WARNING: Couldn't open directory /lib/modules/2.6.37+: No such file or directory 22.242 0.010: FATAL: Could not open /lib/modules/2.6.37+/modules.dep.temp for writing: No such file or directory 22.470 0.228: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 22.470 0.000: 22.493 0.023: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 22.493 0.000: 22.501 0.008: root: mount: mounting rootfs on / failed: No such file or directory 22.521 0.020: root: mount: mounting usbfs on /proc/bus/usb failed: No such file or directory 24.892 2.371: Setting up IP spoofing protection: rp_filter. 25.221 0.329: Configuring network interfaces... davinci_mdio davinci_mdio.0: resetting idled controller 25.221 0.000: net eth0: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=0:00, id=7c0f1) 25.271 0.050: udhcpc (v1.13.2) started 25.390 0.119: Sending discover... 28.430 3.040: Sending discover... 31.460 3.030: Sending discover... 34.550 3.090: No lease, failing 34.940 0.390: Fri Dec 11 11:54:00 UTC 2009 35.330 0.390: Entering runlevel: 5 35.491 0.161: Starting telnet daemon. 35.551 0.060: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 35.551 0.000: 35.651 0.100: Starting syslogd/klogd: done 36.840 1.189: 36.862 0.022: .'| . | . | | __| _| . | | | -_| _| _| 36.862 0.000: |__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_| 36.872 0.010: |___| |___| 36.872 0.000: 36.872 0.000: Arago Project http://arago-project.org arago ttyS2 36.872 0.000: 36.882 0.010: Arago 2009.11 arago ttyS2 36.882 0.000:
It is taking around 37 seconds to boot DA850/OMAP-L138/AM18x EVM.
DM368[edit]
0.000 0.000: 0.000 0.000: Booting TI User Boot Loader 0.000 0.000: UBL Version: 1.65 0.000 0.000: UBL Flashtype: SD/MMC 0.419 0.419: DONE 0.419 0.000: Jumping to entry point at 0x81080000. 0.419 0.000: 0.419 0.000: 0.431 0.012: U-Boot 2010.12 (Apr 21 2011 - 10:53:15) 0.431 0.000: 0.431 0.000: Cores: ARM 432 MHz 0.431 0.000: DDR: 340 MHz 0.481 0.049: I2C: ready 0.481 0.000: DRAM: 128 MiB 0.511 0.030: NAND: 2048 MiB 0.511 0.000: MMC: davinci: 0, davinci: 1 0.521 0.010: Bad block table found at page 524224, version 0x01 0.521 0.000: Bad block table found at page 1048512, version 0x01 0.541 0.020: Bad block table found at page 524160, version 0x01 0.541 0.000: Bad block table found at page 1048448, version 0x01 0.551 0.010: nand_read_bbt: Bad block at 0x000004280000 0.551 0.000: nand_read_bbt: Bad block at 0x000004540000 0.551 0.000: nand_read_bbt: Bad block at 0x000007e60000 0.561 0.010: nand_read_bbt: Bad block at 0x000009980000 0.561 0.000: nand_read_bbt: Bad block at 0x00000c8a0000 0.569 0.009: nand_read_bbt: Bad block at 0x000013a40000 0.569 0.000: nand_read_bbt: Bad block at 0x000016660000 0.581 0.011: nand_read_bbt: Bad block at 0x00001f2e0000 0.581 0.000: nand_read_bbt: Bad block at 0x000020380000 0.581 0.000: nand_read_bbt: Bad block at 0x000020a00000 0.589 0.009: nand_read_bbt: Bad block at 0x000022ba0000 0.589 0.000: nand_read_bbt: Bad block at 0x000026fe0000 0.599 0.010: nand_read_bbt: Bad block at 0x0000282c0000 0.599 0.000: nand_read_bbt: Bad block at 0x000028920000 0.599 0.000: nand_read_bbt: Bad block at 0x000029160000 0.611 0.011: nand_read_bbt: Bad block at 0x00002a3e0000 0.611 0.000: nand_read_bbt: Bad block at 0x00002e060000 0.611 0.000: nand_read_bbt: Bad block at 0x00002e760000 0.619 0.009: nand_read_bbt: Bad block at 0x00002e8e0000 0.619 0.000: nand_read_bbt: Bad block at 0x00002ebe0000 0.629 0.010: nand_read_bbt: Bad block at 0x00002ede0000 0.629 0.000: nand_read_bbt: Bad block at 0x00002f120000 0.629 0.000: nand_read_bbt: Bad block at 0x00002f1a0000 0.641 0.011: nand_read_bbt: Bad block at 0x00002f1e0000 0.641 0.000: nand_read_bbt: Bad block at 0x00002f260000 0.641 0.000: nand_read_bbt: Bad block at 0x00002f320000 0.651 0.010: nand_read_bbt: Bad block at 0x00002f420000 0.651 0.000: nand_read_bbt: Bad block at 0x00002f460000 0.659 0.009: nand_read_bbt: Bad block at 0x00002f660000 0.659 0.000: nand_read_bbt: Bad block at 0x00002f6e0000 0.659 0.000: nand_read_bbt: Bad block at 0x00002f760000 0.671 0.011: nand_read_bbt: Bad block at 0x00002f820000 0.671 0.000: nand_read_bbt: Bad block at 0x00002f8e0000 0.681 0.010: nand_read_bbt: Bad block at 0x00002faa0000 0.681 0.000: nand_read_bbt: Bad block at 0x00002fbe0000 0.681 0.000: nand_read_bbt: Bad block at 0x00002fc20000 0.689 0.009: nand_read_bbt: Bad block at 0x00002fca0000 0.689 0.000: nand_read_bbt: Bad block at 0x00002fce0000 0.701 0.011: nand_read_bbt: Bad block at 0x00002fd20000 0.701 0.000: nand_read_bbt: Bad block at 0x00002fd60000 0.701 0.000: nand_read_bbt: Bad block at 0x00002fda0000 0.710 0.009: nand_read_bbt: Bad block at 0x00002fde0000 0.710 0.000: nand_read_bbt: Bad block at 0x00002fe20000 0.710 0.000: nand_read_bbt: Bad block at 0x00002fe60000 0.720 0.010: nand_read_bbt: Bad block at 0x00002fea0000 0.720 0.000: nand_read_bbt: Bad block at 0x00002fee0000 0.720 0.000: nand_read_bbt: Bad block at 0x0000300e0000 0.730 0.010: nand_read_bbt: Bad block at 0x000030360000 0.730 0.000: nand_read_bbt: Bad block at 0x000030c20000 0.740 0.010: nand_read_bbt: Bad block at 0x0000373e0000 0.740 0.000: nand_read_bbt: Bad block at 0x00003c140000 0.750 0.010: nand_read_bbt: Bad block at 0x00004d9c0000 0.750 0.000: nand_read_bbt: Bad block at 0x0000532a0000 0.760 0.010: nand_read_bbt: Bad block at 0x000053520000 0.760 0.000: nand_read_bbt: Bad block at 0x000057d40000 0.760 0.000: nand_read_bbt: Bad block at 0x000064260000 0.770 0.010: nand_read_bbt: Bad block at 0x00006ce80000 0.770 0.000: nand_read_bbt: Bad block at 0x000074280000 0.780 0.010: nand_read_bbt: Bad block at 0x0000742c0000 0.780 0.000: nand_read_bbt: Bad block at 0x0000782c0000 0.780 0.000: nand_read_bbt: Bad block at 0x000079220000 0.790 0.010: nand_read_bbt: Bad block at 0x000079320000 0.790 0.000: nand_read_bbt: Bad block at 0x000079700000 0.800 0.010: nand_read_bbt: Bad block at 0x00007fb40000 0.949 0.149: NAND read from offset 3c0000 failed -74 0.960 0.011: *** Warning - readenv() failed, using default environment 0.960 0.000: 1.041 0.081: Net: Ethernet PHY: GENERIC @ 0x00 1.041 0.000: DaVinci-EMAC 4.049 3.008: Hit any key to stop autoboot: 0 4.099 0.050: reading boot.scr 4.099 0.000: 4.099 0.000: ** Unable to read "boot.scr" from mmc 0:1 ** 4.099 0.000: reading uImage 4.728 0.629: 4.728 0.000: 2283380 bytes read 4.728 0.000: ## Booting kernel from Legacy Image at 80700000 ... 4.728 0.000: Image Name: Linux-2.6.37+ 4.728 0.000: Created: 2011-04-21 5:28:58 UTC 4.739 0.011: Image Type: ARM Linux Kernel Image (uncompressed) 4.739 0.000: Data Size: 2283316 Bytes = 2.2 MiB 4.739 0.000: Load Address: 80008000 4.749 0.010: Entry Point: 80008000 5.209 0.460: Verifying Checksum ... OK 5.799 0.590: Loading Kernel Image ... OK 5.799 0.000: OK 5.799 0.000: 5.799 0.000: Starting kernel ... 5.799 0.000: 6.949 1.150: Uncompressing Linux... done, booting the kernel. 8.689 1.740: Linux version 2.6.37+ (x0029463@psplinux051) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 PREEMPT Thu Apr 21 10:58:57 IST 2011 8.689 0.000: CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 8.702 0.013: CPU: VIVT data cache, VIVT instruction cache 8.702 0.000: Machine: DaVinci DM36x EVM 8.702 0.000: Memory policy: ECC disabled, Data cache writeback 8.702 0.000: DaVinci dm36x_rev1.2 variant 0x8 8.710 0.008: Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 8.722 0.012: Kernel command line: console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off 8.722 0.000: PID hash table entries: 512 (order: -1, 2048 bytes) 8.732 0.010: Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) 8.732 0.000: Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) 8.732 0.000: Memory: 128MB = 128MB total 8.742 0.010: Memory: 125044k/125044k available, 6028k reserved, 0K highmem 8.742 0.000: Virtual kernel memory layout: 8.752 0.010: vector : 0xffff0000 - 0xffff1000 ( 4 kB) 8.752 0.000: fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) 8.762 0.010: DMA : 0xff000000 - 0xffe00000 ( 14 MB) 8.762 0.000: vmalloc : 0xc8800000 - 0xfea00000 ( 866 MB) 8.762 0.000: lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) 8.772 0.010: modules : 0xbf000000 - 0xc0000000 ( 16 MB) 8.772 0.000: .init : 0xc0008000 - 0xc002e000 ( 152 kB) 8.782 0.010: .text : 0xc002e000 - 0xc045b000 (4276 kB) 8.782 0.000: .data : 0xc045c000 - 0xc04905c0 ( 210 kB) 8.792 0.010: SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 8.792 0.000: Preemptable hierarchical RCU implementation. 8.800 0.008: RCU-based detection of stalled CPUs is disabled. 8.800 0.000: Verbose stalled-CPUs detection is disabled. 8.800 0.000: NR_IRQS:245 8.812 0.012: Console: colour dummy device 80x30 8.812 0.000: Calibrating delay loop... 215.44 BogoMIPS (lpj=1077248) 8.812 0.000: pid_max: default: 32768 minimum: 301 8.822 0.010: Mount-cache hash table entries: 512 8.822 0.000: CPU: Testing write buffer coherency: ok 8.822 0.000: DaVinci: 8 gpio irqs 8.822 0.000: NET: Registered protocol family 16 8.832 0.010: EVM: HD imager video input 8.832 0.000: bio: create slab <bio-0> at 0 8.832 0.000: SCSI subsystem initialized 8.842 0.010: usbcore: registered new interface driver usbfs 8.842 0.000: usbcore: registered new interface driver hub 8.842 0.000: usbcore: registered new device driver usb 8.852 0.010: vpss vpss: dm365_vpss vpss probed 8.852 0.000: vpss vpss: dm365_vpss vpss probe success 8.852 0.000: dm365_afew_hw_init 8.862 0.010: DM365 IPIPE initialized in Continuous mode 8.862 0.000: Advanced Linux Sound Architecture Driver Version 1.0.23. 8.872 0.010: cfg80211: Calling CRDA to update world regulatory domain 8.872 0.000: Switching to clocksource timer0_1 8.872 0.000: musb-hdrc: version 6.0, host, debug=0 8.882 0.010: musb-hdrc musb-hdrc: dma type: dma-cppi3 8.882 0.000: musb-hdrc musb-hdrc: MUSB HDRC host driver 8.892 0.010: musb-hdrc musb-hdrc: new USB bus registered, assigned bus number 1 8.892 0.000: hub 1-0:1.0: USB hub found 8.892 0.000: hub 1-0:1.0: 1 port detected 8.902 0.010: musb-hdrc musb-hdrc: USB Host mode controller at fec64000 using DMA, IRQ 12 8.902 0.000: NET: Registered protocol family 2 8.912 0.010: IP route cache hash table entries: 1024 (order: 0, 4096 bytes) 8.912 0.000: TCP established hash table entries: 4096 (order: 3, 32768 bytes) 8.922 0.010: TCP bind hash table entries: 4096 (order: 2, 16384 bytes) 8.922 0.000: TCP: Hash tables configured (established 4096 bind 4096) 8.922 0.000: TCP reno registered 8.932 0.010: UDP hash table entries: 256 (order: 0, 4096 bytes) 8.932 0.000: UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) 8.942 0.010: NET: Registered protocol family 1 8.942 0.000: RPC: Registered udp transport module. 8.942 0.000: RPC: Registered tcp transport module. 8.952 0.010: RPC: Registered tcp NFSv4.1 backchannel transport module. 8.952 0.000: JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. 8.962 0.010: msgmni has been set to 244 8.962 0.000: io scheduler noop registered (default) 8.962 0.000: Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled 8.972 0.010: serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A 8.972 0.000: console [ttyS0] enabled 8.983 0.011: serial8250 serial8250.0: unable to register port at index 1 (IO0 MEM1d06000 IRQ41): -22 8.991 0.008: brd: module loaded 8.991 0.000: at24 1-0050: 32768 byte 24c256 EEPROM (writable) 9.000 0.009: Read MAC addr from EEPROM: 00:0e:99:03:50:3f 9.012 0.012: spi_davinci spi_davinci.0: DMA: supported 9.021 0.009: spi_davinci spi_davinci.0: DMA: RX channel: 17, TX channel: 16, event queue: 3 9.040 0.019: at25 spi0.0: 8 KByte at25640 eeprom, pagesize 32 9.040 0.000: spi_davinci spi_davinci.0: Controller at 0xfec66000 9.090 0.050: davinci_mdio davinci_mdio.0: davinci mdio revision 1.4 9.090 0.000: davinci_mdio davinci_mdio.0: detected phy mask fffffffc 9.100 0.010: davinci_mdio.0: probed 9.100 0.000: davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver unknown 9.110 0.010: davinci_mdio davinci_mdio.0: phy[1]: device 0:01, driver unknown 9.110 0.000: console [netcon0] enabled 9.120 0.010: netconsole: network logging started 9.120 0.000: Initializing USB Mass Storage driver... 9.120 0.000: usbcore: registered new interface driver usb-storage 9.130 0.010: USB Mass Storage support registered. 9.130 0.000: usbcore: registered new interface driver usbtest 9.140 0.010: mice: PS/2 mouse device common for all mice 9.150 0.010: input: TSC2004 Touchscreen as /devices/virtual/input/input0 9.160 0.010: dm365evm_keys: probe of 1-0025 failed with error -16 9.160 0.000: i2c /dev entries driver 9.170 0.010: Linux media interface: v0.10 9.170 0.000: lirc_dev: IR Remote Control driver registered, major 253 9.180 0.010: IR NEC protocol handler initialized 9.180 0.000: IR RC5(x) protocol handler initialized 9.180 0.000: IR RC6 protocol handler initialized 9.190 0.010: IR JVC protocol handler initialized 9.190 0.000: IR Sony protocol handler initialized 9.190 0.000: IR RC5 (streamzap) protocol handler initialized 9.200 0.010: IR LIRC bridge handler initialized 9.200 0.000: Linux video capture interface: v2.00 9.210 0.010: vpfe_init 9.210 0.000: vpfe-capture: vpss clock vpss_master enabled 9.220 0.010: dm365_isif is registered with vpfe. 9.220 0.000: imp serializer initialized 9.220 0.000: AEW Driver initialized 9.220 0.000: AF Driver initialized 9.230 0.010: vpfe-capture vpfe-capture: v4l2 device registered 9.230 0.000: EVM: switch to tvp5146 SD video input 9.240 0.010: tvp514x: tvp514x decoder driver registered !! 9.240 0.000: vpfe-capture vpfe-capture: v4l2 sub device tvp514x registered 9.251 0.011: vpfe-capture vpfe-capture: v4l2 sub device mt9p031 register fails 9.251 0.000: EVM: switch to tvp7002 HD video input 9.270 0.019: tvp7002 1-005c: tvp7002 found @ 0x5c (DaVinci I2C adapter) 9.270 0.000: tvp7002: Rev. 02 detected. 9.281 0.011: vpfe-capture vpfe-capture: v4l2 sub device tvp7002 registered 9.291 0.010: EVM: switch to tvp7002 HD video input 9.291 0.000: ths7353 1-002e: chip found @ 0x5c (DaVinci I2C adapter) 9.300 0.009: ths7353 1-002e: No platform data!! 9.300 0.000: vpfe-capture vpfe-capture: v4l2 sub device ths7353 registered 9.331 0.031: vpbe-osd vpbe-osd: OSD sub device probe success 9.331 0.000: vpbe-venc vpbe-venc: VENC sub device probe success 9.341 0.010: vpbe-v4l2 vpbe-v4l2: vpbe v4l2 device registered 9.341 0.000: ths7303 1-002c: chip found @ 0x58 (DaVinci I2C adapter) 9.351 0.010: write byte data failed 9.351 0.000: vpbe-v4l2 vpbe-v4l2: v4l2 sub device ths7303 registered 9.361 0.010: Setting default output to Composite 9.361 0.000: Setting default mode to ntsc 9.361 0.000: vpbe-v4l2 vpbe-v4l2: Trying to register VPBE display device. 9.371 0.010: vpbe-v4l2 vpbe-v4l2: layer=c79a8200,layer->video_dev=c79a82f4 9.390 0.019: vpbe-v4l2 vpbe-v4l2: Trying to register VPBE display device. 9.390 0.000: vpbe-v4l2 vpbe-v4l2: layer=c79a8400,layer->video_dev=c79a84f4 9.422 0.032: Console: switching to colour frame buffer device 90x30 9.430 0.008: vpbe-fb vpbe-fb: dm_osd0_fb: 720x480x16@0,0 with framebuffer size 675KB 9.450 0.020: vpbe-fb vpbe-fb: dm_vid0_fb: 0x0x16@0,0 with framebuffer size 1020KB 9.470 0.020: vpbe-fb vpbe-fb: dm_osd1_fb: 720x480x4@0,0 with framebuffer size 675KB 9.470 0.000: vpbe-fb vpbe-fb: dm_vid1_fb: 0x0x16@0,0 with framebuffer size 1020KB 9.470 0.000: VPBE FB Driver probe success 9.470 0.000: DM365 IPIPEIF probed 9.490 0.020: watchdog watchdog: heartbeat 60 sec 9.490 0.000: davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode 9.510 0.020: usbcore: registered new interface driver usbhid 9.510 0.000: usbhid: USB HID core driver 9.530 0.020: asoc: tlv320aic3x-hifi <-> davinci-mcbsp mapping ok 9.542 0.012: ALSA device list: 9.542 0.000: #0: DaVinci DM365 EVM 9.550 0.008: TCP cubic registered 9.550 0.000: NET: Registered protocol family 17 9.563 0.013: lib80211: common routines for IEEE802.11 drivers 9.577 0.014: Waiting for root device /dev/mmcblk0p2... 9.590 0.013: mmc0: new SDHC card at address e624 9.590 0.000: mmcblk0: mmc0:e624 SD08G 7.40 GiB 9.610 0.020: mmcblk0: p1 p2 9.700 0.090: EXT2-fs (mmcblk0p2): warning: mounting unchecked fs, running e2fsck is recommended 9.720 0.020: VFS: Mounted root (ext2 filesystem) on device 179:2. 9.720 0.000: Freeing init memory: 152K INIT: version 2.86 booting 10.239 0.278: Please wait: booting... 10.341 0.101: Starting udev 17.989 7.649: udevd (1078): /proc/1078/oom_adj is deprecated, please use /proc/1078/oom_score_adj instead. 17.989 0.000: udev: starting version 141 18.030 0.041: udevd[1078]: inotify_add_watch(3, (null), 10) failed: Bad address 18.030 0.000: 18.030 0.000: udevd[1078]: inotify_add_watch(3, (null), 10) failed: Bad address 18.030 0.000: 18.040 0.010: udevd[1078]: inotify_add_watch(3, (null), 10) failed: Bad address 18.040 0.000: 18.050 0.010: udevd[1078]: inotify_add_watch(3, (null), 10) failed: Bad address 18.050 0.000: 20.401 2.351: Remounting root file system... 20.591 0.189: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 20.591 0.000: 20.631 0.041: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 20.631 0.000: 20.731 0.099: WARNING: Couldn't open directory /lib/modules/2.6.37+: No such file or directory 20.741 0.010: FATAL: Could not open /lib/modules/2.6.37+/modules.dep.temp for writing: No such file or directory 21.250 0.509: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 21.250 0.000: 21.351 0.101: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 21.351 0.000: 21.430 0.079: root: mount: mounting rootfs on / failed: No such file or directory 21.879 0.449: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 21.879 0.000: 21.929 0.050: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 21.929 0.000: 21.939 0.010: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 21.939 0.000: 22.000 0.061: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 22.000 0.000: 22.870 0.870: Setting up IP spoofing protection: rp_filter. 23.130 0.260: Configuring network interfaces... net eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:01, id=221613) 23.169 0.039: udhcpc (v1.13.2) started 23.279 0.110: Sending discover... 26.320 3.041: Sending discover... 29.342 3.022: Sending discover... 32.419 3.077: No lease, failing 32.449 0.030: done. 32.759 0.310: Fri Dec 11 11:54:00 UTC 2009 INIT: Entering runlevel: 5 32.969 0.130: Starting telnet daemon. 33.019 0.050: modprobe: FATAL: Could not load /lib/modules/2.6.37+/modules.dep: No such file or directory 33.019 0.000: 33.099 0.080: Starting syslogd/klogd: done 34.229 1.130: 34.241 0.012: _____ _____ _ _ 34.241 0.000: | _ |___ ___ ___ ___ | _ |___ ___ |_|___ ___| |_ 34.250 0.009: | | _| .'| . | . | | __| _| . | | | -_| _| _| 34.250 0.000: |__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_| 34.260 0.010: |___| |___| 34.260 0.000: 34.260 0.000: Arago Project http://arago-project.org arago ttyS0 34.260 0.000: 34.260 0.000: Arago 2009.11 arago ttyS0 34.260 0.000:
It is taking around 34 seconds to boot DM368 EVM.
ALSA SoC Audio Driver[edit]
Abstract
This chapter provides details on ALSA SoC audio driver along with CPU load numbers.
Introduction[edit]
DaVinci Audio driver complies to the Advanced Linux Sound Architecture (ALSA) System on Chip (SoC) framework (ASoC).
The ASoC framework splits an embedded audio system into three components:
- Codec driver: The codec driver is generic and hardware independent code that configures the audio codec to provide audio capture and playback. It should contain no code that is specific to the target platform or machine.
- Platform driver: The platform driver can be divided into audio DMA and SoC Digital Audio Interface (DAI) configuration and control. The platform driver only targets the SoC CPU and must have no board specific code.
- Machine driver: The ASoC machine (or board) driver is the code that glues together the platform and codec drivers. It can contain codec and platform specific code. It registers the audio subsystem with the kernel as a platform device.
Following architecture diagram shows all the components and the interactions among them:
Driver Features[edit]
- The driver supports the following features:
- Supports AIC3106 audio codec in ALSA SoC framework.
- Multiple sample rate support (8 KHz, 44.1 KHz and 48 KHz commonly used) for both capture and playback.
- Supports audio in stereo mode.
- Supports simultaneous playback and record (full-duplex mode).
- Start, stop, pause and resume feature.
- Supports mixer interface for audio codecs.
Features Not Supported[edit]
- Does NOT support OSS based applications using OSS emulation layer.
- Driver will not work if built as module.
Constraints[edit]
- By default, codec is configured in master mode and McASP is used as slave. Testing of the audio sub-system is done in this configuration only.
- Configuration of playback and capture streams in different sampling rates is not supported.
Supported System Calls[edit]
Refer ALSA project - the C library reference [1] for API calls.
Supported IOCTLs[edit]
NA
Performance and Benchmarks[edit]
The performance numbers were captured using the following:
- Word length in bits = 16
- Number of channels per sample = 2
Sampling Rate (in Hz) | CPU Load (in %) | |||
---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | ||
300 MHz | 456 MHz | 297 MHz | 432 MHz | |
8000 | 1.78 |
1.82 |
2.10 |
1.30 |
44100 | 7.89 |
8.04 |
11.38 |
8.01 |
48000 | 8.59 |
8.35 |
11.97 |
8.87 |
Sampling Rate (in Hz) | CPU Load (in %) | |||
---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | ||
300 MHz | 456 MHz | 297 MHz | 432 MHz | |
8000 | 1.70 |
1.83 |
2.15 |
1.31 |
44100 | 8.08 |
7.76 |
11.99 |
8.25 |
48000 | 7.66 |
8.89 |
12.61 |
8.30 |
Ethernet Driver[edit]
Abstract
This chapter provides details on Ethernet driver along with throughput and CPU load numbers.
Introduction[edit]
The Ethernet driver supports the Linux netdev interface.
Driver Features[edit]
The driver supports the following features:
- 10/100 Mbps mode of operation.
- Auto negotiation.
- Support for multicast and broadcast frames.
- Promiscuous mode of operation.
- Full duplex and half duplex mode of operation.
- Linux NAPI support
- Support for MII and RMII interfaces to PHY
Features Not Supported[edit]
NA
Constraints[edit]
NA
Supported System Calls[edit]
Supports the socket() and related system calls in accordance with Linux architecture.
Performance and Benchmarks[edit]
TCP Window Size(in KBytes) | Interval (in Seconds) | Transfer Rate MII PHY (in Mbps) | Transfer Rate RMII PHY (in Mbps) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
16 | 60 | 42.9 | 53.4 | 38.4 | 51.1 | 42.1 | 52.2 | NA | NA |
32 | 60 | 44.2 | 54.9 | 38.8 | 50.9 | 43.3 | 53.5 | NA | NA |
64 | 60 | 44.1 | 54.8 | 39.0 | 51.1 | 43.4 | 53.6 | NA | NA |
128 | 60 | 44.3 | 55.0 | 38.7 | 51.3 | 43.6 | 53.8 | NA | NA |
NOTES
RMII PHY support is available only on DA850/OMAPL138/AM18x.
CPU load during the performance test is 100%
The performance numbers were captured using the iperf tool. Usage details are mentioned below:
- Server side command switch : "-s"
- Client side command : "-c <server ip> -w <window size> -d -t60". This starts bi-directional traffic to the server for a duration of 60 seconds.
- Iperf tool is run on the DUT1 in server mode and on DUT2 in client mode. Version 2.0.4 is used on both sides.
- Data captured here is for "iperf" in client mode.
- Cross cable is used to measure performance.
- Speed is set to 100Mbps
Graphical LCD (GLCD) Driver (DA850/OMAP-L138/AM18x)[edit]
Abstract
This chapter describes the GLCD driver architecture, driver features and performance numbers (throughput and CPU load).
Introduction[edit]
GLCD driver is based on Fbdev framework.
Driver Features[edit]
- Supports QVGA display through Fbdev framework.
- Supports display of RGB565 images.
- Supports getting and setting the variable screen information.
- Supports retrieving the fixed screen information.
Features Not Supported[edit]
- Brightness and color control ioctls not supported.
Constraints[edit]
Supported System Calls[edit]
open(), close(), read(), mmap(), ioctl()
Performance Benchmarks[edit]
NAND Driver[edit]
Abstract
This chapter describes the NAND flash driver architecture, driver features and performance numbers (throughput and CPU load).
Introduction[edit]
The NAND driver is implemented as a character and block driver, compliant with the Linux MTD subsystem interface. It supports various NAND Flash chips (see file drivers/mtd/nand/nand_ids.h in Linux kernel sources) The NAND driver creates the device nodes for user space access (/dev/mtdblock0, /dev/mtdblock1, /dev/mtd0,/dev/mtd1 and so on.).
This figure illustrates the stack diagram of NAND flash driver in Linux.
Driver Features[edit]
The driver supports the following features:
- JFFS2 file system support
- Supports Read, Write and Erase
- Bad Block Management
- Polled mode of transfer
- Small Block (512 bytes), Big Block (2K & 4K bytes), SLC NAND
Features Not Supported[edit]
- flash_eraseall with -j option fails. Please use without -j option
Constraints[edit]
None
Supported System Calls[edit]
Supports the system call support proivided by Linux MTD interface viz. open(), close(), read(), write(), ioctl()
Performance Benchmarks[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 3.2 | 4.3 | NA | NA | 99.46 | 99.08 | NA | NA |
256 | 100 | 3.2 | 4.3 | NA | NA | 99.33 | 99.33 | NA | NA |
512 | 100 | 3.2 | 4.3 | NA | NA | 99.91 | 99.01 | NA | NA |
1024 | 100 | 3.2 | 4.3 | NA | NA | 99.81 | 99.67 | NA | NA |
5120 | 100 | 3.2 | 4.3 | NA | NA | 99.27 | 99.02 | NA | NA |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 2.8 | 4.7 | NA | NA | 100 | 100 | NA | NA |
256 | 100 | 2.8 | 4.8 | NA | NA | 100 | 99.99 | NA | NA |
512 | 100 | 2.8 | 4.8 | NA | NA | 100 | 100 | NA | NA |
1024 | 100 | 2.8 | 4.8 | NA | NA | 100 | 99.99 | NA | NA |
5120 | 100 | 2.8 | 4.8 | NA | NA | 99.96 | 99.99 | NA | NA |
The performance numbers are captured using the following:
- NAND PART Number: Micron MT29F4G08AAC
- File System = JFFS2
- NAND partition was mounted with async option.
NOR flash Driver[edit]
Abstract
This chapter describes the NOR flash driver architecture, driver features and performance numbers (throughput and CPU load).
Introduction[edit]
The NOR flash driver is implemented as a character and block device driver, compliant with the Linux MTD subsystem architecture. It supports various CFI compliant NOR flash chips. The NOR flash driver creates the device nodes for user space access (/dev/mtdblock0, /dev/mtdblock1, /dev/mtd0,/dev/mtd1 and so on.).
Driver Features[edit]
The driver supports the following features:
- JFFS2 file system support
- Supports Read, Write and Erase
- Polled mode of transfer
Features Not Supported[edit]
None
Constraints[edit]
None
Supported System Calls[edit]
Supports the system call support proivided by Linux MTD interface viz. open(), close(), read(), write(), ioctl()
Performance Benchmarks[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 3 |
0.92 |
0.92 |
NA | NA | 45.86 |
44.67 |
NA | NA |
256 | 3 |
0.57 |
0.92 |
NA | NA | 67.22 |
45.86 |
NA | NA |
512 | 3 |
0.95 |
0.94 |
NA | NA | 44.92 |
45.15 |
NA | NA |
1024 | 3 |
0.94 |
0.89 |
NA | NA | 42.81 |
44.44 |
NA | NA |
5120 | 3 |
0.93 |
0.87 |
NA | NA | 43.37 |
53.35 |
NA | NA |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 3 |
0.05 |
0.05 |
NA | NA | 92.99 |
93.07 |
NA | NA |
256 | 3 |
0.05 |
0.05 |
NA | NA | 93.18 |
92.77 |
NA | NA |
512 | 3 |
0.05 |
0.05 |
NA | NA | 92.47 |
93.08 |
NA | NA |
1024 | 3 |
0.05 |
0.05 |
NA | NA | 92.90 |
93.35 |
NA | NA |
5120 | 3 |
0.05 |
0.05 |
NA | NA | 93.02 |
93.27 |
NA | NA |
NOTE
NOR driver support is available only on DA850/OMAPL138/AM18x.
The performance numbers are captured using the following:
- NOR PART Number: Intel PC28F640P30T85
- File System = JFFS2
- NOR partition was mounted with async option.
SPI Flash Driver[edit]
Abstract
This chapter describes the SPI flash driver architecture, driver features and performance numbers (throughput and CPU load).
Introduction[edit]
SPI Flash driver is implemented as block driver and compliant with standard MTD driver. It supports various flash devices. The SPI driver creates device node for user space access (example, /dev/mtd1).
Driver Features[edit]
- DMA and PIO modes are supported.
Features Not Supported[edit]
None
Constraints[edit]
None
Supported System Calls[edit]
Supports the system call support proivided by MTD interface viz. open(), close(), read(), write(), ioctl()
Performance Benchmarks[edit]
Performance numbers will be provided later
MMC/SD Driver[edit]
Abstract
This chapter provides details on MMC/SD driver along with throughput and CPU load numbers.
Introduction[edit]
The MMC controller provides an interface to external MMC cards that follow the MMC specification v4.0. The MMC driver is implemented as a block driver. Block device nodes(such as /dev/mmcblockp1, /dev/mmcblockp2) are created for user space access.
Driver Features[edit]
The driver supports the following features:
- MMC/SD native protocol command/response set
- Single/multiple block data transfers
- Linux file system and generic MMC layer abstract details of block devices (MMC)
- High-speed (SDv1.1) and High Capacity (SDv2.0) cards
- Support for 1/4 bit modes
- Support for card detect and Write protect features
- DMA and polled mode for data transfer operations
Features Not Supported[edit]
- Support for 8-bit mode of operation.
- SDIO - WLAN support
- SPI mode of operation
Constraints[edit]
- MMC/SD cards should not be removed when the mount operation is in progress. If done so, data integrity cannot be guaranteed.
Supported System Calls[edit]
open(),close(),read(),write()
Supported IOCTLs[edit]
None
Performance and Benchmarks[edit]
IMPORTANT
The performance numbers can be severely affected if the media is mounted in sync mode. Hot plug scripts in the filesystem mount removable media in sync mode to ensure data integrity. For performance sensitive applications, umount the auto-mounted filesystem and re-mount in async mode.
The performance numbers were captured using SDHC Card (SanDisk, 8GB)
Performance using EXT2 file system[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 3.21 |
3.05 |
4.67 |
4.45 |
42.97 |
41.27 |
33.17 |
23.36 |
256 | 100 | 3.14 |
3.12 |
4.44 |
4.63 |
40.19 |
40.85 |
30.66 |
24.20 |
512 | 100 | 3.15 |
3.24 |
4.39 |
4.51 |
42.25 |
41.94 |
30.55 |
23.92 |
1024 | 100 | 3.17 |
3.14 |
4.57 |
4.36 |
41.29 |
42.13 |
31.58 |
23.33 |
5120 | 100 | 3.10 |
3.18 |
4.37 |
4.37 |
41.85 |
41.95 |
29.98 |
23.33 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 10.01 |
9.98 |
10.60 |
10.77 |
27.86 |
28 |
30.03 |
20.94 |
256 | 100 | 9.99 |
9.97 |
10.61 |
10.77 |
26.88 |
26.21 |
29.42 |
23.13 |
512 | 100 | 9.98 |
10.04 |
10.60 |
10.73 |
28.29 |
27.59 |
30.40 |
22.52 |
1024 | 100 | 9.91 |
10.02 |
10.60 |
10.73 |
28.92 |
27.15 |
29.73 |
22.52 |
5120 | 100 | 10.01 |
9.96 |
10.58 |
10.77 |
29.01 |
29.15 |
30.96 |
22.34 |
Performance using VFAT file system[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 2.79 | 3.22 |
4.29 |
4.58 |
44.46 | 50.12 |
50.84 |
39.91 |
256 | 100 | 2.94 |
2.75 |
4.45 |
4.63 |
48.15 |
43.74 |
52.68 |
40.40 |
512 | 100 | 2.84 |
2.88 |
3.37 |
4.62 |
46.86 |
44.83 |
40.33 |
39.85 |
1024 | 100 | 2.81 |
2.87 |
4.45 |
4.68 |
46.81 |
47.69 |
53.05 |
40.36 |
5120 | 100 | 3.08 |
3.28 |
4.61 |
4.65 |
51.38 |
48.94 |
54.53 |
40.26 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 9.74 |
9.71 |
10.22 |
10.42 |
30.18 |
31.60 |
35.90 |
42.74 |
256 | 100 | 9.65 |
9.66 |
10.21 |
10.40 |
33.92 |
31.09 |
33.37 |
26.29 |
512 | 100 | 9.66 |
9.61 |
10.22 |
10.42 |
34.53 |
33.82 |
36.66 |
27.33 |
1024 | 100 | 9.71 |
9.64 |
10.21 |
10.42 |
32.34 |
32.44 |
35.31 |
20.41 |
5120 | 100 | 9.73 |
9.68 |
10.20 |
10.41 |
33.02 |
32.41 |
37.31 |
26.60 |
UART Driver[edit]
Abstract
This chapter provides details on UART driver.
Introduction[edit]
The UART driver is implemented as a serial driver, and can be accessed from user space as /dev/ttyS2.
Driver Features[edit]
The driver supports the following features:
- Only UART2 is physically available on EVM board
Features Not Supported[edit]
- None
Constraints[edit]
None
Supported System Calls[edit]
open(),close(),read(),write(),ioctl()
Supported IOCTLs[edit]
Constant | Description |
---|---|
TIOCGSERIAL | Gets device parameters from the UART (example, port type, port num, baud rate, base divisor, and so on. |
TIOCSSERIAL | Sets UART device parameters (example, port type, port num, baud rate, base divisor, and so on) |
Performance and Benchmarks[edit]
None
I2C Driver[edit]
Abstract
This chapter provides details on I2C driver.
Introduction[edit]
The I2C peripheral is compliant with the Philips Semiconductor I2C-bus specification version 2.1. The I2C driver is implemented as a serial driver. The I2C driver can be accessed from the user space as /dev/i2c/0.
Driver Features[edit]
The driver supports the following features:
- 7-bit addressing mode
- Fast mode
- Interrupt mode
Features Not Supported[edit]
- 7-bit and 10-bit addressing combined format is not supported
- DMA mode is not supported
Constraints[edit]
- None
Supported System Calls[edit]
open(),close(),read(),write(),ioctl()
Supported IOCTLs[edit]
Constant | Description |
---|---|
I2C_SLAVE_FORCE | Changes slave address. Slave address is 7 or 10 bits. This changes the address, even if it is already considered. |
I2C_TENBIT | 7- or 10-bit address. (Value = 0 for 7 bits; value != 0 for 10 bits.) |
I2C_FUNCS | Gets the adapter functionality |
I2C_RDWR | Combined R/W transfer (one stop only) |
Performance and Benchmarks[edit]
None
EDMA Driver[edit]
Abstract
This chapter provides details on EDMA driver along with throughput and CPU load numbers.
Introduction[edit]
The EDMA controller handles all data transfers between the level-two (L2) cache/memory controller and the device peripherals. On DA850/OMAPL138 EDMA has 2 CC instances where as the other SoCs have one instance. Each EDMA instance supports up to 32-dma channels and 8 QDMA channels. The EDMA consists of a scalable Parameter RAM (PaRAM) that supports flexible ping-pong, circular buffering, channel-chaining, auto-reloading, and memory protection. The EDMA allows movement of data to/from any addressable memory spaces, including internal memory (L2 SRAM), peripherals, and external memory.
The EDMA driver exposes only the kernel level API's. This driver is used as a utility by other drivers for data transfer.
Driver Features[edit]
The driver supports the following features:
- Request and Free DMA channel
- Programs DMA channel
- Start and Synchronize with DMA transfers
- Provides DMA transaction completion callback to applications
- Multiple instances of EDMA driver on a single processor
Features Not Supported[edit]
- QDMA is not supported.
- Reservation of resources (channels and PaRAMs) for usage from DSP is not supported.
Constraints[edit]
None
Supported System Calls[edit]
None
Supported IOCTLs[edit]
None
Performance and Benchmarks[edit]
NA
Watchdog(WDT) Driver[edit]
Abstract
This chapter provides details on Watchdog timer driver.
Introduction[edit]
DaVinci SoCs have a 64-bit watchdog timer which can be used to reset the hardware in case of a software fault. Once the /dev/watchdog is opened, it will reboot the system unless a user space daemon resets the timer at regular intervals within a certain timeout period. The WDT driver is registered as a misc device. Default timeout of this driver is 60 seconds.
Driver Features[edit]
The driver supports the following features:
- Supports IOCTLs to set/get the timeout value, ping the watchdog & query the watchdog structure info.
- Driver can be built as a loadable module and inserted dynamically.
Features Not Supported[edit]
- None
Constraints[edit]
- Once /dev/watchdog is opened, closing it doesn't disable the watchdog
Supported System Calls[edit]
open(), close(), write(), read()
Supported IOCTLs[edit]
Constant | Description |
---|---|
WDIOC_GETSUPPORT | This ioctl returns "struct watchdog_info", which tells what the device can do |
WDIO_KEEPALIVE | This ioctl can be used to notify the watchdog timer that the user space application is alive |
WDIO_SETTIMEOUT | Watchdog timeout or margin can be dynamically changed using this ioctl |
WDIO_GETTIMEOUT | This ioctl returns the present watchdog timeout period in seconds |
Performance and Benchmarks[edit]
None
USB Driver[edit]
Abstract
This chapter provides details on OHCI and MUSB drivers along with throughput and CPU load numbers.
This chapter describes the USB (EHCI and MUSB) driver architecture, features supported/not supported, constraints and performance numbers.
OHCI Controller[edit]
Driver Features[edit]
The driver supports the following features
- Human Interface Class (HID)
- Mass Storage Class (MSC)
- Hub Class
- USB Video Class (UVC)
- USB Audio Class (UAC)
Features Not Supported[edit]
All other classes not mentioned in the "Supported Features" section.
MUSB OTG controller[edit]
Description[edit]
The MUSB driver is implemented on top of Mentor OTG IP version 1.8 which supports all the speeds (High, Full and Low (host mode only)). On DA850/OMAP-L138, MUSB uses CPPI 4.1 DMA for all the transfers on other devices CPPI 3.0 DMA is used.
Driver Features[edit]
The driver supports the following features
Host Mode
- Human Interface Class (HID)
- Mass Storage Class (MSC)
- Hub Class
- USB Video Class (UVC)
- USB Audio Class (UAC)
Gadget mode
- Mass Storage Class (MSC)
- USB Networking - RNDIS/CDC
Features Not Supported[edit]
- OTG
- Modular support for host/device mode.
USB Mass Storage Class Host Driver[edit]
Driver Features[edit]
The driver supports the following feature
- DMA mode
- PIO mode
Features Not Supported[edit]
None
Constraint[edit]
None
Supported System Calls[edit]
open(), close(), read(), write(), ioctl()
Supported IOCTLS[edit]
None
Performance Benchmarks[edit]
IMPORTANT
For Mass-storage applications, the performance numbers can be severely affected if the media is mounted in sync mode. Hot plug scripts in the filesystem mount removable media in sync mode to ensure data integrity. For performance sensitive applications, umount the auto-mounted filesystem and re-mount in async mode.
USB MSC (MUSB) Host mode DMA EXT2 File System Performance[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 9.49 | 12.24 | 9.93 | 13.07 | 99.0 | 99.7 | 97.66 | 97.28 |
500 | 100 | 9.35 | 11.18 | 10.02 | 13.11 | 99.9 | 98.15 | 98.39 | 95.79 |
1024 | 100 | 10.22 | 12.67 | 10.09 | 13.12 | 99.5 | 99.6 | 98.00 | 93.68 |
5120 | 100 | 9.71 | 10.96 | 10.02 | 13.06 | 97.4 | 99.69 | 97.82 | 96.42 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 13.98 | 18.54 | 12.61 | 16.00 | 94.6 | 94.87 | 95.84 | 85.41 |
500 | 100 | 14.02 | 17.23 | 12.71 | 16.11 | 94.39 | 94.75 | 97.96 | 86.95 |
1024 | 100 | 14.17 | 17.71 | 12.5 | 15.92 | 94.75 | 94.75 | 97.39 | 85.91 |
5120 | 100 | 11.73 | 15.69 | 12.38 | 15.67 | 98.45 | 96.14 | 98.60 | 85.38 |
The performance numbers are captured using the following.
- Hard disk: USB Western Digital HDD
- File format: ext2
USB MSC (MUSB) Host mode DMA VFAT File System Performance[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 8.17 | 9.59 | 6.5 | 8.38 | 90.9 | 86.20 | 95.07 | 87.61 |
500 | 100 | 7.73 | 9.72 | 6.53 | 8.52 | 90.9 | 82.95 | 94.98 | 87.12 |
1024 | 100 | 7.51 | 9.70 | 6.55 | 8.44 | 92.7 | 84.61 | 95.78 | 87.13 |
5120 | 100 | 7.68 | 9.44 | 10.87 | 8.75 | 90.7 | 82.44 | 96.31 | 89.72 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | ||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
100 | 100 | 13.91 | 15.78 | 11.13 | 13.83 | 92.71 | 89.26 | 96.33 | 91.56 |
500 | 100 | 13.86 | 15.65 | 11.14 | 13.94 | 93.15 | 88.92 | 96.74 | 91.45 |
1024 | 100 | 16.24 | 16.64 | 11.08 | 14.18 | 93.18 | 89.52 | 96.34 | 91.03 |
5120 | 100 | 13.11 | 14.03 | 10.87 | 13.99 | 94.9 | 95.23 | 96.31 | 93.39 |
The performance numbers are captured using the following.
- Hard disk: Western Digital USB HDD
- File format: VFAT
USB Mass Storage Class Slave Driver[edit]
Description[edit]
This figure illustrates the stack diagram of the system with USB File Storage Gadget driver
Driver Features[edit]
The driver supports the following feature
- DMA mode
- PIO mode
- File backed storage driver was tested with SD media as the storage medium
Features Not Supported[edit]
- Modular support
Constraint[edit]
None
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
USB Slave-DMA Performance[edit]
Bytes Transferred (MB)'MicroSD Trascend as storage device' | Number of files transferred | Total Bytes transferred (MB) | |||||
---|---|---|---|---|---|---|---|
Data Rate (MB/sec) | |||||||
DA850/OMAP-L138/AM18x | DM365 | DM368 | |||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | ||||
500 | 1 | 500 | 2.63 | 3.125 | 1.28 | 8.9 |
Bytes Transferred (MB)'MicroSD Trascend'as storage device' | Number of files transferred | Total Bytes transferred (MB) | |||||
---|---|---|---|---|---|---|---|
Data Rate (MB/sec) | |||||||
DA850/OMAP-L138/AM18x | DM365 | DM368 | |||||
300 MHz | 456 MHz | 297 MHz | 432 MHz | ||||
500 | 1 | 500 | 6.25 | 9.25 | 1.56 | 9.6 |
The performance numbers are captured using the following.
- For OMAPL138 - SATA Western Digital 500GB HDD (Model-WD5001AALS) Used as storage device
- For DM36x - Storage device used is MMC/SD card(Sandisk-8GB)
- File format: vfat on Windows XP
USB CDC/RNDIS Slave Driver[edit]
Description[edit]
The CDC RNDIS gadget driver that is used to send standard Ethernet frames using USB. The driver will create an Ethernet device by the name usb0.
Driver Features[edit]
The driver supports the following feature
- DMA mode
- PIO mode
- 10/100 Mbps speed.
Features Not Supported[edit]
None
Constraint[edit]
None
Supported System Calls[edit]
open(), close(), read(), write(), ioctl()
Supported IOCTLS[edit]
None
Performance Benchmarks[edit]
Performance benchmarks were collected using the Iperf tool and default options were used to collect the throughput numbers.
DA850/OMAP-L138[edit]
USB CDC-DMA Performance[edit]
TCP Window Size(in KBytes) | Interval (in Seconds) | Bandwidth (Mbits/Sec) | |||
---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | |||
300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
16 | 60 | 34.7 | 42.8 | 31.1 | 41.1 |
32 | 60 | 34.9 | 42.8 | 31.0 | 41.9 |
64 | 60 | 34.0 | 42.7 | 31.2 | 42.1 |
128 | 60 | 34.2 | 42.9 | 31.1 | 42.1 |
USB RNDIS-DMA Performance[edit]
TCP Window Size(in KBytes) | Interval (in Seconds) | Bandwidth (Mbits/Sec) | |||
---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | |||
300 MHz | 456 MHz | 297 MHz | 432 MHz | ||
16 | 60 | 28.7 | 35.3 | 26.3 | 34.8 |
32 | 60 | 28.6 | 35.1 | 26.1 | 34.7 |
64 | 60 | 28.5 | 35.2 | 26.1 | 35.5 |
128 | 10 | 28.4 | 35.4 | 26.3 | 35.4 |
USB Human Interface Device (HID) Driver[edit]
Description[edit]
The event sub system creates /dev/input/event* devices with the help of mdev.
Driver Features[edit]
The driver supports the following feature
- DMA mode
- PIO mode
- USB Mouse and Keyboards that conform to the USB HID specifications
Features Not Supported[edit]
None
Constraint[edit]
None
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
NA
USB Isochronous Driver[edit]
Description[edit]
USB camera, speaker and mic uses isochronouse transfers. USB Video Class (UVC) is used by most of the USB cameras to capture image.
Driver Features[edit]
The driver supports the following feature
- DMA mode
- PIO mode
- Support for USB Audio and video class(UVC class)
Features Not Supported[edit]
None
Constraint[edit]
None
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
NA
USB OTG Driver[edit]
Description[edit]
MUSB controller on DaVinci supports USB On The Go (OTG). OTG protocol enables runtime role switch between USB host and device. This is achived using Session Request Protocol (SRP) and Host Negotiation Protocol (HNP). OTG driver is tested with OPT (OTG Protocol Tester).
Driver Features[edit]
The driver supports the following feature
Features Not Supported[edit]
OTG
Constraint[edit]
None
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
NA
SATA[edit]
Description[edit]
SATA peripheral is AHCI Ver.1.1 spec compliant peripheral. It supports SATA1 (150MBps) and SATA 2 (300MBps) speeds over one SATA port. Port Multiplier support is available in the SATA controller. The controller can support drives upto UDMA-133 speeds.
Driver Features[edit]
Registers as a SCSI controller with the Linux SCSI Subsystem. SATA devices get registered as SCSI devices and can be accessed as "/dev/sd{*}" devices.
- Port Multiplier support
- CD/DVD support
Driver Features Not Supported[edit]
None.
Constraint[edit]
None
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
SATA - ext2 File System Performance[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||
---|---|---|---|---|---|
300 MHz | 456 MHz | 300 MHz | 456 MHz | ||
100 | 100 | 23.17 | 26.26 | 98.46 |
98.25 |
500 | 100 | 23.92 |
25.78 | 98.64 |
98.28 |
1024 | 100 | 23.67 |
25.84 | 97.98 |
97.54 |
5120 | 100 | 23.60 |
25.82 | 97.76 |
98.28 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) | ||
---|---|---|---|---|---|
300 MHz | 456 MHz | 300 MHz | 456 MHz | ||
100 | 100 | 39.61 |
41.57 | 98.88 |
98.81 |
500 | 100 | 38.84 |
41.79 | 99.25 |
98.01 |
1024 | 100 | 39.82 |
41.66 | 99.25 |
99.60 |
5120 | 100 | 39.70 |
40.75 | 98.88 |
99.22 |
The performance numbers are captured using the following.
- SATA HDD - Seagate Baracuda 7200 RPM 500GB drive
- File format: ext2
Video Port Interface (VPIF)[edit]
Abstract
This chapter provides details on Video Port Interface (VPIF) used for video display and capture.
Description[edit]
This section describes the Video Port Interface (VPIF) is a Linux V4L2 driver. It uses v4l2-subdev interface to interact with the encoders and decoders. On DA850/OMAP-L138/AM1808 EVM, VPIF channel 0 and channel 1 are used for capture and channel 2 is used for display. Channel 0 takes in composite input and Channel 1 is for S-Video input. There are 2 TVP5146 decoders interfaced, one for each channel. Channel 2 is used for output. One ADV7343 encoder is connected to it and output is either Composite or S-Video depending on the output type chosen.
Driver Features[edit]
- Supports Composite Video input and output
- Supports S-Video input and output
- Supports V4L2 driver model for video planes
- Supports NTSC and PAL standards
- Supports SBGGR8 and NV16 color formats for capture and NV16 color format for display.
- Supports Raw Capture.
Driver Features Not Supported[edit]
- Framebuffer (fbdev) interface is not supported.
- VBI data on display and capture is not supported
- HD resolutions are not supported
Performance Benchmarks[edit]
Resolution | Frame Rate | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | |||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | |
NTSC(720x480) | 30 | 30 | 0 | 0 | ||||
PAL(720x574) | 25 | 25 | 0 | 0 | ||||
720P | NA | NA | NA | NA | ||||
1080I | NA | NA | NA | NA |
Resolution | Frame Rate | CPU Load (in %) | ||||||
---|---|---|---|---|---|---|---|---|
DA850/OMAP-L138/AM18x | DM365 | DM368 | DA850/OMAP-L138/AM18x | DM365 | DM368 | |||
300 MHz | 456 MHz | 297 MHz | 432 MHz | 300 MHz | 456 MHz | 297 MHz | 432 MHz | |
NTSC(720x480) | 30 | 30 | 26 | 22.5 | ||||
PAL(720x574) | 25 | 25 | 24 | 19 | ||||
720P | NA | NA | NA | NA | ||||
1080I | NA | NA | NA | NA |
NOTE
The above performance numbers are based on application which does mmap buffer allocation mechanism.
McBSP[edit]
Description[edit]
Multi-channel Buffer Serial Port (McBSP) peripheral is primarily used for serial data transfer like in the case of audio interfaces. McBSP supports DMA mode of transfer and hence is suitable for real-time audio applications. The McBSP driver provides APIs to the programmer to control McBSP.
Driver Features[edit]
- The driver is an API driver.
- Supports multiple instances of the peripheral.
- Supports master transmitter and slave receiver operation.
- Supports multi-channel selection mode of operation.
- Supports configuration of word length, frame length, sample frequency.
Driver Features Not Supported[edit]
Slave transmitter, master receiver combination.
Constraint[edit]
The test setup consists of Interposers connecting two EVMs with the necessary connections wired. Using this setup, the maximum frame length that has been tested is 32. Beyond this the test results are not stable.
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
NA
eCAP[edit]
Description:[edit]
Enhanced Capture Module (eCAP) is used for speed measurements of rotating machinery, Sample Rate measurements of rotating machinery and Period and Duty Cycle measurements of pulse train signals. In PWM mode, eCAP can be configured to generate PWM Waveforms.
Driver Features:[edit]
1 .Supports Multiple Instances.
2. Provides control to the user through SYSFS interface.
3. Supports Wide range of Period and Duty cycle Control.
Features Not Supported:[edit]
Capture mode feature is not supported.
Constraint[edit]
eCAP driver belongs to the category of PWM drivers and hence the driver functions can be accessed only through the core PWM FrameWork.
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
NA
eHRPWM[edit]
Description[edit]
Enhanced High-Resolution Pulse-Width Modulator (eHRPWM) is used to generate complex pulse width Waveforms with minimal CPU overhead or intervention.
Driver Features:[edit]
1 .Supports Multiple Instances.
2. Provides control to the user through SYSFS interface.
3. Supports wide range of Period and Duty cycle Control.
4. Supports Trip Zone, Dead Band, PWM chopper, Event Trigger and High Resolution Features.
Features Not Supported:[edit]
NA
Constraint[edit]
eHRPWM driver belongs to the category of PWM drivers and hence the basic PWM driver functions can be accessed only through the core PWM FrameWork. Advanced features have been exported for global access.
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
NA
VPFE V4L2 Driver[edit]
Description[edit]
The Video Port Front End Driver is the Video capture interface for the DM3X device for capturing the video data through the VPFE interface. The interface supports both RAW Bayer and processed YUV, and stores the data into the DDR using the internal DMA. The port is capable of both storing the data as-is without processing using only CCDC or process it midway using IPIPE hardware.
The Driver conforms to the V4L2 Media Controller Framework interface with CCDC, Previewer, Resizer H3A and AEW being the core Media entities in the VPFE IP, and MT9P031, TVP7002 and TVP514X being the external Media entities. The driver is operable in two modes - mainly continuous where the data captured is synchronously stored in the DDR and in Single shot mode where the input and the output is the DDR.
For more information visit: Writing V4L2 Media Controller Applications on Dm36x Video Capture
Driver Features[edit]
- Supports Media Controller Framework
- Supports Suer pointer exchange and memory mapped buffers
- Single Shot and Continuous mode operations
- Supports DV_PRESETS for HD modes.
Driver Features Not Supported[edit]
- NV12 buffer format is not supported
- Resizer-B as a seperate node is not supported
- IOCTL on IPIPE for setting format(s_format) and config (s_config) has to be issued as both private IOCTL and V4l2.
- Single shot driver supports queuing one buffer at a point of time. Does not yet support multiple buffer queuing.
Performance Benchmarks[edit]
Driver | Resolution | Frame Rate | CPU Load (in %) | ||
---|---|---|---|---|---|
DM365 | DM368 | DM365 | DM368 | ||
Resizer Single Shot | 720x480 to 1280x720 | 113 | 158 | ||
Resizer Single Shot | 1280x720 to 720x480 | 43 | 60 | ||
Resizer Single Shot | 1280 x 720 to 1920 x 1080 | 43 | 60 | ||
Resizer Single Shot | 1920 x 1080 to 1280 x 720 | 26 | 26 | ||
Previewer Single Shot | 720 x 480, format=YUYV | 76 | 106 | ||
Previewer Single Shot | 1280 x 720 format=YUYV | 28 | 40 | ||
Previewer Single Shot | 1920 x 1080 format=YUYV | 12 | 18 | ||
Previewer + Resizer | 720x480 to 1280 x 720 format=YUYV | 76 | 106 | ||
Previewer + Resizer | 1280x720 to 720x480 format=YUYV | 28 | 40 | ||
Previewer + Resizer | 1280x720 to 1920x1080 format=YUYV | 28 | 40 | ||
TVP514X + CCDC | NTSC | 30 | 30 | ||
MT9P031 + CCDC | 720P | 26 | 26 | ||
CCDC | 1080P | 31 | 31 | ||
MT9P031 + CCDC + Previewer | 720P | 26 | 26 | ||
MT9P031 + CCDC + Previewer | 1080P | 31 | 31 | ||
MT9P031 + CCDC + Previewer + Resizer | 720P | 26 | 26 | ||
MT9P031 + CCDC +Previewer + Resizer | 1080P | 31 | 31 |
NOTE
The above performance numbers are based on application which does user pointer buffer allocation mechanism.