AM35x-OMAP35x-PSP 04.02.00.07 Feature Performance Guide

From Texas Instruments Wiki
Jump to: navigation, search

Content is no longer maintained and is being kept for reference only!

TIBanner.png


Contents

Document License

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

Content is no longer maintained and is being kept for reference only!

About This Manual

This document provides an overview and performance data for each of the device drivers which are part of the Linux PSP package supporting AM3517 and AM/DM37x SoCs. Note that only a subset of these platforms may have actually been tested and verified in the package you are using. Please refer to the release notes provided with the package for information on which platforms have actually been verified.

If You Need Assistance

For further information or to report any problems, contact http://community.ti.com/ or http://support.ti.com/

Trademarks

OMAPTM is trademark of Texas Instruments Incorporated. All other trademarks are the property of the respective owner.

Boot-time measurement

For boot-time measurement the following setup was used

  • 2-Stage SD boot (binaries picked from the release package)
  • Transcend Class-6 4GB SD card
  • Filesystem on the SD card - 82.9M

The kernel image used had the following features enabled

  • Video Display - Fbdev and V4L2
  • NAND driver
  • Block devices
  • 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

AM37xEVM

AM37xEVM specific setup

  • Kernel image of size 2.93MB (image picked from the release package)

The following was the kernel command line passed

 console=ttyO0,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 ~13.2 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) : ~7.2 secs
  • Reading the uImage from SD card : ~4.4 secs
  • Time to U-Boot : ~2.1 secs

AM3517EVM

AM3517EVM specific setup -

  • Kernel image of size 2.89MB (image picked from the release package)
  • With Application board on AM3517EVM

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 ~19.6 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) : ~8.6 secs
  • Reading the uImage from SD card : ~4.8 secs
  • Time to U-Boot : ~5.6 secs

PSP Linux Drivers

This section provides brief overview of the device drivers supported in the Linux PSP release based on Linux OMAP git tree at http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git

Note: The constraints may vary across product releases. Please refer to the Release Notes accompanying the release for an updated list of constraints.

OMAP Linux PSP details

  1. Supports OMAP35x(ES3.1), AM/DM37x(>ES1.0) Socs (on OMAP3EVM Rev.G, BEAGLE and BEAGLEXM) and AM3517 Soc on AM3517EVM. Only sanity testing has been carried out on OMAP35x EVM, Beagle, BeagleXM
  2. Built with Linux kernel version 2.6.37/PM.
  3. Compiled with code sourcery tool chain version arm-2009-q1-203.
  4. Supports U-Boot version 2010.06
  5. Supports boot from NOR (on AM3517), MMC and NAND flash.
  6. Ships with pre-built u-boot, uImage binaries, sample applications and release documentation (Release Notes, User Guide and Performance Guide).

Boot modes supported

Green colored box in the table below means that the particular boot mode is supported on the device.

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.


Performance Measurement setup

Please refer to the wiki page <TBD> for detailed information on setup used for every module/driver.


OMAP PSP Supported Boot Modes
Boot Mode OMAP35x AM/DM37x AM3517
NAND Flash Yes Yes Yes
NOR Flash No No Yes
MMC/SD Yes Yes Yes


Frequency Used for Measurements

For purpose of throughput measurement published in this document the following frequency table is assumed.

Important
AM/DM37x can be clocked at 1Ghz (default is 600MHz) using CPUFREQ. Measurements in this document have been obtained with ARM running at below mentioned frequencies -


Frequency used for measurements
AM/DM37x AM3517
ARM Frequency(Mhz) 1000 500
Core Frequency(Mhz) 200 166


NOTE: Since only sanity testing has been done on OMAP35xEVM, Beagle and BeagleXM; performance is not measurement on these platforms.


Test Setup

Please refer to the wiki page http://processors.wiki.ti.com/index.php/Sitara_PSP_Test_Setup for detailed information on Test Setup used for performance measurements.

Device driver list

Device Driver List
Peripheral Description Linux driver type
Video Display Video Display driver supporting LCD, DVI and TV out V4L2 and Frame-buffer display driver
Ethernet Transmit/receive network data. Supports Auto negotiation with 10/100 Mbps link speed Netdev
Audio (McBSP) Audio record and playback ALSA SoC
NAND Flash Flash storage system MTD Character and Block
AM3517: NOR Flash Flash storage system MTD Character and Block
MMC/SD Interface to MultiMedia Secure Digital cards Block
Touch Screen Enables the LCD to be used for touchscreen input Input(event) driver
UART Serial Communication Interface Character
I2C Inter-IC Communication Character
SPI Serial Peripheral Interface Character
AM3517: CAN (HECC) Transmit/receive data over CAN (HECC) peripheral using socketCAN interface Netdev
AM3517: RTC (S35390A) Real Time Clock over I2C1 RTC Framework
AM3517: Capture Capture driver supporting BT656 mode V4L2 Sub-Device framework based
AM/DM37x: Video Capture Capture driver supporting YUV and BT656 mode New Media-Controller framework based
AM/DM37x: Keypad Keypad driver for OMAP3EVM keypad Input(event) driver
AM3517: Keypad Keypad driver for TCA6416 IO expander based keypad Input(event) driver
AM/DM37x: Power Management CPUIdle and dynamic tick CPUIdle, dyntick
MUSB Host Supports MSC, HID and USB Audio/Video classes USB HCD
MUSB Gadget Supports File-storage and CDC/RNDIS USB Gadget
MUSB OTG Supports HNP/SRP USB HCD
EHCI Host MSC, HID(via a HS hub) and USB Audio/Video USB HCD

Drivers not supported

  1. AM-DM37x ISP Resizer, Previewer, Statistics collection modules


Driver DMA usage

AM/DM37x and AM3517 peripheral driver DMA usage
Driver DMA usage
Audio (McBSP) sDMA
Ethernet Internal DMA(AM3517 only)
MUSB OTG Internal DMA
USB EHCI Internal DMA
NAND Flash None
NOR Flash None
DSS (V4L2/Fbdev Display) Internal DMA
AM/DM37x: ISP-Resizer Internal DMA
AM3517: VPFE Capture Internal DMA
AM/DM37x: ISP-Camera Internal DMA
SPI sDMA
MMC/SD sDMA
UART None
I2C None
AM3517: CAN (HECC) None

ALSA SoC Audio Driver

This section provides details on ALSA SoC audio driver along with throughput and CPU load numbers.

Introduction

AM/DM37x, AM3517 audio driver complies to the ALSA SoC framework.

ASoC framework provides better audio support for embedded SoC processors and portable audio codecs. It 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:

AM/DM37x

ALSA SoC Architecture (AM/DM37x)

AM3517

ALSA SoC Architecture (AM3517)


Driver Features

The driver supports the following features:

  1. Supports AIC23 audio codec (on AM3517 only) and TPS65950 audio codec (on AM/DM37x only) in ALSA SoC framework.
  2. Multiple sample rates support (8KHz, 16KHz, 22.05KHz, 32KHz, 44.1KHz, 48KHz, 64KHz, 88.2KHz and 96KHz - AM3517; 8 KHz, 11.025 KHz, 12 KHz, 16 KHz, 22.05 KHz, 24 KHz, 32 KHz, 44.1 KHz and 48 KHz - AM/DM37x) for both capture and playback.
  3. Supports audio in stereo mode.
  4. Supports simultaneous playback and record (full-duplex mode).
  5. Start, stop, pause and resume feature.
  6. Supports mixer interface for audio codecs.
  7. Supports MMAP mode for both playback and capture.

Features Not Supported

  1. OSS based applications, which use ALSA-OSS emulation layer, are not supported.
  2. Formats such as TDM, Left and Right Justified are currently not supported.
  3. Synthesizer and midi interfaces are not supported.

Constraints

  1. By default, codec is configured in master mode and McBSP is used as slave. Testing of the audio sub-system is done in this configuration only.
  2. Sampling frequencies for playback and capture streams should be same.
  3. The audio driver does not allow opening the same stream (playback/capture) multiple times.

Supported System Calls

Refer ALSA project - the C library reference [1] for API calls.

Supported IOCTLs

NA

Performance and Benchmarks

The performance numbers were captured using the following configuration:

  • Word length in bits = 16
  • Number of channels per sample = 2
  • Basic Power Management = Enabled
  • CPU Idle = Disabled
  • Root File System used = NFS


Audio Write Performance
Sampling Rate (in Hz) CPU Load (in %) CPU Load (in %)

Normal Mode MMAP Mode
8000 0 0
32000 0 1
44100 1 1
48000 1 1
  • Commands used for measurement:
    $ aplay -c 2 -f S16_LE -r <<sample rate>> <<file_name>> :- Normal mode
    $ aplay -c 2 -f S16_LE -r <<sample rate>> -M <<file_name>> :- MMAP mode

NOTE:The performance numbers are same for on each of AM/DM37x and AM3517 platforms.

Audio Read Performance
Sampling Rate (in Hz) CPU Load (in %) CPU Load (in %)

Normal Mode MMAP Mode
8000 0 0
32000 0 0
44100 0 0
48000 0 0
  • Commands used for measurement:
    $ arecord -c 2 -f S16_LE -r <<sample rate>> <<file_name>> :- Normal mode
    $ arecord -c 2 -f S16_LE -r <<sample rate>> -M <<file_name>> :- MMAP mode

NOTE:The performance numbers are same for on each of AM/DM37x and AM3517 platforms.

Ethernet Driver

This section provides details on Ethernet driver along with throughput and CPU load numbers.

Introduction

The Ethernet driver supports the Linux netdev interface.

Ethernet am3517.png

Driver Features

The driver supports the following features:

  1. 10/100 Mbps mode of operation.
  2. Auto negotiation.
  3. Support for multicast and broadcast frames.
  4. Promiscuous mode of operation.
  5. Full duplex and half duplex mode of operation.
  6. Linux NAPI support

Features Not Supported

NA

Constraints

NA

Supported System Calls

Supports the socket() and related system calls in accordance with Linux architecture.


Performance and Benchmarks

The performance numbers were captured using the following configuration:

  • Tool Used for measurement - LFTB script OR iperf tool
  • Speed is set to 100Mbps
  • Basic Power Management = Enabled
  • CPU Idle = Disabled
  • Root File System used = NFS

AM/DM37x and AM3517

Ethernet TCP - 100Mbps Mode Performance
TCP Window Size
(in KBytes)
Bandwidth - AM3517
(in Mbits/sec)
Bandwidth - AM/DM37x
(in Mbits/sec)
16 21.5 42.9
32 28.8 43.7
64 28.7 43.7
128 28.5 43.7

The performance numbers were captured using the iperf tool. Usage details are mentioned below:

  • Commands used for measurement:
  • On PC Host invoke iperf in the server mode  : "-s -w <window_size>, window_size default of 8KB
    $ iperf.exe -s -w 128K
  • On the DUT invoke iperf in client mode with "-c <server ip> -w <window size> -d -t 60". This starts bi-directional traffic to the server for a duration of 60 seconds.
    $ ./ethernet_tests_script.sh -type perf -dst_ip <PC IP> - src_ip <DUT IP>
  • The transfers are measured over a duration of 60Secs


Video Display Driver

This section describes the Video Display driver architecture, driver features along with throughput and CPU load numbers.

Introduction

Video Display driver is based on two different frameworks, V4L2 and FBDEV.

OMAP3 Display Driver Architecture


Driver Features

  1. Supports interfaces LCD, DVI and TV out
  2. Supports TV display interface at NTSC and PAL resolutions
  3. Supports YUV, UYVU, RGB565, RGB24P and RGB24 unpacked on video planes, in addition ARGB on video2 plane.
  4. Supports RGB565, ARGB, RGBA, RGB24 packed and unpacked on graphics plane
  5. Video planes controlled through V4L2 user interface whereas Graphic plane controlled through FBDEV user interface
  6. Supports setting up of OSD window destinations (TV or LCD) through sysfs
  7. Supports mmapped (driver allocated) and user buffer exchange mechanism in V4L2 driver and only mmapped (driver allocated) buffers in FBDEV driver
  8. Supports rotation - 0, 90, 180 and 270 degrees
  9. Supports scaling from 1/4x to 8x on video pipelines
  10. Supports Wait for Vsync and Panning feature under FBDEV
  11. Supports Alpha blending, both global alpha and pixel alpha
  12. Supports Source and Destination color keying through V4L2 ioctls
  13. Supports Modular build

Driver Features - AM/DM37x

  1. Supports LCD display interface at VGA resolution (480*640)
  2. Supports Generic Brightness class driver

Driver Features - AM3517

  1. Supports LCD display interface at resolution (480*272)

Features Not Supported

  1. RGB888 rotation is not supported
  2. RFBI interface is not supported
  3. DSI/SDI serial interface is not supported
  4. Dynamic Changing of modes (NTSC/PAL) for TV out not supported
  5. Linking feature not supported on video pipelines
  6. Mirroring is not supported

Constraints

  1. Incorrect configuration of parameters results in Sync Lost
  2. Minimum 3 Buffers are required for streaming in V4L2
  3. PAL resolution can be set maximum to 720 x 574 instead of 720 x 576 because of hardware limitation
  4. Upscaling and downscaling with images more that 720x574 resolution is not supported because of dss functional clock frequency limitation
  5. Since LCD_ENVDD (GPIO153) is required to power up TSC controller, the default state would be on irrespective of default selected output.
  6. System bandwidth issues has been observed with higher resolution and rotation.

Supported System Calls

open(), close(), read(), mmap(), munmap() and ioctl()

Performance Benchmarks

The performance numbers were captured using the following configuration:

  • TV - Hitachi LCD TV (NTSC/PAL)
  • DVI Monitor - Dell Monitor (720P/480P) without rotation
  • On board LCD panel (Sharp LS037V7DW01)
  • Basic Power Management = Enabled
  • CPU Idle = Disabled
  • Root File System used = NFS
  • Tool Used for measurement - LFTB and Sample Application (saMmapDisplay.c OR saUserptrDisplay.c)

Performance and Benchmarks

AM/DM37x and AM3517

Frame Buffer (Graphics Planes) performance values
Output Display
(Resolution)
AM/DM37x AM3517
Frame Rate
(in Frames/sec)
CPU Load
(in %)
Frame Rate
(in Frames/sec)
CPU Load
(in %)
LCD (VGA) 58 0 58 0
DVI (480P) 58 0 58 0
DVI (720P) 62 0 62 0
TV (NTSC) 30 0 30 0
TV (PAL) 25 0 25 0
  • Commands used for measurement:
  • Run the LFTB script for performance measurements "-device <device node> -cpuload -framerate -width <width> -height <height>", Panning for 1000 frames with maximum resolution supported by panel without any memory operation
    $ ./fbdev_display_tests -device /dev/fb0 -cpuload -framerate -width 480 -height 640


Video4Linux (Video Planes) performance values
Output Display
(Resolution)
AM/DM37x AM3517
Frame Rate
(in Frames/sec)
CPU Load
(in %)
Frame Rate
(in Frames/sec)
CPU Load
(in %)
LCD (VGA) 58 1 - 2 58 1 - 2
DVI (480P) 58 1 - 2 58 1 - 2
DVI (720P) 62 1 - 2 62 1 - 2
TV (NTSC) 30 1 - 2 30 1 - 2
TV (PAL) 25 1 - 2 25 1 - 2
  • Commands used for measurement:
  • Run the Sample application as a background process with arguments "-p 1 -l 1000", which starts streaming on video1 pipeline without any memory operation and loops for 1000 iterations
    $ ./saMmapDisplay -p 1 -l 1000 &
  • Measure the cpuload using standard linux top command
    $ top -d 1

Video Capture Driver

This section describes the Video Capture driver architecture, driver features and performance numbers (throughput and CPU load).

Introduction

New framework is being introduced in the current V4L2 sub-system, and for AM-DM37x ISP camera module we have been migrated to this new framework.

All Applications need to adopt for the new framework, please refer to UserGuide and Sample Application available with Release package.

AM/DM37x

AM/DM37x Video Capture driver is based on New Media-Controller framework.


AM/DM37x Capture Driver Block Diagram


AM3517

AM3517 Video Capture driver is based on V4L2 Sub_device framework.


AM3517 Capture Driver Block Diagram


Driver Features

  1. Supports TVP5146 video decoder over parallel interface
  2. Supports 8-bit BT.656 capture in UYVY and YUYV interleaved formats
  3. Supports NTSC and PAL standard on Composite and S-Video interfaces
  4. Supports mmapped (driver allocated) and user buffer exchange mechanism
  5. Supports dynamic switching among input interfaces with some necessary restrictions wherever applicable
  6. Supports standard V4L2 IOCTLs to get/set various control parameters like brightness, contrast and saturation

Driver Features - AM/DM37x

  1. Supports Multi software channel and a corresponding device node (/dev/videoX) for capture module
  2. Supports 8-bit YUV capture from parallel sensor in UYVY and YUYV progressive formats
  3. Supports standard media-controller framework to create/set links/channel under given media topology
  4. Supports both USERPTR and MMAP mode of buffer allocation mechanism


Driver Features - AM3517

  1. Supports single software channel and a corresponding device node (/dev/video0) for capture module
  2. Supports both USERPTR and MMAP mode of buffer allocation mechanism

Features Not Supported

  1. Cropping and scaling operations and their corresponding V4L2 IOCTLs
  2. Raw capture (capture through sensor interface)

Features Not Supported - AM/DM37x

  1. On-the-fly Resizer/Previewer interface is not supported
  2. All internal processing block, H3A, Histogram, black level compensation, etc.. are not supported
  3. CSI serial interface is not supported
  4. Mem-To-Mem ISP Resizer, Previewer modules is not supported
  5. USERPTR with VM_IO buffer is not supported

Features Not Supported - AM3517

  1. Older revision (< RevC) of Application boards are not supported
  2. Sensor is not supported

Constraints

  1. Dynamic switching of resolution and dynamic switching of interfaces is not supported when streaming is on
  2. Driver buffer addresses and pitch must be aligned to 32 byte boundary

Constraints - AM/DM37x

  1. Only VGA format is supported with sensor interface

Constraints - AM3517

  1. On older revision of Application boards greenish color is seen due to Hardware know issue, Application must implement Reverse A-Law table. Please note that driver has only been validated against latest revision of Application boards (>=Rev C), where this HW issue has been fixed.

Supported System Calls

open(), close(), mmap(), munmap() and ioctl()

Performance Benchmarks

Setup Details -

  • DVD Player = Sony (DVP-NS51P)
  • Sensor = Leopard Imaging Camera module adapter (Rev 1.1) with MT9T111 sensor
  • TV = Hitachi LCD TV (NTSC/PAL)
  • Tool Used for measurement = saUserPtrLoopback.c and saMmapLoopback.c
  • Basic Power Management = Enabled
  • CPU Idle = Disabled
  • Root File System used = NFS

Performance and Benchmarks

AM/DM37x and AM3517

Video4Linux Capture (Video Decoder - TVP5146) performance values
Output Display
(Resolution)
AM/DM37x AM3517
Frame Rate
(in Frames/sec)
CPU Load
(in %)
Frame Rate
(in Frames/sec)
CPU Load
(in %)
TV (NTSC) 30 1 - 2 30 1 - 2
TV (PAL) 25 1 - 2 25 1 - 2
  • Commands used for measurement:
  • Run the Sample application as a background process with arguments "-p 1 -l 1000", which starts streaming without any memcpy operation for 1000 iterations.
    $ ./saUserPtrLoopback -p 1 -l 1000
  • Observe the cpuload using standard Linux top command
    $ top -d 1


Video4Linux Capture (Sensor - MT9T111) performance values
Output Display
(Resolution)
AM/DM37x AM3517
Frame Rate
(in Frames/sec)
CPU Load
(in %)
Frame Rate
(in Frames/sec)
CPU Load
(in %)
TV (NTSC) 10 1 - 2 NA NA
TV (PAL) 10 1 - 2 NA NA
  • Commands used for measurement:
  • On AM/DM37x, run the Sample application as a background process with arguments "-s <0=tvp5146 1=mt9t111> -p 1 -l 1000", which starts streaming without any memcpy operation for 1000 iterations.
    $ ./saUserPtrLoopback -s 1 -p 1 -1 1000
  • Observe the cpuload using standard Linux top command
    $ top -d 1

NAND Driver

This section describes the NAND flash driver architecture, driver features along with throughput and CPU load numbers .

Introduction

The NAND flash driver is implemented as both - block driver and character driver, compliant with the standard MTD driver. It supports various NAND Flash chips (see drivers/mtd/nand/nand_ids.h file.) The NAND driver creates the device nodes for user space access (/dev/mtdblock0, /dev/mtdblock1, /dev/mtd0,/dev/mtd1 and so on). This release has been tested with Micron NAND device on the OMAP3EVM/AM3517EVM


This figure illustrates the stack diagram of NAND flash driver in Linux.

Omap nand driver.png

Driver Features

The driver supports the following features:

  1. JFFS2 file system
  2. Supports Read/Write, Erase operations
  3. Bad Block Management
  4. Polled mode of transfer
  5. SLC NAND
  6. Supports 1/4/8 bit ECC scheme
  7. NAND Flash divided into 5 partitions
    1. 512KB partition for X-loader
    2. 1920 KB (Read Only) partition for U-Boot
    3. 128 KB (Read Only) for environment variables
    4. 5 MB (Read/Write) partition for Linux
    5. Remainder for file system and others (Read/Write)

Features Not Supported

None

Constraints

None

Supported System Calls

Supports the system call support proivided by MTD interface viz. open(), close(), read(), write(), ioctl()

Performance Benchmarks

Important
The performance numbers can be severely affected if the device is mounted in sync mode.

The performance numbers were captured using the following configuration:

  • NAND PART Number: Micron MT29F4G08AAC
  • File System = JFFS2
  • NAND partition is mounted with async option.
  • Tool Used for measurement - LFTB
  • Basic Power Management = Enabled
  • CPU Idle = Disabled
  • Root File System used = NFS


Nand Read performance values
Buffer Size
(in KBytes)
AM/DM37x AM3517
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
100 3.13 97.61 1.88 99.89
256 3.13 97.52 1.876 99.82
512 3.16 98.37 1.873 99.39
1024 3.16 97.95 1.880 99.80
5120 3.14 97.60 1.893 99.98
  • Commands used for measurement:
  • Create a ramfs using mount command
    $ mount -t ramfs ramfs /tmp
  • Create 100Mbytes file using "/dev/urandom"
    $ dd if=/dev/urandom of=100MB bs=1M count=100
    $ cd /tmp
  • Run LFTB script with argument "-plat <plat> -type perf -device_type nand -partition_number <partition no> -fs_type jffs2 -size <size of partition> -erase_size 131072 -file_name <file name>"
    $ ./mtd_tests_script.sh -plat am37x -type perf -device_type nand -partition_number 4 -fs_type jffs2 -size 504 -erase_size 131072 -file_name 100MB
  • Script automatically runs the test for different buffer sizes and for both read & write operations.


Nand Write performance values
Buffer Size
(in KBytes)
AM/DM37x AM3517
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
100 1.02 100 0.54 100
256 1.02 100 0.549 100
512 1.02 100 0.551 100
1024 1.02 100 0.552 100
5120 1.02 100 0.552 100
  • Commands used for measurement:
  • Create a ramfs using mount command
    $ mount -t ramfs ramfs /tmp
  • Create 100Mbytes file using "/dev/urandom"
    $ dd if=/dev/urandom of=100MB bs=1M count=100
    $ cd /tmp
  • Run LFTB script with argument "-plat <plat> -type perf -device_type nand -partition_number <partition no> -fs_type jffs2 -size <size of partition> -erase_size 131072 -file_name <file name>"
    $ ./mtd_tests_script.sh -plat am37x -type perf -device_type nand -partition_number 4 -fs_type jffs2 -size 504 -erase_size 131072 -file_name 100MB
  • Script automatically runs the test for different buffer sizes and for both read & write operations.

MMC/SD Driver

This section provides details on MMC/SD driver along with throughput and CPU load numbers.

Introduction

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.

Mmcsd Driver.png

Driver Features

The driver supports the following features:

  1. MMC/SD native protocol command/response set
  2. Single/multiple block data transfers
  3. Linux file system and generic MMC layer abstract details of block devices (MMC)
  4. High-speed (SDv1.1) and High Capacity (SDv2.0) cards
  5. Support for 1/4 bit modes
  6. Support for card detect and Write protect features
  7. DMA mode for data transfer operations
  8. SDIO functionality (tested with marvell 8686 wlan card)

Features Not Supported

  1. Support for 8-bit mode of operation.
  2. SPI mode of operation

Constraints

  1. 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

open(),close(),read(),write()

Supported IOCTLs

None

Performance and Benchmarks

Important
The performance numbers can be severely affected if the media is mounted in sync mode.

The performance numbers were captured using the following configuration:

  • SD Card (Sandisk Extreme,SDHC,Class 6, 16GB)
  • File System: ext2
  • Partition was mounted with async option
  • Tools used for measurements: LFTB
  • CPU Power Management: Disabled
  • Basic Power Management = Enabled
  • Root File System used = NFS
  • LFTB Run from ramfs

Performance Measurement using EXT2 file system

Read performance values
Buffer Size
(in Bytes)
AM/DM37x AM3517
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
102400 (100K) 17.15 22.79 14.44 53.92
256000 17.21 21.84 14.42 51.03
512000 17.17 21.51 14.45 53.44
1048576 (1024K) 17.17 23.03 14.22 53.18
5242880 (5120K) 17.14 24.71 14.42 51.59


Write performance values
Buffer Size
(in Bytes)
AM/DM37x AM3517
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
102400 (100K) 4.20 8.26 3.20 18.2
256000 4.16 8.21 3.28 18.64
512000 4.30 8.41 2.92 17.02
1048576 (1024K) 4.46 9.06 3.03 17.35
5242880 (5120K) 4.60 8.66 4.07 23.28
  • Commands used for measurement:
  • Run the filesystem script from LFTB with argument "-plat <platform> -type perf -device <mmc device> -device_type mmc -fs_type <fs type>"
    $ ./filesystem_tests_scripts.sh -plat am37x -type perf -device /dev/mmcblk0p1 -device_type mmc -fs_type ext2



Performance Measurement using VFAT file system

Read performance values
Buffer Size
(in Bytes)
AM/DM37x AM3517
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
102400 (100K) 16.80 22.35 13.39 50.70
256000 16.81 21.51 13.39 56.39
512000 16.80 16.94 13.36 51.47
1048576 (1024K) 16.80 19.58 13.39 51.21
5242880 (5120K) 16.81 16.35 13.38 54.92


Write performance values
Buffer Size
(in Bytes)
AM/DM37x AM3517
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
102400 (100K) 9.53 34.46 7.15 72.29
256000 8.33 29.55 6.84 69.34
512000 8.17 27.05 7.03 70.80
1048576 (1024K) 7.99 26.37 7.30 73.99
5242880 (5120K) 9.68 34.26 7.12 73.64


  • Commands used for measurement:
  • Run the filesystem script from LFTB with argument "-plat <platform> -type perf -device <mmc device> -device_type mmc -fs_type <fs type>"
    $ ./filesystem_tests_scripts.sh -plat am37x -type perf -device /dev/mmcblk0p1 -device_type mmc -fs_type vfat

Real Time Clock (RTC) Driver (Only for AM3517)

This section provides details on RTC (S35390A) driver along with throughput and CPU load numbers.

Introduction

AM3517 EVM supports external RTC chip S35390A over I2C1.

RTC.PNG

Driver Features

The driver supports the following features:

  1. Supports IOCTLs to set/get the time/date value
  2. Driver can be built as a loadable module and inserted dynamically.

Features Not Supported

  • Interrupt based Wake-up and respective IOCTL's

Constraints

None

Supported System Calls

open(), close(), write(), read()

Performance and Benchmarks

None

USB Driver

This section describes the USB (EHCI and MUSB) driver architecture, features supported/not supported, constraints and performance numbers.

EHCI host Controller

Description

AM/DM37x

EHCI port is on main board of OMAP3EVM (Rev G) which is used for testing AM/DM37x.

AM3517

AM3517EVM has one EHCI port on base board and another EHCI port on UI card. EHCI port on UI card would work only if LCD is not enabled as LCD and UI card EHCI port share some IO pins.

Driver Features

The driver supports the following features

  1. Hub Class
  2. Mass Storage Class (MSC)
  3. Human Interface Class (HID) (through a high speed hub)
  4. USB Video Class (UVC)
  5. USB Audio Class (UAC)

Features Not Supported

All other classes not mentioned in the "Supported Features" section.

MUSB OTG controller

Description

AM/DM37x

The MUSB driver is implemented on top of Mentor OTG IP version 2.0 which supports all the speeds (High, Full and Low).MUSB uses inventra DMA for all the transfers.

AM3517

The MUSB driver is implemented on top of Mentor OTG IP version 1.8 which supports all the speeds (High, Full and Low).MUSB uses CPPI4.1 DMA for all the transfers. AM3517 has USB PHY inside IP itself.

Driver Features

The driver supports the following features

Host Mode

  1. Hub Class
  2. Human Interface Class (HID)
  3. Mass Storage Class (MSC)
  4. USB Video Class (UVC)
  5. USB Audio Class (UAC)

Gadget mode

  1. Mass Storage Class (MSC)
  2. USB Networking - RNDIS/CDC

OTG mode

  1. Session Request Protocol (SRP)
  2. Host Negotiation Protocol (HNP)

Features Not Supported

  1. All other classes not mentioned in the "Supported Features" section.

Constraint

  1. There is a limitation in the power that is supplied by the charge pump of the ISP1504 PHY on OMAP3EVM-1 (<=Rev-E). If you notice VBUSERR messages in the system console, then connect a self powered USB hub and then attach the device to the hub
  2. OMAP3EVM-2 (>=Rev-E) can support upto 500mA power and thus self powered hub is not required.VBUS must be re-enabled after disconnect and reconnect of the MSC device while the MUSB image is built in OTG mode

USB Mass Storage Class Host Driver

Description

This figure illustrates the stack diagram of the system with USB Mass Storage Class driver

Usb-msc.png

Driver Features

The driver supports the following feature

  1. DMA mode
  2. PIO mode

Features Not Supported

None

Constraint

None

Supported System Calls

Supports the Linux file system related system calls.

Supported IOCTLS

None

Performance Benchmarks

Important
The performance numbers can be severely affected if the media is mounted in sync mode.

The performance numbers were captured using the following configuration:

  • Hard disk: Toshiba 80GB DISK DRIVE, Model - MK8032GAX
  • File system: ext2
  • Partition was mounted with async option
  • Tools used for measurements: LFTB
  • CPU Power Management: Disabled
  • Driver operating mode: DMA
  • Basic Power Management = Enabled
  • Root File System used = NFS
USB MSC Host mode DMA Ext2 File System Performance
USB-MSC Write Performance values (EXT2)
Buffer Size
(in KBytes)
AM/DM37x AM3517
MUSB EHCI MUSB EHCI
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
100 23.347002 60.13% 23.003311 46.83% 18.210985 86.81% 18.070755 77.62%
256 23.211021 60.49% 22.701153 46.87% 18.917397 88.99% 17.864447 76.96%
512 23.934212 61.61% 22.458357 46.02% 18.474073 86.09% 18.173420 76.27%
1024 23.232368 58.39% 23.035805 46.78% 18.839354 86.92% 17.764782 74.11%
5120 23.136560 58.63% 23.385279 49.78% 17.764782 74.11% 18.039362 76.42%


USB-MSC Read Performance values (EXT2)
Buffer Size
(in KBytes)
AM/DM37x AM3517
MUSB EHCI MUSB EHCI
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
100 9.408753 65.23% 22.308475 34.26% 18.637775 71.07% 18.988873 53.60%
256 9.397711 64.16% 22.490549 34.83% 18.649458 68.10% 18.754204 52.62%
512 9.515635 66.70% 22.943981 34.64% 18.813135 68.53% 18.648048 50.89%
1024 9.462547 64.27% 22.297789 32.91% 18.332829 67.43% 18.912655 53.93%
5120 9.508155 65.97% 22.664312 34.42% 18.599876 68.63% 18.690138 53.14%
  • Commands used for measurement:
  • Run the filesystem script from LFTB with argument "-plat <platform> -type perf -device <usb device> -device_type usb -fs_type <fs type>"
    $ ./filesystem_tests_scripts.sh -plat am37x -type perf -device /dev/sda1 -device_type usb -fs_type ext2
USB MSC Host mode DMA VFAT File System Performance

The performance numbers were captured using the following configuration:

  • Hard disk: Toshiba 80GB DISK DRIVE, Model - MK8032GAX
  • File system: vfat
  • Partition was mounted with async option
  • Tools used for measurements: LFTB
  • CPU Power Management: Disabled
  • Driver operating mode: DMA
  • Basic Power Management = Enabled
  • Root File System used = NFS
USB-MSC Write Performance values (VFAT)
Buffer Size
(in KBytes)
AM/DM37x AM3517
MUSB EHCI MUSB EHCI
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
100 14.879644 70.31% 18.080938 76.94% 10.234609 83.12% 12.292456 92.51%
256 15.149800 71.88% 18.241148 76.83% 10.622692 85.18% 10.090138 74.37%
512 14.996666 70.77% 18.203955 77.68% 10.741170 87.19% 10.183922 73.76%
1024 15.002484 70.53% 18.188150 77.37% 10.754727 87.17% 10.019943 74.88%
5120 15.007666 71.10% 18.068016 78.18% 10.606730 85.61% 12.319619 92.71%


USB-MSC Read Performance values (VFAT)
Buffer Size
(in KBytes)
AM/DM37x AM3517
MUSB EHCI MUSB EHCI
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
Transfer Rate
(in MBytes/sec)
CPU Load
(in %)
100 8.858853 65.40% 19.513386 32.59% 16.370426 70.98% 16.611057 51.04%
256 8.899052 62.49% 19.630524 31.58% 16.387190 70.22% 16.504824 50.47%
512 8.924862 64.06% 19.712080 30.13% 16.414547 69.92% 16.299252 52.97%
1024 8.886592 63.40% 19.878159 31.94% 16.383675 69.70% 16.564646 52.15%
5120 9.061550 66.15% 19.751989 32.02% 16.216963 70.19% 16.441208 52.69%
  • Commands used for measurement:
  • Run the filesystem script from LFTB with argument "-plat <platform> -type perf -device <usb device> -device_type usb -fs_type <fs type>"
    $ ./filesystem_tests_scripts.sh -plat am37x -type perf -device /dev/sda1 -device_type usb -fs_type vfat

USB Mass Storage Class Slave Driver

Description

This figure illustrates the stack diagram of the system with USB File Storage Gadget driver

USBSlaveStorage.PNG

Driver Features

The driver supports the following feature

  1. DMA mode
  2. PIO mode

Features Not Supported

None

Constraint

None

Supported System Calls

NA

Supported IOCTLS

NA

Performance Benchmarks

The performance numbers were captured using the following configuration:

  • Storage media: Toshiba 80 GB HDD, Model - MK8032GAX connected to EHCI port
  • File system: vfat on Windows XP
  • Tools used for measurements: Manual
  • CPU Power Management: Disabled
  • Driver operating mode: DMA
  • Basic Power Management = Enabled
  • Root File System used = NFS
USB MSC Gadget Write Performance values (XP host to EVM)
Total Bytes Transferred
(in MBytes)
AM/DM37x
Transfer Rate
(in MBytes/sec)
AM3517
Transfer Rate
(in MBytes/sec)
200 4.44 6


USB MSC Gadget Read Performance values (EVM to XP host)
Total Bytes Transferred
(in MBytes)
AM/DM37x
Transfer Rate
(in MBytes/sec)
AM3517
Transfer Rate
(in MBytes/sec)
200 11.76 7.4


  • Steps used for measurement:
  • Transfer a 200mb file from PC to device under test and vice-versa and measure the time it takes and then calculate the throughput.

USB CDC/RNDIS Slave Driver

Description

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.

UsBSlaveEthenet.PNG

Driver Features

The driver supports the following feature

  1. DMA mode
  2. PIO mode

Features Not Supported

None

Constraint

None

Supported System Calls

MUSB port would come up as network device interface and would supports all network subsystem related system calls in accordance with Linux architecture.

Supported IOCTLS

None

Performance Benchmarks

AM/DM37x and AM3517

The performance numbers were captured using the iperf tool. Usage details are mentioned below:

  • On the PC Host iperf is invoked in the server mode  : "-s"
  • On DUT invoke iperf in client mode  : "-c <server ip> -w <window size> -d -t60"
  • The transfers are measured over a duration of 60Secs
  • Power Management disabled for measurement
  • Linux2.6 AM/DM37x/AM35x EVM EHCI host has been used for CDC numbers on AM35x/AM/DM37x.
USB Ethernet Gadget Performance
TCP Window Size
(in KBytes)
Bandwidth (Rx+Tx)- AM/DM37x
(in Mbits/sec)
Bandwidth (Rx+Tx)- AM3517
(in Mbits/sec)
RNDIS CDC RNDIS CDC
16 45.02 41.00 44.30 46.30
32 45.29 45.50 43.93 50.10
64 46.20 45.60 42.45 54.30
128 46.20 45.90 41.54 57.20


USB Human Interface Device (HID) Driver

Description

The event sub system creates /dev/input/event* devices when USB HID devices are connected. Dell USB Keyboard and Microsoft USB mouse has been used for testing HID class.

Driver Features

The driver supports the following feature

  1. DMA mode
  2. PIO mode

Features Not Supported

None

Constraint

None

Supported System Calls

NA

Supported IOCTLS

NA

Performance Benchmarks

NA

USB Isochronous Driver

Description

USB camera, speaker and mike uses isochronous transfers. USB Video Class (UVC) is used by most of the USB cameras to capture image.Microsoft USB headset, Logitech Pro-9000 and Creative Live USB cameras have been used for testing purpose.

Driver Features

The driver supports the following feature

  1. DMA mode
  2. PIO mode
  3. Supports high bandwidth isochronous transfer used by some of the USB cameras

Features Not Supported

None

Constraint

  1. Default musb FIFO table has only one endpoint with 4KB FIFO size to support high bandwidth isochronous transfer. Thus we need to modify the table to support more then one USB cameras requiring high bandwidth interface.

Supported System Calls

NA

Supported IOCTLS

NA

Performance Benchmarks

NA

USB OTG Driver

Description

MUSB controller on AM/DM37x and AM35x EVM supports USB On The Go (OTG). OTG protocol enables runtime role switch between USB host and device. This is achieved using Session Request Protocol (SRP) and Host Negotiation Protocol (HNP).

Driver Features

The driver supports the following feature

  1. Both HNP and SRP

Features Not Supported

Constraint

None

Power Management

Introduction

AM/DM37x 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.

NOTE
The AM3505 and AM3517 devices provide a simple power management scheme. There is only one power domain and only one operating frequency. This section, therefore, doesn't contain any measurement for these devices.

cpuidle

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

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.

SmartReflex

SmartReflex is a power-management technique for controlling the operating voltage of a device to reduce its active power consumption. It helps in achieving optimal performance/power trade-off for all devices across the technology process spectrum and across temperature variations.

Features

The features supported in this release are:

  • Dynamic Tick (NO_HZ) framework.
  • Dynamic selection of VDD1 OPP via cpufreq - userspace / ondemand /performance governors
    • On AM/DM37x devices, VDD1 OPP can be scaled upto 1000MHz.
    • When OPP1 is selected for VDD1, the VDD2 is set at OPP2.
  • Supports the suspend-resume capability
  • The cpuidle framework with MPU and Core transition to retention (RET) and OFF states.
    • The menu governor is supported.
  • Support SmartReflex with automatic (hardware-controlled) mode of operation.
  • Wakeup from keypad and touchscreen (on AM/DM37x).

Features not supported

  1. Allow drivers and applications to limit the idle state that can be entered.
  2. Support for SmartReflex with manual (software-controlled) mode of operation.

Constraints

  1. Some of the drivers do not leverage the power-saving features supported by the silicon. They need to enable/ disable corresponding clocks via clk_enable() and clock_disable() only when the clocks are really needed.

Power Measurements

The measurements in this section were done on OMAP3EVM (Rev G) with NI-USB 6251 and TI power consumption tool.

Specific scenarios associated with the measurement are indicated in the details below.

NOTE
A ramdisk image based on minimal busybox configuration is used during these measurements. Actual numbers may vary with daemons and processes running (configured in the filesystem).

At each OPP

This section indicates the voltages measured for VDD1 and VDD2 at various OPPs (selected via cpufreq). The measurements were done with the uImage created using omap3_evm_defconfig.

AM/DM37x

Power Measurements at each OPP (AM/DM37x)
OPP VDD1 VDD2
Voltage
(Volts)
Current
(in mA)
Voltage
(Volts)
Current
(in mA)
OPP50 (freq = 300MHz) 1.022 6.532 1.242 12.630
OPP100 (freq = 600MHz) 1.194 15.575 1.242 12.700
OPP-Turbo (freq = 800MHz) 1.312 23.009 1.241 12.747
OPP-SB (freq = 1 GHz) 1.355 29.624 1.240 12.814


NOTE
Refer to the device specific TRM for OPP definitions.

Against specific scenarios

This section indicates the VDD1 measurements against identified scenarios.

The measurements were done with the default frequency which is 600MHz for AM/DM37x devices.

Scenario 1

  1. Build uImage with power management disabled and dynamic tick disabled.
  2. Boot the EVM with this uImage and ramdisk.

Scenario 2

  1. Build uImage with power management disabled but dynamic tick enabled.
  2. Boot the EVM with this uImage and ramdisk

Scenario 3

  • Build uImage with power management, power management debug, DebugFS and dynamic tick enabled; but no cpuidle.
  • Boot the EVM with uImage built above and ramdisk.
  • From Linux prompt, mount the "debugfs"
    $ mkdir /debug
    $ mount -t debugfs debugfs /debug
  • Enable "sleep_while_idle" flag
    $ echo 1 > /debug/pm_debug/sleep_while_idle
  • Set the uart sleep timeout, where AM/DM37x supports 3 uart instances 0 to 3.
    $ echo 5 > /sys/devices/platform/omap/omap_uart.x/sleep_timeout
  • Wait for 5 secs and start the measurement.

Scenario 4

  • Build uImage with power management, power management debug, DebugFS, dynamic tick and cpuidle enabled.
  • Boot the EVM with this uImage and ramdisk.
  • From Linux prompt, mount the "debugfs"
    $ mkdir /debug
    $ mount -t debugfs debugfs /debug
  • Enable "sleep_while_idle" flag
    $ echo 1 > /debug/pm_debug/sleep_while_idle
  • Set the uart sleep timeout, where AM/DM37x supports 3 uart instances 0 to 3.
    $ echo 5 > /sys/devices/platform/omap/omap_uart.x/sleep_timeout
  • Wait for 5 secs and start the measurement.

Scenario 5

  • Build uImage with power management, power management debug, DebugFS, dynamic tick and cpuidle enabled.
  • Boot the EVM with this uImage and ramdisk.
  • From Linux prompt, mount the "debugfs"
    $ mkdir /debug
    $ mount -t debugfs debugfs /debug
  • Enable both the flags "sleep_while_idle" and "enable_off_mode" flags
    $ echo 1 > /debug/pm_debug/sleep_while_idle
    $ echo 1 > /debug/pm_debug/enable_off_mode
  • Set the uart sleep timeout, where AM/DM37x supports 3 uart instances 0 to 3.
    $ echo 5 > /sys/devices/platform/omap/omap_uart.x/sleep_timeout
  • Wait for 30 secs and start the measurement.


Power Measurements against identified scenarios
Scenario AM/DM37x
Voltage
(Volts)
Current
(in mA)
Scenario 1 1.195 15.437
Scenario 2 1.195 15.657
Scenario 3 1.211 0.243
Scenario 4 1.212 0.243
Scenario 5 1.215 0.014


NOTE 1
For scenarios 1 and 2 the voltage doesn't scale to required levels as power management is disabled.

NOTE 2
For scenarios 3, 4 and 5 the voltage scales to required levels as power management is enabled.

CAN(HECC) Driver

This section provides details on CAN(HECC) driver.

Introduction

The CAN (HECC) driver supports the Linux netdev interface. CAN driver supports TX and RX mailbox priority feature ensuring in-order packet processing at various bit rates.

Driver Features

The driver supports the following features:

  1. SocketCAN networking framework
  2. Linux NAPI support for Rx operations
  3. Local loopback of sent frames (IFF_ECHO)
  4. Standard CAN bus bit-rates namely 10K, 20K, 50K, 100K, 125K, 250K, 500K & 1M

Features Not Supported

  1. ID filtering / Acceptance masks - since Linux infrastructure does not support this the driver cannot provide the feature

Constraints

NA

Supported System Calls

Supports the socket() and related system calls in accordance with Linux architecture. Refer to can.txt under Documentation/networking folder

Performance and Benchmarks

NA