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.
AM335x-PSP 04.06.00.07 Features and Performance Guide
Content is no longer maintained and is being kept for reference only!
Contents
- 1 Read This First
- 2 Support Overview
- 3 Linux Kernel
- 4 Boot-time Measurement
- 5 PSP Linux Drivers
- 5.1 Device Driver List
- 5.2 ALSA SoC Audio Driver
- 5.3 Ethernet Driver
- 5.4 Graphical LCD (GLCD) Driver
- 5.5 NAND Driver
- 5.6 SPI Flash Driver
- 5.7 MMC/SD Driver
- 5.8 UART Driver
- 5.9 I2C Driver
- 5.10 EDMA Driver
- 5.11 Touchscreen Driver
- 5.12 Watchdog(WDT) Driver
- 5.13 USB Driver
- 5.14 DCAN Driver
- 5.15 Power Management
Read This First[edit]
Content is no longer maintained and is being kept for reference only!
All performance numbers provided in this document are gathered using AM335x BeagleBone and Evaluation Module (version 1.1A) Board with ARM running at 720MHz and DDR2 configured at 266MHz clock.
About This Manual[edit]
This document provides a feature overview and performance data for each of the device drivers which are part of the Linux PSP package supporting AM335x BeagleBone and Evaluation Module (version 1.1A and above) boards. This document should be used in conjunction with release notes provided with the PSP package for information on specific issues present with drivers included in a particular release.
If You Need Assistance[edit]
For further information or to report any problems, contact http://community.ti.com/ or http://support.ti.com/
Support Overview[edit]
Boot Modes Supported[edit]
Green colored box in the table below means that the particular boot mode is supported on the device in the release.
Boot Mode | AM335x BeagleBone | AM335x Evaluation Module (EVM) |
---|---|---|
SPI EEPROM | No | No |
SPI Flash | No | No |
NAND Flash | No | Yes |
NOR Flash | No | No |
I2C EEPROM | No | No |
MMC/SD | Yes | Yes |
EMAC Boot | No | No |
UART Boot | Yes (UART0) | Yes (UART0) |
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 | AM335x (BeagleBone) | AM335x (Evaluation Module) |
---|---|---|
UART | Yes | Yes |
Ethernet Download (TFTP) | Yes | Yes |
USB DFU | No | No |
MMC/SD | Yes | Yes |
SPI Flash | No | No |
NAND flash | No | Yes |
USB Mass Storage | No | No |
Linux Kernel[edit]
Kernel Virtual Memory Layout
[edit]
The default AM335x kernel configuration, with "mem=256M" passed as boot argument, uses following Virtual Memory laout:
[ 0.000000] Memory: 256MB = 256MB total [ 0.000000] Memory: 253436k/253436k available, 8708k reserved, 0K highmem [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB) [ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [ 0.000000] .text : 0xc0008000 - 0xc057c000 (5584 kB) [ 0.000000] .init : 0xc057c000 - 0xc05b9000 ( 244 kB) [ 0.000000] .data : 0xc05ba000 - 0xc0617fc0 ( 376 kB) [ 0.000000] .bss : 0xc0617fe4 - 0xc0644d64 ( 180 kB)
Boot-time Measurement[edit]
Boot-time measurement was done with kernel built using am335x_evm_defconfig
. Root filesystem was on MMC/SD and ethernet (DHCP) is enabled. Total boot time from reset to "Login:" prompt was measured to be 19.98s.
Complete boot log with timestamps follows:
[Wed Mar 28 18:44:20.014 2012] [Wed Mar 28 18:44:20.014 2012] U-Boot SPL 2011.09 (Mar 19 2012 - 15:37:28) [Wed Mar 28 18:44:20.014 2012] Texas Instruments Revision detection unimplemented [Wed Mar 28 18:44:20.498 2012] OMAP SD/MMC: 0 [Wed Mar 28 18:44:20.561 2012] reading u-boot.img [Wed Mar 28 18:44:20.561 2012] reading u-boot.img [Wed Mar 28 18:44:20.623 2012] [Wed Mar 28 18:44:20.623 2012] [Wed Mar 28 18:44:20.623 2012] U-Boot 2011.09 (Mar 19 2012 - 15:37:30) [Wed Mar 28 18:44:20.623 2012] [Wed Mar 28 18:44:20.623 2012] I2C: ready [Wed Mar 28 18:44:20.670 2012] DRAM: 256 MiB [Wed Mar 28 18:44:20.670 2012] WARNING: Caches not enabled [Wed Mar 28 18:44:20.998 2012] Found a daughter card connected [Wed Mar 28 18:44:21.108 2012] NAND: HW ECC Hamming Code selected [Wed Mar 28 18:44:21.108 2012] 256 MiB [Wed Mar 28 18:44:21.108 2012] MMC: OMAP SD/MMC: 0 [Wed Mar 28 18:44:21.608 2012] Net: cpsw [Wed Mar 28 18:44:21.608 2012] Hit any key to stop autoboot: 0 [Wed Mar 28 18:44:21.654 2012] SD/MMC found on device 0 [Wed Mar 28 18:44:21.717 2012] reading uEnv.txt [Wed Mar 28 18:44:21.717 2012] [Wed Mar 28 18:44:21.717 2012] ** Unable to read "uEnv.txt" from mmc 0:1 ** [Wed Mar 28 18:44:21.717 2012] reading uImage [Wed Mar 28 18:44:22.045 2012] [Wed Mar 28 18:44:22.045 2012] 3077336 bytes read [Wed Mar 28 18:44:22.045 2012] ## Booting kernel from Legacy Image at 80007fc0 ... [Wed Mar 28 18:44:22.045 2012] Image Name: Arago/3.1/am335x-evm [Wed Mar 28 18:44:22.045 2012] Image Type: ARM Linux Kernel Image (uncompressed) [Wed Mar 28 18:44:22.045 2012] Data Size: 3077272 Bytes = 2.9 MiB [Wed Mar 28 18:44:22.092 2012] Load Address: 80008000 [Wed Mar 28 18:44:22.108 2012] Entry Point: 80008000 [Wed Mar 28 18:44:22.108 2012] Verifying Checksum ... OK [Wed Mar 28 18:44:22.983 2012] XIP Kernel Image ... OK [Wed Mar 28 18:44:22.983 2012] OK [Wed Mar 28 18:44:22.983 2012] [Wed Mar 28 18:44:22.983 2012] Starting kernel ... [Wed Mar 28 18:44:22.983 2012] [Wed Mar 28 18:44:22.983 2012] Uncompressing Linux... done, booting the kernel. [Wed Mar 28 18:44:23.795 2012] [ 0.000000] Linux version 3.2.0 (jenkins@jenkins1) (gcc version 4.5.3 20110311 (prerelease) (GCC) ) #1 Mon Mar 19 15:34:29 EDT 2012 [Wed Mar 28 18:44:23.811 2012] [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d [Wed Mar 28 18:44:23.811 2012] [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [Wed Mar 28 18:44:23.811 2012] [ 0.000000] Machine: am335xevm [Wed Mar 28 18:44:23.858 2012] [ 0.000000] Memory policy: ECC disabled, Data cache writeback [Wed Mar 28 18:44:23.858 2012] [ 0.000000] AM335X ES1.0 (sgx neon ) [Wed Mar 28 18:44:23.858 2012] [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024 [Wed Mar 28 18:44:23.873 2012] [ 0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait ip=none [Wed Mar 28 18:44:23.873 2012] [ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes) [Wed Mar 28 18:44:23.873 2012] [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [Wed Mar 28 18:44:23.889 2012] [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [Wed Mar 28 18:44:23.889 2012] [ 0.000000] Memory: 256MB = 256MB total [Wed Mar 28 18:44:23.889 2012] [ 0.000000] Memory: 253436k/253436k available, 8708k reserved, 0K highmem [Wed Mar 28 18:44:23.920 2012] [ 0.000000] Virtual kernel memory layout: [Wed Mar 28 18:44:23.920 2012] [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [Wed Mar 28 18:44:23.920 2012] [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [Wed Mar 28 18:44:23.967 2012] [ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB) [Wed Mar 28 18:44:23.983 2012] [ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) [Wed Mar 28 18:44:23.983 2012] [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [Wed Mar 28 18:44:23.983 2012] [ 0.000000] .text : 0xc0008000 - 0xc057c000 (5584 kB) [Wed Mar 28 18:44:23.998 2012] [ 0.000000] .init : 0xc057c000 - 0xc05b9000 ( 244 kB) [Wed Mar 28 18:44:23.998 2012] [ 0.000000] .data : 0xc05ba000 - 0xc0617fc0 ( 376 kB) [Wed Mar 28 18:44:23.998 2012] [ 0.000000] .bss : 0xc0617fe4 - 0xc0644d64 ( 180 kB) [Wed Mar 28 18:44:24.014 2012] [ 0.000000] NR_IRQS:396 [Wed Mar 28 18:44:24.014 2012] [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts [Wed Mar 28 18:44:24.014 2012] [ 0.000000] Total of 128 interrupts on 1 active controller [Wed Mar 28 18:44:24.014 2012] [ 0.000000] OMAP clockevent source: GPTIMER2 at 24000000 Hz [Wed Mar 28 18:44:24.030 2012] [ 0.000000] OMAP clocksource: GPTIMER1 at 32768 Hz [Wed Mar 28 18:44:24.030 2012] [ 0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms [Wed Mar 28 18:44:24.030 2012] [ 0.000000] Console: colour dummy device 80x30 [Wed Mar 28 18:44:24.030 2012] [ 0.000152] Calibrating delay loop... 718.02 BogoMIPS (lpj=3590144) [Wed Mar 28 18:44:24.045 2012] [ 0.058959] pid_max: default: 32768 minimum: 301 [Wed Mar 28 18:44:24.045 2012] [ 0.059082] Security Framework initialized [Wed Mar 28 18:44:24.045 2012] [ 0.059173] Mount-cache hash table entries: 512 [Wed Mar 28 18:44:24.045 2012] [ 0.059539] CPU: Testing write buffer coherency: ok [Wed Mar 28 18:44:24.061 2012] [ 0.079498] omap_hwmod: gfx: failed to hardreset [Wed Mar 28 18:44:24.061 2012] [ 0.095764] omap_hwmod: pruss: failed to hardreset [Wed Mar 28 18:44:24.061 2012] [ 0.096862] print_constraints: dummy: [Wed Mar 28 18:44:24.076 2012] [ 0.097198] NET: Registered protocol family 16 [Wed Mar 28 18:44:24.076 2012] [ 0.099365] OMAP GPIO hardware version 0.1 [Wed Mar 28 18:44:24.076 2012] [ 0.101928] omap_mux_init: Add partition: #1: core, flags: 0 [Wed Mar 28 18:44:24.076 2012] [ 0.104095] omap_i2c.1: alias fck already exists [Wed Mar 28 18:44:24.092 2012] [ 0.104980] omap2_mcspi.1: alias fck already exists [Wed Mar 28 18:44:24.092 2012] [ 0.105194] omap2_mcspi.2: alias fck already exists [Wed Mar 28 18:44:24.092 2012] [ 0.105438] edma.0: alias fck already exists [Wed Mar 28 18:44:24.092 2012] [ 0.105468] edma.0: alias fck already exists [Wed Mar 28 18:44:24.108 2012] [ 0.105499] edma.0: alias fck already exists [Wed Mar 28 18:44:24.108 2012] [ 0.130157] bio: create slab <bio-0> at 0 [Wed Mar 28 18:44:24.108 2012] [ 0.132324] SCSI subsystem initialized [Wed Mar 28 18:44:24.108 2012] [ 0.133941] usbcore: registered new interface driver usbfs [Wed Mar 28 18:44:24.123 2012] [ 0.134246] usbcore: registered new interface driver hub [Wed Mar 28 18:44:24.139 2012] [ 0.134429] usbcore: registered new device driver usb [Wed Mar 28 18:44:24.139 2012] [ 0.134735] registerd cppi-dma Intr @ IRQ 17 [Wed Mar 28 18:44:24.139 2012] [ 0.134765] Cppi41 Init Done Qmgr-base(d083a000) dma-base(d0838000) [Wed Mar 28 18:44:24.155 2012] [ 0.134765] Cppi41 Init Done [Wed Mar 28 18:44:24.155 2012] [ 0.134796] musb-ti81xx musb-ti81xx: musb0, board_mode=0x13, plat_mode=0x3 [Wed Mar 28 18:44:24.155 2012] [ 0.135101] musb-ti81xx musb-ti81xx: musb1, board_mode=0x13, plat_mode=0x1 [Wed Mar 28 18:44:24.155 2012] [ 0.149017] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 100 kHz [Wed Mar 28 18:44:24.170 2012] [ 0.150848] tps65910 1-002d: JTAGREVNUM 0x0 [Wed Mar 28 18:44:24.170 2012] [ 0.153228] print_constraints: VRTC: [Wed Mar 28 18:44:24.170 2012] [ 0.154693] print_constraints: VIO: at 1800 mV [Wed Mar 28 18:44:24.170 2012] [ 0.157012] print_constraints: VDD1: 600 <--> 1500 mV at 1262 mV normal [Wed Mar 28 18:44:24.186 2012] [ 0.159301] print_constraints: VDD2: 600 <--> 1500 mV at 1137 mV normal [Wed Mar 28 18:44:24.186 2012] [ 0.160308] print_constraints: VDD3: 5000 mV [Wed Mar 28 18:44:24.186 2012] [ 0.161712] print_constraints: VDIG1: at 1800 mV [Wed Mar 28 18:44:24.201 2012] [ 0.163146] print_constraints: VDIG2: at 1800 mV [Wed Mar 28 18:44:24.201 2012] [ 0.164550] print_constraints: VPLL: at 1800 mV [Wed Mar 28 18:44:24.201 2012] [ 0.165985] print_constraints: VDAC: at 1800 mV [Wed Mar 28 18:44:24.201 2012] [ 0.167388] print_constraints: VAUX1: at 1800 mV [Wed Mar 28 18:44:24.217 2012] [ 0.168823] print_constraints: VAUX2: at 3300 mV [Wed Mar 28 18:44:24.217 2012] [ 0.170257] print_constraints: VAUX33: at 3300 mV [Wed Mar 28 18:44:24.217 2012] [ 0.171691] print_constraints: VMMC: at 3300 mV [Wed Mar 28 18:44:24.217 2012] [ 0.172210] tps65910 1-002d: No interrupt support, no core IRQ [Wed Mar 28 18:44:24.233 2012] [ 0.173095] Advanced Linux Sound Architecture Driver Version 1.0.24. [Wed Mar 28 18:44:24.233 2012] [ 0.174224] Switching to clocksource gp timer [Wed Mar 28 18:44:24.248 2012] [ 0.189636] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host) [Wed Mar 28 18:44:24.248 2012] [ 0.189819] musb-hdrc musb-hdrc.0: dma type: dma-cppi41 [Wed Mar 28 18:44:24.248 2012] [ 0.190979] musb-hdrc musb-hdrc.0: USB OTG mode controller at d081c000 using DMA, IRQ 18 [Wed Mar 28 18:44:24.264 2012] [ 0.191162] musb-hdrc musb-hdrc.1: dma type: dma-cppi41 [Wed Mar 28 18:44:24.264 2012] [ 0.191833] musb-hdrc musb-hdrc.1: MUSB HDRC host driver [Wed Mar 28 18:44:24.264 2012] [ 0.191925] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1 [Wed Mar 28 18:44:24.264 2012] [ 0.192077] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [Wed Mar 28 18:44:24.280 2012] [ 0.192077] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [Wed Mar 28 18:44:24.295 2012] [ 0.192108] usb usb1: Product: MUSB HDRC host driver [Wed Mar 28 18:44:24.358 2012] [ 0.192108] usb usb1: Manufacturer: Linux 3.2.0 musb-hcd [Wed Mar 28 18:44:24.373 2012] [ 0.192108] usb usb1: SerialNumber: musb-hdrc.1 [Wed Mar 28 18:44:24.373 2012] [ 0.192901] hub 1-0:1.0: USB hub found [Wed Mar 28 18:44:24.373 2012] [ 0.192932] hub 1-0:1.0: 1 port detected [Wed Mar 28 18:44:24.373 2012] [ 0.193450] musb-hdrc musb-hdrc.1: USB Host mode controller at d081e800 using DMA, IRQ 19 [Wed Mar 28 18:44:24.389 2012] [ 0.193847] NET: Registered protocol family 2 [Wed Mar 28 18:44:24.389 2012] [ 0.194061] IP route cache hash table entries: 2048 (order: 1, 8192 bytes) [Wed Mar 28 18:44:24.389 2012] [ 0.194458] TCP established hash table entries: 8192 (order: 4, 65536 bytes) [Wed Mar 28 18:44:24.389 2012] [ 0.194610] TCP bind hash table entries: 8192 (order: 3, 32768 bytes) [Wed Mar 28 18:44:24.405 2012] [ 0.194702] TCP: Hash tables configured (established 8192 bind 8192) [Wed Mar 28 18:44:24.405 2012] [ 0.194732] TCP reno registered [Wed Mar 28 18:44:24.405 2012] [ 0.194732] UDP hash table entries: 256 (order: 0, 4096 bytes) [Wed Mar 28 18:44:24.405 2012] [ 0.194763] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [Wed Mar 28 18:44:24.420 2012] [ 0.194946] NET: Registered protocol family 1 [Wed Mar 28 18:44:24.420 2012] [ 0.195220] RPC: Registered named UNIX socket transport module. [Wed Mar 28 18:44:24.420 2012] [ 0.195220] RPC: Registered udp transport module. [Wed Mar 28 18:44:24.436 2012] [ 0.195220] RPC: Registered tcp transport module. [Wed Mar 28 18:44:24.436 2012] [ 0.195251] RPC: Registered tcp NFSv4.1 backchannel transport module. [Wed Mar 28 18:44:24.436 2012] [ 0.195495] NetWinder Floating Point Emulator V0.97 (double precision) [Wed Mar 28 18:44:24.436 2012] [ 0.207611] VFS: Disk quotas dquot_6.5.2 [Wed Mar 28 18:44:24.451 2012] [ 0.207702] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [Wed Mar 28 18:44:24.451 2012] [ 0.208251] msgmni has been set to 494 [Wed Mar 28 18:44:24.451 2012] [ 0.209014] io scheduler noop registered [Wed Mar 28 18:44:24.467 2012] [ 0.209045] io scheduler deadline registered [Wed Mar 28 18:44:24.467 2012] [ 0.209106] io scheduler cfq registered (default) [Wed Mar 28 18:44:24.467 2012] [ 0.212860] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0 [Wed Mar 28 18:44:24.483 2012] [ 0.832702] console [ttyO0] enabled [Wed Mar 28 18:44:24.483 2012] [ 0.836975] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1 [Wed Mar 28 18:44:24.483 2012] [ 0.844818] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2 [Wed Mar 28 18:44:24.498 2012] [ 0.852569] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3 [Wed Mar 28 18:44:24.498 2012] [ 0.860382] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4 [Wed Mar 28 18:44:24.498 2012] [ 0.868164] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5 [Wed Mar 28 18:44:24.514 2012] [ 0.885223] brd: module loaded [Wed Mar 28 18:44:24.530 2012] [ 0.893280] loop: module loaded [Wed Mar 28 18:44:24.530 2012] [ 0.896789] i2c-core: driver [tsl2550] using legacy suspend method [Wed Mar 28 18:44:24.530 2012] [ 0.903228] i2c-core: driver [tsl2550] using legacy resume method [Wed Mar 28 18:44:24.545 2012] [ 0.909667] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write [Wed Mar 28 18:44:24.545 2012] [ 0.923583] Detected a daughter card on AM335x EVM.. [Wed Mar 28 18:44:24.545 2012] [ 0.928588] Unknown CPLD version found, falling back to 1.0A [Wed Mar 28 18:44:24.561 2012] [ 0.934722] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write [Wed Mar 28 18:44:24.561 2012] [ 0.949890] Board name: A33515BB [Wed Mar 28 18:44:24.561 2012] [ 0.953247] Board version: 1.1A [Wed Mar 28 18:44:24.561 2012] [ 0.956512] SKU: SKU#01 [Wed Mar 28 18:44:24.576 2012] [ 0.959594] The board is general purpose EVM in profile 0 [Wed Mar 28 18:44:24.576 2012] [ 0.965728] da8xx_lcdc.0: alias fck already exists [Wed Mar 28 18:44:24.576 2012] [ 0.971343] da8xx_lcdc da8xx_lcdc.0: GLCD: Found TFC_S9700RTWV35TR_01B panel [Wed Mar 28 18:44:24.592 2012] [ 0.994995] Console: switching to colour frame buffer device 100x30 [Wed Mar 28 18:44:24.592 2012] [ 1.010375] TSC connected to beta GP EVM [Wed Mar 28 18:44:24.623 2012] [ 1.015808] omap-gpmc omap-gpmc: GPMC revision 6.0 [Wed Mar 28 18:44:24.639 2012] [ 1.020843] Registering NAND on CS0 [Wed Mar 28 18:44:24.639 2012] [ 1.025207] omap_i2c.2: alias fck already exists [Wed Mar 28 18:44:24.639 2012] [ 1.044982] omap_i2c omap_i2c.2: bus 2 rev2.4.0 at 100 kHz [Wed Mar 28 18:44:24.639 2012] [ 1.051666] tsl2550 2-0039: standard operating mode [Wed Mar 28 18:44:24.655 2012] [ 1.057464] tsl2550 2-0039: support ver. 1.2 enabled [Wed Mar 28 18:44:24.655 2012] [ 1.063079] davinci-mcasp.1: alias fck already exists [Wed Mar 28 18:44:24.686 2012] [ 1.068939] omap_hsmmc.0: alias fck already exists [Wed Mar 28 18:44:24.686 2012] [ 1.074310] omap_hsmmc.2: alias fck already exists [Wed Mar 28 18:44:24.686 2012] [ 1.079711] Configure Bluetooth Enable pin... [Wed Mar 28 18:44:24.701 2012] [ 1.085479] _regulator_get: 2-0018 supply Vdd not found, using dummy regulator [Wed Mar 28 18:44:24.701 2012] [ 1.093078] _regulator_get: 2-0018 supply Vdd_IO not found, using dummy regulator [Wed Mar 28 18:44:24.701 2012] [ 1.121582] lis3lv02d: 8 bits 3DLH sensor found [Wed Mar 28 18:44:24.795 2012] [ 1.215240] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input0 [Wed Mar 28 18:44:24.795 2012] [ 1.226135] mtdoops: mtd device (mtddev=name/number) must be supplied [Wed Mar 28 18:44:24.842 2012] [ 1.233398] omap2-nand driver initializing [Wed Mar 28 18:44:24.842 2012] [ 1.238037] ONFI flash detected [Wed Mar 28 18:44:24.858 2012] [ 1.241424] ONFI param page 0 valid [Wed Mar 28 18:44:24.858 2012] [ 1.245086] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron MT29F2G08ABAEAWP) [Wed Mar 28 18:44:24.905 2012] [ 1.253662] Creating 8 MTD partitions on "omap2-nand.0": [Wed Mar 28 18:44:24.920 2012] [ 1.259246] 0x000000000000-0x000000020000 : "SPL" [Wed Mar 28 18:44:24.920 2012] [ 1.265686] 0x000000020000-0x000000040000 : "SPL.backup1" [Wed Mar 28 18:44:24.920 2012] [ 1.272644] 0x000000040000-0x000000060000 : "SPL.backup2" [Wed Mar 28 18:44:24.920 2012] [ 1.279541] 0x000000060000-0x000000080000 : "SPL.backup3" [Wed Mar 28 18:44:24.920 2012] [ 1.286468] 0x000000080000-0x000000260000 : "U-Boot" [Wed Mar 28 18:44:24.936 2012] [ 1.293579] 0x000000260000-0x000000280000 : "U-Boot Env" [Wed Mar 28 18:44:24.936 2012] [ 1.300384] 0x000000280000-0x000000780000 : "Kernel" [Wed Mar 28 18:44:24.936 2012] [ 1.308898] 0x000000780000-0x000010000000 : "File System" [Wed Mar 28 18:44:25.014 2012] [ 1.419067] OneNAND driver initializing [Wed Mar 28 18:44:25.014 2012] [ 1.424468] CAN device driver interface [Wed Mar 28 18:44:25.014 2012] [ 1.428497] CAN bus driver for Bosch D_CAN controller 1.0 [Wed Mar 28 18:44:25.061 2012] [ 1.484863] davinci_mdio davinci_mdio.0: davinci mdio revision 1.6 [Wed Mar 28 18:44:25.076 2012] [ 1.491302] davinci_mdio davinci_mdio.0: detected phy mask fffffffe [Wed Mar 28 18:44:25.076 2012] [ 1.498474] davinci_mdio.0: probed [Wed Mar 28 18:44:25.076 2012] [ 1.502044] davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver unknown [Wed Mar 28 18:44:25.123 2012] [ 1.509735] usbcore: registered new interface driver zd1201 [Wed Mar 28 18:44:25.123 2012] [ 1.515777] usbcore: registered new interface driver cdc_ether [Wed Mar 28 18:44:25.139 2012] [ 1.522003] usbcore: registered new interface driver cdc_eem [Wed Mar 28 18:44:25.139 2012] [ 1.528045] usbcore: registered new interface driver dm9601 [Wed Mar 28 18:44:25.139 2012] [ 1.533935] cdc_ncm: 04-Aug-2011 [Wed Mar 28 18:44:25.155 2012] [ 1.537475] usbcore: registered new interface driver cdc_ncm [Wed Mar 28 18:44:25.155 2012] [ 1.543365] Initializing USB Mass Storage driver... [Wed Mar 28 18:44:25.155 2012] [ 1.548706] usbcore: registered new interface driver usb-storage [Wed Mar 28 18:44:25.155 2012] [ 1.554992] USB Mass Storage support registered. [Wed Mar 28 18:44:25.170 2012] [ 1.560241] mousedev: PS/2 mouse device common for all mice [Wed Mar 28 18:44:25.186 2012] [ 1.567047] input: matrix-keypad as /devices/platform/matrix-keypad/input/input1 [Wed Mar 28 18:44:25.186 2012] [ 1.576171] input: ti-tsc-adcc as /devices/platform/omap/tsc/input/input2 [Wed Mar 28 18:44:25.186 2012] [ 1.584594] omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0 [Wed Mar 28 18:44:25.201 2012] [ 1.591522] i2c /dev entries driver [Wed Mar 28 18:44:25.201 2012] [ 1.595825] Linux video capture interface: v2.00 [Wed Mar 28 18:44:25.201 2012] [ 1.600952] usbcore: registered new interface driver uvcvideo [Wed Mar 28 18:44:25.217 2012] [ 1.606964] USB Video Class driver (1.1.1) [Wed Mar 28 18:44:25.217 2012] [ 1.612121] lm75 2-0048: hwmon0: sensor 'tmp275' [Wed Mar 28 18:44:25.233 2012] [ 1.619781] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec [Wed Mar 28 18:44:25.233 2012] [ 1.628295] cpuidle: using governor ladder [Wed Mar 28 18:44:25.248 2012] [ 1.633056] cpuidle: using governor menu [Wed Mar 28 18:44:25.248 2012] [ 1.642883] usbcore: registered new interface driver usbhid [Wed Mar 28 18:44:25.248 2012] [ 1.648742] usbhid: USB HID core driver [Wed Mar 28 18:44:25.248 2012] [ 1.653350] usbcore: registered new interface driver snd-usb-audio [Wed Mar 28 18:44:25.264 2012] [ 1.661926] _regulator_get: 2-001b supply IOVDD not found, using dummy regulator [Wed Mar 28 18:44:25.264 2012] [ 1.669738] _regulator_get: 2-001b supply DVDD not found, using dummy regulator [Wed Mar 28 18:44:25.295 2012] [ 1.677459] _regulator_get: 2-001b supply AVDD not found, using dummy regulator [Wed Mar 28 18:44:25.295 2012] [ 1.685119] _regulator_get: 2-001b supply DRVDD not found, using dummy regulator [Wed Mar 28 18:44:25.295 2012] [ 1.695709] asoc: tlv320aic3x-hifi <-> davinci-mcasp.1 mapping ok [Wed Mar 28 18:44:25.311 2012] [ 1.703491] ALSA device list: [Wed Mar 28 18:44:25.311 2012] [ 1.706665] #0: AM335X EVM [Wed Mar 28 18:44:25.311 2012] [ 1.709686] oprofile: hardware counters not available [Wed Mar 28 18:44:25.311 2012] [ 1.714965] oprofile: using timer interrupt. [Wed Mar 28 18:44:25.326 2012] [ 1.719421] nf_conntrack version 0.5.0 (3959 buckets, 15836 max) [Wed Mar 28 18:44:25.342 2012] [ 1.726226] ip_tables: (C) 2000-2006 Netfilter Core Team [Wed Mar 28 18:44:25.342 2012] [ 1.731872] TCP cubic registered [Wed Mar 28 18:44:25.342 2012] [ 1.735290] NET: Registered protocol family 17 [Wed Mar 28 18:44:25.358 2012] [ 1.739929] can: controller area network core (rev 20090105 abi 8) [Wed Mar 28 18:44:25.358 2012] [ 1.746459] NET: Registered protocol family 29 [Wed Mar 28 18:44:25.358 2012] [ 1.751098] can: raw protocol (rev 20090105) [Wed Mar 28 18:44:25.358 2012] [ 1.755584] can: broadcast manager protocol (rev 20090105 t) [Wed Mar 28 18:44:25.373 2012] [ 1.761505] Registering the dns_resolver key type [Wed Mar 28 18:44:25.373 2012] [ 1.766510] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 [Wed Mar 28 18:44:25.373 2012] [ 1.774505] ThumbEE CPU extension supported. [Wed Mar 28 18:44:25.389 2012] [ 1.779022] mux: Failed to setup hwmod io irq -22 [Wed Mar 28 18:44:25.405 2012] [ 1.784576] Power Management for AM33XX family [Wed Mar 28 18:44:25.405 2012] [ 1.789459] Trying to load am335x-pm-firmware.bin (60 secs timeout) [Wed Mar 28 18:44:25.405 2012] [ 1.796142] Copied the M3 firmware to UMEM [Wed Mar 28 18:44:25.405 2012] [ 1.800415] omap_hwmod: wkup_m3: wkup_m3: hwmod data error: OMAP4 does not support st_shift [Wed Mar 28 18:44:25.420 2012] [ 1.817749] clock: disabling unused clocks to save power [Wed Mar 28 18:44:25.420 2012] [ 1.825500] Detected MACID=d4:94:a1:80:ac:e0 [Wed Mar 28 18:44:25.420 2012] [ 1.835205] input: gpio-keys as /devices/platform/gpio-keys/input/input3 [Wed Mar 28 18:44:25.514 2012] [ 1.842926] omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800) [Wed Mar 28 18:44:25.514 2012] [ 1.852172] Waiting for root device /dev/mmcblk0p2... [Wed Mar 28 18:44:25.514 2012] [ 1.911834] mmc0: new high speed SDHC card at address e624 [Wed Mar 28 18:44:25.514 2012] [ 1.918243] mmcblk0: mmc0:e624 SD04G 3.69 GiB [Wed Mar 28 18:44:25.530 2012] [ 1.927337] mmcblk0: p1 p2 p3 [Wed Mar 28 18:44:25.623 2012] [ 2.040985] mmc1: card claims to support voltages below the defined range. These will be ignored. [Wed Mar 28 18:44:25.701 2012] [ 2.061401] mmc1: queuing unknown CIS tuple 0x91 (3 bytes) [Wed Mar 28 18:44:25.701 2012] [ 2.068054] mmc1: new SDIO card at address 0001 [Wed Mar 28 18:44:25.717 2012] [ 2.153533] kjournald starting. Commit interval 5 seconds [Wed Mar 28 18:44:25.733 2012] [ 2.159362] EXT3-fs (mmcblk0p2): warning: maximal mount count reached, running e2fsck is recommended [Wed Mar 28 18:44:25.780 2012] [ 2.170623] EXT3-fs (mmcblk0p2): using internal journal [Wed Mar 28 18:44:25.780 2012] [ 2.176086] EXT3-fs (mmcblk0p2): recovery complete [Wed Mar 28 18:44:25.795 2012] [ 2.188232] EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode [Wed Mar 28 18:44:25.795 2012] [ 2.195495] VFS: Mounted root (ext3 filesystem) on device 179:2. [Wed Mar 28 18:44:25.795 2012] [ 2.202148] Freeing init memory: 244K [Wed Mar 28 18:44:25.889 2012] INIT: version 2.86 booting [Wed Mar 28 18:44:26.045 2012] Please wait: booting... [Wed Mar 28 18:44:26.108 2012] Starting udev [Wed Mar 28 18:44:26.217 2012] [ 2.615447] udevd (690): /proc/690/oom_adj is deprecated, please use /proc/690/oom_score_adj instead. [Wed Mar 28 18:44:30.561 2012] [ 6.971557] EXT2-fs (mmcblk0p3): warning: mounting unchecked fs, running e2fsck is recommended [Wed Mar 28 18:44:30.608 2012] [ 7.051147] alignment: ignoring faults is unsafe on this CPU. Defaulting to fixup mode. [Wed Mar 28 18:44:30.670 2012] Remounting root file system... [Wed Mar 28 18:44:30.780 2012] Caching udev devnodes [Wed Mar 28 18:44:31.108 2012] ALSA: Restoring mixer settings... [Wed Mar 28 18:44:31.155 2012] No state is present for card EVM [Wed Mar 28 18:44:31.170 2012] Configuring network interfaces... Found hardware: "AM335X_EVM" "" "" "" "" [Wed Mar 28 18:44:31.217 2012] Hardware is initialized using a generic method [Wed Mar 28 18:44:31.217 2012] No state is present for card EVM [Wed Mar 28 18:44:31.264 2012] [ 7.673736] [Wed Mar 28 18:44:31.280 2012] [ 7.673736] CPSW phy found : id is : 0x4dd074 [Wed Mar 28 18:44:31.280 2012] [ 7.680694] PHY 0:01 not found [Wed Mar 28 18:44:31.280 2012] udhcpc (v1.13.2) started [Wed Mar 28 18:44:31.327 2012] Sending discover... [Wed Mar 28 18:44:34.342 2012] Sending discover... [Wed Mar 28 18:44:36.264 2012] [ 12.666320] PHY: 0:00 - Link is Up - 1000/Full [Wed Mar 28 18:44:37.311 2012] Sending discover... [Wed Mar 28 18:44:37.374 2012] Sending select for 158.218.103.63... [Wed Mar 28 18:44:37.374 2012] Lease of 158.218.103.63 obtained, lease time 28800 [Wed Mar 28 18:44:37.374 2012] adding dns 158.218.108.21 [Wed Mar 28 18:44:37.420 2012] adding dns 157.170.32.67 [Wed Mar 28 18:44:37.436 2012] done. [Wed Mar 28 18:44:37.436 2012] Setting up IP spoofing protection: rp_filter. [Wed Mar 28 18:44:37.483 2012] Wed Mar 14 16:54:00 UTC 2012 [Wed Mar 28 18:44:37.483 2012] INIT: Entering runlevel: 5 [Wed Mar 28 18:44:37.592 2012] Starting telnet daemon. [Wed Mar 28 18:44:37.592 2012] Starting syslogd/klogd: done [Wed Mar 28 18:44:37.639 2012] Starting thttpd. [Wed Mar 28 18:44:38.686 2012] [Wed Mar 28 18:44:38.749 2012] _____ _____ _ _ [Wed Mar 28 18:44:38.749 2012] | _ |___ ___ ___ ___ | _ |___ ___ |_|___ ___| |_ [Wed Mar 28 18:44:38.764 2012] | | _| .'| . | . | | __| _| . | | | -_| _| _| [Wed Mar 28 18:44:38.764 2012] |__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_| [Wed Mar 28 18:44:38.764 2012] |___| |___| [Wed Mar 28 18:44:38.780 2012] [Wed Mar 28 18:44:38.780 2012] Arago Project http://arago-project.org am335x-evm ttyO0 [Wed Mar 28 18:44:38.780 2012] [Wed Mar 28 18:44:38.780 2012] Arago 2011.09 am335x-evm ttyO0 [Wed Mar 28 18:44:38.795 2012] [Wed Mar 28 18:44:38.795 2012] am335x-evm login:
PSP Linux Drivers[edit]
This section provides brief overview of the device drivers supported in the Linux PSP release.
Note: The constraints may vary across product releases. Please refer to the Release Notes accompanying the release for an updated list of constraints.
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 |
---|---|---|---|
Audio (McASP) | Audio Record and Playback | ALSA SoC | EDMA |
Ethernet | Ethernet Network driver | Netdev | Internal DMA |
Controller Area Network (CAN) | Controller Area Network driver | SocketCAN | None |
USB MSC Host | USB Mass Storage Class Host Driver | Block | USB Internal DMA |
USB HID Host | USB Human Interface Device Host Driver | Input driver | USB Internal DMA |
USB MUSB HCD | MUSB Host controller driver | USB HCD | USB Internal DMA |
NAND Flash | Flash storage system | MTD Character and Block | Not Supported |
GLCD | Graphical LCD driver | Frame Buffer | LCDC Internal DMA |
SPI Flash | Flash storage system | MTD Character and Block | EDMA |
MMC/SD | Interface to MultiMedia Secure Digital cards | Block | EDMA |
UART | Serial Communication Interface | Character | Not Supported |
I2C | Inter-IC Communication | Character | Not Supported |
RTC | Real-time clock | Character | None |
Watchdog | Watchdog Timer | Miscellaneous | None |
SPI | Serial Peripheral Interface | Character | EDMA |
Touchscreen | Touchscreen driver | Input driver | None |
CPU Idle | Supports multiple CPU idle levels | NA | None |
CPU Freq | Supports multiple SoC operating levels (OPPs) | NA | None |
Suspend-to-RAM | Helps the device enter its lowest power mode not requiring a reboot. | NA | None |
ALSA SoC Audio Driver[edit]
This section an overview of the ALSA SoC audio driver features along with the throughput and CPU load numbers.
Introduction[edit]
AM335x 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).
- Supports mixer interface for the audio codec
Features Not Supported[edit]
- OSS based applications, which use ALSA-OSS emulation layer, are not supported.
- Formats such as TDM, Left and Right Justified are currently not supported.
- Synthesizer and midi interfaces are not supported.
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.
- Sampling frequencies for playback and capture streams should be same.
- The audio driver does not allow opening the same stream (playback/capture) multiple times.
Supported System Calls[edit]
Refer ALSA project - the C library reference [1] for API calls.
Performance and Benchmarks[edit]
- Access type - RW_INTERLEAVED
- Channels - 2
- Format - S16_LE
- Period size - 64
Sampling Rate (in Hz) | CPU Load (in %) |
---|---|
8000 | 0.12 |
11025 | 0.14 |
16000 | 0.23 |
22050 | 0.27 |
32000 | 0.48 |
44100 | 0.53 |
48000 | 0.39 |
88200 | 1.01 |
96000 | 0.08 |
Sampling Rate (in Hz) | CPU Load (in %) |
---|---|
8000 | 0.12 |
11025 | 0.24 |
16000 | 0.45 |
22050 | 0.52 |
32000 | 0.90 |
44100 | 1.01 |
48000 | 1.45 |
88200 | 1.88 |
96000 | 5.70 |
Ethernet Driver[edit]
This section provides an overview of the Ethernet driver features along with throughput and CPU load numbers. Ethernet driver follows standard Linux network interface architecture.
Introduction[edit]
The Ethernet driver supports the Linux netdev interface.Driver Features[edit]
The driver supports the following features:
- 10/100/1000 Mbps mode of operation.
- Auto negotiation.
- Full duplex and half duplex mode of operation.
- Linux NAPI support
- Support for MII and RGMII interfaces to PHY
- CPSW Interrupt Pacing. This driver uses Timer 5 & 6 for CPSW Interrupt Pacing. Re-using this timer for any other purpose will result in CPSW Interrupt Pacing not working correctly.
Features Not Supported[edit]
- Promiscuous mode of operation.
- Second switch port (and independent operation of both ports)
- IEEE 1588
- VLAN (Subscription common for all ports)
- ethtool (Supports only Slave 0)
- Switch mode of operation (ALE control)
Supported System Calls[edit]
Supports the socket() and related system calls in accordance with Linux architecture.
Performance and Benchmarks[edit]
TCP Performance[edit]
TCP Window Size (in KBytes) |
Bandwidth (without interrupt pacing, in Mbits/sec) | CPU Load (without interrupt pacing, in %) | Bandwidth (with interrupt pacing, in Mbits/sec) | CPU Load (with interrupt pacing, in %) |
---|---|---|---|---|
16 | 261 | 98.86 | 302 | 95 |
32 | 247 | 99.50 | 301 | 99.3 |
64 | 241 | 99.5 | 285 | 99.5 |
128 | 226 | 99.4 | 262.40 | 99.5 |
256 | 222 | 99.5 | 256 | 99.5 |
The performance numbers were captured using the iperf tool. Usage details are mentioned below:
- iperf version 2.0.5
- On PC Host invoke iperf in the server mode : # iperf -s
- On the DUT iperf is invoked in client mode (bi-directional traffic for 60 seconds): # iperf -c <server ip> -w <window size> -m -f M -d -t 60 .
- Interrupt pacing feature enabled with pacing interval set to 500usecs (# ethtool -C eth0 rx-usecs 500)
- DUT is connected to a gigabit network.
UDP Performance[edit]
Maximum Bandwidth limit (MBits/sec) | Bandwidth observed (MBits/sec) | Jitter (milliseconds) |
---|---|---|
500 | 296.00 | 297.53 |
750 | 296.00 | 276.99 |
1000 | 296.00 | 279.48 |
Maximum Bandwidth limit (MBits/sec) | Bandwidth observed (MBits/sec) | Jitter (milliseconds) | Packet loss (percentage) |
---|---|---|---|
250 | 122.40 | 15.68 | 48 |
- iperf version 2.0.5
- For receive performance, on DUT, invoke iperf in server mode : # iperf -s -u
- For transmit performance, on DUT, invoke iperf in client mode : # iperf -c <server ip> -b <bandwidth limit> -f M -t 60 .
Graphical LCD (GLCD) Driver[edit]
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 and it reuses da8xx-fb used on AM18x device. The LCDC IP on AM335x is an upgraded version of that found on AM18x SoC.
Driver Features[edit]
The driver supports the following features:
- Supports WVGA display through Fbdev framework.
- Supports display of ARGB:8888 images at max resolution 2048*2048, but pixel clock can be driven Max 150MHz.
- 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]
- There is limit on Max pixel clock of 150MHz.
Supported System Calls[edit]
open(), close(), read(), mmap(), ioctl()
Performance Benchmarks[edit]
Performance and Benchmarks not available in this release.
NAND Driver[edit]
This section provides an overview of the NAND flash driver features along with throughput and CPU load numbers.
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.c
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:
- BCH8 with Hardware Error Correction is supported
- Supports Read, Write and Erase
- Bad Block Management
- Polled Prefetch mode of transfer (enabled by default)
- SLC NAND
- Only 8-bit NAND is tested since EVM supports only a 8-bit NAND
Features Not Supported[edit]
- DMA Mode of operation
Supported System Calls[edit]
Supports the system call support proivided by Linux MTD interface viz. open(), close(), read(), write(), ioctl()
Performance Benchmarks[edit]
Please refer MTD Test Setup before proceeding.
Buffer size | Through put in Mbytes/sec | CPU Load (in %) |
---|---|---|
102400 | 2.51 | 100 |
262144 | 2.51 | 100 |
5242880 | 2.51 | 100 |
Buffer size | Through put in Mbytes/sec | CPU Load (in %) |
---|---|---|
102400 | 3.42 | 100 |
262144 | 3.42 | 100 |
5242880 | 3.42 | 100 |
SPI Flash Driver[edit]
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 flash driver creates device node for user space access (example, /dev/mtd1).
Driver Features[edit]
The driver supports the following features:
- PIO and DMA Mode of Operation are supported.
Supported System Calls[edit]
Supports the system call support proivided by MTD interface viz. open(), close(), read(), write(), ioctl()
Performance Benchmarks[edit]
Test setup is available here.
Buffer size | Through put in Mbytes/sec | CPU Load (in %) |
---|---|---|
102400 |
0.09 |
88.89 |
262144 |
0.09 |
88.89 |
524288 |
0.09 |
89.03 |
1048576 |
0.09 |
88.93 |
Buffer size | Through put in Mbytes/sec | CPU Load (in %) |
---|---|---|
102400 |
1.22 |
6.49 |
262144 |
1.22 |
12.20 |
524288 |
1.22 |
18.64 |
1048576 |
1.22 |
15.79 |
NOTE Over all SPI performance is low because we can only do a 24MHz clock on the board against the theoretical max of 48 MHz. Also high CPU load on write is expected because the SPI flash driver does a write every page size (256 bytes) resulting in high interrupt load.
MMC/SD Driver[edit]
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 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 1-bit, 8-bit mode of operation.
- SPI mode of operation
- PIO 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()
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.
Please refer MMC/SD Test Setup before proceeding.
EXT2 file system[edit]
Buffer Size (in Bytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|
102400 | 8.52 | 11.73 |
1048576 | 8.29 | 9.84 |
5242880 | 8.43 | 9.48 |
Buffer Size (in Bytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|
102400 | 19.31 | 21.82 |
1048576 | 19.29 | 25.29 |
5242880 | 19.30 | 30.52 |
The performance numbers were captured using the following:
- SD Card (Sandisk Extreme 64G Class 10 SDXC card)
- File System: ext2
- Partition was mounted with async option
VFAT file system[edit]
Buffer Size (in Bytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|
102400 | 9.49 | 13.09 |
1048576 | 9.72 | 13.20 |
5242880 | 9.79 | 12.98 |
Buffer Size (in Bytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|
102400 | 19.12 | 16.63 |
1048576 | 19.12 | 22.33 |
5242880 | 19.13 | 27.00 |
The performance numbers were captured using the following:
- SD Card (Sandisk Extreme 64G Class 10 SDXC card)
- File System: vfat
- Partition was mounted with async option
UART Driver[edit]
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/ttyOX(X=0-5)
Features Not Supported[edit]
- Hardware Flow Control
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]
Performance and Benchmarks not available in this release.
I2C Driver[edit]
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
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_FUNCS | Gets the adapter functionality |
I2C_RDWR | Combined R/W transfer (one stop only) |
Performance and Benchmarks[edit]
Performance and Benchmarks not available in this release.
EDMA Driver[edit]
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 AM335x EDMA has has one instance of Channel controller. 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 other masters is not supported.
Touchscreen Driver[edit]
Introduction[edit]
Touchscreen controller on AM335x is an 8 channel general purpose ADC, with optional support for interleaving Touch Screen conversions for a 4-wire, 5-wire, or 8-wire resistive panel. A resistive touchscreen operates by applying a volatge across a resistive network and measuring the change in resistance at a given point on the matrix where the screen is touched by an input (stylus or finger). The change in the resistance ratio marks the location on the touchscreen.
Driver Features[edit]
The driver supports the following features:
- Resistive touchscreen
- Hardware synchronized one shot mode
- Programmable Open delay/Sampling delay before sampling each channel
- Programmable averaging of input samples - 16
- Support for servicing FIFOs via CPU.
- ADC sampled data is 12-bit wide.
- Pressure(z) measurements.
Features Not Supported[edit]
- DMA Request event.
Watchdog(WDT) Driver[edit]
This chapter provides details on Watchdog timer driver.
Introduction[edit]
AM335x has a 32-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. If watchdog device node is closed before timeout also reboot won't happen. 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.
Supported System Calls[edit]
open(), close(), write(), ioctl(), 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 |
USB Driver[edit]
This chapter provides details on MUSB drivers along with throughput and CPU load numbers.
This chapter describes the MUSB driver architecture, features supported/not supported, constraints and performance numbers.
MUSB OTG controller[edit]
Description[edit]
The MUSB driver is implemented on top of Mentor OTG IP version 2.0 which supports all the speeds (High, Full and Low (host mode only)). On AM335x, MUSB uses CPPI 4.1 DMA for all the transfers.
Driver Features[edit]
The driver supports the following features:
Host Mode
- Human Interface Class (HID)
- Mass Storage Class (MSC)
- Hub Class
- USB Host Video Class (UVC)
- USB Host Audio Class (UAC)
- USB CDC HOST (USBNET)
Gadget mode
- Mass Storage Class (MSC)
- USB Networking - RNDIS/CDC
OTG mode
- Host Negotiation Protocol (HNP)
Features Not Supported[edit]
USB Mass Storage Class Host Driver[edit]
Driver Features[edit]
The driver supports the following features:
- DMA mode
- PIO mode
Supported System Calls[edit]
open(), close(), read(), write(), ioctl()
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.
Setup : WesternDigital HDD (500GB) is connected to usb0 port. File read/write performance data on usb0 port (WDD HDD) is captured. For detailed test setup refer to USB MSC host test setup
USB MSC (MUSB) Host mode EXT2 File System Performance[edit]
Buffer Size (in Bytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|
102400 | 24.41 | 26.30 |
1048576 | 24.20 | 23.48 |
5242880 | 24.10 | 21.94 |
Buffer Size (in Bytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|
102400 | 23.63 | 27.13 |
1048576 | 23.54 | 27.27 |
5242880 | 23.57 | 27.50 |
USB MSC (MUSB) Host mode VFAT File System Performance[edit]
Buffer Size (in Bytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|
102400 | 22.61 | 36.55 |
262144 | 22.56 | 35.31 |
Buffer Size (in Bytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|
102400 | 22.26 | 24.39 |
262144 | 22.02 | 26.95 |
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 features:
- DMA mode
- PIO mode
- File backed storage driver was tested with SD media as the storage medium
Performance Benchmarks[edit]
The performance numbers are captured in DMA/PIO Mode using a file inside /dev/shm as storage gadget media exposing as removable media to Windows-XP over USB. The storage media is formatted using the NTFS on Windows-XP.
Storage gadget media file is created using the command:
# dd if=/dev/zero of=/dev/shm/50M bs=1M count=50"
Insert the USB mass storage gadget with /dev/shm/50M
as the backing storage:
# insmod g_mass_storage.ko file=/dev/shm/50M
For test setup details refer to msc-device setup
Bytes Transferred (MB)"/dev/shm/50M" file as storage device | Number of files transferred | Total Bytes transferred (MB) | Transfer Rate (MB/sec) on Windows XP |
---|---|---|---|
50 | 1 | 50 | 15.15 |
Bytes Transferred (MB)"/dev/shm/50M" file as storage device | Number of files transferred | Total Bytes transferred (MB) | Transfer Rate (MB/sec) on Windows XP |
---|---|---|---|
50 | 1 | 50 | 13.4 |
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 features:
- DMA mode
- PIO mode
- 10/100 Mbps speed.
Supported System Calls[edit]
open(), close(), read(), write(), ioctl()
Performance Benchmarks[edit]
Performance benchmarks were collected using the Iperf tool and default options were used to collect the throughput numbers.
USB CDC-DMA Performance[edit]
TCP Window Size(in KBytes) | Interval (in Seconds) | Bandwidth (Mbits/Sec) |
---|---|---|
16 | 60 | 136.8 |
32 | 60 | 139.3 |
64 | 60 | 131.3 |
128 | 60 | 122.9 |
USB RNDIS-DMA Performance[edit]
TCP Window Size(in KBytes) | Interval (in Seconds) | Bandwidth (Mbits/Sec) |
---|---|---|
16 | 60 | 83.7 |
32 | 60 | 82 |
64 | 60 | 82 |
128 | 60 | 83.2 |
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 features:
- DMA mode
- PIO mode
- USB Mouse and Keyboards that conform to the USB HID specifications
DCAN Driver[edit]
This section provides details on DCAN driver.
Introduction[edit]
The CAN (DCAN) driver supports the Linux netdev interface. CAN driver supports transmitting and receiving in-order packets, processing happens at various bit rates.
Driver Features[edit]
The driver supports the following features:
- SocketCAN networking framework
- Linux NAPI support for Rx operations
- Local loopback of sent frames (IFF_ECHO)
- Standard CAN bus bit-rates namely 10K, 20K, 50K, 100K, 125K, 250K, 500K & 1M
Features Not Supported[edit]
- ID filtering / Acceptance masks - since Linux infrastructure does not support this the driver cannot provide the feature
Supported System Calls[edit]
Supports the socket()
and related system calls in accordance with Linux architecture. Refer to can.txt
under Documentation/networking
folder
Power Management[edit]
Introduction[edit]
AM335x devices provides a rich set of power management features. The features include clock control at module level, multiple power and voltage domains etc.
This section provides an overview of power management features supported and steps to enable these features in the kernel configuration. It also provides the typical power consumption measurement observed for different scenarios.
cpuidle[edit]
When idle loop is executed, kernel is not doing any useful 'work'. This is an opportunity to save power. The cpuidle
framework helps in saving power during the idle state.
cpufreq[edit]
CPU is not loaded evenly during execution. This provides an opportunity to save power by adjusting/scaling voltage and frequency based on the current cpu load.
Power Measurements[edit]
All the measurements below were done on the AM335x EVM. The definition of idle at Linux prompt is as per the tables shown below
Name | Instances |
---|---|
ADC_TSC | NA |
CPSW | NA |
ELM | NA |
EMIF | NA |
EPWMSS | 0 |
GPIO | 0-3 |
GPMC | NA |
LCD | NA |
MCASP | 1 |
MAILBOX | NA |
OCMC | NA |
RTC | NA |
TIMER | 1,2,5,6 |
TPCC | NA |
TPTC | 0-2 |
UART | 0-5 |
USB | NA |
PLL | Lock Frequency (MHz) |
---|---|
Core PLL | 1000 |
PER PLL | 960 |
MPU PLL | As per OPP (275/500/600/720) |
DISP PLL | 300 |
DDR PLL | 266 |
At each OPP[edit]
This section indicates the power measured for all power rails at various OPPs (selected via cpufreq
). The measurements were done with the uImage
created using am335x_evm_defconfig
. Measurements were taken while Linux was idle at command prompt.
Power Rail | OPP 275 MHz (milliwatts) | OPP 500 MHz (milliwatts) | OPP 600 MHz (milliwatts) | OPP 720 MHz (milliwatts) |
---|---|---|---|---|
Total Power (Sum of all Rails) | 442.46 | 503.91 | 547.59 | 597.43 |
VDD_CORE | 193.98 | 194.84 | 194.01 | 196.22 |
VDD_MPU | 40.28 | 98.74 | 142.21 | 188.12 |
VDDS | 2.22 | 2.22 | 2.22 | 2.24 |
VDDS_RTC | 0.82 | 0.82 | 0.82 | 0.82 |
VDDS_DDR | 66.29 | 66.46 | 66.53 | 66.8 |
VDDS_SRAM_CORE_BG | 2.22 | 2.35 | 2.37 | 2.47 |
VDDS_SRAM_MPU_BB | 1.61 | 2.23 | 2.99 | 3.67 |
VDDS_PLL_DDR | 1.84 | 1.84 | 1.84 | 1.84 |
VDDS_PLL_CORE_LCD | 14.27 | 14.28 | 14.28 | 14.28 |
VDDS_PLL_MPU | 1.9 | 2.84 | 3.6 | 4.07 |
VDDS_OSC | 1.18 | 1.18 | 1.18 | 1.18 |
VDDA_1P8V_USB0_1 | 32.6 | 32.56 | 32.59 | 32.69 |
VDDS_A3P3V_USB0_1 | 8.69 | 8.67 | 8.66 | 8.66 |
VDDA_ADC | 0.81 | 0.81 | 0.81 | 0.8 |
VDDSHV1 | 0.52 | 0.51 | 0.51 | 0.51 |
VDDSHV2 | 0.15 | 0.14 | 0.07 | 0.15 |
VDDSHV3 | 0.16 | 0.15 | 0.16 | 0.16 |
VDDSHV4 | 0.06 | 0.06 | 0.06 | 0.06 |
VDDSHV5 | 51.93 | 52.3 | 52.11 | 51.75 |
VDDSHV6 | 20.93 | 20.92 | 20.6 | 20.93 |
When suspended[edit]
This section indicates the power measured for all power rails when system is in suspended state (via suspend-to-ram
). The measurements were done with the uImage
created using am335x_evm_defconfig
.
Power Rail | Suspend Power (milliwatts) |
---|---|
Total Power (Sum of all Rails) | 7.67 |
VDD_CORE | 2.50 |
VDD_MPU | 0.26 |
VDDS | 0.38 |
VDDS_RTC | 0.06 |
VDDS_DDR | 0.02 |
VDDS_SRAM_CORE_BG | 1.00 |
VDDS_SRAM_MPU_BB | 0.01 |
VDDS_PLL_DDR | 0.00 |
VDDS_PLL_CORE_LCD | 0.00 |
VDDS_PLL_MPU | 0.00 |
VDDS_OSC | 0.00 |
VDDA_1P8V_USB0_1 | 0.00 |
VDDS_A3P3V_USB0_1 | 0.06 |
VDDA_ADC | 0.81 |
VDDSHV1 | 0.31 |
VDDSHV2 | 0.07 |
VDDSHV3 | 0.10 |
VDDSHV4 | 0.06 |
VDDSHV5 | 0.20 |
VDDSHV6 | 1.79 |