Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • docs/docs.beagleboard.io
  • jkridner/docs
  • lorforlinux/docs.beagleboard.io
  • harshilbhatt2001/docs.beagleboard.io
  • Krishna_13/docs.beagleboard.io
  • gpioblink/docs.beagleboard.io
  • dhruvag2000/docs.beagleboard.io
  • jiande/docs.beagleboard.io
  • beagleplay/docs
  • beaglev-ahead/docs
  • sabeeh.khan14/docs.beagleboard.io
  • yoder/docs.beagleboard.io
  • jdneal/docs.beagleboard.io
  • ayush1325/docs.beagleboard.io
  • vishnumaiea/docs.beagleboard.io
  • andrei1998/docs-beagleboard-io-zephyr-demo
  • andrei1998/docs.beagleboard.io
  • nmenon/docs.beagleboard.io
  • epenguin/docs.beagleboard.io
  • paul_buxton/docs.beagleboard.io
  • anujdeshpande/docs.beagleboard.io
  • melta101/docs.beagleboard.io
  • krvprashanth/docs.beagleboard.io
  • samdai/docs.beagleboard.io
  • bustedwing1/docs.beagleboard.io
  • cshegedus/docs.beagleboard.io
  • wmat/docs.beagleboard.io
  • Roger18/docs.beagleboard.io
  • himanshuk/docs.beagleboard.io
  • vvaishak/docs.beagleboard.io
  • alecdenny/docs.beagleboard.io
  • san.s.kar03/docs.beagleboard.io
  • andrei1998/docs-beagleboard-io-fixes
  • SomeInterestingUserName/docs.beagleboard.io
  • edge-ai/docs
  • andrei1998/docs-beagleboard-io-rtc
  • devarsht/docs.beagleboard.io
  • andrei1998/docs-beagleboard-io-deepak-fork
  • superchamp234/docs.beagleboard.io
  • lranders/docs.beagleboard.io
  • kushalkr/docs.beagleboard.io
  • mkorpershoek/docs.beagleboard.io
  • prajnark/docs.beagleboard.io
  • touchhowling/docs.beagleboard.io
  • RobertCNelson/docs.beagleboard.io
  • Shankari02/docs.beagleboard.io
  • LucienMorey/docs.beagleboard.io
  • ketanthorat/docs.beagleboard.io
  • jjateen/docs.beagleboard.io
  • Whiz-Manas/mana-docs-beagleboard-io
  • beagley-ai/zephyr/docs.beagleboard.io
  • giuliomoro/docs.beagleboard.io
52 results
Show changes
Showing
with 731 additions and 107 deletions
.. _beagleplay-nodered:
Using Node-RED
##############
Node-RED provides a browser-based editor that makes it easy to wire together
flows using the wide range of nodes in the palette that can be deployed to
its runtime in a single-click.
.. youtube:: 2llY2ZnTmnw
Pre-requisites
**************
.. note::
If you're using the official BeaglePlay debian image then you most likely
can skip the :ref:`beagleplay-install-nodered` step.
.. _beagleplay-install-nodered:
Node-RED
********
Node-RED is pre-installed with the bb-node-red-installer package. (both xfce and cinnamon)
Manual steps to install Node-RED can be found in the `official guide
here <https://nodered.org/docs/getting-started/beaglebone>`_
MikroE
********
MikroE `Accel click <https://www.mikroe.com/accel-click>`_ is recommended, but many other boards
can work. More information about the mikroBUS interface can be found
`here <https://docs.beagleboard.org/boards/beagleplay/demos-and-tutorials/using-mikrobus.html>`_.
Let's get started!
********************
First, we want to make sure the mikroBUS™ add-on board is connected and functioning as expected.
To do this, we make use of the `iio_info command <https://man.archlinux.org/man/iio_info.1.en>`_.
Connecting mikroBUS™ add-on board
==================================
``iio_info`` is a utility for displaying information about local or remote IIO devices, in
this case it's the `Accel click board <https://www.mikroe.com/accel-click>`_.
.. figure:: ./iio_info_out.png
:width: 1040
:align: center
iio_info command output
Accessing Node-RED
====================
Once your BeaglePlay is booted up and connected to your computer, access it from your browser by typing
``192.168.7.2:1880`` in your address bar. Learn more about remote browser in :ref:`start-browse-to-beagle`.
Creating a basic flow
=====================
In this flow we'll take a look at how we can get the accelerometer readings output on the node
red console.
First, let's insert the exec function block. This will help us capture a linux command from
an entry like ``/sys/bus/iio/...``.
Double click on the function block and in the command paste:
.. code-block:: bash
cat /sys/bus/iio/devices/iio\:device0.../in_accel_x_raw
Give it some name and press Done.
Next, we add the "Debug" node and connect it to the previous function block we made
to get the output.
Optionally, as shown in the video we can also "Inject" a timestamp into the
function block which will then go into the debug console to give us the logs
with timestamps.
.. figure:: ./nodered-debug-logs.png
:width: 1040
:align: center
Node-RED debug logs
Adding a Gauge
==============
.. figure:: ./nodered-base-flow.png
:width: 1040
:align: center
Node-RED base flow
.. figure:: ./nodered-base-flow-output.png
:width: 400
:align: center
Node-RED base flow output
Adding a Graph and 3 Axis
=========================
.. todo::
* Add flow diagram
* * Show the output
.. figure:: ./nodered-complete-gauges-flow.png
:width: 1040
:align: center
Node-RED complete gauges flow
......@@ -199,7 +199,7 @@ display it as a string:
Additionally in above text we can display our current IP Address using below script.
You can create a new file then copy paste it and run.
.. code:: shell-session
.. code:: python
from __future__ import print_function
import qwiic_oled_display
......
......@@ -14,7 +14,7 @@ source design. If you are one of those people, this is a good place to get
started.
Further, BeaglePlay is a reasonable development platform for creating Zephyr-based
applications for :ref:`beagleconnect_freedom_home`. The same Zephyr development
applications for :ref:`beagleconnect-freedom-home`. The same Zephyr development
environment setup here is also described for targeting applications on that board.
Install the latest software image for BeaglePlay
......@@ -83,7 +83,7 @@ Background
This `WPANUSB` application was originally developed for radio devices with a USB interface. The CC1352P7
does not have a USB device, so the application was modified to communicate over a UART serial interface.
For the :ref:`beagleconnect_freedom_home`, a USB-to-UART bridge device was used and the USB endpoints
For the :ref:`beagleconnect-freedom-home`, a USB-to-UART bridge device was used and the USB endpoints
were made compatible with the `WPANUSB linux driver <https://github.com/finikorg/wpanusb>`_ which we
`augmented <https://git.beagleboard.org/beagleconnect/linux/wpanusb/>`_ to support this board. To utilize
the existing `WPANUSB` Zephyr application and this Linux driver, we chose to encode our UART traffic with
......
......@@ -22,9 +22,10 @@ Demos
demos-and-tutorials/gateware/gateware-full-flow
demos-and-tutorials/gateware/gateware-tcl-scripts-structure
demos-and-tutorials/gateware/customize-cape-gateware-verilog
demos-and-tutorials/gateware/deploy-and-program-picorv-softcore
demos-and-tutorials/gateware/running-the-bitstream-builder-on-windows
demos-and-tutorials/gateware/exploring-gateware-design-libero
demos-and-tutorials/gateware/gateware-design-simulation-libero
demos-and-tutorials/gateware/comms-cape-gateware-usage
demos-and-tutorials/gateware/axi-apb-interfaces-demo
demos-and-tutorials/building-linux-with-buildroot
.. _beaglev-fire-building-linux-with-buildroot:
Building Linux for BeagleV-Fire using Buildroot
################################################
Introduction
**************
Buildroot is a simple, efficient, and user-friendly tool for creating custom embedded Linux systems through cross-compilation.
This document provides a guide for building and flashing a Linux image on the BeagleV-Fire board with Buildroot.
It outlines the process for compiling the image, writing image to the eMMC, and booting the new operating system.
Hardware requirements:
========================
1. BeagleV-Fire board
2. USB-C cable
3. 3.3v USB to UART bridge
Connect BeagleV-Fire UART debug port using 3.3v USB to UART bridge.
.. figure:: ../images/debug/BeagleV-Fire-UART-Debug.*
:width: 1240
:align: center
:alt: UART debug connection
Software requirements:
=======================
Download `Buildroot <https://github.com/buildroot/buildroot>`_ repository from GitHub.
Start Building
****************
.. note::
The following steps are intended for a Linux operating system.
To build and flash Linux image using Buildroot,
Step 1. Navigate to the Buildroot directory
============================================
.. code:: console
cd buildroot
Step 2. Configure the Build for BeagleV-Fire
=============================================
Configure the build by selecting the default board configuration:
.. code:: console
make beaglev_fire_defconfig
Step 3. Customise the build (Optional)
=======================================
If you need to customize the build, use the following command:
.. code:: console
make menuconfig
Step 4: Start the build process
.. code:: console
make
.. note::
The build process can take 20-30 minutes for a clean build.
Step 5. Locate the build image
===============================
Once the build is complete, the Linux image will be saved as `sdcard.img` in the `/output/images/` directory.
The directory structure will look something like this:
.. code:: console
$ ls output/images/
boot.scr boot.vfat.bmap dts/ Image.gz mpfs_icicle/ mpfs_icicle.its rootfs.cpio rootfs.tar sdcard.img sdcard.img.gz
boot.vfat boot.vfat.gz Image microchip/ mpfs_icicle.itb payload.bin rootfs.cpio.gz sdcard.bmap sdcard.img.bmap u-boot.bin
Step 6. Flash the Image to BeagleV-Fire's eMMC
===============================================
- Restart the board and halt the HSS (Hart Software Services) by pressing any key
- In the HSS command line interface, type `usbdmsc` to expose the eMMC as a USB mass storage device using the USB-C connector.
- If successful, a message saying "USB Host connected" will be displayed
- Now, copy the image from local machine to BeagleV Fire's eMMC
.. code:: console
sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M
.. note::
You need to replace /dev/sdX with the actual device name of your eMMC.
Be very careful not to overwrite the wrong drive, as this action is irreversible.
- Once the transfer is complete, type `CTRL+C` to disconnect your device
- Finally boot the new Linux image by typing `boot` or reset your board
Detailed description of this step is mentioned in `Flashing eMMC <https://docs.beagleboard.org/latest/boards/beaglev/fire/demos-and-tutorials/flashing-board.html#flashing-emmc>`_ section.
......@@ -14,11 +14,11 @@ to FPGA and ``sdcard.image`` to eMMC storage.
.. important::
Additional hardware required:
Additional hardware required:
1. FlashPro5/6 programmer
2. `Tag connect TC2050-IDC-NL 10-Pin No-Legs Cable with Ribbon connector <https://www.tag-connect.com/product/tc2050-idc-nl-10-pin-no-legs-cable-with-ribbon-connector>`_
3. `TC2050-CLIP-3PACK Retaining CLIP board for TC2050-NL cables <https://www.tag-connect.com/product/tc2050-clip-3pack-retaining-clip>`_
1. FlashPro5/6 programmer
2. `Tag connect TC2050-IDC-NL 10-Pin No-Legs Cable with Ribbon connector <https://www.tag-connect.com/product/tc2050-idc-nl-10-pin-no-legs-cable-with-ribbon-connector>`_
3. `TC2050-CLIP-3PACK Retaining CLIP board for TC2050-NL cables <https://www.tag-connect.com/product/tc2050-clip-3pack-retaining-clip>`_
Programming & Debug tools installation
***************************************
......@@ -36,18 +36,18 @@ which we are going to use for this tutorial. Below are the steps to install the
.. code-block:: bash
[lorforlinux@fedora Program_Debug_v2023.1_lin] $ ./launch_installer.sh
[lorforlinux@fedora Program_Debug_v2023.1_lin] $ ./launch_installer.sh
No additional packages to install for installer usage
No additional packages to install for installer usage
Requirement search complete.
Requirement search complete.
See /tmp/check_req_installer608695.log for information.
See /tmp/check_req_installer608695.log for information.
Launch of installer
Preparing to install
Extracting the JRE from the installer archive...
Unpacking the JRE...
Launch of installer
Preparing to install
Extracting the JRE from the installer archive...
Unpacking the JRE...
.. note:: It's recommended to install under `home/user/microchip` for linux users.
......@@ -75,14 +75,17 @@ Create new project
===================
.. important::
Make sure you have your FlashPro5/6 connected before you create a new project.
Make sure you have your FlashPro5/6 connected before you create a new project.
Press ``CTRL+N`` to create a file and you will see a pop-up window like shown below,
.. image:: ../images/FPExpress-new-project.png
:width: 598
:align: center
:alt: FPExpress new project creation window
.. figure:: ../images/FPExpress-new-project.png
:width: 598
:align: center
:alt: FPExpress new project creation window
FPExpress new project creation window
Follow the steps below as annotated in the image above:
......@@ -93,9 +96,11 @@ Follow the steps below as annotated in the image above:
If your FlashPro5/6 is connected properly you'll see the window shown below:
.. figure:: ../images/FPExpress-flashing.png
:width: 1240
:align: center
:alt: FPExpress new project flash window
:width: 1240
:align: center
:alt: FPExpress new project flash window
FPExpress new project flash window
Following the annotation in the image above:
......@@ -113,19 +118,23 @@ Flashing eMMC
Connect to BeagleV-Fire UART debug port using a 3.3v USB to UART bridge.
.. figure:: ../images/debug/BeagleV-Fire-UART-Debug.*
:width: 1240
:align: center
:alt: UART debug connection
:width: 1240
:align: center
:alt: UART debug connection
UART debug connection
Now you can run ``tio <port>`` in a terminal window to access
Now you can run ``tio <port> -b 115200`` in a terminal window to access
the UART debug port connection. Once you are connected properly you can
press the Reset button which will show you a progress bar like
in the
.. figure:: ../images/board-booting.png
:width: 740
:align: center
:alt: BeagleV-Fire booting HSS with progress bar
:width: 740
:align: center
:alt: BeagleV-Fire booting HSS with progress bar
BeagleV-Fire booting HSS with progress bar
Once you see that progress bar on your screen you can start pressing any
button (0-9/a-z) which will stop the board from fully booting and you'll be
......@@ -134,9 +143,11 @@ written by the Hart Software Services (HSS) using the ``usbdmsc`` command. The
HSS ``usbdmsc`` command exposes the eMMC as a USB mass storage device USB type C connector.
.. figure:: ../images/boot-message.png
:width: 1240
:align: center
:alt: BeagleV-Fire boot messages with HSS prompt access
:width: 1240
:align: center
:alt: BeagleV-Fire boot messages with HSS prompt access
BeagleV-Fire boot messages with HSS prompt access
Once you see ``>>`` you can execute the commands below:
......@@ -144,52 +155,82 @@ Once you see ``>>`` you can execute the commands below:
2. ``>> usbdmsc``
.. figure:: ../images/HSS-eMMC-mass-storage.png
:width: 1240
:align: center
:alt: HSS commands to show eMMC as mass storage
:width: 1240
:align: center
:alt: HSS commands to show eMMC as mass storage
HSS commands to show eMMC as mass storage
After executing the commands above your BeagleV-Fire's eMMC will be
exposed as a mass storage device like shown in the image below:
.. figure:: ../images/mass-storage-eMMC.png
:width: 740
:align: center
:alt: BeagleV-Fire eMMC as mass storage
:width: 740
:align: center
:alt: BeagleV-Fire eMMC as mass storage
Once your board is exposed as a mass storage device you can use
`Balena Etcher <https://etcher.balena.io/#download-etcher>`_ to
flash the ``sdcard.img`` on your BeagleV-Fire's eMMC.
BeagleV-Fire eMMC as mass storage
.. tab-set::
Once your board is exposed as a mass storage device, you can proceed to flash the ``sdcard.img`` on
your BeagleV-Fire's eMMC.
This document outlines two methods to flash from your local machine to BeagleV Fire's eMMC.
.. tab-item:: Select image
1. First method is to use `Balena Etcher <https://etcher.balena.io/#download-etcher>`_ software.
This software can be used to flash image in either Windows or Linux operating system.
.. tab-set::
1. Select the ``sdcard.img`` file from your local drive storage.
2. Click on select target.
.. tab-item:: Select image
1. Select the ``sdcard.img`` file from your local drive storage.
2. Click on select target.
.. figure:: ../images/eMMC-flashing-1.png
:width: 740
:align: center
:alt: Balena Etcher selecting image
:width: 740
:align: center
:alt: Balena Etcher selecting image
.. tab-item:: Select Target
Balena Etcher selecting image
1. Select ``MCC PolarFireSoC_msd`` as target.
2. Click ``Select(1)`` to proceed.
.. tab-item:: Select Target
1. Select ``MCC PolarFireSoC_msd`` as target.
2. Click ``Select(1)`` to proceed.
.. figure:: ../images/eMMC-flashing-2.png
:width: 740
:align: center
:alt: Balena Etcher selecting target
:width: 740
:align: center
:alt: Balena Etcher selecting target
Balena Etcher selecting target
.. tab-item:: Flash image
.. tab-item:: Flash image
1. Click on ``Flash!`` to flash the ``sdcard.img`` on BeagleV-Fire eMMC storage.
1. Click on ``Flash!`` to flash the ``sdcard.img`` on BeagleV-Fire eMMC storage.
.. figure:: ../images/eMMC-flashing-3.png
:width: 740
:align: center
:alt: Balena Etcher flashing image
:width: 740
:align: center
:alt: Balena Etcher flashing image
Balena Etcher flashing image
2. Second method is suitable for flashing the image using Linux machine via the command line.
.. code:: console
sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M status=progress
.. note::
You need to replace /dev/sdX with the actual device name of your eMMC.
Use tools like dmesg, lsblk, or GNOME Disks before and after exposing your
device as a USB to identify the correct device name.
Be very careful not to overwrite the wrong drive, as this action is irreversible.
- Once the transfer is complete, type ``CTRL+C`` to disconnect your device
- Finally boot the new Linux image by typing ``boot`` or reset your board
Congratulations! with that done you have fully updated BeagleV-Fire board
with up to date gateware image on it's PolarFire SoC's FPGA
......
......@@ -114,7 +114,7 @@ Design Details
Finally, an entry will be added to the device tree to make a UIO device point to our LSRAM's memory region.
.. code-block:: devicetree
.. code-block:: none
&{/} {
fabric-bus@40000000 {
......
......@@ -13,10 +13,16 @@ The comms cape provides an array of communication protocols including
Cape schematics, layout, and mechanicals
****************************************
For the schematics, layout, and mechanicals of the cape, please refer to the `Comms Cape <https://openbeagle.org/beagleboard/capes/-/tree/master/beaglebone/Comms>`_ repository.
For the schematics, layout, and mechanicals of the cape, please refer to :ref:`industrial-comms-cape`.
Usage in Linux
**************
Usage
*****
Firstly, the comms cape gateware must be compiled and updated on the beagleV-Fire. This can be done by using the `build-bitstream.py` script in the gateware repository with the `cape_comms.yaml` build option file.
.. code-block::
python3 build-bitstream.py build-options/cape_comms.yaml
CAN
===
......
......@@ -220,7 +220,7 @@ Add the instantiation of the blinky module:
.. callout::
.. code-block:: devicetree
.. code-block:: dts
//--------P9_41_42_IOPADS
P9_41_42_IOPADS P9_41_42_IOPADS_0(
......@@ -315,7 +315,7 @@ programmed on your BeagleV-Fire.
.. callout::
.. code-block:: devicetree
.. code-block:: dts
/dts-v1/;
/plugin/;
......
.. _beaglev-fire-softcore-usage:
How to use PicoRV Softcore on BeagleV-Fire
##########################################
Introduction
************
The PicoRV Softcore is a 32-bit RISC-V CPU subsystem on the BeagleV-Fire's FPGA fabric, functionally equivalent to the PRU subsystem on the BeagleBone Black.
The core is designed for low-latency I/O operations and offloading smaller tasks like PWM, LEDS, etc .
Prerequisites
*************
To be able to use the softcore component, you'll need to have following packages installed on your host computer:
- gcc-riscv64-unknown-elf
- picolibc-riscv64-unknown-elf
.. note::
These packages are used for compiling the code for the softcore.
For debian-based systems like ubuntu, you can use following commands:
.. code-block:: console
sudo apt install gcc-riscv64-unknown-elf picolibc-riscv64-unknown-elf
If you are using any other linux distro these packages can be downloaded from respective package managers.
But, it is highly recommended to use docker for accurate results.
`Docker installation steps <https://docs.docker.com/engine/install>`_.
Once you have docker installed:
1. Start a container with ubuntu image.
2. Install the required toolchain using above mentioned command (remember not to use 'sudo' in docker).
.. code-block:: console
Sudo docker run -it ubuntu:latest
After installing the necessary tools, you are all set for using the Softcore.
How to use the Softcore
***********************
1. Boot the softcore with firmware
==================================
Step 1
------
Navigate to ``sources/FPGA-design/script_support/components/SOFTCORE/PICO_RISCV/firmware`` in the BeagleV-Fire repository.
Step 2
------
Edit the firmware.c file by adding your code in the main function. You can create your own custom file but remember to use firmware.h file for pre-defined functions to access gpios.
Step 3
------
Now run the ``generatehex.sh`` to compile the code. (remember to edit the file name in the script of you are using custom file)
.. code-block:: console
. ./generatehex.sh
If you are using docker clone the repository on your docker container or use docker copy, then compile the program and use docker copy to obtain the hex file.
To copy file from local system to docker container:
.. code-block:: console
docker cp ./path/to/file CONTAINER:/path/to/directory
To copy file from docker container to local system:
.. code-block:: console
docker cp CONTAINER:/path/to/file /path/to/directory
To check the name of docker 'CONTAINER':
.. code-block:: console
docker ps -a
This will list all the running and stopped containers
To restart a stopped container, use:
.. code-block:: console
sudo docker start name_of_container -i
Step 4
------
Select PicoRV build option for bitstream generation
Once the code is compiled, build the bitstream using the 'build-bitstream.py' script.
.. code-block:: console
python build-bitstream.py ./build-options/picorv-softcore.yaml
.. note::
The Gitlab CI does not support the softcore code compilation yet, so the bitstream must be generated locally.
Step 5
------
Program BeagleV-Fire With Your `Custom Bitstream <https://docs.beagleboard.org/boards/beaglev/fire/demos-and-tutorials/gateware/customize-cape-gateware-verilog.html>`_.
2. Programming the softcore in run-time
=======================================
Step 1
------
- Program the softcore with custom bitstream with picorv-softcore build-option.
- Follow the steps mentioned in previous section.
Step 2
------
- Edit and compile your new code in your local machine.(BeagleV-Fire does not support on-board compilation for softcore programs yet, this feature will be added soon.)
- Follow Steps 2 and 3 in previous section for compiling your new program.
Step 3
------
Copy the firmware directory from BeagleV-Fire repository to your board.
.. code-block:: console
sudo scp -r path/to/firmware beagle@192.168.7.2:/home/beagle
Step 4
------
- Overwritting softcore's program memory.
- Compile the 'AXI_test.c' file using gcc and execute it.
.. code-block:: console
gcc -o AXI_test AXI_test.c
sudo ./AXI_teste
- This will open a interactive menu with various option that you can try out and access the program memory of the softcore.
- Here we will select *option 2* to upload the hex file we just compiled to the softcore.
.. note::
This compilation in step 2 is to generate a hex file to program the Softcore, while the compilation in Step 3 is performed to command the Linux system on-board to access the program memory of the Softcore.
.. note::
The filename in **AXI_test.c** for the hex file is set as ``firmware.hex``, so make sure the name of the hex file you compiled is the same else change the filename pointer in **AXI_test.c**.
Repository
==========
`PicoRV softcore builder <https://openbeagle.org/gsoc/2024/riscv-io-core/>`_.
......@@ -301,7 +301,7 @@ Now, concatenate the contents of this exported file to our gateware's HDL sourci
Replace the ``-file`` argument in the line with ``-file $project_dir/hdl/blinky.v``.
Finally, source the file by add a line below line no. 11 as:
.. code-block:: tcl
.. code-block:: none
-hdl_source {script_support/HDL/AXI4_address_shim/AXI4_address_shim.v} \
-hdl_source {script_support/HDL/BLINKY/blinky.v} # ⓵ Source the script below line 11
......
......@@ -3,7 +3,7 @@
Microchip FPGA Tools Installation Guide
#########################################
Instructions for installing the Microchip FPGA tools on a Ubuntu 20.04 desktop.
Instructions for installing the Microchip FPGA tools on a Ubuntu 20.04 or Ubuntu 22.04 desktop.
.. important::
......@@ -14,36 +14,39 @@ Instructions for installing the Microchip FPGA tools on a Ubuntu 20.04 desktop.
Make sure people know about the alternative and we provide links to details on that before we send them down this process.
Install Libero 2023.2
************************
Install Libero
**************
.. note:: Libero 2023.2, 2024.1 or 2024.2 should work. 2024.2 is used as an example.
Create a folder named Microchip in your /home folder
- Download installer from the `Microchip's fpga and soc design tools section <https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/libero-software-later-versions>`_.
- Install Libero
.. code-block::
unzip Libero_SoC_v2023.2_lin.zip
cd Libero_SoC_v2023.2_lin/
unzip Libero_SoC_v2024.2_lin.zip
./launch_installer.sh
.. important::
Do not use the default location suggested by the Libero installer.
Instead of /usr/local/Microchip/Libero_SoC_v2023.2 install into ~/Microchip/Libero_SoC_v2023.2
Instead of /usr/local/Microchip/Libero_SoC_v2024.2 install into ~/Microchip/Libero_SoC_v2024.2
Run the post installation script which will install missing packages:
.. code-block::
sudo /home/<USER-NAME>/Microchip/Libero_SoC_v2023.2/Logs/req_to_install.sh
sudo /home/$USER/Microchip/Libero_SoC_v2024.2/Logs/req_to_install.sh
No need to run the FlashPro hardware installation scripts. This will be taken care of as part of the SoftConsole installation.
Install SoftConsole 2022.2
***************************
- Download intaller from `Microchip website <https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/soc-fpga/softconsole>`_.
- Download installer from `Microchip website <https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/soc-fpga/softconsole>`_.
.. code-block::
......@@ -63,7 +66,14 @@ Perform the post installation steps as described in the html file opened when yo
Install the Libero licensing daemon
************************************
Download the 64 bit Licensing Daemons from the `Microchip's daemons section <https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/licensing>`_
Download the latest 64 bit Licensing Daemons from the `Microchip's fpga and soc design tools section <https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/libero-software-later-versions>`_
* `Linux_Licensing_Daemon_11.19.6.0_64-bit.tar.gz <https://ww1.microchip.com/downloads/secure/aemdocuments/documents/fpga/media-content/FPGA/daemons/Linux_Licensing_Daemon_11.19.6.0_64-bit.tar.gz>`_
* `Windows_Licensing_Daemon_11.19.6.0_64-bit.zip <https://ww1.microchip.com/downloads/secure/aemdocuments/documents/fpga/media-content/FPGA/daemons/Windows_Licensing_Daemon_11.19.6.0_64-bit.zip>`_
Older Daemon downloads can be found at `Microchip's daemons section <https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/licensing>`_
* `Linux_Licensing_Daemon_11.16.1_64-bit.tar.gz <https://ww1.microchip.com/downloads/aemdocuments/documents/fpga/media-content/FPGA/daemons/Linux_Licensing_Daemon_11.16.1_64-bit.tar.gz>`_
* `Windows_Licensing_Daemon_11.16.1_64-bit.zip <https://ww1.microchip.com/downloads/aemdocuments/documents/fpga/media-content/FPGA/daemons/Windows_Licensing_Daemon_11.16.1_64-bit.zip>`_
......@@ -75,7 +85,7 @@ Copy the downloaded file to the Microchip directory within your home directory a
cd ~/Microchip
tar -xvf Linux_Licensing_Daemon_11.16.1_64-bit.tar.gz
tar -xvf Linux_Licensing_Daemon_11.19.6.0_64-bit.tar.gz
Install the Linux Standard Base:
......@@ -99,7 +109,19 @@ Request a Libero Silver license
A MAC address looks something like 12:34:56::78:ab:cd when you use the "ip address" command to find out
its value on your Linux machine. However, you need to enter it as 123456abcd in this dialog box.
You will get an email with a license.dat file. Copy it into the ~/Microchip/license directory. Edit the License.dat file to replace the <put.hostname.here> string with... localhost.
You will get an email with a License.dat file. Copy it into the ~/Microchip/license directory. Replace `<put.hostname.here>` in `License.dat` with `localhost` and add Linux_Licensing_Daemon as the path to the daemons.
The top of your license file should look something like this after editing. Your daemon files should be located in the Linux_Licensing_Daemon folder inside the Microchip folder.
.. code-block:: text
SERVER localhost 001584731680 1702
DAEMON actlmgrd Linux_Licensing_Daemon/actlmgrd
# Starting Libero SOC v2024.2, customers are recommended ...
# DAEMON mgcld Linux_Licensing_Daemon/mgcld
DAEMON saltd Linux_Licensing_Daemon/saltd
VENDOR snpslmd Linux_Licensing_Daemon/snpslmd
Execute tool setup script
***************************
......@@ -112,15 +134,38 @@ Download the script:
:download:`setup-microchip-tools.sh <./setup-microchip-tools.sh>`
Details:
You can create a folder named FPGA-Tools-Setup and store the file there, although this is not required, as long as it is inside the Microchip folder.
You shouldn't need to edit the script, as long as you have installed Libero inside a folder that follows the Libero_SoC_vXXXX.X format, or if you have multiple Libero versions installed and want to select a preferred one to use.
Source the script:
.. code-block::
sudo chmod +x setup-microchip-tools.sh
. ./setup-microchip-tools.sh
.. important::
Do not forget the leading dot. It matters. You will need to run this every time you restart your machine.
Do not forget the leading dot. It matters. You will need to run this every time you restart your machine.
Optionally, add this to the end of your `~/.bashrc` file to avoid running it each time on startup.
First, open `~/.bashrc`:
.. code-block:: bash
nano ~/.bashrc
Then, add the following lines at the end:
.. code-block:: bash
cd /home/$USER/Microchip/
. ./setup-microchip-tools.sh
You can then start Libero to open an existing Libero project.
......@@ -132,4 +177,4 @@ However you will more than likely want to use Libero to run a TCL script that wi
.. code-block::
libero SCRIPT:BUILD_A_DESIGN.tcl
libero SCRIPT:BUILD_A_DESIGN.tcl
\ No newline at end of file
#!/bin/bash
# Gets Libero version
dir=$(pwd)
while [[ "$dir" != "/" ]]; do
for subdir in "$dir"/*/; do
if [[ $subdir =~ Libero_SoC_v([0-9]+\.[0-9]+)/ ]]; then
Libero_ver="${BASH_REMATCH[1]}"
break 2
fi
done
dir=$(dirname "$dir")
done
#Set preferred Libero version here if needed
#Libero_ver=2023.2
echo "Using Libero version:" $Libero_ver
# Check if Libero_ver was set; if not, print an error and exit
if [[ -z "$Libero_ver" ]]; then
echo "Error: No directory found matching the pattern 'Libero_SoC_vXXXX.Y/'"
return 1
fi
#===============================================================================
# Edit the following section with the location where the following tools are
# installed:
# installed if they aren't in the default location:
# - SoftConsole (SC_INSTALL_DIR)
# - Libero (LIBERO_INSTALL_DIR)
# - Licensing daemon for Libero (LICENSE_DAEMON_DIR)
#===============================================================================
export SC_INSTALL_DIR=/home/$USER/Microchip/SoftConsole-v2022.2-RISC-V-747
export LIBERO_INSTALL_DIR=/home/$USER/Microchip/Libero_SoC_v2023.2
export LIBERO_INSTALL_DIR=/home/$USER/Microchip/Libero_SoC_v$Libero_ver
export LICENSE_DAEMON_DIR=/home/$USER/Microchip/Linux_Licensing_Daemon
export LICENSE_FILE_DIR=/home/$USER/Microchip/license
export SMARTHLS_INSTALL_DIR=$LIBERO_INSTALL_DIR/SmartHLS-$Libero_ver/SmartHLS
#===============================================================================
# The following was tested on Ubuntu 20.04 with:
# - Libero 2023.2
# - Libero 2023.2 and 2024.1
# - SoftConsole 2022.2
# It was also tested on Ubuntu 22.04 with:
# - Libero 2024.2
# - SoftConsole 2022.2
#===============================================================================
......@@ -28,8 +58,11 @@ export FPGENPROG=$LIBERO_INSTALL_DIR/Libero/bin64/fpgenprog
# Libero
#
export PATH=$PATH:$LIBERO_INSTALL_DIR/Libero/bin:$LIBERO_INSTALL_DIR/Libero/bin64
export PATH=$PATH:$LIBERO_INSTALL_DIR/Synplify/bin
export PATH=$PATH:$LIBERO_INSTALL_DIR/Model/modeltech/linuxacoem
export PATH=$PATH:$LIBERO_INSTALL_DIR/SynplifyPro/bin
export PATH=$PATH:$LIBERO_INSTALL_DIR/ModelSimPro/modeltech/linuxacoem
export PATH=$PATH:$SMARTHLS_INSTALL_DIR/bin
export PATH=$PATH:$SMARTHLS_INSTALL_DIR/swtools/binutils/riscv-gnu-toolchain/bin
export LOCALE=C
export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu:$LD_LIBRARY_PATH
......
......@@ -13,7 +13,7 @@ Detailed overview
******************
BeagleY-AI is based on the Texas Instruments AM67A Arm-based vision processor. It features a quad-core 64-bit Arm®Cortex®-A53 CPU subsystem at 1.4GHz,
Dual general-purpose C7x DSP with Matrix Multiply Accelerator (MMA) capable of 4 TOPs each, Arm Cortex-R5 subsystem for low-latency
Dual general-purpose C7x DSP with Matrix Multiply Accelerator (MMA) capable of 4 TOPS (trillion-operations per second) combined (2 TOPS each), two available 800MHz Arm Cortex-R5 subsystems for low-latency
I/O and control, a 50 GFlop GPU, video and vision accelerators, and other specialized processing capability.
.. table:: BeagleY-AI features
......@@ -23,11 +23,9 @@ I/O and control, a 50 GFlop GPU, video and vision accelerators, and other specia
+=======================+=========================================================================================================================================================+
| Processor | Texas Instruments AM67A, Quad 64-bit Arm® Cortex®-A53 @1.4 GHz, multiple cores including Arm/GPU processors, DSP, and vision/deep learning accelerators |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| RAM | 4GB LPDDR4 |
| RAM | 4GB LPDDR4 (x32) |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| Wi-Fi | Beagleboard BM3301, 802.11ax Wi-Fi |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| Bluetooth | Bluetooth Low Energy 5.4 (BLE) |
| Wi-Fi/Bluetooth | BeagleBoard.org BeagleMod BM3301, 802.11ax Wi-Fi 6, Bluetooth Low Energy (BLE) 5.4 |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| USB Ports | 4 x USB 3.0 TypeA ports supporting simultaneous 5Gbps operation, 1 x USB 2.0 TypeC, supports USB 2.0 device mode |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
......@@ -35,7 +33,7 @@ I/O and control, a 50 GFlop GPU, video and vision accelerators, and other specia
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| Camera/Display | 2 x 4-lane MIPI camera connector (one connector muxed with DSI capability) |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| Display Output | 1 x HDMI display, 1 x OLDI display, 1 x DSI MIPI Display |
| Display Output | 1 x HDMI display, 1 x OLDI display, 1 x DSI MIPI Display (DSI muxed with 1 CSI) |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| Real-time Clock (RTC) | Supports external coin-cell battery for power failure time retention |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
......@@ -98,7 +96,7 @@ Board components location
Front components
=================
.. figure:: images/components-location/front.*
.. figure:: images/components-location/beagley-ai-board-front-annotated.*
:width: 1400
:align: center
:alt: BeagleY-AI board front components location
......@@ -109,15 +107,15 @@ Front components
+----------------------+-------------------------------------------------------------------------------------------------------------------+
| Feature | Description |
+======================+===================================================================================================================+
| WiFi/BLE | Beagleboard BM3301 with 802.11ax Wi-Fi & Bluetooth Low Energy 5.4 (BLE) |
| WiFi/Bluetooth | BeagleBoard.org BeagleMod BM3301 with 802.11ax Wi-Fi 6 & Bluetooth Low Energy 5.4 (BLE) |
+----------------------+-------------------------------------------------------------------------------------------------------------------+
| RAM | 4GB LPDDR4 |
| RAM | 4GB LPDDR4 (x32) |
+----------------------+-------------------------------------------------------------------------------------------------------------------+
| Expansion | 40pin Expansion header compatible with HATs |
+----------------------+-------------------------------------------------------------------------------------------------------------------+
| SoC | TI AM67A Arm®Cortex®-A53 4 TOPS vision SoC with RGB-IR ISP for 4 cameras, machine vision, robotics, and smart HMI |
+----------------------+-------------------------------------------------------------------------------------------------------------------+
| Fan | 4pin Fan connector |
| Fan | 4-pin fan connector |
+----------------------+-------------------------------------------------------------------------------------------------------------------+
| USB-A | 4 x USB 3 TypeA ports supporting simultaneous 5Gbps operation host ports |
+----------------------+-------------------------------------------------------------------------------------------------------------------+
......@@ -145,7 +143,7 @@ Front components
Back components
================
.. figure:: images/components-location/back.*
.. figure:: images/components-location/beagley-ai-board-back-annotated.*
:width: 1400
:align: center
:alt: BeagleY-AI board back components location
......
......@@ -3,6 +3,12 @@
BeagleY-AI Quick Start
######################
.. figure:: images/gpio/beagley-ai-pinout.*
:align: center
:alt: BeagleY-AI Pin Out Diagram
For an interactive and detailed pinout diagram, visit the `BeagleY-AI Pinout <https://pinout.beagley.ai>`_ page.
What's included in the box?
****************************
......@@ -56,7 +62,7 @@ We have two methods to prepare bootable microSD card, It is recommended to use :
bb-imager
==========
Download and install `bb-imager <https://beagley-ai.beagleboard.io/bb-imager>`_ for your operating system.
Download and install `bb-imager <https://www.beagleboard.org/bb-imager>`_ for your operating system.
Below are all the steps required to create a bootable microSD card with latest/recommended OS image for BeagleY-AI.
.. figure:: images/imager/step1-choose-device.*
......@@ -513,4 +519,14 @@ To attached the Raspberry Pi cooling fan to BeagleY-AI you have to follow these
Demos and Tutorials
*******************
* :ref:`beagley-ai-using-gpio`
* :ref:`beagley-ai-using-rtc`
* :ref:`beagley-ai-using-pwm`
* :ref:`beagley-ai-using-i2c-adc`
* :ref:`beagley-ai-expansion-nvme`
* :ref:`beagley-ai-object-detection-tutorial`
* :ref:`beagley-ai-using-i2c-oled-display`
* :ref:`beagley-ai-imx219-csi-cameras`
* :ref:`beagley-ai-using-imx219-csi-cameras`
* :ref:`beagley-ai-pca9685-motor-drivers`
* :ref:`beagley-ai-arducam-imx219-v3link-dual-camera-kit`
......@@ -745,6 +745,11 @@ Miscellaneous
Mechanical Specifications
**************************
.. todo::
If there are real design elements, put those here, like clearances and other elements going
into design consideration. Summary information should just go in the support page.
Dimensions & Weight
===================
......@@ -768,4 +773,4 @@ Dimensions & Weight
| Gross Weight | 110 g |
+--------------------+----------------------------------------------------+
| Net Weight | 50 g |
+--------------------+----------------------------------------------------+
\ No newline at end of file
+--------------------+----------------------------------------------------+
......@@ -5,12 +5,25 @@ Expansion
.. todo::
Describe how to build expansion hardware for BeagleY-AI
Describe how to build expansion hardware for BeagleY-AI. This section is not about using existing add-on hardware.
PCIe
****
For software reference, you can see how PCIe is used on NVMe HATs.
For software reference, you can :ref:`see how PCIe is used on NVMe HATs<beagley-ai-expansion-nvme>`.
CSI
***
For software reference, you can :ref:`see how CSI is used on IMX219-based camera modules<beagley-ai-imx219-csi-cameras>`.
RTC
***
.. todo::
Remove this. I really don't see how "RTC" falls into our definition of what should be documented in "Expansion".
* :ref:`beagley-ai-expansion-nvme`
* :ref:`beagley-ai-using-imx219-csi-cameras`
......
......@@ -12,11 +12,9 @@ Demos and tutorials
demos/beagley-ai-using-i2c-oled-display
demos/beagley-ai-using-i2c-adc
demos/beagley-ai-pca9685-motor-drivers
demos/beagley-ai-expansion-nvme
demos/expansion-nvme
demos/connecting-imx219-csi-cameras.rst
demos/beagley-ai-using-imx219-csi-cameras
demos/beagley-ai-arducam-imx219-v3link-dual-camera-kit
demos/beagley-ai-object-detection-tutorial
......@@ -13,7 +13,7 @@ Fortunately, BeagleY-AI comes with a built-in `DS1340 <https://www.analog.com/me
Required Hardware
**********************
BeagleY provides a **1.00 mm pitch, 2-pin JST SH connector** for a coin cell battery to enable the RTC to keep time even if power is lost to the board.
BeagleY-AI provides a **1.00 mm pitch, 2-pin JST SH connector** for a coin cell battery to enable the RTC to keep time even if power is lost to the board.
These batteries are available from several vendors:
......
.. _beagley-ai-imx219-csi-cameras:
.. todo::
Need to add `gstreamer` and/or `cheese` commands to show how to make use of connected cameras.
Using IMX219 CSI Cameras
############################
To enable an IMX219 CSI camera, modify the following file: `/boot/firmware/extlinux/extlinux.conf`
We can check the available list of Device Tree Overlays as such:
.. code:: console
debian@BeagleBone:~$ ls /boot/firmware/overlays/ | grep "beagley"
k3-am67a-beagley-ai-csi0-imx219.dtbo
k3-am67a-beagley-ai-csi0-ov5640.dtbo
k3-am67a-beagley-ai-csi1-imx219.dtbo
k3-am67a-beagley-ai-dsi-rpi-7inch-panel.dtbo
k3-am67a-beagley-ai-lincolntech-185lcd-panel.dtbo
Using CSI Port 0
**************************************
Then, add the following line to load the IMX219 CSI0 DTBO:
.. code:: bash
fdtoverlays /overlays/k3-am67a-beagley-ai-csi0-imx219.dtbo
Your /boot/firmware/extlinux/extlinux.conf file should look something like this:
.. code:: bash
label microSD (default)
kernel /Image
append console=ttyS2,115200n8 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait net.ifnames=0
fdtdir /
fdt /ti/k3-j722s-beagley-ai.dtb
fdtoverlays /overlays/k3-am67a-beagley-ai-csi0-imx219.dtbo
initrd /initrd.img
Now reboot...
.. code:: console
debian@BeagleBone:~$ ls /dev/ | grep "video"
video0
video1
video2
Using CSI Port 1
*******************
Troubleshooting
*******************
.. code:: console
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
beagley-ai microSD (extlinux.conf)
1: microSD Recovery
2: microSD (RPI 7inch panel)
3: microSD (lincolntech-185lcd panel)
4: microSD (csi0 imx219)
5: microSD (csi1 imx219)
6: microSD (csi0 ov5640)
7: microSD (default)
Enter choice: 4
4: microSD (csi0 imx219)