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.
DM816x C6A816x AM389x PSP 04.00.00.10 Feature Performance Guide
DM816x refers to DM816x/AM389x devices unless specified.
DM814x refers to DM814x/AM387x devices unless specified.
DM81xx refers to both DM816x, DM814x and DM813x.
Important
This datasheet is applicable for 04.00.00.10 release only.
Contents
- 1 Document License
- 2 Read This First
- 3 U-Boot
- 4 Linux Kernel
- 5 Boot-time measurement
- 6 PSP Linux Drivers
- 6.1 Boot modes supported
- 6.2 Device driver list
- 6.3 Driver DMA usage
- 6.4 SATA Driver
- 6.5 ALSA SoC Audio Driver
- 6.6 Ethernet Driver
- 6.7 NAND Driver
- 6.8 PCIe RC Driver
- 6.9 PCIe EP Boot Driver
- 6.10 NOR Driver
- 6.11 USB Driver
- 6.11.1 MUSB OTG controller
- 6.11.2 USB Mass Storage Class Host Driver
- 6.11.2.1 Driver Features
- 6.11.2.2 Constraint
- 6.11.2.3 Supported System Calls
- 6.11.2.4 Supported IOCTLS
- 6.11.2.5 Performance Benchmarks (DMA mode)
- 6.11.2.6 USB - ext2 File System Performance
- 6.11.2.7 USB - vfat File System Performance
- 6.11.2.8 USB - ext2 File System Performance on simulataneous read/write on two HDD
- 6.11.2.9 USB - VFAT, File System Performance on simulataneous read/write on two HDD
- 6.11.3 USB Mass Storage Class Slave Driver
- 6.11.4 USB CDC/RNDIS Slave Driver
- 6.12 MMC/SD Driver
- 6.13 Video Display 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]
All performance numbers provided in this document are gathered using DM8168 EVM with DDR3 configured at 400 MHz clock (effective 800MHz data rate).
About This Manual[edit]
This document provides an overview and performance data for each of the device drivers which are part of the Linux PSP package supporting DM8168/C6A8168/AM389x EVM (Base board with daughter card required for second Ethernet port and NOR). Note that only a subset of the drivers may have actually been fully tested and verified in the package you are using. Please refer to the release notes provided with the package for information on which of the drivers have actually been verified. In the rest of the document, we will refer this setup as DM8168 EVM.
If You Need Assistance[edit]
For further information or to report any problems, contact http://community.ti.com/ or http://support.ti.com/
U-Boot[edit]
Hardware Related Info[edit]
U-Boot currently does the bare minimum configuration needed to boot the kernel. The following table lists various resources enabled by the ROM code + U-Boot running on the host ARM (that is, Cortex A8).
Resource | Specifics | Notes |
---|---|---|
OCMC RAM | OCMC0 and OCMC1 | U-Boot initially runs out of OCMC1 and then relocates to DDR. OCMC0 is used by ROM code and by U-Boot in case of NOR boot. |
Control module | NA | Needs to be enabled prior to enabling other modules. |
Main PLL clocks | Clocks 1-5 | Clock1 ~= 800MHz, Clock2 ~= 1GHz, Clock3 ~= 600MHz, Clock4 ~= 500 MHz, Clock5 ~= 125MHz |
DDR PLL clocks | Clocks 1-3 | Clock1 ~= 400MHz currently, Clock2 ~= 48MHz, Clock3 ~= 400MHz |
UART | UARTs 0-2 | On Base EVMs, UART2 is used as console by U-Boot and later by the kernel |
Timers | Timer1 | Used by U-Boot for timekeeping purposes |
RAM | Both the EMIFs | Configuration done differs based on the type of memory on the EVM (DDR2 or DDR3) |
I2C | I2C0 | |
eFuse | Customer_eFuse | Module enabled. |
GPIO | GPIO0 | Module enabled. |
SPI | Module enabled. | |
CPGMAC | CPGMAC0 and CPGMAC1 | Base EVM has 1 Ethernet port associated to CPGMAC0. Please refer module specific documentation and respective release details for CPGMAC1 usage. |
NAND | Whole | Base EVM has 256MiB NAND. Mutually exclusive with NOR. |
NOR | Whole | Not available on Base EVM. Mutually exclusive with NAND. |
MMC/SD | MMC/SD | Enabled as a part of the boot process |
Linux Kernel[edit]
Module/Subsystem Usage[edit]
Following table covers various onchip modules/subsystems enabled and used in U-Boot and Kernel. It also lists module status on reset. Note that there may be a few modules which are enabled but not used currently but will be used in future.
The table uses following conventions for enabled status:
- BOOTCFG - Module is enabled depending upon boot mode
- YES - Module is enabled always and is critical for functioning (should never be turned off).
- CONFIG - Module will be enabled depending upon build time or run time configuration (e.g., SATA module is enabled if SATA is enabled in kernel build configuration, UART1 is enabled if 'ttyO1' is passed as console through kernel command line). Note that there may be many modules included in default build configuration and thus they will be enabled by default (e.g., CPGMAC0), though these can be disabled by disabling respective configuration in build.
- KEEP - Module already enabled and kept as is. Note that, except for Control Module, eFuse and EMIFs, in most of the other cases, this means that the corresponding module is not currently used and was enabled by the component which executed earlier. This is, module enabled status 'KEEP' in Kernel means it was enabled by U-Boot (or boot time) but kernel doesn't touch it.
- NO - Module is not used and is not enabled
Module/Subsystem | Enabled on Reset? | Enabled in U-Boot? | Enabled in Linux? |
---|---|---|---|
Control Module | YES | KEEP | KEEP |
eFuse | YES | YES | KEEP |
OCMC0 & 1 | BOOTCFG | YES | KEEP |
GPIO0 | NO | YES | YES |
GPIO1 | NO | NO | YES |
EMIF0 & 1 | NO | YES | KEEP |
UART0 | BOOTCFG | YES | CONFIG |
UART1 | NO | YES | CONFIG |
UART2 | NO | YES | CONFIG |
Timer1 | NO | YES | YES |
Timer2 | NO | NO | YES |
Timer3 | NO | NO | NO |
Timer4 | NO | NO | CONFIG |
Timer5 to 7 | NO | NO | NO |
GPMC | BOOTCFG | YES | CONFIG |
EDMA TPCC | NO | NO | YES |
EDMA TPTC | NO | NO | YES |
SPI | BOOTCFG | YES | KEEP |
I2C0 | NO | NO | CONFIG |
I2C1 | NO | NO | NO |
CPGMAC0 | BOOTCFG | YES | CONFIG |
CPGMAC1 | NO | NO | NO |
USB | NO | NO | CONFIG |
SATA | NO | NO | CONFIG |
PCIe | BOOTCFG | NO | CONFIG |
SGX | NO | NO | NO |
IVAHD | NO | NO | NO |
Ducati | NO | NO | CONFIG |
MMU | NO | NO | NO |
MMU DATA | NO | NO | NO |
DSP | NO | NO | CONFIG |
Spinbox | NO | NO | CONFIG |
Mailbox | NO | NO | CONFIG |
HDMI | NO | NO | NO |
McASP0 | NO | NO | CONFIG |
McASP1 | NO | NO | NO |
McASP2 | NO | NO | NO |
McBSP | NO | NO | NO |
MMC | BOOTCFG | YES | CONFIG |
Hardware Resources Reserved for Kernel[edit]
Following table lists various resources owned and used exclusively by kernel (that is, Cortex A8). Care must be taken not to share these across other processors. Of course, there can be a kernel module/driver which monitors the sharing - this is particularly applicable for shared buffers in RAM, GPIO, Timers, etc. - but the control should still remain with kernel and only kernel APIs should be called to reserve and use these resources. For modules having multiple instances, numbering is assumed to be from '0'.
Resource | Specifics | Notes |
---|---|---|
UART |
UART0, UART2 |
This is configurable through kernel command line ('bootargs') and is board dependent. On Base EVMs, UART2 is used as console. With daughter card, UART0 can be used for console. |
Timers |
Timer1, Timer2, Timer6 |
Timer1 - System Timer, Timer2 - Free Running, Timer6 - Graphics (SGX) |
RAM | 0x80000000 - 0x88000000 | The RAM size allocated for kernel is configurable through boot argument 'mem=' passed to kernel during boot. The start address (0x80000000) is fixed. Also note that it is possible to map RAM region beyond this range into kernel virtual memory space using kernel drivers/modules. Multiple 'mem=' arguments can be passed to have the system RAM spanned across holes in between. Please refer TI816x User Guide for details |
I2C | I2C0 | Though I2C1 control from kernel is not supported, it is possible to add this support by editing arch/arm/plat-omap/i2c.c and arch/arm/mach-omap2/board-ti8168evm.c for 'Bus 2' |
GPIO | GPIO0 & GPIO1 | Total 64 GPIO lines |
CPGMAC | CPGMAC0, CPGMAC1 | Base EVM has 1 Ethernet port associated to CPGMAC0. Please refer module specific documentation and respective release details for CPGMAC1 usage. |
NAND | Whole | Base EVM has 256MiB NAND. Mutually exclusive with NOR. |
NOR | Whole | Not available on Base EVM. Available in daughter card (64MiB). Mutually exclusive with NAND. |
EDMA |
4 to 47, 52 to 54 |
Peripheral Only: 4 to 31, 52 to 54 Mem to Mem: 32 to 47 |
OCMC0 |
0x40300000 - 0x4033FFFF |
OCMC 0 will be used by ROM Code and U-boot. Once Linux kernel boots, OCMC0 is free and kernel can use it. If OCMC0 should not be used to load u-boot if loaded using CCS. |
OCMC1 |
0x40400000 - 0x4043FFFF |
OCMC 1 will be used by ROM Code and U-boot. Once Linux kernel boots, OCMC0 is free and kernel can use it. |
PCIe Memory |
0x20000000 - 0x2FFFFFFF |
PCIe Window for outbound access (RC mode) |
PCIe I/O |
0x40000000 - 0x402FFFFF |
PCIe I/O window (RC mode) |
Kernel Virtual Memory Layout
[edit]
The default TI816X kernel configuration, with "mem=128M" passed as boot argument, uses following Virtual Memory laout:
Memory: 128MB = 128MB total Memory: 124856k/124856k available, 6216k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) DMA : 0xffc00000 - 0xffe00000 ( 2 MB) vmalloc : 0xc8800000 - 0xf8000000 ( 760 MB) lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) modules : 0xbf000000 - 0xc0000000 ( 16 MB) .init : 0xc0008000 - 0xc0035000 ( 180 kB) .text : 0xc0035000 - 0xc0478000 (4364 kB) .data : 0xc0478000 - 0xc04b9260 ( 261 kB)
Please note following points:
- Default kernel build is set up with 3G/1G split for User/Kernel space.
- The vmalloc and lowmem are dependent on RAM available to kernel (as specified by 'mem' boot argument). As you provide more memory for kernel to map, the vmalloc space will be lowered.
- RAM size more that 768M will be truncated to maintain minimum vmalloc at 120MB
- It should be possible to allow larger memory into kernel space by changing User/Kernel split to 2/2 or 1/3. Please note that these are NOT TESTED and may lead to unpredictable behavior.
- Alternatively, "High Memory" support in kernel (CONFIG_HIGHMEM) can be enabled to accommodate larger physical memory. Note again that, this is an EXPERIMENTAL feature and may lead to stability and performance issues.
Boot-time measurement[edit]
For boot-time measurement the following setup was used
- 2-Stage SD boot (binaries picked from the release package)
- Kernel image of size 2.3MB (image picked from the release package)
- Sandisk Extreme 3 Class-6 4GB SD card
- Filesystem on the SD card - 14MB
The kernel image used had the following features enabled
- NAND driver
- Block devices
- SCSI devices
- PCI/PCIe Subsystem (Root Complex mode)
- SATA drivers
- Network device support
- I2C support
- SPI support
- GPIO support
- WDT support
- Sound card support
- HID devices
- USB support
- MMC/SD/SDIO support
- Loadable module support
- Filesystem support for ext2, ext3, JFFS2 and NFS
The following was the kernel command line passed
console=ttyO2,115200n8 root=/dev/mmcblk0p2 mem=128M init=/bin/sh rootwait
The total boot-time (ignoring the boot delays in the 2 stages of U-Boot) is ~10.25 secs
The break-up of the boot-time is as given below:
- Booting the compressed kernel (calculated from the time U-Boot displays "## Booting..." to the prompt) :4.32 secs
- Reading the 2.3MB uImage from SD card : 5.03 secs
- Misc time in U-Boot : 0.9 secs
PSP Linux Drivers[edit]
This section provides brief overview of the device drivers supported in the Linux PSP release based on Linux OMAP git tree.
Note: The constraints may vary across product releases. Please refer to the Release Notes accompanying the release for an updated list of constraints.
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.
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.
Boot Mode | DM8168 EVM with daughter card |
---|---|
NAND Flash | Yes |
NOR Flash | Yes |
SPI EEPROM | Yes |
EMAC Boot | Yes(MACID blown processors required to verify this mode) |
PCIe Boot | Yes (Currently supported only with booting from DM8168 RC) |
Device driver list[edit]
Peripheral | Description | Linux driver type |
---|---|---|
Audio (McASP) | Audio record and playback | ALSA SoC |
Ethernet | Transmit/receive network data. Supports Auto negotiation with 10/100 Mbps link speed | Netdev |
I2C | Inter-IC Communication | Character |
MUSB Host | Supports MSC and HID classes | USB HCD |
NAND Flash | Flash storage system | MTD Character and Block |
UART | Serial Communication Interface | Character |
Video Display | Video Display Driver | Frame-buffer display driver |
SATA | Storage | Block Device |
NOR | Flash Storage system | MTD character and Block |
PCI Express | PCIe Root Complex Driver | PCI/PCIe Bus Driver |
PCI Express | PCIe EP Boot Driver | Character |
MMC/SD | Interface to MultiMedia Secure Digital cards | Block Device |
Watchdog | Interface to h/w Watchdog | /dev/watchdog |
Driver DMA usage[edit]
Driver | DMA usage |
---|---|
Audio (McASP) | EDMA |
Ethernet | Internal DMA |
MUSB Host | Internal DMA |
NAND Flash | None |
NOR Flash | None |
UART | None |
I2C | None |
SATA | Internal DMA |
SPI | None |
MMC/SD | EDMA |
PCIe RC | None (Individual EPs may use Inbound DMA) |
PCIe EP | None |
SATA Driver[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. There are two instances of SATA controller available in DM81
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.
The driver supports the following features:
- CD/DVD support
- HDD
- Port Multiplier support
[Linux Libata feature table] for more details.
Features Not Supported[edit]
- Power Management : Though supported, validation is still pending.
Constraints[edit]
Supported System Calls[edit]
All Linux ATA/SCSI system calls related to SATA
Supported IOCTLs[edit]
Supports IOCTLS available in Linux SCSI and ATA frameworks and which are applicable for SATA. Refer kernel source or documentation for details.
Performance and Benchmarks[edit]
Please read the [SATA Test Setup] section before proceeding.
Test Parameters[edit]
Silicon Revision | 1.0 |
EVM |
DM816x EVM Revision B |
DDR |
DDR3 DIMM, 800 Mhz data rate (400Mhz clock) |
LFTB version | 02.00.00.04 |
Number of SATA Ports |
2 |
Port 0 - HDD |
Seagate Barracuda 7200.11 RPM 500GB (~120MBytes/sec sustained data rate) |
Port 1 - HDD |
Western Digital 7200 RPM 500GB (~120MBytes/sec sustained data rate) |
Performance Data[edit]
Below tables were filled by running the performance test suite mentioned in [SATA Test Setup] section.
SATA - ext2 File System Performance[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 89.84 | 31.90 |
256 | 100 | 75.16 | 25.71 |
512 | 100 | 84.41 | 27.42 |
1024 | 100 | 77.22 | 25.74 |
5120 | 100 | 74.58 | 24.11 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 114.12 | 46.15 |
256 | 100 | 104.04 | 41.00 |
512 | 100 | 114.61 | 40.66 |
1024 | 100 | 107.29 | 42.86 |
5120 | 100 | 114.08 | 39.13 |
SATA - vfat File System Performance[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 64.74 | 45.68 |
256 | 100 | 67.61 | 49.68 |
512 | 100 | 69.47 | 48.34 |
1024 | 100 | 63.84 | 43.90 |
5120 | 100 | 66.17 | 47.80 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 110.31 | 42.11 |
256 | 100 | 110.26 | 45.26 |
512 | 100 | 111.22 | 43.62 |
1024 | 100 | 109.29 | 45.26 |
5120 | 100 | 110.53 | 53.68 |
SATA Simultaneous - ext2 File System Performance[edit]
NOTE: Simultaneous SATA performance numbers are taken by running LFTB on two ports simultaneaoulsy and the average is captured in the table below.
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 78.24 | 58.47 |
1024 | 100 | 76.00 | 56.31 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 96.31 | 94.23 |
1024 | 100 | 97.25 | 94.45 |
SATA Simultaneous - vfat File System Performance[edit]
NOTE: Simultaneous SATA performance numbers are taken by running LFTB on two ports simultaneaoulsy and the average is captured in the table below.
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 52.05 | 87.50 |
1024 | 100 | 53.50 | 88.37 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 89.50 | 93.50 |
1024 | 100 | 90.25 | 94.34 |
ALSA SoC Audio Driver[edit]
This section an overview of the ALSA SoC audio driver features along with the throughput and CPU load numbers. For the architecture, installation, basic usage and sample applications (if any) please refer to the driver user guide.
Driver Features[edit]
The driver supports the following features:
- Supports AIC3106 audio codec (on DM8168 base EVM)
- 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.
Supported IOCTLs[edit]
NA
Performance and Benchmarks[edit]
NA
Ethernet Driver[edit]
This section provides an overview of the Ethernet driver features along with throughput and CPU load numbers. For the architecture, installation, basic usage and sample applications (if any) please refer to the driver user guide.
Driver Features[edit]
The driver supports the following features:
- 10/100/1000 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
Features Not Supported[edit]
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) |
Bandwidth - TI814x (in Mbits/sec) |
TransferSize - TI814x (in GBytes) |
CPU Load (in %) |
---|---|---|---|
16 | 533 | 3.72 | 85 |
32 | 541 | 3.78 | 87 |
64 | 587 | 4.10 | 95 |
128 | 577 | 4.03 | 95 |
256 | 579 | 4.05 | 93 |
The performance numbers were captured using the iperf tool. Usage details are mentioned below:
- iperf version 2.0.4
- On the DUT iperf is invoked in server mode : "-s -w 256k"
- On PC Host invoke iperf in the client mode : "-c <server ip> -w <window size> -t60"
- The transfers are measured over a duration of 60Secs
- Cross cable is used to measure performance.
- Speed is set to 1000Mbps
- Root filesystem mounted from NAND (JFFS2).
- Tested on DDR3EVM running at 400Mhz
TCP Window Size (in KBytes) |
Bandwidth - TI814x (in Mbits/sec) |
TransferSize - TI814x (in GBytes) |
CPU Load (in %) |
---|---|---|---|
16 | 531 | 3.71 | 100 |
32 | 529 | 3.69 | 100 |
64 | 527 | 3.68 | 100 |
128 | 535 | 3.74 | 100 |
256 | 529 | 3.69 | 100 |
The performance numbers were captured using the iperf tool. Usage details are mentioned below:
- iperf version 2.0.4
- On the DUT iperf is invoked in client mode : "-c <server ip> -w <window size> -t60"
- On PC Host invoke iperf in the server mode : "-s -w 256k"
- The transfers are measured over a duration of 60Secs
- Cross cable is used to measure performance.
- Speed is set to 1000Mbps
- Root filesystem mounted from NAND (JFFS2).
- Tested on DDR3EVM running at 400Mhz
NAND Driver[edit]
This section provides an overview of the NAND flash driver features along with throughput and CPU load numbers. For the architecture, installation, basic usage and sample applications (if any) please refer to the driver user guide.
Driver Features[edit]
The driver supports the following features:
- JFFS2 file system
- Supports Read/Write, Erase operations
- Bad Block Management
- Polled mode of transfer
- SLC NAND
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]
NAND Raw Write Performance[edit]
- 1.7 MBytes/sec
- Command: "time nandwrite -q -p /dev/mtd8 /dev/shm/40MB". Write 40MB file to reserved partition (number 8) and measure the time using "time" command. This command assumes that the file /dev/shm/40MB is already available.
NAND Raw Read Performance
[edit]
- 719.5 KBytes/sec
- Command" "time nanddump -f /dev/shm/40MB /dev/mtd8 ". Read 40MB file from the reserved partition (number 8) and measure the time using "time" command.
NOTE: JFFS2 is not used for performance tests as the actual data written to the NAND will be compressed by the JFFS2 filesystem layer.
PCIe RC Driver[edit]
This section provides an overview of the PCIe Root Complex (RC) driver features along with throughput and CPU load numbers when using PCIe Gigabit Ethernet card as Endpoint (EP). For the architecture, installation, basic usage, please refer to the PCI Express Root Complex Driver User Guide.
Driver Features[edit]
The driver supports the following features:
- Fits into Linux PCI Bus framework to provide PCI compatible software enumeration support
- In addition, provides interface to Endpoint Drivers to access the respective devices detected downstream.
- The same interface can be used by the PCI Express Port Bus Driver framework in Linux to perform AER, ASP etc handling
- Interrupt handling facility for EP drivers as Legacy Interrupts (INTx).
- Seamless handling of PCIe errors
Features Not Supported[edit]
- PCIe I/O access
- Port Bus Driver integration
- MSI support
- 64-bit PCIe addressing.
Constraints[edit]
NA
Supported System Calls[edit]
None. Access to individual PCIe EPs may be provided by respective drivers.
Performance and Benchmarks[edit]
TCP Window Size (in KBytes) |
Bandwidth - TI816x (in Mbits/sec) |
TransferSize - TI816x (in GBytes) |
CPU Load (in %) |
---|---|---|---|
16 | 693 | 4.84 | 39 |
32 | 827 | 5.77 | 57 |
64 | 842 | 5.88 | 62 |
128 | 845 | 5.91 | 61 |
208 | 847 | 5.92 | 62 |
The performance numbers were captured using the iperf tool. Usage details are mentioned below:
- On the DUT iperf is invoked in the client mode (TX) : "-c <server ip> -w <window size> -t60"
- On PC Host iperf was invoked in server mode : "-s" - window size default of 212KB
- The transfers are measured over a duration of 60Secs
- Cross cable is used to measure performance.
- Speed is set to 1000Mbps
- On-chip Ethernet ports (Port0 and Port1) disabled (not brought up).
- Filesystem was mounted in NAND (JFFS2).
Observations[edit]
- PCIe Gigabit Ethernet Card used supported GEN1 speeds with x1 link.
- The lower CPU usage may be attributed to the PCIe Ethernet Card supporting features such as hardware offloading and checksum calculations.
PCIe EP Boot Driver[edit]
This section provides an overview of the PCIe Endpoint (EP) Boot driver features. For the architecture, installation, basic usage, please refer to the PCI Express Endpoint Boot Driver User Guide.
Driver Features[edit]
The driver supports the following features:
- Provides character device interface to boot application
- Provide mmap support to enable the boot application to copy image files (U-Boot, kernel etc) to EP memory
- Can be built as loadable module or into kernel
Features Not Supported[edit]
- Operate more than one TI816X EP. If more than one TI816X EPs are connected in the system, this driver operates only on the first detected.
- No interrupt support
- Not validated on any other RC than TI816X. E.g., this driver may require some porting to build with x86 kernel on Linux PC.
Constraints[edit]
NA
Supported System Calls[edit]
Character device interface through open(), ioctl(), close() and mmap() system calls.
NOR Driver[edit]
This section provides an overview of the NOR flash driver features along with throughput and CPU load numbers. For the architecture, installation, basic usage and sample applications (if any) please refer to the driver user guide.
Driver Features[edit]
The driver supports the following features:
- JFFS2 file system
- Supports Read/Write, Erase operations
- Support all CFI compatible NOR flash devices
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]
NOR Raw Write Performance[edit]
- 174.1 KBytes/sec
- Command used: "time flashcp /dev/shm/40MB /dev/mtd3". This command writes 40 MBytes of data to partition 3 and measure the time using "time" command. This command assumes that /dev/shm/40MB file is already available.
NOR Raw Read Performance
[edit]
- 2.2 MBytes/sec
- Comnand used: "time mtd_debug read /dev/mtd3 0 41943040 /dev/shm/40MB". This command reads 40 MBytes of data from partition 3 and measure the time using "time" command.
NOTE: JFFS2 is not used for performance tests as the actual data written to the NOR will be compressed by the JFFS2 filesystem layer.
USB Driver[edit]
This section gives an overview of the USB (MUSB) driver features supported/not supported, constraints and performance numbers.
MUSB OTG controller[edit]
The MUSB driver is implemented on top of Mentor controller IP which supports all the speeds (High, Full and Low). TI816X USBOTG subsytem 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)
- USB Video Class (UVC)
- USB Audio Class (UAC)
Features Not Supported[edit]
- multipoint support. (Due to Hardware Limitation only one device can be connected per port and USB HUB not supported)
- USB Networking - CDC-HOST
- One port as Host mode and other second port as Device mode (multi instance musb with dual mode support)
Gadget mode
- Mass Storage Class (MSC)
- USB Networking - RNDIS
USB Mass Storage Class Host Driver[edit]
Driver Features[edit]
The driver supports the following feature
1.DMA mode
2.PIO mode
None
Constraint[edit]
Supported System Calls[edit]
open(), close(), read(), write(), ioctl()
Supported IOCTLS[edit]
None
Performance Benchmarks (DMA mode)[edit]
USB - ext2 File System Performance[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 22.1 | 9.68 |
256 | 100 | 23.06 | 10.99 |
512 | 100 | 23.02 | 9.67 |
1024 | 100 | 21.98 | 9.85 |
5120 | 100 | 23.07 | 9.03 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 25.58 | 15.65 |
256 | 100 | 25.39 | 12.78 |
512 | 100 | 25.28 | 8.23 |
1024 | 100 | 26.1 | 14.18 |
5120 | 100 | 25.49 | 13.56 |
USB - vfat File System Performance[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 20.16 | 19.62 |
256 | 100 | 20.55 | 21.36 |
512 | 100 | 21.21 | 22.0 |
1024 | 100 | 21.13 | 23.12 |
5120 | 100 | 20.95 | 20.95 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 23.33 | 16.33 |
256 | 100 | 22.58 | 12.87 |
512 | 100 | 23.60 | 14.15 |
1024 | 100 | 23.99 | 16.92 |
5120 | 100 | 23.16 | 13.82 |
The performance numbers are captured using the following.
- HDD - Western Digital 500GB drive
USB - ext2 File System Performance on simulataneous read/write on two HDD[edit]
Setup : WesternDigital HDD (500GB) connected to usb0 port and Toshiba HDD connected to usb1 port. File read/write performance data on usb0 port(WDD HDD) has been captured while simulatenous file write is in progress on usb1 port(Toshiba HDD). LFTB Version 2.00.00.04 used for performance.
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 21.56 | 47.01 |
256 | 100 | 21.45 | 41.80 |
512 | 100 | 20.65 | 41.54 |
1024 | 100 | 21.59 | 40.82 |
5120 | 100 | 21.43 | 37.40 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 21.04 | 45.47 |
256 | 100 | 21.41 | 42.24 |
512 | 100 | 21.05 | 48.69 |
1024 | 100 | 21.62 | 51.76 |
5120 | 100 | 21.43 | 49.69 |
USB - VFAT, File System Performance on simulataneous read/write on two HDD[edit]
Setup : WesternDigital HDD (500GB) connected to usb0 port and Toshiba HDD connected to usb1 port. File read/write performance data on usb0 port(WDD HDD) has been captured while simulatenous file write is in progress on usb1 port(Toshiba HDD). LFTB Version 2.00.00.04 used for performance.
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 19.07 | 55.27 |
256 | 100 | 19.08 | 51.82 |
512 | 100 | 18.95 | 51.80 |
1024 | 100 | 19.10 | 51.64 |
5120 | 100 | 18.19 | 54.09 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 19.69 | 49.16 |
256 | 100 | 19.55 | 46.73 |
512 | 100 | 19.60 | 48.88 |
1024 | 100 | 19.43 | 48.15 |
5120 | 100 | 19.74 | 47.37 |
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 SATA HDD media as the storage medium
Features Not Supported[edit]
None
Constraint[edit]
None
Supported System Calls[edit]
NA
Supported IOCTLS[edit]
NA
Performance Benchmarks[edit]
The performance numbers are captured in DMA Mode using SATA HDD as file storage gadget media exposing as removable media to windows over USB. #SATA HDD - Western Digital 500GB drive
Bytes Transferred (MB)'SATA HDD'as storage device | Number of files transferred | Total Bytes transferred (MB) | Transfer Rate (MB/sec) |
---|---|---|---|
500 | 1 | 500 | 1.47 |
Bytes Transferred (MB)'SATA HDD'as storage device | Number of files transferred | Total Bytes transferred (MB) | Transfer Rate (MB/sec) |
---|---|---|---|
500 | 1 | 500 | 20.8 |
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.
USB RNDIS-DMA Performance[edit]
Setup : EVM as client and Linux Host PC as server command at EVM: iperf -c <window/linux host ip_adr> -w <8|16|32|64|128>K -t 60 -d command at Host: iperf -s
TCP Window Size(in KBytes) | Interval (in Seconds) | Bandwidth (Mbits/Sec) |
---|---|---|
8 | 60 | 129 |
16 | 60 | 103 |
32 | 60 | 104 |
64 | 60 | 108 |
128 | 60 | 111 |
USB(HIGHSPEED)CDC-DMA Performance[edit]
TCP Window Size(in KBytes) | Interval (in Seconds) | Bandwidth (Mbits/Sec) |
---|---|---|
8 | 60 | 100 |
16 | 60 | 127 |
32 | 60 | 127 |
64 | 60 | 127 |
128 | 60 | 125 |
Performance Benchmarks[edit]
MMC/SD Driver[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
Features Not Supported[edit]
- 1-bit, 8-bit modes of operation.
- 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.
EXT2 file system[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 5.477356 | 4.23 |
256 | 100 | 5.798616 | 3.54 |
512 | 100 | 5.549341 | 3.92 |
1024 | 100 | 6.046160 | 3.92 |
5120 | 100 | 5.482997 | 3.97 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 10.316655 | 9.05 |
256 | 100 | 10.316725 | 8.07 |
512 | 100 | 10.256479 | 7.73 |
1024 | 100 | 10.317569 | 8.16 |
5120 | 100 | 10.320101 | 7.78 |
The performance numbers were captured using the following:
- SD Card (Sandisk Extreme III,SDHC,Class 6, 4GB)
- CPU Power Management: Disabled
- File System: ext2
- Partition was mounted with async option
VFAT file system[edit]
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 7.500867 | 8.59 |
256 | 100 | 7.924763 | 8.08 |
512 | 100 | 7.838121 | 8.61 |
1024 | 100 | 8.002984 | 9.77 |
5120 | 100 | 7.755114 | 7.25 |
Buffer Size (in KBytes) | Total Bytes Transferred (in MBytes) | Transfer Rate (in MBytes/sec) | CPU Load (in %) |
---|---|---|---|
100 | 100 | 10.176073 | 9.60 |
256 | 100 | 10.188584 | 9.62 |
512 | 100 | 10.201181 | 8.37 |
1024 | 100 | 10.192108 | 7.50 |
5120 | 100 | 10.192483 | 8.65 |
The performance numbers were captured using the following:
- SD Card (Sandisk Extreme III,SDHC,Class 6, 4GB)
- CPU Power Management: Disabled
- File System: vfat
- Partition was mounted with async option
Observations[edit]
- The performance numbers are lower than expected and will be analyzed/rectified in subsequent release.
Video Display Driver[edit]
This section describes the Video Display driver architecture, driver features.
Description[edit]
The following digram showes the architecture of the Video display Driver
Driver Featurs[edit]
- Support 1080p-60/1080p-50/1080P-30/1080I-60/1080I-50/720P-60/720P-50 mode display through HDMI VENC
- Support 1080p-60/1080p-50/1080P-30/1080I-60/1080I-50/720P-60/720P-50 mode display through HDCOMP VENC
- Support Tied VENCs (single graphics plance splitted into multiples VENCs)
- Support mux multiple graphics planes into single VENC
- Support Video PLL configuration
- Support Venc Clock source configuration
- Support Venc output configuraiton(digital data format, sync format, analog output format)
- Support reshuffling display order
- Support customized timing configuraiton for DVO1/DVO2/HDCOMP output
- Support in-chip HDMI together with HDMI Kernel Driver.
Features Not Supports[edit]
- EVM SVIDEO output is not supported
- RF output is not supported
- EVM VGA output is not supported
Constrains[edit]
- All tied VENCs should have same timing
Fbdev Driver[edit]
Frame-buffer Display Driver.
Driver Features[edit]
- Support 3 independent graphics planes
- Support RGB888/ARGB8888/RGBA8888/RGB565/ARGB1551/RGBA5551/RGBA4444/ARGB4444/ARGB6666/RGBA6666
- Support 0.25x-4x scaling
- Support boundbox blending
- Support global blending
- Support Pixel blending
- Support Pallette blending
- Support RGB888 color key mapping
- Support anti-flickering filter.
- Support wait for VSYNC and paning
- Support mmapped (driver allocated) buffers
Features Not Supports[edit]
- Rotation is not supported.
- Mirroring is not supported.
- Mode Timing is not supported
Constrains[edit]
None
Supported System Calls[edit]
open(), close(), mmap(), munmap() and ioctl()
Performance Benchmarks[edit]
Please check HDVPSS Feature Performance Guide here