Skip to content

Commit c6e174b

Browse files
feat: Add support for AM62A edgeai docs
Till now the edgeai sdk docs for AM62A are maintained in a bitbucket repository. This commit adds support for building the edgeai docs for AM62A. The edgeai docs can be built similar to processor-sdk-docs but with OS as edgeai. Signed-off-by: Telukula Jeevan Kumar Sahu <[email protected]>
1 parent 20c8fec commit c6e174b

File tree

127 files changed

+3617
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+3617
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# General family replacement variables and configuration values for Linux build
2+
3+
# This file is processed by Python scripts to define both replacement
4+
# variable and configuration values for a device family build.
5+
# For replacement variables, all variables should be listed on a single
6+
# line, and all the variables should be listed on consecutive lines
7+
# (i.e. no additional blank lines between the replacement variables).
8+
# Similarly, all the configuration values should be listed on individual,
9+
# consecutive lines (with no blank linues between the configuration values).
10+
#
11+
# Note that neither replacement variables nor configuration values may contain
12+
# a colon (i.e. ":") in their name. However, values may contain colons.
13+
14+
Replacement Variables
15+
---------------------
16+
'__PART_FAMILY_NAME__' : 'AM62Ax'
17+
'__PART_FAMILY_DEVICE_NAMES__' : 'AM62Ax'
18+
'__PRODUCT_LINE_NAME__' : 'Sitara MPU'
19+
'__SDK_BUILD_MACHINE__' : 'am62a-sk'
20+
'__SDK_FULL_NAME__' : 'Processor SDK Linux Edge AI AM62Ax'
21+
'__SDK_SHORT_NAME__' : 'PSDK EdgeAI'
22+
'__SDK_INSTALL_FILE__' : 'ti-processor-sdk-linux-am62axx-evm-<version>-Linux-x86-Install.bin'
23+
'__SDK_INSTALL_DIR__' : 'ti-processor-sdk-linux-am62axx-evm-<version>'
24+
'__SDK_DOWNLOAD_URL__' : '`Processor SDK AM62A Download Page <https://www.ti.com/tool/PROCESSOR-SDK-AM62A>`__'
25+
'__LINUX_UBUNTU_VERSION_LONG__' : '22.04 (64-bit)'
26+
'__LINUX_UBUNTU_VERSION_SHORT__' : '22.04'
27+
'__OPTEE_PLATFORM_FLAVOR__' : 'am62axx'
28+
'__RTOS_UBUNTU_VERSION_LONG__' : '22.04 (64-bit)'
29+
'__WINDOWS_SUPPORTED_LONG__' : '10 (64-bit)'
30+
'__FEATURINGMATRIX__' : \
31+
'__SYSFW_CORE_NAME__' : 'TIFS'
32+
33+
Configuration Values
34+
--------------------
35+
'CONFIG_part_family' : 'AM62AX_family'
36+
'CONFIG_part_variant' : 'AM62AX'
37+
'CONFIG_sdk' : 'PLSDK'
38+
'CONFIG_icss_support' : 'yes'
39+
'CONFIG_rt_linux_support' : 'yes'
40+
'CONFIG_gpu_ip' : 'Rogue_AXE'
41+
'CONFIG_crypto' : 'sa2ul'
42+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Device Family name
2+
fam_name = 'AM62AX'
3+
4+
# Project name and HTML title
5+
sdk_product = 'null' #todo: remove after the new structure is used for all device families
6+
7+
project = u'Processor SDK Linux Edge AI for AM62Ax'
8+
html_title = 'Processor SDK AM62Ax Documentation'
9+
10+
# The master toctree document.
11+
master_doc = 'devices/AM62AX/edgeai/index'
12+
13+
# List of patterns, relative to source directory, that match files and
14+
# directories to ignore when looking for source files.
15+
16+
# AM62A RTOS docs are not in this project, rather referenced externally,
17+
# so exclude 'rtos' folder along with others.
18+
exclude_patterns = ['android', 'example_code', 'files', 'rtos', 'devices/AM335X', 'devices/AM437X', 'devices/AM64X', 'devices/AM65X', 'devices/TDA4VM', 'devices/J7200', 'devices/AM67A', 'devices/AM68A', 'devices/AM69A', 'devices/DRA821A']
19+
20+
# OS for the build. Sphinx uses source/{sdk_os} when looking for doc inputs
21+
sdk_os = 'edgeai'
22+
23+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
devices/AM62AX/edgeai/datasheet_optiflow
2+
devices/AM62AX/edgeai/datasheet_tiovx_apps
3+
devices/AM62AX/edgeai/connectivity
4+
devices/AM62AX/edgeai/pi_hdr_programming
5+
devices/AM62AX/edgeai/faq
6+
devices/AM62AX/edgeai/getting_started
7+
devices/AM62AX/edgeai/index
8+
devices/AM62AX/edgeai/test_report
9+
devices/AM62AX/edgeai/release_notes
10+
devices/AM62AX/edgeai/release_notes_08_06
11+
devices/AM62AX/edgeai/release_notes_09_00
12+
devices/AM62AX/edgeai/release_notes_09_00_01
13+
devices/AM62AX/edgeai/release_notes_09_01
14+
devices/AM62AX/edgeai/release_notes_09_02
15+
devices/AM62AX/edgeai/release_notes_10_00
16+
devices/AM62AX/edgeai/release_notes_10_01
17+
18+
edgeai/sdk_overview
19+
edgeai/configuration_file
20+
edgeai/edgeai_dataflows
21+
edgeai/inference_models
22+
edgeai/sample_apps
23+
edgeai/measure_perf
24+
edgeai/docker_environment
25+
edgeai/sdk_components
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
============================
2+
Connectivity and Peripherals
3+
============================
4+
5+
.. toctree::
6+
:maxdepth: 2
7+
8+
pi_hdr_programming
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
====================
2+
Datasheet (Optiflow)
3+
====================
4+
5+
The performance measurements includes the following,
6+
7+
#. **FPS** : Effective framerate at which the application runs
8+
#. **Total time** : Average time taken to process each frame, which includes
9+
pre-processing, inference and post-processing time
10+
#. **Inference time** : Average time taken to infer each frame
11+
#. **CPU loading** : Loading on different CPU cores present
12+
#. **DDR BW** : DDR read and write BW used
13+
#. **HWA Loading** : Loading on different Hardware accelerators present
14+
15+
Following are the latest performance numbers of the OpTIFlow demos:
16+
17+
Source : **Video**
18+
==============================
19+
20+
| Resolution : **1280x768**
21+
| Encoding : **h264**
22+
|
23+
24+
.. figure:: ../../../images/edgeai/datasheet_optiflow_pipeline1.png
25+
:scale: 75
26+
:align: center
27+
28+
GStreamer based data-flow pipeline with video file input source and display output
29+
30+
.. csv-table::
31+
:file: ../../../edgeai/datasheet/AM62AX/optiflow/optiflow_video_am62a.csv
32+
:header-rows: 1
33+
34+
Source : **CSI Camera with VISS (imx219)**
35+
======================================================
36+
37+
| Capture Framerate : **30 fps**
38+
| Resolution : **1920x1080**
39+
| format : **SRGGB8**
40+
|
41+
42+
.. figure:: ../../../images/edgeai/datasheet_optiflow_pipeline2.png
43+
:scale: 75
44+
:align: center
45+
46+
GStreamer based data-flow pipeline with IMX219 sensor, ISP and display
47+
48+
.. csv-table::
49+
:file: ../../../edgeai/datasheet/AM62AX/optiflow/optiflow_camera_am62a.csv
50+
:header-rows: 1
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
======================
2+
Datasheet (TIOVX Apps)
3+
======================
4+
5+
The performance measurements includes the following,
6+
7+
#. **FPS** : Effective framerate at which the application runs
8+
#. **Total time** : Average time taken to process each frame, which includes
9+
pre-processing, inference and post-processing time
10+
#. **Inference time** : Average time taken to infer each frame
11+
#. **CPU loading** : Loading on different CPU cores present
12+
#. **DDR BW** : DDR read and write BW used
13+
#. **HWA Loading** : Loading on different Hardware accelerators present
14+
15+
Following are the latest performance numbers of the edgeai-tiovx-apps:
16+
17+
Source : **Video**
18+
==============================
19+
20+
| Resolution : **1280x768**
21+
| Encoding : **h264**
22+
|
23+
24+
.. csv-table::
25+
:file: ../../../edgeai/datasheet/AM62AX/tiovx-apps/tiovx_apps_video_am62a.csv
26+
:header-rows: 1
27+
28+
Source : **CSI Camera with VISS (imx219)**
29+
======================================================
30+
31+
| Capture Framerate : **30 fps**
32+
| Resolution : **1920x1080**
33+
| format : **SRGGB8**
34+
|
35+
36+
.. csv-table::
37+
:file: ../../../edgeai/datasheet/AM62AX/tiovx-apps/tiovx_apps_camera_am62a.csv
38+
:header-rows: 1
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
.. _pub_edgeai_FAQs:
2+
3+
====
4+
FAQs
5+
====
6+
7+
.. _pub_edgeai_multiple_usb_cams:
8+
9+
Getting Error when trying to capture from multiple USB cameras simultaneously
10+
=============================================================================
11+
12+
This is a common issue faced in the industry with many USB cameras.
13+
You may get errors like ``Failed to allocate required memory.`` when tying to
14+
capture simultaneously from more than one usb cameras.
15+
16+
The root cause for this issue is that most of the USB cameras requests for more
17+
BW than actually required. If the use case is to capture only from 2 USB cameras
18+
, it can be done by connecting one of them to USB type-C port since it is
19+
internally connected to a separate instance of USB controller. But if the use
20+
case is to capture from more than 2 cameras, you need to modify the UVC driver
21+
to override the BW allocation.
22+
23+
The root cause and work around is explained in detail in this
24+
blog `Multiple UVC cameras on linux <https://www.thegoodpenguin.co.uk/blog/multiple-uvc-cameras-on-linux>`_
25+
26+
To apply the work around to our SDK, use below steps
27+
28+
#. Download and install `Processor SDK Linux <https://software-dl.ti.com/processor-sdk-linux/esd/AM62AX/10_01_00/exports/docs/devices/AM62AX/linux/Overview/Download_and_Install_the_SDK.html>`__
29+
#. Get the patch to add `bandwidth_cap` parameter to `uvcvideo` kernel module `uvcvideo patch <https://www.spinics.net/lists/linux-media/msg175596.html>`_
30+
#. Apply the patch to kernel source in Processor SDK Linux Install path. Please refer to `PSDK building kernel <https://software-dl.ti.com/processor-sdk-linux/esd/AM62AX/10_01_00/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html#overview>`_
31+
#. Compile only `uvcvideo` module using below command
32+
33+
.. code-block:: bash
34+
35+
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- am62ax_evm_a53_defconfig
36+
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- ./drivers/media/usb/uvc/uvcvideo.ko
37+
#. Copy `./drivers/media/usb/uvc/uvcvideo.ko` to sk
38+
#. Remove `uvcvideo` module and install modified version using below commands
39+
40+
.. code-block:: bash
41+
42+
rmmmod uvcvideo
43+
insmod uvcvideo.ko
44+
#. Set the desired BW cap as shown below
45+
46+
.. code-block:: bash
47+
48+
echo 1200 > /sys/module/uvcvideo/parameters/bandwidth_cap
49+
50+
.. note::
51+
52+
The unit of BW here is Bytes/125us, you can estimate the approximate BW
53+
requirement by multiplying fps with size/frame

0 commit comments

Comments
 (0)