diff --git a/.gitmodules b/.gitmodules index 0c170ef15f085e53d111e2b9b65bd7a763ec4456..4d6dbcd60e093de50986935c6af91681765b843e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "books/beaglebone-cookbook/code"] path = books/beaglebone-cookbook/code url = https://git.beagleboard.org/beagleboard/beaglebone-cookbook-code.git +[submodule "books/pru-cookbook/code"] + path = books/pru-cookbook/code + url = https://git.beagleboard.org/beagleboard/pru-cookbook-code diff --git a/boards/beaglebone/ai-64/ch04.rst b/boards/beaglebone/ai-64/ch04.rst index 866f1a780d81aa60debd87d385439060de86c407..4ea164d9119b417c4a7ad55b26b4aa9d4b166fc0 100644 --- a/boards/beaglebone/ai-64/ch04.rst +++ b/boards/beaglebone/ai-64/ch04.rst @@ -27,7 +27,7 @@ BeagleBone AI-64 is manufactured and warranted by partners listed at https://bea * Mark Yoder, professor at Rose-Hulman Institute of Technology * Kathy Giori, product engineer at ZEDEDA -See `bbb.io/about <bbb.io/about>`_ +See `bbb.io/about <https://beagleboard.org/about>`_ BeagleBone AI-64 has been designed by Seeed Studio (Seeed Development Limited) under guidance from BeagleBoard.org Foundation. diff --git a/boards/beaglebone/ai-64/ch07.rst b/boards/beaglebone/ai-64/ch07.rst index 81029ee7dc7091eb7907f1a1257d2916f7839293..64843aaa08c83cf95e8899e413785fd74c062e7e 100644 --- a/boards/beaglebone/ai-64/ch07.rst +++ b/boards/beaglebone/ai-64/ch07.rst @@ -35,7 +35,7 @@ The **GPIO** row is the expected gpio identifier number in the Linux kernel. Each row includes the gpiochipX and pinY in the format of -`X Y`. You can use these values to direcly control the GPIO pins with the +`X Y`. You can use these values to directly control the GPIO pins with the commands shown below. .. code:: diff --git a/boards/beaglebone/ai-64/ch11.rst b/boards/beaglebone/ai-64/ch11.rst index 3298d419f04d176985cca3aa6d4cc1c640add985..a458bd157098659168d0799397ec1d806056c913 100644 --- a/boards/beaglebone/ai-64/ch11.rst +++ b/boards/beaglebone/ai-64/ch11.rst @@ -11,7 +11,7 @@ All support for this design is through BeagleBoard.org community at: link: `Beag Hardware Design ------------------ -You can find all BeagleBone AI-64 hardware files `here <https://git.beagleboard.org/beagleboard/beaglebone-ai-64/-/tree/master/hw>`_ . +You can find all BeagleBone AI-64 hardware files `here <https://git.beagleboard.org/beagleboard/beaglebone-ai-64>`_ under the `hw` folder. .. _software-updates: diff --git a/boards/beaglebone/ai/ch12.rst b/boards/beaglebone/ai/ch12.rst index a5700477854f832e1db2de3b50ab787da4c3eaf8..b225f981ab23c4373e007e635d261354d891e86b 100644 --- a/boards/beaglebone/ai/ch12.rst +++ b/boards/beaglebone/ai/ch12.rst @@ -30,6 +30,7 @@ the equipment. This Class A or B digital apparatus complies with Canadian ICES-003. Changes or modifications not expressly approved by the party responsible for compliance could void the user’s authority to operate the equipment. + Cet appareil numérique de la classe A ou B est conforme à la norme NMB-003 du Canada. Les changements ou les modifications pas expressément approuvés par la partie responsible de la conformité ont pu vider diff --git a/boards/beaglebone/black/ch07.rst b/boards/beaglebone/black/ch07.rst index de80c32a334bc30255e3a012340856ef34eba4a7..570225182ad664b49f05021b1fa11ad4850a2971 100644 --- a/boards/beaglebone/black/ch07.rst +++ b/boards/beaglebone/black/ch07.rst @@ -1175,7 +1175,11 @@ Serial cable is recommended as shown in *Figure 55* below. The cable can be purchased from several different places and must be the 3.3V version TTL-232R-3V3. Information on the cable itself can be found -direct from FTDI at: `pdf <http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL232R_CABLES.pdf>`_ +direct from FTDI at: `pdf <https://ftdichip.com/wp-content/uploads/2020/07/DS_USB_RS232_CABLES.pdf>`_ + +.. note: + + #TODO#: move accessory links to a single common document for all boards. Pin 1 of the cable is the black wire. That must align with the pin 1 on the board which is designated by the white dot next to the connector on @@ -1183,7 +1187,7 @@ the board. Refer to the support WIKI `http://elinux.org/BeagleBoneBlack <http://elinux.org/BeagleBoneBlack>`_ for more sources of this cable and other options that will work. -Table is the pinout of the connector as reflected in the schematic. It is the same as the FTDI cable which can be found at `http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf <http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf>`_ with the exception that only three pins are used on the board. The pin numbers are defined in *Table 14*. The signals are from the perspective of the board. +Table is the pinout of the connector as reflected in the schematic. It is the same as the FTDI cable which can be found at `https://ftdichip.com/wp-content/uploads/2020/07/DS_USB_RS232_CABLES.pdf <https://ftdichip.com/wp-content/uploads/2020/07/DS_USB_RS232_CABLES.pdf>`_ with the exception that only three pins are used on the board. The pin numbers are defined in *Table 14*. The signals are from the perspective of the board. .. list-table:: J1 Serial Header Pins :header-rows: 1 diff --git a/boards/beaglebone/blue/accessories.rst b/boards/beaglebone/blue/accessories.rst index 9bb37a611e264b44775d3748197361d05dda1713..3a44db188b99322538f01b049acdd63b35d3984e 100644 --- a/boards/beaglebone/blue/accessories.rst +++ b/boards/beaglebone/blue/accessories.rst @@ -3,6 +3,10 @@ Accessories ############### +.. note:: + + #TODO#: We are going to work on a unified accessories page for all the boards and it should replace this. + .. _chassis_and_kits: Chassis and kits @@ -251,7 +255,8 @@ I2C devices ============== - See - `One-Liner-Module-Tests#Grove_I2C_modules <One-Liner-Module-Tests#Grove_I2C_modules>`__ + :ref:`One-Liner-Module-Tests#i2c <beaglebone-blue-one-liner-tests>`__ +- See :ref:`bone101_i2c`. .. _uart_devices: diff --git a/boards/beaglebone/blue/tests.rst b/boards/beaglebone/blue/tests.rst index 6b89d828948efe2b300654e39a192ef340070730..944b9efe0263532f0155602b796a7d514f99fa4f 100644 --- a/boards/beaglebone/blue/tests.rst +++ b/boards/beaglebone/blue/tests.rst @@ -9,7 +9,7 @@ ADC - `Grove Rotary Angle Sensor <http://wiki.seeed.cc/Grove-Rotary_Angle_Sensor/>`__ See output on adc_1 - `source <https://github.com/StrawsonDesign/Robotics_Cape_Installer/blob/master/examples/rc_test_adc/rc_test_adc.c>`__ + `source <https://git.beagleboard.org/beagleboard/librobotcontrol/-/blob/v1.1/examples/src/rc_test_adc.c>`__ .. code:: bash diff --git a/boards/beagleconnect/freedom/zephyr.rst b/boards/beagleconnect/freedom/zephyr.rst index 60ab95732bb0a9ae44b569f602179cf8f82cd386..a9e1dde8363653dc6ac6258855537ffe94c60a04 100644 --- a/boards/beagleconnect/freedom/zephyr.rst +++ b/boards/beagleconnect/freedom/zephyr.rst @@ -127,7 +127,7 @@ Other systems Log into BeagleBone Green Gateway ================================= -These instructions assume an x86_64 computer runing Ubuntu 20.04.3 LTS, but any +These instructions assume an x86_64 computer running Ubuntu 20.04.3 LTS, but any computer can be used to connect to your BeagleBone Green Gateway. #. Log onto the Seeed BeagleBone® Green Gateway using :code:`ssh`. diff --git a/boards/pocketbeagle/original/ch06.rst b/boards/pocketbeagle/original/ch06.rst index 39c36f6166f9ab9ff06e4238ce40f54acfa82a6c..e0ee74f7d715ce033d420f2d27885de9f301633c 100644 --- a/boards/pocketbeagle/original/ch06.rst +++ b/boards/pocketbeagle/original/ch06.rst @@ -195,8 +195,7 @@ Additional documentation is located on the Texas Instruments website at and also located at `http://github.com/beagleboard/am335x_pru_package. <http://github.com/beagleboard/am335x_pru_package>`__ -Example projects using the PRU-ICSS can be found at -`processors.wiki.ti.com/index.php/PRU_Projects <http://processors.wiki.ti.com/index.php/PRU_Projects>`__. +Example projects using the PRU-ICSS can be found in :ref:`pru-cookbook-home`. .. _pru_icss_features: @@ -313,4 +312,4 @@ chart separately. | P2.34 | PRU0_5 | C13 | B3 | | | pr1_pru0_pru_r30_5 (Output) | pr1_pru0_pru_r31_5 (Input) | | +-------------+-------------+-----------------+-----------+------------------------------+---------------------------+------------------------------+-------------------------------+----------------------------------------------+ | P2.35 | A5/86 | U5 | F3 | | | pr1_pru1_pru_r30_8 (Output) | pr1_pru1_pru_r31_8 (Input) | | - +-------------+-------------+-----------------+-----------+------------------------------+---------------------------+------------------------------+-------------------------------+----------------------------------------------+ \ No newline at end of file + +-------------+-------------+-----------------+-----------+------------------------------+---------------------------+------------------------------+-------------------------------+----------------------------------------------+ diff --git a/books/beaglebone-cookbook/01basics/basics.rst b/books/beaglebone-cookbook/01basics/basics.rst index 95744e6564802b20fe7ff4c4079a9b8d9f65f347..2d691dc6469656c6eab41851a2ff29a3f2a0ed41 100644 --- a/books/beaglebone-cookbook/01basics/basics.rst +++ b/books/beaglebone-cookbook/01basics/basics.rst @@ -313,7 +313,7 @@ This shows you a list of dates of the most recent Debian images (:ref:`basics_de Latest Debian images At the time of writing, we are using the *Bullseye* image. -Click on it's link. Scrolling up you'll find :ref:`basics_deb2`. +Click on its link. Scrolling up you'll find :ref:`basics_deb2`. There are three types of snapshots, Minimal, IoT and Xfce Desktop. IoT is the one we are running. diff --git a/books/beaglebone-cookbook/02sensors/sensors.rst b/books/beaglebone-cookbook/02sensors/sensors.rst index 79a3bf0e519f35da02ab7c93e50eb4a30d03f51d..d957ff0838cddbb52880df1adfc9e99c4b60e8e9 100644 --- a/books/beaglebone-cookbook/02sensors/sensors.rst +++ b/books/beaglebone-cookbook/02sensors/sensors.rst @@ -684,7 +684,7 @@ tools to test the device. Because these are Linux command-line tools, you have to use *2* as the bus number. *i2cdetect*, shown in :ref:`js_i2cTools`, shows which |I2C| devices are on the bus. The *-r* flag indicates which bus to use. Our TMP101 is appearing at address *0x498*. You can use the *i2cget* command to read -the value. It returns the temperature in hexidecimal and degrees C. +the value. It returns the temperature in hexadecimal and degrees C. In this example, 0x18 = 24{deg}C, which is 75.2{deg}F. (Hmmm, the office is a bit warm today.) Try warming up the TMP101 with your finger and running *i2cget* again. diff --git a/books/beaglebone-cookbook/09capes/capes.rst b/books/beaglebone-cookbook/09capes/capes.rst index 8374b0a92043e6f9fa88579527f6a114ea929eb3..07b81f1f9e760b799e14925d05edd9f510b47ffc 100644 --- a/books/beaglebone-cookbook/09capes/capes.rst +++ b/books/beaglebone-cookbook/09capes/capes.rst @@ -796,7 +796,7 @@ and PCB shown in :ref:`capes_miniDisplay_pcb`. PCB for MiniDisplay cape .. note:: - #TODO#: The MiniDisplay cape is not currently available, so this example should be udpated. + #TODO#: The MiniDisplay cape is not currently available, so this example should be updated. A good starting point is to take the PCB layout for the MiniDisplay and edit it for your project. The connectors for +P8+ and +P9+ are already in place and ready to go. @@ -1153,10 +1153,14 @@ Solution --------- Complete capes have an |I2C| EEPROM on board that contains configuration information that is read at boot time. -`Adventures in BeagleBone Cape EEPROMs <http://bit.ly/1Fb64uF>`_ gives a helpful description of two methods for -programming the EEPROM. `How to Roll your own BeagleBone Capes <http://bit.ly/1E5M7RJ>`_ is a good four-part +`Adventures in BeagleBone Cape EEPROMs <https://web.archive.org/web/20190108195421/http://azkeller.com:80/blog/?p=62>`_ gives a helpful description of two methods for +programming the EEPROM. `How to Roll your own BeagleBone Capes <https://web.archive.org/web/20200222204651/http://papermint-designs.com/community/taxonomy/term/68>`_ is a good four-part series on creating a cape, including how to wire and program the EEPROM. +.. note:: + + The current effort to document how to enable software for a cape is ongoing at https://docs.beagleboard.org/latest/boards/capes. + .. _capes_production: Putting Your Cape Design into Production @@ -1172,7 +1176,7 @@ Solution --------- `CircuitHub <https://circuithub.com/>`_ offers a great tool to get a quick quote on assembled PCBs. -To make things simple, I downloaded the `CircuitCo MiniDisplay Cape Eagle design materials <https://elinux.org/Special:Badtitle/NS500:MiniDisplay_Cape>`_ +To make things simple, I downloaded the `CircuitCo MiniDisplay Cape Eagle design materials <https://elinux.org/MiniDisplay_Cape>`_ and uploaded them to CircuitHub. After the design is uploaded, you'll need to review the parts to verify that CircuitHub has or diff --git a/books/beaglebone-cookbook/10parts/parts.rst b/books/beaglebone-cookbook/10parts/parts.rst index a952cf1dd467a1ef4cdc796db5467581469e7492..bc445be20b011546114eb32770b04867759b77fe 100644 --- a/books/beaglebone-cookbook/10parts/parts.rst +++ b/books/beaglebone-cookbook/10parts/parts.rst @@ -52,8 +52,6 @@ with jumper wires, and <<parts_breadboard>> shows where you can get breadboards. +-------------+--------------------------------------------------------------------------------------------+ | Digikey | http://www.digikey.com/product-detail/en/TW-E012-000/438-1049-ND/643115 | +-------------+--------------------------------------------------------------------------------------------+ - | RadioShack | http://www.radioshack.com/solderless-breadboard-jumper-wire-kit/2760173.html#.VG5i1PnF8fA | - +-------------+--------------------------------------------------------------------------------------------+ | SparkFun | https://www.sparkfun.com/products/124 | +-------------+--------------------------------------------------------------------------------------------+ @@ -73,7 +71,7 @@ with jumper wires, and <<parts_breadboard>> shows where you can get breadboards. +-------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | SparkFun | https://www.sparkfun.com/search/results?term=breadboard | +-------------+---------------------------------------------------------------------------------------------------------------------------------------------+ - | CircuitCo | http://elinux.org/CircuitCo:BeagleBone_Breadboard | + | CircuitCo | https://elinux.org/BeagleBoneBreadboard (no longer manufactured, but design available) | +-------------+---------------------------------------------------------------------------------------------------------------------------------------------+ If you want something more permanent, try `Adafruit's Perma-Proto Breadboard <https://www.adafruit.com/product/1609>`_, laid out like a breadboard. @@ -234,7 +232,3 @@ Here are some things that don't fit in the other categories. | Nokia 5110 LCD | `Adafruit 5110 LCD <http://bit.ly/1Ag6LgG>`_, | | | `SparkFun 5110 LCD <http://bit.ly/19cizdu>`_ | +-----------------------------------------------------+---------------------------------------------------------------------------------------+ - | BeagleBone LCD7 | `eLinux LCD7 <http://elinux.org/CircuitCo:BeagleBone_LCD7#Distributors>`_ | - +-----------------------------------------------------+---------------------------------------------------------------------------------------+ - | MiniDisplay Cape | `eLinux minidisplay <http://elinux.org/CircuitCo:MiniDisplay_Cape>`_ | - +-----------------------------------------------------+---------------------------------------------------------------------------------------+ diff --git a/books/beaglebone-cookbook/code b/books/beaglebone-cookbook/code index 269209bc64423a06e8caf11b91c7468805b287b2..e103135d4cd1387e0bfa37b468e3137b9a34e60f 160000 --- a/books/beaglebone-cookbook/code +++ b/books/beaglebone-cookbook/code @@ -1 +1 @@ -Subproject commit 269209bc64423a06e8caf11b91c7468805b287b2 +Subproject commit e103135d4cd1387e0bfa37b468e3137b9a34e60f diff --git a/books/pru-cookbook/01case/case.rst b/books/pru-cookbook/01case/case.rst index a07cfd58bc8680fe869532cf85231cade6a39a95..6cc17c58218189564a949aa30f76d7034dc32e45 100644 --- a/books/pru-cookbook/01case/case.rst +++ b/books/pru-cookbook/01case/case.rst @@ -113,14 +113,14 @@ via the PRU that can be used out of the box. Just run: -.. code-block:: bash +.. code-block:: shell-session bone$ sudo rc_test_servos -f 10 -p 1.5 The ``-f 10`` says to use a frequency of 10 Hz and the ``-p 1.5`` says to set the position to ``1.5``. The range of positions is ``-1.5`` to ``1.5``. Run ``rc_test_servos -h`` to see all the options. -.. code-block:: bash +.. code-block:: shell-session bone$ rc_test_servos -h @@ -229,9 +229,9 @@ Solution The forth encoder can be implemented on the PRU. If you run ``rc_test_encoders_eqep`` on the Blue, you will see the output of encoders E1-E3 which are connected to the eEQP hardware. -.. code-block:: bash +.. code-block:: shell-session - bone$ *rc_test_encoders_eqep* + bone$ rc_test_encoders_eqep Raw encoder positions E1 | E2 | E3 | @@ -288,13 +288,13 @@ Solution The forth encoder is implemented on the PRU and accessed with `sudo rc_test_encoders_pru` .. note:: - This command needs root permission, so the `sudo` is needed. + This command needs root permission, so the `sudo` is needed. The default password is `temppwd`. Here's what you will see -.. code-block:: bash +.. code-block:: shell-session - bone$ *sudo rc_test_encoders_pru* + bone$ sudo rc_test_encoders_pru [sudo] password for debian: Raw encoder position @@ -343,17 +343,17 @@ If you want to be running a newer image, there are instructions on the site for .. _case_installing_beaglelogic: -.. code-block:: bash +.. code-block:: shell-session :caption: Installing BeagleLogic - bone$ *git clone https://github.com/abhishek-kakkar/BeagleLogic* - bone$ *cd BeagleLogic/kernel* - bone$ *mv beaglelogic-00A0.dts beaglelogic-00A0.dts.orig* - bone$ *wget https://gist.githubusercontent.com/abhishek-kakkar/0761ef7b10822cff4b3efd194837f49c/raw/eb2cf6cfb59ff5ccb1710dcd7d4a40cc01cfc050/beaglelogic-00A0.dts* - bone$ *make overlay* - bone$ *sudo cp beaglelogic-00A0.dtbo /lib/firmware/* - bone$ *sudo update-initramfs -u -k \`uname -r`* - bone$ *sudo reboot* + bone$ git clone https://github.com/abhishek-kakkar/BeagleLogic + bone$ cd BeagleLogic/kernel + bone$ mv beaglelogic-00A0.dts beaglelogic-00A0.dts.orig + bone$ wget https://gist.githubusercontent.com/abhishek-kakkar/0761ef7b10822cff4b3efd194837f49c/raw/eb2cf6cfb59ff5ccb1710dcd7d4a40cc01cfc050/beaglelogic-00A0.dts + bone$ make overlay + bone$ sudo cp beaglelogic-00A0.dtbo /lib/firmware/ + bone$ sudo update-initramfs -u -k \`uname -r` + bone$ sudo reboot Once the Bone has rebooted, browse to 192.168.7.2:4000 where you'll see :ref:`case_beaglelogic_capture`. Here you can easily select the sample @@ -386,17 +386,17 @@ logic analyzer on the Bone with no additional hardware needed. The kernel interface makes it easy to control the PRUs through the command line. For example -.. code-block:: bash +.. code-block:: shell-session - bone$ *dd if=/dev/beaglelogic of=mydump bs=1M count=1* + bone$ dd if=/dev/beaglelogic of=mydump bs=1M count=1 will capture a binary dump from the PRUs. The sample rate and number of bits per sample can be controlled through ``/sys/``. -.. code-block:: bash +.. code-block:: shell-session - bone$ *cd /sys/devices/virtual/misc/beaglelogic* - bone$ *ls* + bone$ cd /sys/devices/virtual/misc/beaglelogic + bone$ ls buffers filltestpattern power state uevent bufunitsize lasterror samplerate subsystem dev memalloc sampleunit triggerflags @@ -407,9 +407,9 @@ bits per sample can be controlled through ``/sys/``. You can set the sample rate by simply writing to ``samplerate``. -.. code-block:: bash +.. code-block:: shell-session - bone$ *echo 100000000 > samplerate* + bone$ echo 100000000 > samplerate `sysfs attributes Reference <https://beaglelogic.readthedocs.io/en/latest/sysfs_attributes.html>`_ has more details on configuring via sysfs. @@ -417,9 +417,9 @@ has more details on configuring via sysfs. If you run ``dmesg -Hw`` in another window you can see when a capture is started and stopped. -.. code-block:: bash +.. code-block:: shell-session - bone$ *dmesg -Hw* + bone$ dmesg -Hw [Jul25 08:46] misc beaglelogic: capture started with sample rate=100000000 Hz, sampleunit=1, triggerflags=0 [ +0.086261] misc beaglelogic: capture session ended @@ -583,11 +583,11 @@ explaining how the PRUs get this type of performance. .. _case_e1.31_example: - .. literalinclude:: code/e1.31-test.py + .. literalinclude:: ../code/01start/e1.31-test.py :caption: e1.31-test.py -Example of generating packets to control the NeoPixels :linenos: - :download:`e1.31-test.py <code/e1.31-test.py>` + :download:`e1.31-test.py <../code/01start/e1.31-test.py>` .. TODO document the code @@ -748,10 +748,10 @@ following instructions at https://xlights.org/releases/. Run xLights and you'll see :ref:`case_xlights_setup`. -.. code-block:: bash +.. code-block:: shell-session - host$ *chmod +x xLights-2021.18-x86_64.AppImage* - host$ *./xLights-2021.18-x86_64.AppImage* + host$ chmod +x xLights-2021.18-x86_64.AppImage + host$ ./xLights-2021.18-x86_64.AppImage .. TODO update the figures. @@ -985,7 +985,7 @@ You can `build simpPRU <https://simppru.readthedocs.io/en/latest/install/build/> source, more easily just `install it <https://simppru.readthedocs.io/en/latest/install/install/>`_. On the Beagle run: -.. code-block:: bash +.. code-block:: shell-session bone$ wget https://github.com/VedantParanjape/simpPRU/releases/download/1.4/simppru-1.4-armhf.deb bone$ sudo dpkg -i simppru-1.4-armhf.deb @@ -996,15 +996,15 @@ Now, suppose you wanted to run the `LED blink <https://simppru.readthedocs.io/en/latest/examples/led_blink/>`_ example which is reproduced here. -.. literalinclude:: code/blink.sim +.. literalinclude:: ../code/01start/blink.sim :caption: LED Blink (blink.sim) :linenos: -:download:`blink.sim <code/blink.sim>` +:download:`blink.sim <../code/01start/blink.sim>` Just run simppru -.. code-block:: bash +.. code-block:: shell-session bone$ simppru blink.sim --load Detected TI AM335x PocketBeagle @@ -1019,7 +1019,7 @@ Detected TI AM335x PocketBeagle The +--load+ flag caused the compiled code to be copied to +/lib/firmware+. To start just do: -.. code-block:: bash +.. code-block:: shell-session bone$ cd /dev/remoteproc/pruss-core0/ bone$ ls diff --git a/books/pru-cookbook/01case/code/blink.sim b/books/pru-cookbook/01case/code/blink.sim deleted file mode 100644 index 212a21689e76170ad44112b926a0c4300e0c03a4..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/blink.sim +++ /dev/null @@ -1,7 +0,0 @@ -/* From: https://simppru.readthedocs.io/en/latest/examples/led_blink/ */ -while : 1 == 1 { - digital_write(P1_31, true); - delay(250); /* Delay 250 ms */ - digital_write(P1_31, false); - delay(250); -} diff --git a/books/pru-cookbook/01case/code/circle.py b/books/pru-cookbook/01case/code/circle.py deleted file mode 100755 index 1feb41cc089af343f1f2c490deef92853965bee4..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/circle.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python3 - -"""A demo client for Open Pixel Control -http://github.com/zestyping/openpixelcontrol - -Runs an LED around in a circle - -""" - -import time -import opc - -ADDRESS = 'localhost:7890' - -# Create a client object -client = opc.Client(ADDRESS) - -# Test if it can connect -if client.can_connect(): - print('connected to %s' % ADDRESS) -else: - # We could exit here, but instead let's just print a warning - # and then keep trying to send pixels in case the server - # appears later - print('WARNING: could not connect to %s' % ADDRESS) - -# Send pixels forever -STR_LEN=16 -for i in range(STR_LEN): - leds = [(0, 0, 0)] * STR_LEN -leds[0] = (0, 127, 0) - -while True: - tmp = leds[0] - for i in range(STR_LEN-1): - leds[i] = leds[i+1] - leds[-1] = tmp - if client.put_pixels(leds, channel=0): - print('sent') - else: - print('not connected') - time.sleep(0.1) - diff --git a/books/pru-cookbook/01case/code/e1.31-test.py b/books/pru-cookbook/01case/code/e1.31-test.py deleted file mode 100755 index 6016c9eb9e879a6d21f8ccf8fd20ed32bd4c45b3..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/e1.31-test.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python3 -# Controls a NeoPixel (WS2812) string via E1.31 and FPP -# https://pypi.org/project/sacn/ -# https://github.com/FalconChristmas/fpp/releases -import sacn -import time - -# provide an IP-Address to bind to if you are using Windows and want to use multicast -sender = sacn.sACNsender("192.168.7.1") -sender.start() # start the sending thread -sender.activate_output(1) # start sending out data in the 1st universe -sender[1].multicast = False # set multicast to True -sender[1].destination = "192.168.7.2" # or provide unicast information. -sender.manual_flush = True # turning off the automatic sending of packets -# Keep in mind that if multicast is on, unicast is not used -LEDcount = 24 -# Have green fade is as it goes -data = [] -for i in range(LEDcount): - data.append(0) # Red - data.append(i) # Green - data.append(0) # Blue -sender[1].dmx_data = data -sender.flush() -time.sleep(0.5) - -# Turn off all LEDs -data=[] -for i in range(3*LEDcount): - data.append(0) -sender.flush() -sender[1].dmx_data = data -time.sleep(0.5) - -# Have red fade in -data = [] -for i in range(LEDcount): - data.append(i) - data.append(0) - data.append(0) -sender[1].dmx_data = data -sender.flush() -time.sleep(0.25) - -# Make LED circle 5 times -for j in range(15): - for i in range(LEDcount-1): - data[3*i+0] = 0 - data[3*i+1] = 0 - data[3*i+2] = 0 - data[3*i+3] = 0 - data[3*i+4] = 64 - data[3*i+5] = 0 - sender[1].dmx_data = data - sender.flush() - time.sleep(0.02) -# Wrap around - i = LEDcount-1 - data[0] = 0 - data[1] = 64 - data[2] = 0 - data[3*i+0] = 0 - data[3*i+1] = 0 - data[3*i+2] = 0 - sender[1].dmx_data = data - sender.flush() - time.sleep(0.02) - -time.sleep(2) # send the data for 10 seconds -sender.stop() # do not forget to stop the sender diff --git a/books/pru-cookbook/01case/code/encoder_setup.sh b/books/pru-cookbook/01case/code/encoder_setup.sh deleted file mode 100755 index ffc4ad68842fb6314173b523425295893cd05fc1..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/encoder_setup.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -# Configure the pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine - -# Configure eQEP pins -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_92 P9_27 P8_35 P8_33 P8_12 P8_11 P8_41 P8_42" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P1_31 P2_34 P2_10 P2_24 P2_33" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin qep - config-pin -q $pin -done - -########################################## -# Configure PRU pins -if [ $machine = "Black" ]; then - echo " Found" - pins="P8_16 P8_15" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P2_09 P2_18" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruin - config-pin -q $pin -done diff --git a/books/pru-cookbook/01case/code/fire.fseq b/books/pru-cookbook/01case/code/fire.fseq deleted file mode 100644 index 4bad5ae76476a87bb7bb71e853e3412b1fc63f29..0000000000000000000000000000000000000000 Binary files a/books/pru-cookbook/01case/code/fire.fseq and /dev/null differ diff --git a/books/pru-cookbook/01case/code/logic_install.sh b/books/pru-cookbook/01case/code/logic_install.sh deleted file mode 100644 index 7fb76122b55b55da9e50ea2a084b1242b8e30b78..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/logic_install.sh +++ /dev/null @@ -1,34 +0,0 @@ -# Instructions for installing BeagleLogic -# https://beaglelogic.readthedocs.io/en/latest/index.html -# From: https://github.com/abhishek-kakkar/BeagleLogic/wiki - -# beaglelogic is installed on the 4.9 kernel, but not the 4.14, so -# if you are running 4.14, switch to 4.9 -sudo /opt/scripts/tools/update_kernel.sh --lts-4_9 -sudo reboot - -git clone https://github.com/abhishek-kakkar/BeagleLogic -cd BeagleLogic -sudo ./install.sh -sudo reboot - -# Now the kernel driver headers -sudo apt install linux-headers-`uname -r` - -modinfo beaglelogic -modprobe beaglelogic - -# From: https://beaglelogic.readthedocs.io/en/latest - -# Here's what works from abhishek -git clone https://github.com/abhishek-kakkar/BeagleLogic -cd BeagleLogic -# 1. Get the dts file from this gist (https://gist.github.com/abhishek-kakkar/0761ef7b10822cff4b3efd194837f49c) - -# 2. cd to 'BeagleLogic/kernel' directory. Put the dts file there. (edited) -# 3. Run 'make overlay' -# 4. Run 'sudo cp -v beaglelogic-00A0.dtbo /lib/firmware/' (edited) -# 5. Run 'sudo update-initramfs -u -k ``uname -r``' (edited) -# (single backticks only, apparently Slack treats single backtick as code) (edited) -# 6. Reboot -# 7. Browse to bone:4000 diff --git a/books/pru-cookbook/01case/code/main_pru1.c b/books/pru-cookbook/01case/code/main_pru1.c deleted file mode 100644 index 2216a9ed79efeba68e5400519ff246e08734a246..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/main_pru1.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Source Modified by Zubeen Tolani < ZeekHuge - zeekhuge@gmail.com > - * Based on the examples distributed by TI - * - * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_pru1.h" - -// The function is defined in pru1_asm_blinky.asm in same dir -// We just need to add a declaration here, the definition can be -// separately linked -extern void start(void); - -void main(void) -{ - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - start(); -} - diff --git a/books/pru-cookbook/01case/code/my-config.json b/books/pru-cookbook/01case/code/my-config.json deleted file mode 100644 index d1534cfff15f46bbabb10068c01542bb721583c4..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/my-config.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "outputMode": "ws281x", - "outputMapping": "original-ledscape", - "demoMode": "fade", - "ledsPerStrip": 16, - "usedStripCount": 1, - "colorChannelOrder": "BRG", - "opcTcpPort": 7890, - "opcUdpPort": 7890, - "enableInterpolation": false, - "enableDithering": false, - "enableLookupTable": true, - "lumCurvePower": 2.0000, - "whitePoint": { - "red": 0.9000, - "green": 1.0000, - "blue": 1.0000 - } -} diff --git a/books/pru-cookbook/01case/code/opc.py b/books/pru-cookbook/01case/code/opc.py deleted file mode 100755 index 36a3bbd6b76e7ff8e6660ea7b163da2271bbe696..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/opc.py +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env python - -"""Python Client library for Open Pixel Control -http://github.com/zestyping/openpixelcontrol - -Sends pixel values to an Open Pixel Control server to be displayed. -http://openpixelcontrol.org/ - -Recommended use: - - import opc - - # Create a client object - client = opc.Client('localhost:7890') - - # Test if it can connect (optional) - if client.can_connect(): - print('connected to %s' % ADDRESS) - else: - # We could exit here, but instead let's just print a warning - # and then keep trying to send pixels in case the server - # appears later - print('WARNING: could not connect to %s' % ADDRESS) - - # Send pixels forever at 30 frames per second - while True: - my_pixels = [(255, 0, 0), (0, 255, 0), (0, 0, 255)] - if client.put_pixels(my_pixels, channel=0): - print('...') - else: - print('not connected') - time.sleep(1/30.0) - -""" - -import socket -import struct -import sys - -SET_PIXEL_COLOURS = 0 # "Set pixel colours" command (see openpixelcontrol.org) - - -class Client(object): - def __init__(self, server_ip_port, long_connection=True, verbose=False): - """Create an OPC client object which sends pixels to an OPC server. - - server_ip_port should be an ip:port or hostname:port as a single string. - For example: '127.0.0.1:7890' or 'localhost:7890' - - There are two connection modes: - * In long connection mode, we try to maintain a single long-lived - connection to the server. If that connection is lost we will try to - create a new one whenever put_pixels is called. This mode is best - when there's high latency or very high framerates. - * In short connection mode, we open a connection when it's needed and - close it immediately after. This means creating a connection for each - call to put_pixels. Keeping the connection usually closed makes it - possible for others to also connect to the server. - - A connection is not established during __init__. To check if a - connection will succeed, use can_connect(). - - If verbose is True, the client will print debugging info to the console. - - """ - self.verbose = verbose - - self._long_connection = long_connection - - self._ip, self._port = server_ip_port.split(':') - self._port = int(self._port) - - self._socket = None # will be None when we're not connected - - def _debug(self, m): - if self.verbose: - print(' %s' % str(m)) - - def _ensure_connected(self): - """Set up a connection if one doesn't already exist. - - Return True on success or False on failure. - - """ - if self._socket: - self._debug('_ensure_connected: already connected, doing nothing') - return True - - try: - self._debug('_ensure_connected: trying to connect...') - self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self._socket.settimeout(1) - self._socket.connect((self._ip, self._port)) - self._debug('_ensure_connected: ...success') - return True - except socket.error: - self._debug('_ensure_connected: ...failure') - self._socket = None - return False - - def disconnect(self): - """Drop the connection to the server, if there is one.""" - self._debug('disconnecting') - if self._socket: - self._socket.close() - self._socket = None - - def can_connect(self): - """Try to connect to the server. - - Return True on success or False on failure. - - If in long connection mode, this connection will be kept and re-used for - subsequent put_pixels calls. - - """ - success = self._ensure_connected() - if not self._long_connection: - self.disconnect() - return success - - def put_pixels(self, pixels, channel=0): - """Send the list of pixel colors to the OPC server on the given channel. - - channel: Which strand of lights to send the pixel colors to. - Must be an int in the range 0-255 inclusive. - 0 is a special value which means "all channels". - - pixels: A list of 3-tuples representing rgb colors. - Each value in the tuple should be in the range 0-255 inclusive. - For example: [(255, 255, 255), (0, 0, 0), (127, 0, 0)] - Floats will be rounded down to integers. - Values outside the legal range will be clamped. - - Will establish a connection to the server as needed. - - On successful transmission of pixels, return True. - On failure (bad connection), return False. - - The list of pixel colors will be applied to the LED string starting - with the first LED. It's not possible to send a color just to one - LED at a time (unless it's the first one). - - """ - self._debug('put_pixels: connecting') - is_connected = self._ensure_connected() - if not is_connected: - self._debug('put_pixels: not connected. ignoring these pixels.') - return False - - # build OPC message - command = SET_PIXEL_COLOURS - header = struct.pack('>BBH', channel, SET_PIXEL_COLOURS, len(pixels)*3) - pieces = [struct.pack( - 'BBB', - min(255, max(0, int(r))), - min(255, max(0, int(g))), - min(255, max(0, int(b))) - ) for r, g, b in pixels] - if bytes is str: - message = header + ''.join(pieces) - else: - message = header + b''.join(pieces) - - self._debug('put_pixels: sending pixels to server') - try: - self._socket.send(message) - except socket.error: - self._debug('put_pixels: connection lost. could not send pixels.') - self._socket = None - return False - - if not self._long_connection: - self._debug('put_pixels: disconnecting') - self.disconnect() - - return True diff --git a/books/pru-cookbook/01case/code/pru1-servo.asm b/books/pru-cookbook/01case/code/pru1-servo.asm deleted file mode 100644 index c8e66e5234214137be6c7f7a781083c21061190e..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/pru1-servo.asm +++ /dev/null @@ -1,162 +0,0 @@ -;* -;* Copyright (C) 2016 Zubeen Tolani <ZeekHuge - zeekhuge@gmail.com> -;* -;* This file is as an example to show how to develope -;* and compile inline assembly code for PRUs -;* -;* This program is free software; you can redistribute it and/or modify -;* it under the terms of the GNU General Public License version 2 as -;* published by the Free Software Foundation. - - - .cdecls "main_pru1.c" - -DELAY .macro time, reg - LDI32 reg, time - QBEQ $E?, reg, 0 -$M?: SUB reg, reg, 1 - QBNE $M?, reg, 0 -$E?: - .endm - - - .clink - .global start -start: - LDI R30, 0xFFFF - DELAY 10000000, r11 - LDI R30, 0x0000 - DELAY 10000000, r11 -; JMP start - -; HALT - - -; these pin definitions are specific to SD-101C Robotics Cape - .asg r30.t8, CH1BIT ; P8_27 - .asg r30.t10, CH2BIT ; P8_28 - .asg r30.t9, CH3BIT ; P8_29 - .asg r30.t11, CH4BIT ; P8_30 - .asg r30.t6, CH5BIT ; P8_39 - .asg r30.t7, CH6BIT ; P8_40 - .asg r30.t4, CH7BIT ; P8_41 - .asg r30.t5, CH8BIT ; P8_42 - - .asg C4, CONST_SYSCFG - .asg C28, CONST_PRUSHAREDRAM - - .asg 0x22000, PRU0_CTRL - .asg 0x24000, PRU1_CTRL ; page 19 - .asg 0x28, CTPPR0 ; page 75 - - .asg 0x000, OWN_RAM - .asg 0x020, OTHER_RAM - .asg 0x100, SHARED_RAM ; This is so prudebug can find it. - - LBCO &r0, CONST_SYSCFG, 4, 4 ; Enable OCP master port - CLR r0, r0, 4 ; Clear SYSCFG[STANDBY_INIT] to enable OCP master port - SBCO &r0, CONST_SYSCFG, 4, 4 - -; Configure the programmable pointer register for PRU0 by setting c28_pointer[15:0] - LDI r0, SHARED_RAM ; Set C28 to point to shared RAM - LDI32 r1, PRU1_CTRL + CTPPR0 ; Note we use beginning of shared ram unlike example which - SBBO &r0, r1, 0, 4 ; page 25 - - LDI r9, 0x0 ; erase r9 to use to use later - - LDI r0, 0x0 ; clear internal counters - LDI r1, 0x0 - LDI r2, 0x0 - LDI r3, 0x0 - LDI r4, 0x0 - LDI r5, 0x0 - LDI r6, 0x0 - LDI32 r7, 0x0 - LDI r30, 0x0 ; turn off GPIO outputs - - -; Beginning of loop, should always take 48 instructions to complete -CH1: - QBEQ CLR1, r0, 0 ; If timer is 0, jump to clear channel - SET r30, CH1BIT ; If non-zero turn on the corresponding channel - SUB r0, r0, 1 ; Subtract one from timer - CLR r9, r9.t1 ; waste a cycle for timing - SBCO &r9, CONST_PRUSHAREDRAM, 0, 4 ; write 0 to shared memory -CH2: - QBEQ CLR2, r1, 0 - SET r30, CH2BIT - SUB r1, r1, 1 - CLR r9, r9.t1 - SBCO &r9, CONST_PRUSHAREDRAM, 4, 4 -CH3: - QBEQ CLR3, r2, 0 - SET r30, CH3BIT - SUB r2, r2, 1 - CLR r9, r9.t1 - SBCO &r9, CONST_PRUSHAREDRAM, 8, 4 -CH4: - QBEQ CLR4, r3, 0 - SET r30, CH4BIT - SUB r3, r3, 1 - CLR r9, r9.t1 - SBCO &r9, CONST_PRUSHAREDRAM, 12, 4 -CH5: - QBEQ CLR5, r4, 0 - SET r30, CH5BIT - SUB r4, r4, 1 - CLR r9, r9.t1 - SBCO &r9, CONST_PRUSHAREDRAM, 16, 4 -CH6: - QBEQ CLR6, r5, 0 - SET r30, CH6BIT - SUB r5, r5, 1 - CLR r9, r9.t1 - SBCO &r9, CONST_PRUSHAREDRAM, 20, 4 -CH7: - QBEQ CLR7, r6, 0 - SET r30, CH7BIT - SUB r6, r6, 1 - CLR r9, r9.t1 - SBCO &r9, CONST_PRUSHAREDRAM, 24, 4 -CH8: - QBEQ CLR8, r7, 0 - SET r30, CH8BIT - SUB r7, r7, 1 - SBCO &r9, CONST_PRUSHAREDRAM, 28, 4 - - QBA CH1 ; return to beginning of loop - ; no need to waste a cycle for timing here because of the QBA above - - -CLR1: - CLR r30, CH1BIT ; turn off the corresponding channel - LBCO &r0, CONST_PRUSHAREDRAM, 0, 4 ; Load new timer register - QBA CH2 -CLR2: - CLR r30, CH2BIT - LBCO &r1, CONST_PRUSHAREDRAM, 4, 4 - QBA CH3 -CLR3: - CLR r30, CH3BIT - LBCO &r2, CONST_PRUSHAREDRAM, 8, 4 - QBA CH4 -CLR4: - CLR r30, CH4BIT - LBCO &r3, CONST_PRUSHAREDRAM, 12, 4 - QBA CH5 -CLR5: - CLR r30, CH5BIT - LBCO &r4, CONST_PRUSHAREDRAM, 16, 4 - QBA CH6 -CLR6: - CLR r30, CH6BIT - LBCO &r5, CONST_PRUSHAREDRAM, 20, 4 - QBA CH7 -CLR7: - CLR r30, CH7BIT - LBCO &r6, CONST_PRUSHAREDRAM, 24, 4 - QBA CH8 -CLR8: - CLR r30, CH8BIT - LBCO &r7, CONST_PRUSHAREDRAM, 28, 4 - QBA CH1 ; return to beginning of loop diff --git a/books/pru-cookbook/01case/code/servo-test.c b/books/pru-cookbook/01case/code/servo-test.c deleted file mode 100644 index 1f94e274e573223dcf84b4bd111f9a3df16ac867..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/servo-test.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * - * servo tester - * (c) Copyright 2016 - * Mark A. Yoder, 20-July-2016 - * - */ - -#include <stdio.h> -#include <fcntl.h> -#include <sys/mman.h> -#include "robotics_cape_defs.h" - -#define PRU_ADDR 0x4A300000 // Start of PRU memory Page 184 am335x TRM -#define PRU_LEN 0x80000 // Length of PRU memory -#define PRU_SHAREDMEM 0x10000 // Offset to shared memory - -unsigned int *prusharedMem_32int_ptr; // Points to the start of the shared memory - -/******************************************************************************* -* int send_servo_pulse_us(int ch, int us) -* -* Sends a single pulse of duration us (microseconds) to a single channel (ch) -*******************************************************************************/ -int send_servo_pulse_us(int ch, int us) { - // Sanity Checks - if(ch<1 || ch>SERVO_CHANNELS){ - printf("ERROR: Servo Channel must be between 1&%d\n", SERVO_CHANNELS); - return -1; - } if(prusharedMem_32int_ptr == NULL){ - printf("ERROR: PRU servo Controller not initialized\n"); - return -1; - } - // PRU runs at 200Mhz. find #loops needed - unsigned int num_loops = ((us*200.0)/PRU_SERVO_LOOP_INSTRUCTIONS); - // printf("num_loops: %d\n", num_loops); - // write to PRU shared memory - prusharedMem_32int_ptr[ch-1] = num_loops; - return 0; -} - -int main(int argc, char *argv[]) -{ - unsigned int *pru; // Points to start of PRU memory. - int fd; - printf("Servo tester\n"); - - fd = open ("/dev/mem", O_RDWR | O_SYNC); - if (fd == -1) { - printf ("ERROR: could not open /dev/mem.\n\n"); - return 1; - } - pru = mmap (0, PRU_LEN, PROT_READ | PROT_WRITE, MAP_SHARED, fd, PRU_ADDR); - if (pru == MAP_FAILED) { - printf ("ERROR: could not map memory.\n\n"); - return 1; - } - close(fd); - printf ("Using /dev/mem.\n"); - - prusharedMem_32int_ptr = pru + PRU_SHAREDMEM/4; // Points to start of shared memory - - // while(1) { - // printf("value to store: "); - // scanf("%d", &value); - // printf("Storing: %d in %lx\n", value, addr); - // pru[addr/4] = value; - // } - - int i; - while(1) { - for(i=1; i<=SERVO_CHANNELS; i++) { - send_servo_pulse_us(i, 10*i); - } - usleep(200); - } - - if(munmap(pru, PRU_LEN)) { - printf("munmap failed\n"); - } else { - printf("munmap succeeded\n"); - } -} - diff --git a/books/pru-cookbook/01case/code/servos_setup.sh b/books/pru-cookbook/01case/code/servos_setup.sh deleted file mode 100755 index 330e8f34e30d7fd97d9368861ded65817222e903..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/01case/code/servos_setup.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P8_27 P8_28 P8_29 P8_30 P8_39 P8_40 P8_41 P8_42" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P2_35 P1_35 P1_02 P1_04" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruout - config-pin -q $pin -done \ No newline at end of file diff --git a/books/pru-cookbook/02start/code/Makefile b/books/pru-cookbook/02start/code/Makefile deleted file mode 100644 index a7557fdaa22988d89cec879477ded78522d7116f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/Makefile +++ /dev/null @@ -1 +0,0 @@ -include /var/lib/cloud9/common/Makefile diff --git a/books/pru-cookbook/02start/code/ai.notes b/books/pru-cookbook/02start/code/ai.notes deleted file mode 100644 index d11ac1d4288af4ac3f1cd5a5aa1ac6cec14cb97f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/ai.notes +++ /dev/null @@ -1,59 +0,0 @@ -Here are some differences between the AI and the Black for the PRU. - -Black -/sys/devices/platform/ocp/ - 4a326004.pruss-soc-bus/ - 4a300000.pruss/ - 4a334000.pru/remoteproc/remoteproc1 - 4a338000.pru/remoteproc/remoteproc2 - - -AI -/sys/devices/platform/44000000.ocp/ - 4b226004.pruss-soc-bus/ - 4b200000.pruss/ - 4b234000.pru/remoteproc/remoteproc0 - 4b238000.pru/remoteproc/remoteproc1 - - - 4b2a6004.pruss-soc-bus/ - 4b280000.pruss/ - 4b2b4000.pru/remoteproc/remoteproc2 - 4b2b8000.pru/remoteproc/remoteproc3 - -LED addresses -https://github.com/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti/src/arm/am5729-beagleboneai.dts#L134-L171 - led0 { - label = "beaglebone:green:usr0"; - gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "heartbeat"; - default-state = "off"; - }; - - led1 { - label = "beaglebone:green:usr1"; - gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "mmc0"; - default-state = "off"; - }; - - led2 { - label = "beaglebone:green:usr2"; - gpios = <&gpio3 15 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "cpu"; - default-state = "off"; - }; - - led3 { - label = "beaglebone:green:usr3"; - gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "mmc1"; - default-state = "off"; - }; - - led4 { - label = "beaglebone:green:usr4"; - gpios = <&gpio3 7 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "phy0assoc"; - -GPIO Addresses: Page 404 for TRM \ No newline at end of file diff --git a/books/pru-cookbook/02start/code/hello.pru0.c b/books/pru-cookbook/02start/code/hello.pru0.c deleted file mode 100644 index 239a7ad04f17611a30d75d87d735a0ac6cc3ef23..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/hello.pru0.c +++ /dev/null @@ -1,35 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register unsigned int __R30; -volatile register unsigned int __R31; - -void main(void) { - int i; - - uint32_t *gpio1 = (uint32_t *)GPIO1; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - for(i=0; i<10; i++) { - gpio1[GPIO_SETDATAOUT] = USR3; // the USR3 LED on - - __delay_cycles(500000000/5); // Wait 1/2 second - - gpio1[GPIO_CLEARDATAOUT] = USR3; - - __delay_cycles(500000000/5); - - } - __halt(); -} - -// Turns off triggers -#pragma DATA_SECTION(init_pins, ".init_pins") -#pragma RETAIN(init_pins) -const char init_pins[] = - "/sys/class/leds/beaglebone:green:usr3/trigger\0none\0" \ - "\0\0"; diff --git a/books/pru-cookbook/02start/code/hello.pru1_1.c b/books/pru-cookbook/02start/code/hello.pru1_1.c deleted file mode 100644 index 51a1b351f45c3128a4e81b8dbaec39ec11b54259..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/hello.pru1_1.c +++ /dev/null @@ -1,35 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register unsigned int __R30; -volatile register unsigned int __R31; - -void main(void) { - int i; - - uint32_t *gpio3 = (uint32_t *)GPIO3; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - for(i=0; i<10; i++) { - gpio3[GPIO_SETDATAOUT] = USR3; // the USR3 LED on - - __delay_cycles(500000000/5); // Wait 1/2 second - - gpio3[GPIO_CLEARDATAOUT] = USR3; - - __delay_cycles(500000000/5); - - } - __halt(); -} - -// Turns off triggers -#pragma DATA_SECTION(init_pins, ".init_pins") -#pragma RETAIN(init_pins) -const char init_pins[] = - "/sys/class/leds/beaglebone:green:usr3/trigger\0none\0" \ - "\0\0"; diff --git a/books/pru-cookbook/02start/code/hello2.pru0.c b/books/pru-cookbook/02start/code/hello2.pru0.c deleted file mode 100644 index a9be0143cf80b8a933197d8ceabd95e4353a76fa..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/hello2.pru0.c +++ /dev/null @@ -1,42 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register unsigned int __R30; -volatile register unsigned int __R31; - -void main(void) { - int i; - - uint32_t *gpio1 = (uint32_t *)GPIO1; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - for(i=0; i<10; i++) { - gpio1[GPIO_SETDATAOUT] = USR1; // the USR3 LED on - gpio1[GPIO_CLEARDATAOUT] = USR2; - - // __R30 |= gpio; // Set the GPIO pin to 1 - - __delay_cycles(500000000/5); // Wait 1/2 second - - gpio1[GPIO_CLEARDATAOUT] = USR1; - gpio1[GPIO_SETDATAOUT] = USR2; - - // __R30 &= ~gpio; // Clearn the GPIO pin - - __delay_cycles(500000000/5); - - } - __halt(); -} - -// Turns off triggers -#pragma DATA_SECTION(init_pins, ".init_pins") -#pragma RETAIN(init_pins) -const char init_pins[] = - "/sys/class/leds/beaglebone:green:usr1/trigger\0none\0" \ - "/sys/class/leds/beaglebone:green:usr2/trigger\0none\0" \ - "\0\0"; diff --git a/books/pru-cookbook/02start/code/hello2.pru1.c b/books/pru-cookbook/02start/code/hello2.pru1.c deleted file mode 100644 index c34558708b22da2109f5520bab9d631550f89f0b..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/hello2.pru1.c +++ /dev/null @@ -1,43 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register unsigned int __R30; -volatile register unsigned int __R31; - -void main(void) { - int i; - - uint32_t *gpio1 = (uint32_t *)GPIO1; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - for(i=0; i<10; i++) { - gpio1[GPIO_SETDATAOUT] = USR1; // the USR3 LED on - gpio1[GPIO_CLEARDATAOUT] = USR2; - - // __R30 |= gpio; // Set the GPIO pin to 1 - - __delay_cycles(500000000/5); // Wait 1/2 second - - gpio1[GPIO_CLEARDATAOUT] = USR1; - gpio1[GPIO_SETDATAOUT] = USR2; - - // __R30 &= ~gpio; // Clearn the GPIO pin - - __delay_cycles(500000000/5); - - } - __halt(); -} - -// Turns off triggers -#pragma DATA_SECTION(init_pins, ".init_pins") -#pragma RETAIN(init_pins) -const char init_pins[] = - "/sys/class/leds/beaglebone:green:usr1/trigger\0none\0" \ - "/sys/class/leds/beaglebone:green:usr2/trigger\0none\0" \ - "\0\0"; - diff --git a/books/pru-cookbook/02start/code/hello2.pru1_0.c b/books/pru-cookbook/02start/code/hello2.pru1_0.c deleted file mode 100644 index 564e1bc9b8c0fe7df8c21df6594f519d92470690..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/hello2.pru1_0.c +++ /dev/null @@ -1,63 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register unsigned int __R30; -volatile register unsigned int __R31; - -void main(void) { - int i; - - // uint32_t *gpio1 = (uint32_t *)GPIO1; - // uint32_t *gpio2 = (uint32_t *)GPIO2; - uint32_t *gpio3 = (uint32_t *)GPIO3; - // uint32_t *gpio4 = (uint32_t *)GPIO4; - uint32_t *gpio5 = (uint32_t *)GPIO5; - uint32_t *gpio6 = (uint32_t *)GPIO6; - // uint32_t *gpio7 = (uint32_t *)GPIO7; - uint32_t *gpio8 = (uint32_t *)GPIO8; - - // Select which pins to toggle. These are all on pru1_1 - uint32_t gpio = P9_16 | P8_15 | P8_16 | P8_26; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - for(i=0; i<100; i++) { - gpio5[GPIO_SETDATAOUT] = USR1; // Turn the USR1 LED on - gpio3[GPIO_CLEARDATAOUT] = USR2; - gpio8[GPIO_SETDATAOUT] = P8_17; - gpio6[GPIO_SETDATAOUT] = P9_25; - - __R30 |= gpio; // Set the GPIO pin to 1 - - __delay_cycles(500000000/5); // Wait 1/2 second - - gpio5[GPIO_CLEARDATAOUT] = USR1; - gpio3[GPIO_SETDATAOUT] = USR2; - gpio8[GPIO_CLEARDATAOUT] = P8_17; - gpio6[GPIO_CLEARDATAOUT] = P9_25; - - __R30 &= ~gpio; // Clear the GPIO pin - - __delay_cycles(500000000/5); - - if((__R31&P8_19) == P8_19) { - gpio3[GPIO_CLEARDATAOUT] = USR3; // Turn on LED - } else - gpio3[GPIO_SETDATAOUT] = USR3; // Turn off LED - } - __halt(); -} - -// Turns off triggers -#pragma DATA_SECTION(init_pins, ".init_pins") -#pragma RETAIN(init_pins) -const char init_pins[] = - "/sys/class/leds/beaglebone:green:usr1/trigger\0none\0" \ - "/sys/class/leds/beaglebone:green:usr2/trigger\0none\0" \ - "/sys/class/gpio/export\0 177\0" \ - "/sys/class/gpio/gpio177/direction\0out\0" \ - "\0\0"; - diff --git a/books/pru-cookbook/02start/code/hello2.pru1_1.c b/books/pru-cookbook/02start/code/hello2.pru1_1.c deleted file mode 100644 index 564e1bc9b8c0fe7df8c21df6594f519d92470690..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/hello2.pru1_1.c +++ /dev/null @@ -1,63 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register unsigned int __R30; -volatile register unsigned int __R31; - -void main(void) { - int i; - - // uint32_t *gpio1 = (uint32_t *)GPIO1; - // uint32_t *gpio2 = (uint32_t *)GPIO2; - uint32_t *gpio3 = (uint32_t *)GPIO3; - // uint32_t *gpio4 = (uint32_t *)GPIO4; - uint32_t *gpio5 = (uint32_t *)GPIO5; - uint32_t *gpio6 = (uint32_t *)GPIO6; - // uint32_t *gpio7 = (uint32_t *)GPIO7; - uint32_t *gpio8 = (uint32_t *)GPIO8; - - // Select which pins to toggle. These are all on pru1_1 - uint32_t gpio = P9_16 | P8_15 | P8_16 | P8_26; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - for(i=0; i<100; i++) { - gpio5[GPIO_SETDATAOUT] = USR1; // Turn the USR1 LED on - gpio3[GPIO_CLEARDATAOUT] = USR2; - gpio8[GPIO_SETDATAOUT] = P8_17; - gpio6[GPIO_SETDATAOUT] = P9_25; - - __R30 |= gpio; // Set the GPIO pin to 1 - - __delay_cycles(500000000/5); // Wait 1/2 second - - gpio5[GPIO_CLEARDATAOUT] = USR1; - gpio3[GPIO_SETDATAOUT] = USR2; - gpio8[GPIO_CLEARDATAOUT] = P8_17; - gpio6[GPIO_CLEARDATAOUT] = P9_25; - - __R30 &= ~gpio; // Clear the GPIO pin - - __delay_cycles(500000000/5); - - if((__R31&P8_19) == P8_19) { - gpio3[GPIO_CLEARDATAOUT] = USR3; // Turn on LED - } else - gpio3[GPIO_SETDATAOUT] = USR3; // Turn off LED - } - __halt(); -} - -// Turns off triggers -#pragma DATA_SECTION(init_pins, ".init_pins") -#pragma RETAIN(init_pins) -const char init_pins[] = - "/sys/class/leds/beaglebone:green:usr1/trigger\0none\0" \ - "/sys/class/leds/beaglebone:green:usr2/trigger\0none\0" \ - "/sys/class/gpio/export\0 177\0" \ - "/sys/class/gpio/gpio177/direction\0out\0" \ - "\0\0"; - diff --git a/books/pru-cookbook/02start/code/hello2.pru2_0.c b/books/pru-cookbook/02start/code/hello2.pru2_0.c deleted file mode 100644 index 564e1bc9b8c0fe7df8c21df6594f519d92470690..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/hello2.pru2_0.c +++ /dev/null @@ -1,63 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register unsigned int __R30; -volatile register unsigned int __R31; - -void main(void) { - int i; - - // uint32_t *gpio1 = (uint32_t *)GPIO1; - // uint32_t *gpio2 = (uint32_t *)GPIO2; - uint32_t *gpio3 = (uint32_t *)GPIO3; - // uint32_t *gpio4 = (uint32_t *)GPIO4; - uint32_t *gpio5 = (uint32_t *)GPIO5; - uint32_t *gpio6 = (uint32_t *)GPIO6; - // uint32_t *gpio7 = (uint32_t *)GPIO7; - uint32_t *gpio8 = (uint32_t *)GPIO8; - - // Select which pins to toggle. These are all on pru1_1 - uint32_t gpio = P9_16 | P8_15 | P8_16 | P8_26; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - for(i=0; i<100; i++) { - gpio5[GPIO_SETDATAOUT] = USR1; // Turn the USR1 LED on - gpio3[GPIO_CLEARDATAOUT] = USR2; - gpio8[GPIO_SETDATAOUT] = P8_17; - gpio6[GPIO_SETDATAOUT] = P9_25; - - __R30 |= gpio; // Set the GPIO pin to 1 - - __delay_cycles(500000000/5); // Wait 1/2 second - - gpio5[GPIO_CLEARDATAOUT] = USR1; - gpio3[GPIO_SETDATAOUT] = USR2; - gpio8[GPIO_CLEARDATAOUT] = P8_17; - gpio6[GPIO_CLEARDATAOUT] = P9_25; - - __R30 &= ~gpio; // Clear the GPIO pin - - __delay_cycles(500000000/5); - - if((__R31&P8_19) == P8_19) { - gpio3[GPIO_CLEARDATAOUT] = USR3; // Turn on LED - } else - gpio3[GPIO_SETDATAOUT] = USR3; // Turn off LED - } - __halt(); -} - -// Turns off triggers -#pragma DATA_SECTION(init_pins, ".init_pins") -#pragma RETAIN(init_pins) -const char init_pins[] = - "/sys/class/leds/beaglebone:green:usr1/trigger\0none\0" \ - "/sys/class/leds/beaglebone:green:usr2/trigger\0none\0" \ - "/sys/class/gpio/export\0 177\0" \ - "/sys/class/gpio/gpio177/direction\0out\0" \ - "\0\0"; - diff --git a/books/pru-cookbook/02start/code/hello2.pru2_1.c b/books/pru-cookbook/02start/code/hello2.pru2_1.c deleted file mode 100644 index 564e1bc9b8c0fe7df8c21df6594f519d92470690..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/hello2.pru2_1.c +++ /dev/null @@ -1,63 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register unsigned int __R30; -volatile register unsigned int __R31; - -void main(void) { - int i; - - // uint32_t *gpio1 = (uint32_t *)GPIO1; - // uint32_t *gpio2 = (uint32_t *)GPIO2; - uint32_t *gpio3 = (uint32_t *)GPIO3; - // uint32_t *gpio4 = (uint32_t *)GPIO4; - uint32_t *gpio5 = (uint32_t *)GPIO5; - uint32_t *gpio6 = (uint32_t *)GPIO6; - // uint32_t *gpio7 = (uint32_t *)GPIO7; - uint32_t *gpio8 = (uint32_t *)GPIO8; - - // Select which pins to toggle. These are all on pru1_1 - uint32_t gpio = P9_16 | P8_15 | P8_16 | P8_26; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - for(i=0; i<100; i++) { - gpio5[GPIO_SETDATAOUT] = USR1; // Turn the USR1 LED on - gpio3[GPIO_CLEARDATAOUT] = USR2; - gpio8[GPIO_SETDATAOUT] = P8_17; - gpio6[GPIO_SETDATAOUT] = P9_25; - - __R30 |= gpio; // Set the GPIO pin to 1 - - __delay_cycles(500000000/5); // Wait 1/2 second - - gpio5[GPIO_CLEARDATAOUT] = USR1; - gpio3[GPIO_SETDATAOUT] = USR2; - gpio8[GPIO_CLEARDATAOUT] = P8_17; - gpio6[GPIO_CLEARDATAOUT] = P9_25; - - __R30 &= ~gpio; // Clear the GPIO pin - - __delay_cycles(500000000/5); - - if((__R31&P8_19) == P8_19) { - gpio3[GPIO_CLEARDATAOUT] = USR3; // Turn on LED - } else - gpio3[GPIO_SETDATAOUT] = USR3; // Turn off LED - } - __halt(); -} - -// Turns off triggers -#pragma DATA_SECTION(init_pins, ".init_pins") -#pragma RETAIN(init_pins) -const char init_pins[] = - "/sys/class/leds/beaglebone:green:usr1/trigger\0none\0" \ - "/sys/class/leds/beaglebone:green:usr2/trigger\0none\0" \ - "/sys/class/gpio/export\0 177\0" \ - "/sys/class/gpio/gpio177/direction\0out\0" \ - "\0\0"; - diff --git a/books/pru-cookbook/02start/code/setup.sh b/books/pru-cookbook/02start/code/setup.sh deleted file mode 100755 index eaf9943a2c375bc9f16b158994492b1198997dda..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/setup.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -export TARGET=hello.pru0 - -echo TARGET=$TARGET diff --git a/books/pru-cookbook/02start/code/setup2.sh b/books/pru-cookbook/02start/code/setup2.sh deleted file mode 100755 index 76dd6713f4f55d364403bf6a187b68e2e66172b0..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/02start/code/setup2.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -export TARGET=hello2.pru1 - -echo TARGET=$TARGET diff --git a/books/pru-cookbook/02start/start.rst b/books/pru-cookbook/02start/start.rst index e7a40243ee96eba82267cd303db4d6ef9c25da5f..3889fa931a3ef4757e2b94df5d521ca723af9aa3 100644 --- a/books/pru-cookbook/02start/start.rst +++ b/books/pru-cookbook/02start/start.rst @@ -9,8 +9,9 @@ latest software image on your beagle, how to run the Cloud9 IDE and how to blink an LED. If you already have your Beagle and know your way around it, you can find the -code (and the whole book) on the PRU Cookbook github site: -https://github.com/MarkAYoder/PRUCookbook. +code at https://git.beagleboard.org/beagleboard/pru-cookbook-code and book +contents at https://git.beagleboard.org/docs/docs.beagleboard.io under the +books/pru-cookbook directory. Selecting a Beagle ******************** @@ -256,12 +257,12 @@ as shown in :ref:`start_c9_show_home`. If you want to edit files beyond your home directory you can link to the root file system by: -.. code-block:: bash +.. code-block:: shell-session - bone$ *cd* - bone$ *ln -s / root* - bone$ *cd root* - bone$ *ls* + bone$ cd + bone$ ln -s / root + bone$ cd root + bone$ ls bbb-uEnv.txt boot etc ID.txt lost+found mnt opt root sbin sys usr bin dev home lib media nfs-uEnv.txt proc run srv tmp var @@ -278,29 +279,29 @@ You are ready to start playing with the examples and need to find the code. Solution --------- -You can find the code (and the whole book) on the PRU Cookbook github site: -<https://github.com/MarkAYoder/PRUCookbook/tree/master/docs>. Just clone -it on your Beagle and then look in the *docs* directory. +You can find the code on the PRU Cookbook Code project on git.beagleboard.org: +https://git.beagleboard.org/beagleboard/pru-cookbook-code. Just clone +it on your Beagle. -.. code-block::bash - - bone$ *git clone https://github.com/MarkAYoder/PRUCookbook.git* - bone$ *cd PRUCookbook/docs/* - bone$ *ls -F* - 01case/ 05blocks/ book.adoc copyright.adoc index.html projects.adoc - 02start/ 06io/ book.html hack.sh* Makefile projects.html - 03details/ 07more/ book.pdf header.adoc notes.adoc style.adoc - 04debug/ 08ai/ common/ index.adoc notes.html style.html +.. code-block:: shell-session + bone$ git clone https://git.beagleboard.org/beagleboard/pru-cookbook-code + bone$ cd pru-cookbook-code + bone$ ls -F + 01case/ 03details/ 05blocks/ 07more/ README.md + 02start/ 04details/ 06io/ 08ai/ Each chapter has its own directory and within that directory is a **code** directory that has all of the code. -.. code-block::bash +.. code-block:: shell-session - bone$ *cd 02start/code/* - bone$ *ls* + bone$ cd 02start/ + bone$ ls hello.pru0.c hello.pru1_1.c Makefile setup.sh + ai.notes hello2.pru1_1.c hello2.pru2_1.c Makefile + hello2.pru0.c hello2.pru1.c hello.pru0.c setup2.sh* + hello2.pru1_0.c hello2.pru2_0.c hello.pru1_1.c setup.sh* Go and explore. @@ -322,19 +323,19 @@ is some code that blinks the ``USR3`` LED ten times using the PRU. .. _start_hello: -.. literalinclude:: code/hello.pru0.c +.. literalinclude:: ../code/02start/hello.pru0.c :caption: hello.pru0.c :linenos: -:download:`hello.pru0.c <code/hello.pru0.c>` +:download:`hello.pru0.c <../code/02start/hello.pru0.c>` Later chapters will go into details of how this code works, but if you want to run it right now do the following. -.. code-block:: bash +.. code-block:: shell-session - bone$ *git clone https://github.com/MarkAYoder/PRUCookbook.git* - bone$ *cd PRUCookbook/docs/02start/code* + bone$ git clone https://git.beagleboard.org/beagleboard/pru-cookbook-code + bone$ cd pru-cookbook-code/02start .. tip:: @@ -347,9 +348,9 @@ to run it right now do the following. Running Code on the Black or Pocket ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. code-block:: bash +.. code-block:: shell-session - bone$ *make TARGET=hello.pru0* + bone$ make TARGET=hello.pru0 /var/lib/cloud9/common/Makefile:28: MODEL=TI_AM335x_BeagleBone_Black,TARGET=hello.pru0,COMMON=/var/lib/cloud9/common /var/lib/cloud9/common/Makefile:147: GEN_DIR=/tmp/cloud9-examples,CHIP=am335x,PROC=pru,PRUN=0,PRU_DIR=/sys/class/remoteproc/remoteproc1,EXE=.out - Stopping PRU 0 @@ -366,9 +367,9 @@ Running Code on the Black or Pocket Running Code on the AI ~~~~~~~~~~~~~~~~~~~~~~~ -.. code-block:: bash +.. code-block:: shell-session - bone$ *make TARGET=hello.pru1_1* + bone$ make TARGET=hello.pru1_1 /var/lib/cloud9/common/Makefile:28: MODEL=BeagleBoard.org_BeagleBone_AI,TARGET=hello.pru1_1 - Stopping PRU 1_1 CC hello.pru1_1.c diff --git a/books/pru-cookbook/03details/code/Makefile b/books/pru-cookbook/03details/code/Makefile deleted file mode 100644 index a7557fdaa22988d89cec879477ded78522d7116f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/03details/code/Makefile +++ /dev/null @@ -1 +0,0 @@ -include /var/lib/cloud9/common/Makefile diff --git a/books/pru-cookbook/03details/code/am335x_pru.cmd b/books/pru-cookbook/03details/code/am335x_pru.cmd deleted file mode 100644 index 67005475fe282d8711b96425bc05f44d5ed6ad98..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/03details/code/am335x_pru.cmd +++ /dev/null @@ -1,87 +0,0 @@ -/****************************************************************************/ -/* AM335x_PRU.cmd */ -/* Copyright (c) 2015 Texas Instruments Incorporated */ -/* */ -/* Description: This file is a linker command file that can be used for */ -/* linking PRU programs built with the C compiler and */ -/* the resulting .out file on an AM335x device. */ -/****************************************************************************/ - --cr /* Link using C conventions */ - -/* Specify the System Memory Map */ -MEMORY -{ - PAGE 0: - PRU_IMEM : org = 0x00000000 len = 0x00002000 /* 8kB PRU0 Instruction RAM */ - - PAGE 1: - - /* RAM */ - - PRU_DMEM_0_1 : org = 0x00000000 len = 0x00002000 CREGISTER=24 /* 8kB PRU Data RAM 0_1 */ - PRU_DMEM_1_0 : org = 0x00002000 len = 0x00002000 CREGISTER=25 /* 8kB PRU Data RAM 1_0 */ - - PAGE 2: - PRU_SHAREDMEM : org = 0x00010000 len = 0x00003000 CREGISTER=28 /* 12kB Shared RAM */ - - DDR : org = 0x80000000 len = 0x00000100 CREGISTER=31 - L3OCMC : org = 0x40000000 len = 0x00010000 CREGISTER=30 - - - /* Peripherals */ - - PRU_CFG : org = 0x00026000 len = 0x00000044 CREGISTER=4 - PRU_ECAP : org = 0x00030000 len = 0x00000060 CREGISTER=3 - PRU_IEP : org = 0x0002E000 len = 0x0000031C CREGISTER=26 - PRU_INTC : org = 0x00020000 len = 0x00001504 CREGISTER=0 - PRU_UART : org = 0x00028000 len = 0x00000038 CREGISTER=7 - - DCAN0 : org = 0x481CC000 len = 0x000001E8 CREGISTER=14 - DCAN1 : org = 0x481D0000 len = 0x000001E8 CREGISTER=15 - DMTIMER2 : org = 0x48040000 len = 0x0000005C CREGISTER=1 - PWMSS0 : org = 0x48300000 len = 0x000002C4 CREGISTER=18 - PWMSS1 : org = 0x48302000 len = 0x000002C4 CREGISTER=19 - PWMSS2 : org = 0x48304000 len = 0x000002C4 CREGISTER=20 - GEMAC : org = 0x4A100000 len = 0x0000128C CREGISTER=9 - I2C1 : org = 0x4802A000 len = 0x000000D8 CREGISTER=2 - I2C2 : org = 0x4819C000 len = 0x000000D8 CREGISTER=17 - MBX0 : org = 0x480C8000 len = 0x00000140 CREGISTER=22 - MCASP0_DMA : org = 0x46000000 len = 0x00000100 CREGISTER=8 - MCSPI0 : org = 0x48030000 len = 0x000001A4 CREGISTER=6 - MCSPI1 : org = 0x481A0000 len = 0x000001A4 CREGISTER=16 - MMCHS0 : org = 0x48060000 len = 0x00000300 CREGISTER=5 - SPINLOCK : org = 0x480CA000 len = 0x00000880 CREGISTER=23 - TPCC : org = 0x49000000 len = 0x00001098 CREGISTER=29 - UART1 : org = 0x48022000 len = 0x00000088 CREGISTER=11 - UART2 : org = 0x48024000 len = 0x00000088 CREGISTER=12 - - RSVD10 : org = 0x48318000 len = 0x00000100 CREGISTER=10 - RSVD13 : org = 0x48310000 len = 0x00000100 CREGISTER=13 - RSVD21 : org = 0x00032400 len = 0x00000100 CREGISTER=21 - RSVD27 : org = 0x00032000 len = 0x00000100 CREGISTER=27 - -} - -/* Specify the sections allocation into memory */ -SECTIONS { - /* Forces _c_int00 to the start of PRU IRAM. Not necessary when loading - an ELF file, but useful when loading a binary */ - .text:_c_int00* > 0x0, PAGE 0 - - .text > PRU_IMEM, PAGE 0 - .stack > PRU_DMEM_0_1, PAGE 1 - .bss > PRU_DMEM_0_1, PAGE 1 - .cio > PRU_DMEM_0_1, PAGE 1 - .data > PRU_DMEM_0_1, PAGE 1 - .switch > PRU_DMEM_0_1, PAGE 1 - .sysmem > PRU_DMEM_0_1, PAGE 1 - .cinit > PRU_DMEM_0_1, PAGE 1 - .rodata > PRU_DMEM_0_1, PAGE 1 - .rofardata > PRU_DMEM_0_1, PAGE 1 - .farbss > PRU_DMEM_0_1, PAGE 1 - .fardata > PRU_DMEM_0_1, PAGE 1 - - .resource_table > PRU_DMEM_0_1, PAGE 1 - .init_pins > PRU_DMEM_0_1, PAGE 1 -} \ No newline at end of file diff --git a/books/pru-cookbook/03details/code/encoder_setup.sh b/books/pru-cookbook/03details/code/encoder_setup.sh deleted file mode 100755 index ffc4ad68842fb6314173b523425295893cd05fc1..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/03details/code/encoder_setup.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -# Configure the pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine - -# Configure eQEP pins -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_92 P9_27 P8_35 P8_33 P8_12 P8_11 P8_41 P8_42" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P1_31 P2_34 P2_10 P2_24 P2_33" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin qep - config-pin -q $pin -done - -########################################## -# Configure PRU pins -if [ $machine = "Black" ]; then - echo " Found" - pins="P8_16 P8_15" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P2_09 P2_18" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruin - config-pin -q $pin -done diff --git a/books/pru-cookbook/03details/code/gpio_setup.sh b/books/pru-cookbook/03details/code/gpio_setup.sh deleted file mode 100755 index e676ed7abe2a6beaf62d3ce6c56f5aa151d86700..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/03details/code/gpio_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -export TARGET=gpio.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_11" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P2_05" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin gpio - config-pin -q $pin -done diff --git a/books/pru-cookbook/03details/code/servos_setup.sh b/books/pru-cookbook/03details/code/servos_setup.sh deleted file mode 100755 index 330e8f34e30d7fd97d9368861ded65817222e903..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/03details/code/servos_setup.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P8_27 P8_28 P8_29 P8_30 P8_39 P8_40 P8_41 P8_42" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P2_35 P1_35 P1_02 P1_04" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruout - config-pin -q $pin -done \ No newline at end of file diff --git a/books/pru-cookbook/03details/details.rst b/books/pru-cookbook/03details/details.rst index 8052ff0097c648f53ccafde79a4a4d571cf08aa7..6dd6cdddefe28b7a1387198bd11809e45d3f6e83 100644 --- a/books/pru-cookbook/03details/details.rst +++ b/books/pru-cookbook/03details/details.rst @@ -32,15 +32,15 @@ Solution It's all on a GitHub repository. -.. code-block:: bash +.. code-block:: shell-session - bone$ git clone https://github.com/MarkAYoder/PRUCookbook.git + bone$ git clone https://git.beagleboard.org/beagleboard/pru-cookbook-code +.. note:: + #TODO#: The version of code used needs to be noted in the documentation. .. note:: - #TODO#: There needs to be a code-only repo that is validated against the documentation - code to be identical for specific version. The version needs to be noted in the - documentation. + #TODO#: Why is this documented in multiple places? .. _compiling_with_clpru_and_lnkpru: @@ -58,7 +58,7 @@ Solution The PRU compiler and linker are already installed on many images. They are called ``clpru`` and ``lnkpru``. Do the following to see if ``clpru`` is installed. -.. code-block:: bash +.. code-block:: shell-session bone$ which clpru /usr/bin/clpru @@ -69,7 +69,7 @@ They are called ``clpru`` and ``lnkpru``. Do the following to see if ``clpru`` https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#TI_PRU_Code_Generation_Tools to install it. -.. code-block:: bash +.. code-block:: shell-session bone$ sudo apt update bone$ sudo apt install ti-pru-cgt-installer @@ -85,7 +85,7 @@ In fact there are PRU versions of many of the standard code generation tools. code tools ~~~~~~~~~~~ -.. code-block:: bash +.. code-block:: shell-session bone$ ls /usr/bin/*pru /usr/bin/abspru /usr/bin/clistpru /usr/bin/hexpru /usr/bin/ofdpru @@ -109,13 +109,13 @@ Solution Edit ``/boot/uEnv.txt`` and enble pru_rproc by doing the following. -.. code-block:: bash +.. code-block:: shell-session - bone$ *sudo vi /boot/uEnv.txt* + bone$ sudo vi /boot/uEnv.txt Around line 40 you will see: -.. code-block:: bash +.. code-block:: shell-session ###pru_rproc (4.19.x-ti kernel) uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-00A0.dtbo @@ -123,7 +123,7 @@ Around line 40 you will see: Uncomment the ``uboot_overlay`` line as shown and then reboot. ``/dev/remoteproc`` should now be there. -.. code-block:: bash +.. code-block:: shell-session bone$ sudo reboot bone$ ls -ls /dev/remoteproc/ @@ -144,15 +144,15 @@ Solution Change to the directory of the code you want to run. -.. code-block:: bash +.. code-block:: shell-session - bone$ cd PRUCookbook/docs/06io/code + bone$ cd pru-cookbook-code/06io bone$ ls gpio.pru0.c Makefile setup.sh Source the setup file. -.. code-block:: bash +.. code-block:: shell-session bone$ source setup.sh TARGET=gpio.pru0 @@ -163,7 +163,7 @@ Source the setup file. Now you are ready to compile and run. This is automated for you in the Makefile -.. code-block:: bash +.. code-block:: shell-session bone$ make /var/lib/cloud9/common/Makefile:28: MODEL=TI_AM335x_BeagleBone_Black,TARGET=gpio.pru0,COMMON=/var/lib/cloud9/common @@ -197,7 +197,7 @@ The file extension ``.pru0`` specifies the number of the PRU you are using You can override the ``TARGET`` on the command line. -.. code-block:: bash +.. code-block:: shell-session bone$ cp gpio.pru0.c gpio.pru1.c bone$ export TARGET=gpio.pru1 @@ -206,7 +206,7 @@ Notice the ``TARGET`` doesn't have the ``.c`` on the end. You can also specify them when running ``make``. -.. code-block:: bash +.. code-block:: shell-session bone$ cp gpio.pru0.c gpio.pru1.c bone$ make TARGET=gpio.pru1 @@ -215,11 +215,11 @@ The setup file also contains instructions to figure out which Beagle you are run and then configure the pins accordingly. -.. literalinclude:: code/gpio_setup.sh +.. literalinclude:: ../code/06io/gpio_setup.sh :caption: gpio_setup.sh :linenos: -:download:`gpio_setup.sh <code/gpio_setup.sh>` +:download:`gpio_setup.sh <../code/06io/gpio_setup.sh>` .. table:: @@ -257,7 +257,7 @@ Solution It's easy, if you already have ``TARGET`` set up: -.. code-block:: bash +.. code-block:: shell-session bone$ make stop - Stopping PRU 0 @@ -272,7 +272,7 @@ is stopped. This assumes ``TARGET`` is set to the PRU you are using. If you want to control the other PRU use: -.. code-block:: bash +.. code-block:: shell-session bone$ cp gpio.pru0.c gpio.pru1.c bone$ make TARGET=gpio.pru1 @@ -304,11 +304,11 @@ It's assumed you already know how Makefiles work. If not, there are many resources online that can bring you up to speed. Here is the local ``Makefile`` used throughout this book. -.. literalinclude:: code/Makefile +.. literalinclude:: ../code/06io/Makefile :caption: Local Makefile :linenos: -:download:`Makefile <code/Makefile>` +:download:`Makefile <../code/06io/Makefile>` Each of the local Makefiles refer to the same standard Makefile. The details of how the Makefile works is beyond the scope of this cookbook. @@ -335,11 +335,11 @@ The ``am57xx_pru.cmd`` does the same for the AI. Both files can be found in ``/var/lib/cloud9/common``. -.. literalinclude:: code/am335x_pru.cmd +.. literalinclude:: ../code/06io/am335x_pru.cmd :caption: am335x_pru.cmd :linenos: -:download:`am335x_pru.cmd <code/am335x_pru.cmd>` +:download:`am335x_pru.cmd <../code/06io/am335x_pru.cmd>` .. TODO does this need updating? @@ -412,7 +412,7 @@ The PRUs appear in the Linux file space at ``/dev/remoteproc/``. Finding the PRUs ~~~~~~~~~~~~~~~~~~~ -.. code-block:: bash +.. code-block:: shell-session bone$ cd /dev/remoteproc/ bone$ ls @@ -420,7 +420,7 @@ Finding the PRUs Or if you are on the AI: -.. code-block:: bash +.. code-block:: shell-session bone$ cd /dev/remoteproc/ bone$ ls @@ -430,7 +430,7 @@ You see there that the AI has two pairs of PRUs, plus a couple of DSPs and other Here we see PRU 0 and PRU 1 in the path. Let's follow PRU 0. -.. code-block:: bash +.. code-block:: shell-session bone$ cd pruss-core0 bone$ ls @@ -439,7 +439,7 @@ Here we see PRU 0 and PRU 1 in the path. Let's follow PRU 0. Here we see the files that control PRU 0. ``firmware`` tells where in ``/lib/firmware`` to look for the code to run on the PRU. -.. code-block:: bash +.. code-block:: shell-session bone$ cat firmware am335x-pru0-fw @@ -464,11 +464,11 @@ everything is already configured for you. If you are on the Black or Pocket you'll need to run the following script. -.. literalinclude:: code/servos_setup.sh +.. literalinclude:: ../code/06io/servos_setup.sh :caption: servos_setup.sh :linenos: -:download:`servos_setup.sh <code/servos_setup.sh>` +:download:`servos_setup.sh <../code/06io/servos_setup.sh>` Discussion ----------- @@ -494,11 +494,11 @@ It depends on which Beagle you are running on. If you are on the AI or Blue, everything is already configured for you. If you are on the Black or Pocket you'll need to run the following script. -.. literalinclude:: code/encoder_setup.sh +.. literalinclude:: ../code/06io/encoder_setup.sh :caption: encoder_setup.sh :linenos: -:download:`encoder_setup.sh <code/encoder_setup.sh>` +:download:`encoder_setup.sh <../code/06io/encoder_setup.sh>` Discussion ----------- diff --git a/books/pru-cookbook/04debug/code/AM335x_PRU.cmd b/books/pru-cookbook/04debug/code/AM335x_PRU.cmd deleted file mode 100644 index b62f044057bc982dd1a8049eaa41db2f970943a2..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/AM335x_PRU.cmd +++ /dev/null @@ -1,86 +0,0 @@ -/****************************************************************************/ -/* AM335x_PRU.cmd */ -/* Copyright (c) 2015 Texas Instruments Incorporated */ -/* */ -/* Description: This file is a linker command file that can be used for */ -/* linking PRU programs built with the C compiler and */ -/* the resulting .out file on an AM335x device. */ -/****************************************************************************/ - --cr /* Link using C conventions */ - -/* Specify the System Memory Map */ -MEMORY -{ - PAGE 0: - PRU_IMEM : org = 0x00000000 len = 0x00002000 /* 8kB PRU0 Instruction RAM */ - - PAGE 1: - - /* RAM */ - - PRU_DMEM_0_1 : org = 0x00000000 len = 0x00002000 CREGISTER=24 /* 8kB PRU Data RAM 0_1 */ - PRU_DMEM_1_0 : org = 0x00002000 len = 0x00002000 CREGISTER=25 /* 8kB PRU Data RAM 1_0 */ - - PAGE 2: - PRU_SHAREDMEM : org = 0x00010000 len = 0x00003000 CREGISTER=28 /* 12kB Shared RAM */ - - DDR : org = 0x80000000 len = 0x00000100 CREGISTER=31 - L3OCMC : org = 0x40000000 len = 0x00010000 CREGISTER=30 - - - /* Peripherals */ - - PRU_CFG : org = 0x00026000 len = 0x00000044 CREGISTER=4 - PRU_ECAP : org = 0x00030000 len = 0x00000060 CREGISTER=3 - PRU_IEP : org = 0x0002E000 len = 0x0000031C CREGISTER=26 - PRU_INTC : org = 0x00020000 len = 0x00001504 CREGISTER=0 - PRU_UART : org = 0x00028000 len = 0x00000038 CREGISTER=7 - - DCAN0 : org = 0x481CC000 len = 0x000001E8 CREGISTER=14 - DCAN1 : org = 0x481D0000 len = 0x000001E8 CREGISTER=15 - DMTIMER2 : org = 0x48040000 len = 0x0000005C CREGISTER=1 - PWMSS0 : org = 0x48300000 len = 0x000002C4 CREGISTER=18 - PWMSS1 : org = 0x48302000 len = 0x000002C4 CREGISTER=19 - PWMSS2 : org = 0x48304000 len = 0x000002C4 CREGISTER=20 - GEMAC : org = 0x4A100000 len = 0x0000128C CREGISTER=9 - I2C1 : org = 0x4802A000 len = 0x000000D8 CREGISTER=2 - I2C2 : org = 0x4819C000 len = 0x000000D8 CREGISTER=17 - MBX0 : org = 0x480C8000 len = 0x00000140 CREGISTER=22 - MCASP0_DMA : org = 0x46000000 len = 0x00000100 CREGISTER=8 - MCSPI0 : org = 0x48030000 len = 0x000001A4 CREGISTER=6 - MCSPI1 : org = 0x481A0000 len = 0x000001A4 CREGISTER=16 - MMCHS0 : org = 0x48060000 len = 0x00000300 CREGISTER=5 - SPINLOCK : org = 0x480CA000 len = 0x00000880 CREGISTER=23 - TPCC : org = 0x49000000 len = 0x00001098 CREGISTER=29 - UART1 : org = 0x48022000 len = 0x00000088 CREGISTER=11 - UART2 : org = 0x48024000 len = 0x00000088 CREGISTER=12 - - RSVD10 : org = 0x48318000 len = 0x00000100 CREGISTER=10 - RSVD13 : org = 0x48310000 len = 0x00000100 CREGISTER=13 - RSVD21 : org = 0x00032400 len = 0x00000100 CREGISTER=21 - RSVD27 : org = 0x00032000 len = 0x00000100 CREGISTER=27 - -} - -/* Specify the sections allocation into memory */ -SECTIONS { - /* Forces _c_int00 to the start of PRU IRAM. Not necessary when loading - an ELF file, but useful when loading a binary */ - .text:_c_int00* > 0x0, PAGE 0 - - .text > PRU_IMEM, PAGE 0 - .stack > PRU_DMEM_0_1, PAGE 1 - .bss > PRU_DMEM_0_1, PAGE 1 - .cio > PRU_DMEM_0_1, PAGE 1 - .data > PRU_DMEM_0_1, PAGE 1 - .switch > PRU_DMEM_0_1, PAGE 1 - .sysmem > PRU_DMEM_0_1, PAGE 1 - .cinit > PRU_DMEM_0_1, PAGE 1 - .rodata > PRU_DMEM_0_1, PAGE 1 - .rofardata > PRU_DMEM_0_1, PAGE 1 - .farbss > PRU_DMEM_0_1, PAGE 1 - .fardata > PRU_DMEM_0_1, PAGE 1 - - .resource_table > PRU_DMEM_0_1, PAGE 1 -} diff --git a/books/pru-cookbook/04debug/code/Makefile b/books/pru-cookbook/04debug/code/Makefile deleted file mode 100644 index a7557fdaa22988d89cec879477ded78522d7116f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/Makefile +++ /dev/null @@ -1 +0,0 @@ -include /var/lib/cloud9/common/Makefile diff --git a/books/pru-cookbook/04debug/code/copyright.c b/books/pru-cookbook/04debug/code/copyright.c deleted file mode 100644 index a34918faa44a789c3624c0e5551704e630017dae..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/copyright.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ diff --git a/books/pru-cookbook/04debug/code/resource_table_empty.h b/books/pru-cookbook/04debug/code/resource_table_empty.h deleted file mode 100644 index c14bd2b222644e05a84a4a328792a4c8513ff1e8..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/resource_table_empty.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * ======== resource_table_empty.h ======== - * - * Define the resource table entries for all PRU cores. This will be - * incorporated into corresponding base images, and used by the remoteproc - * on the host-side to allocated/reserve resources. Note the remoteproc - * driver requires that all PRU firmware be built with a resource table. - * - * This file contains an empty resource table. It can be used either as: - * - * 1) A template, or - * 2) As-is if a PRU application does not need to configure PRU_INTC - * or interact with the rpmsg driver - * - */ - -#ifndef _RSC_TABLE_PRU_H_ -#define _RSC_TABLE_PRU_H_ - -#include <stddef.h> -#include <rsc_types.h> - -struct my_resource_table { - struct resource_table base; - - uint32_t offset[1]; /* Should match 'num' in actual definition */ -}; - -#pragma DATA_SECTION(pru_remoteproc_ResourceTable, ".resource_table") -#pragma RETAIN(pru_remoteproc_ResourceTable) -struct my_resource_table pru_remoteproc_ResourceTable = { - 1, /* we're the first version that implements this */ - 0, /* number of entries in the table */ - 0, 0, /* reserved, must be zero */ - 0, /* offset[0] */ -}; - -#endif /* _RSC_TABLE_PRU_H_ */ - diff --git a/books/pru-cookbook/04debug/code/uart1.pru0.c b/books/pru-cookbook/04debug/code/uart1.pru0.c deleted file mode 100644 index e9b40d5c8c6fe6f1bda4492bb84160a1d4c08b3e..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/uart1.pru0.c +++ /dev/null @@ -1,88 +0,0 @@ -// From: http://git.ti.com/pru-software-support-package/pru-software-support-package/trees/master/examples/am335x/PRU_Hardware_UART - -#include <stdint.h> -#include <pru_uart.h> -#include "resource_table_empty.h" - -/* The FIFO size on the PRU UART is 16 bytes; however, we are (arbitrarily) - * only going to send 8 at a time */ -#define FIFO_SIZE 16 -#define MAX_CHARS 8 - -void main(void) -{ - uint8_t tx; - uint8_t rx; - uint8_t cnt; - - /* hostBuffer points to the string to be printed */ - char* hostBuffer; - - /*** INITIALIZATION ***/ - - /* Set up UART to function at 115200 baud - DLL divisor is 104 at 16x oversample - * 192MHz / 104 / 16 = ~115200 */ - CT_UART.DLL = 104; - CT_UART.DLH = 0; - CT_UART.MDR = 0x0; - - /* Enable Interrupts in UART module. This allows the main thread to poll for - * Receive Data Available and Transmit Holding Register Empty */ - CT_UART.IER = 0x7; - - /* If FIFOs are to be used, select desired trigger level and enable - * FIFOs by writing to FCR. FIFOEN bit in FCR must be set first before - * other bits are configured */ - /* Enable FIFOs for now at 1-byte, and flush them */ - CT_UART.FCR = (0x8) | (0x4) | (0x2) | (0x1); - //CT_UART.FCR = (0x80) | (0x4) | (0x2) | (0x01); // 8-byte RX FIFO trigger - - /* Choose desired protocol settings by writing to LCR */ - /* 8-bit word, 1 stop bit, no parity, no break control and no divisor latch */ - CT_UART.LCR = 3; - - /* Enable loopback for test */ - CT_UART.MCR = 0x00; - - /* Choose desired response to emulation suspend events by configuring - * FREE bit and enable UART by setting UTRST and URRST in PWREMU_MGMT */ - /* Allow UART to run free, enable UART TX/RX */ - CT_UART.PWREMU_MGMT = 0x6001; - - /*** END INITIALIZATION ***/ - - /* Priming the 'hostbuffer' with a message */ - hostBuffer = "Hello! This is a long string\r\n"; - - /*** SEND SOME DATA ***/ - - /* Let's send/receive some dummy data */ - while(1) { - cnt = 0; - while(1) { - /* Load character, ensure it is not string termination */ - if ((tx = hostBuffer[cnt]) == '\0') - break; - cnt++; - CT_UART.THR = tx; - - /* Because we are doing loopback, wait until LSR.DR == 1 - * indicating there is data in the RX FIFO */ - while ((CT_UART.LSR & 0x1) == 0x0); - - /* Read the value from RBR */ - rx = CT_UART.RBR; - - /* Wait for TX FIFO to be empty */ - while (!((CT_UART.FCR & 0x2) == 0x2)); - } - } - - /*** DONE SENDING DATA ***/ - - /* Disable UART before halting */ - CT_UART.PWREMU_MGMT = 0x0; - - /* Halt PRU core */ - __halt(); -} diff --git a/books/pru-cookbook/04debug/code/uart1.pru1_0.c b/books/pru-cookbook/04debug/code/uart1.pru1_0.c deleted file mode 100644 index 4c558bb96e6e21b9c0b05f9acee21f7d7ad3c225..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/uart1.pru1_0.c +++ /dev/null @@ -1,90 +0,0 @@ -// From: http://git.ti.com/pru-software-support-package/pru-software-support-package/trees/master/examples/am335x/PRU_Hardware_UART -// This example was converted to the am5729 by changing the names in pru_uart.h -// for the am335x to the more descriptive names for the am5729. -// For example DLL convertes to DIVISOR_REGISTER_LSB_ -#include <stdint.h> -#include <pru_uart.h> -#include "resource_table_empty.h" - -/* The FIFO size on the PRU UART is 16 bytes; however, we are (arbitrarily) - * only going to send 8 at a time */ -#define FIFO_SIZE 16 -#define MAX_CHARS 8 - -void main(void) -{ - uint8_t tx; - uint8_t rx; - uint8_t cnt; - - /* hostBuffer points to the string to be printed */ - char* hostBuffer; - - /*** INITIALIZATION ***/ - - /* Set up UART to function at 115200 baud - DLL divisor is 104 at 16x oversample - * 192MHz / 104 / 16 = ~115200 */ - CT_UART.DIVISOR_REGISTER_LSB_ = 104; - CT_UART.DIVISOR_REGISTER_MSB_ = 0; - CT_UART.MODE_DEFINITION_REGISTER = 0x0; - - /* Enable Interrupts in UART module. This allows the main thread to poll for - * Receive Data Available and Transmit Holding Register Empty */ - CT_UART.INTERRUPT_ENABLE_REGISTER = 0x7; - - /* If FIFOs are to be used, select desired trigger level and enable - * FIFOs by writing to FCR. FIFOEN bit in FCR must be set first before - * other bits are configured */ - /* Enable FIFOs for now at 1-byte, and flush them */ - CT_UART.INTERRUPT_IDENTIFICATION_REGISTER_FIFO_CONTROL_REGISTER = (0x8) | (0x4) | (0x2) | (0x1); - //CT_UART.FCR = (0x80) | (0x4) | (0x2) | (0x01); // 8-byte RX FIFO trigger - - /* Choose desired protocol settings by writing to LCR */ - /* 8-bit word, 1 stop bit, no parity, no break control and no divisor latch */ - CT_UART.LINE_CONTROL_REGISTER = 3; - - /* Enable loopback for test */ - CT_UART.MODEM_CONTROL_REGISTER = 0x00; - - /* Choose desired response to emulation suspend events by configuring - * FREE bit and enable UART by setting UTRST and URRST in PWREMU_MGMT */ - /* Allow UART to run free, enable UART TX/RX */ - CT_UART.POWERMANAGEMENT_AND_EMULATION_REGISTER = 0x6001; - - /*** END INITIALIZATION ***/ - - /* Priming the 'hostbuffer' with a message */ - hostBuffer = "Hello! This is a long string\r\n"; - - /*** SEND SOME DATA ***/ - - /* Let's send/receive some dummy data */ - while(1) { - cnt = 0; - while(1) { - /* Load character, ensure it is not string termination */ - if ((tx = hostBuffer[cnt]) == '\0') - break; - cnt++; - CT_UART.RBR_THR_REGISTERS = tx; - - /* Because we are doing loopback, wait until LSR.DR == 1 - * indicating there is data in the RX FIFO */ - while ((CT_UART.LINE_STATUS_REGISTER & 0x1) == 0x0); - - /* Read the value from RBR */ - rx = CT_UART.RBR_THR_REGISTERS; - - /* Wait for TX FIFO to be empty */ - while (!((CT_UART.INTERRUPT_IDENTIFICATION_REGISTER_FIFO_CONTROL_REGISTER & 0x2) == 0x2)); - } - } - - /*** DONE SENDING DATA ***/ - - /* Disable UART before halting */ - CT_UART.POWERMANAGEMENT_AND_EMULATION_REGISTER = 0x0; - - /* Halt PRU core */ - __halt(); -} diff --git a/books/pru-cookbook/04debug/code/uart2.pru0.c b/books/pru-cookbook/04debug/code/uart2.pru0.c deleted file mode 100644 index 56ca985d5a45d1daeb2efd22b9576047791519bf..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/uart2.pru0.c +++ /dev/null @@ -1,126 +0,0 @@ -// From: http://git.ti.com/pru-software-support-package/pru-software-support-package/trees/master/pru_cape/pru_fw/PRU_Hardware_UART - -#include <stdint.h> -#include <pru_uart.h> -#include "resource_table_empty.h" - -/* The FIFO size on the PRU UART is 16 bytes; however, we are (arbitrarily) - * only going to send 8 at a time */ -#define FIFO_SIZE 16 -#define MAX_CHARS 8 -#define BUFFER 40 - -//****************************************************************************** -// Print Message Out -// This function take in a string literal of any size and then fill the -// TX FIFO when it's empty and waits until there is info in the RX FIFO -// before returning. -//****************************************************************************** -void PrintMessageOut(volatile char* Message) -{ - uint8_t cnt, index = 0; - - while (1) { - cnt = 0; - - /* Wait until the TX FIFO and the TX SR are completely empty */ - while (!CT_UART.LSR_bit.TEMT); - - while (Message[index] != NULL && cnt < MAX_CHARS) { - CT_UART.THR = Message[index]; - index++; - cnt++; - } - if (Message[index] == NULL) - break; - } - - /* Wait until the TX FIFO and the TX SR are completely empty */ - while (!CT_UART.LSR_bit.TEMT); - -} - -//****************************************************************************** -// IEP Timer Config -// This function waits until there is info in the RX FIFO and then returns -// the first character entered. -//****************************************************************************** -char ReadMessageIn(void) -{ - while (!CT_UART.LSR_bit.DR); - - return CT_UART.RBR_bit.DATA; -} - -void main(void) -{ - uint32_t i; - volatile uint32_t not_done = 1; - - char rxBuffer[BUFFER]; - rxBuffer[BUFFER-1] = NULL; // null terminate the string - - /*** INITIALIZATION ***/ - - /* Set up UART to function at 115200 baud - DLL divisor is 104 at 16x oversample - * 192MHz / 104 / 16 = ~115200 */ - CT_UART.DLL = 104; - CT_UART.DLH = 0; - CT_UART.MDR_bit.OSM_SEL = 0x0; - - /* Enable Interrupts in UART module. This allows the main thread to poll for - * Receive Data Available and Transmit Holding Register Empty */ - CT_UART.IER = 0x7; - - /* If FIFOs are to be used, select desired trigger level and enable - * FIFOs by writing to FCR. FIFOEN bit in FCR must be set first before - * other bits are configured */ - /* Enable FIFOs for now at 1-byte, and flush them */ - CT_UART.FCR = (0x80) | (0x8) | (0x4) | (0x2) | (0x01); // 8-byte RX FIFO trigger - - /* Choose desired protocol settings by writing to LCR */ - /* 8-bit word, 1 stop bit, no parity, no break control and no divisor latch */ - CT_UART.LCR = 3; - - /* If flow control is desired write appropriate values to MCR. */ - /* No flow control for now, but enable loopback for test */ - CT_UART.MCR = 0x00; - - /* Choose desired response to emulation suspend events by configuring - * FREE bit and enable UART by setting UTRST and URRST in PWREMU_MGMT */ - /* Allow UART to run free, enable UART TX/RX */ - CT_UART.PWREMU_MGMT_bit.FREE = 0x1; - CT_UART.PWREMU_MGMT_bit.URRST = 0x1; - CT_UART.PWREMU_MGMT_bit.UTRST = 0x1; - - /* Turn off RTS and CTS functionality */ - CT_UART.MCR_bit.AFE = 0x0; - CT_UART.MCR_bit.RTS = 0x0; - - /*** END INITIALIZATION ***/ - - while(1) { - /* Print out greeting message */ - PrintMessageOut("Hello you are in the PRU UART demo test please enter some characters\r\n"); - - /* Read in characters from user, then echo them back out */ - for (i = 0; i < BUFFER-1 ; i++) { - rxBuffer[i] = ReadMessageIn(); - if(rxBuffer[i] == '\r') { // Quit early if ENTER is hit. - rxBuffer[i+1] = NULL; - break; - } - } - - PrintMessageOut("you typed:\r\n"); - PrintMessageOut(rxBuffer); - PrintMessageOut("\r\n"); - } - - /*** DONE SENDING DATA ***/ - /* Disable UART before halting */ - CT_UART.PWREMU_MGMT = 0x0; - - /* Halt PRU core */ - __halt(); -} diff --git a/books/pru-cookbook/04debug/code/uart2.pru1_0.c b/books/pru-cookbook/04debug/code/uart2.pru1_0.c deleted file mode 100644 index c934ef7d0bd645734aa2c181b5ab68646713755e..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/uart2.pru1_0.c +++ /dev/null @@ -1,126 +0,0 @@ -// From: http://git.ti.com/pru-software-support-package/pru-software-support-package/trees/master/pru_cape/pru_fw/PRU_Hardware_UART - -#include <stdint.h> -#include <pru_uart.h> -#include "resource_table_empty.h" - -/* The FIFO size on the PRU UART is 16 bytes; however, we are (arbitrarily) - * only going to send 8 at a time */ -#define FIFO_SIZE 16 -#define MAX_CHARS 8 -#define BUFFER 40 - -//****************************************************************************** -// Print Message Out -// This function take in a string literal of any size and then fill the -// TX FIFO when it's empty and waits until there is info in the RX FIFO -// before returning. -//****************************************************************************** -void PrintMessageOut(volatile char* Message) -{ - uint8_t cnt, index = 0; - - while (1) { - cnt = 0; - - /* Wait until the TX FIFO and the TX SR are completely empty */ - while (!CT_UART.LINE_STATUS_REGISTER_bit.TEMT); - - while (Message[index] != NULL && cnt < MAX_CHARS) { - CT_UART.RBR_THR_REGISTERS = Message[index]; - index++; - cnt++; - } - if (Message[index] == NULL) - break; - } - - /* Wait until the TX FIFO and the TX SR are completely empty */ - while (!CT_UART.LINE_STATUS_REGISTER_bit.TEMT); - -} - -//****************************************************************************** -// IEP Timer Config -// This function waits until there is info in the RX FIFO and then returns -// the first character entered. -//****************************************************************************** -char ReadMessageIn(void) -{ - while (!CT_UART.LINE_STATUS_REGISTER_bit.DR); - - return CT_UART.RBR_THR_REGISTERS_bit.DATA; -} - -void main(void) -{ - uint32_t i; - volatile uint32_t not_done = 1; - - char rxBuffer[BUFFER]; - rxBuffer[BUFFER-1] = NULL; // null terminate the string - - /*** INITIALIZATION ***/ - - /* Set up UART to function at 115200 baud - DLL divisor is 104 at 16x oversample - * 192MHz / 104 / 16 = ~115200 */ - CT_UART.DIVISOR_REGISTER_LSB_ = 104; - CT_UART.DIVISOR_REGISTER_MSB_ = 0; - CT_UART.MODE_DEFINITION_REGISTER_bit.OSM_SEL = 0x0; - - /* Enable Interrupts in UART module. This allows the main thread to poll for - * Receive Data Available and Transmit Holding Register Empty */ - CT_UART.INTERRUPT_ENABLE_REGISTER = 0x7; - - /* If FIFOs are to be used, select desired trigger level and enable - * FIFOs by writing to FCR. FIFOEN bit in FCR must be set first before - * other bits are configured */ - /* Enable FIFOs for now at 1-byte, and flush them */ - CT_UART.INTERRUPT_IDENTIFICATION_REGISTER_FIFO_CONTROL_REGISTER = (0x80) | (0x8) | (0x4) | (0x2) | (0x01); // 8-byte RX FIFO trigger - - /* Choose desired protocol settings by writing to LCR */ - /* 8-bit word, 1 stop bit, no parity, no break control and no divisor latch */ - CT_UART.LINE_CONTROL_REGISTER = 3; - - /* If flow control is desired write appropriate values to MCR. */ - /* No flow control for now, but enable loopback for test */ - CT_UART.MODEM_CONTROL_REGISTER = 0x00; - - /* Choose desired response to emulation suspend events by configuring - * FREE bit and enable UART by setting UTRST and URRST in PWREMU_MGMT */ - /* Allow UART to run free, enable UART TX/RX */ - CT_UART.POWERMANAGEMENT_AND_EMULATION_REGISTER_bit.FREE = 0x1; - CT_UART.POWERMANAGEMENT_AND_EMULATION_REGISTER_bit.URRST = 0x1; - CT_UART.POWERMANAGEMENT_AND_EMULATION_REGISTER_bit.UTRST = 0x1; - - /* Turn off RTS and CTS functionality */ - CT_UART.MODEM_CONTROL_REGISTER_bit.AFE = 0x0; - CT_UART.MODEM_CONTROL_REGISTER_bit.RTS = 0x0; - - /*** END INITIALIZATION ***/ - - while(1) { - /* Print out greeting message */ - PrintMessageOut("Hello you are in the PRU UART demo test please enter some characters\r\n"); - - /* Read in characters from user, then echo them back out */ - for (i = 0; i < BUFFER-1 ; i++) { - rxBuffer[i] = ReadMessageIn(); - if(rxBuffer[i] == '\r') { // Quit early if ENTER is hit. - rxBuffer[i+1] = NULL; - break; - } - } - - PrintMessageOut("you typed:\r\n"); - PrintMessageOut(rxBuffer); - PrintMessageOut("\r\n"); - } - - /*** DONE SENDING DATA ***/ - /* Disable UART before halting */ - CT_UART.POWERMANAGEMENT_AND_EMULATION_REGISTER = 0x0; - - /* Halt PRU core */ - __halt(); -} diff --git a/books/pru-cookbook/04debug/code/uart_setup.sh b/books/pru-cookbook/04debug/code/uart_setup.sh deleted file mode 100644 index db11d1f4fb5226a1f66482d5262809085dfc0ea9..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/04debug/code/uart_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -export TARGET=uart1.pru0 -echo TARGET=$TARGET - -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - # Configure tx - config-pin P9_24 pru_uart - # Configure rx - config-pin P9_26 pru_uart -elif [ $machine = "AI" ]; then - echo " Found" - echo "See AI chapter for configuring via device tree" -elif [ $machine = "Blue" ]; then - echo " Found" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - # Configure tx - config-pin P1_06 pru_uart - config-pin P2_09 pru_uart - # Configure rx - config-pin P1_12 pru_uart - config-pin P2_11 pru_uart -else - echo " Not Found" - pins="" -fi diff --git a/books/pru-cookbook/05blocks/code/Makefile b/books/pru-cookbook/05blocks/code/Makefile deleted file mode 100644 index a7557fdaa22988d89cec879477ded78522d7116f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/Makefile +++ /dev/null @@ -1 +0,0 @@ -include /var/lib/cloud9/common/Makefile diff --git a/books/pru-cookbook/05blocks/code/copyright.c b/books/pru-cookbook/05blocks/code/copyright.c deleted file mode 100644 index a34918faa44a789c3624c0e5551704e630017dae..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/copyright.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ diff --git a/books/pru-cookbook/05blocks/code/input.pru0.c b/books/pru-cookbook/05blocks/code/input.pru0.c deleted file mode 100644 index 9ed5d3b759eb866fdbaa57fed9258c71ed32263e..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/input.pru0.c +++ /dev/null @@ -1,26 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t led; - uint32_t sw; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - led = 0x1<<0; // P9_31 or P1_36 - sw = 0x1<<7; // P9_25 or P1_29 - - while (1) { - if((__R31&sw) == sw) { - __R30 |= led; // Turn on LED - } else - __R30 &= ~led; // Turn off LED - } -} - diff --git a/books/pru-cookbook/05blocks/code/input_setup.sh b/books/pru-cookbook/05blocks/code/input_setup.sh deleted file mode 100755 index 35a0d9c3598288c14894a90907a69d62009eed1f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/input_setup.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# -export TARGET=input.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - config-pin P9_31 pruout - config-pin -q P9_31 - config-pin P9_25 pruin - config-pin -q P9_25 -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - config-pin P1_36 pruout - config-pin -q P1_36 - config-pin P1_29 pruin - config-pin -q P1_29 -else - echo " Not Found" - pins="" -fi diff --git a/books/pru-cookbook/05blocks/code/module/.gitignore b/books/pru-cookbook/05blocks/code/module/.gitignore deleted file mode 100644 index 9b6dfc433724ec94f8905520931dcf33d409ea87..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/module/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.ko diff --git a/books/pru-cookbook/05blocks/code/module/Makefile b/books/pru-cookbook/05blocks/code/module/Makefile deleted file mode 100644 index 9ca05d057c153a2d9b653fc64f5504a2d5aeea2e..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/module/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -# Makefile for compiling out-of-tree -# From Free Electrons -# If on the Bone run apt install linux-headers-`uname -r` - -KDIR := /lib/modules/$(shell uname -r)/build - -obj-m += rpmsg_client_sample.o -obj-m += rpmsg_pru.o - -all: - $(MAKE) -C $(KDIR) M=$$PWD - -install: - scp hello*.ko bone:. - -print: - @echo KERNELRELEASE= $(KERNELRELEASE) - @echo CONFIG_EXAMPLES= $(CONFIG_EXAMPLES) - @echo obj-m= $(obj-m) - -clean: - rm -rf .tmp_versions *.o - rm -rf .rpmsg_client_sample* rpmsg_client_sample*.mod.c - rm -rf .rpmsg_pru* rpmsg_pru*.mod.c - rm modules.order Module.symvers .built-in.o.cmd \ No newline at end of file diff --git a/books/pru-cookbook/05blocks/code/module/install.sh b/books/pru-cookbook/05blocks/code/module/install.sh deleted file mode 100755 index 89f497f038396b8bfaddcec73330b74255e0c5ab..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/module/install.sh +++ /dev/null @@ -1,6 +0,0 @@ -# This is a example of ARM to PRU communication from Lab 5 of -# http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs#LAB_5:_RPMsg_Communication_between_ARM_and_PRU - -sudo apt install linux-headers-`uname -r` - -wget https://github.com/beagleboard/linux/raw/4.9/drivers/rpmsg/rpmsg_pru.c diff --git a/books/pru-cookbook/05blocks/code/module/rpmsg_client_sample.c b/books/pru-cookbook/05blocks/code/module/rpmsg_client_sample.c deleted file mode 100644 index 72b24524c626cca0291d93b5d765ecf515dac0f3..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/module/rpmsg_client_sample.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Remote processor messaging - sample client driver - * - * Copyright (C) 2011 Texas Instruments, Inc. - * Copyright (C) 2011 Google, Inc. - * - * Ohad Ben-Cohen <ohad@wizery.com> - * Brian Swetland <swetland@google.com> - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/rpmsg.h> - -#define MSG "hello world!" -#define MSG_LIMIT 10 - -struct instance_data { - int rx_count; -}; - -static int rpmsg_sample_cb(struct rpmsg_device *rpdev, void *data, int len, - void *priv, u32 src) -{ - int ret; - struct instance_data *idata = dev_get_drvdata(&rpdev->dev); - - dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n", - ++idata->rx_count, src); - - print_hex_dump(KERN_DEBUG, __func__, DUMP_PREFIX_NONE, 16, 1, - data, len, true); - - /* samples should not live forever */ - if (idata->rx_count >= MSG_LIMIT) { - dev_info(&rpdev->dev, "goodbye!\n"); - return 0; - } - - /* send a new message now */ - ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); - if (ret) - dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); - - return 0; -} - -static int rpmsg_sample_probe(struct rpmsg_device *rpdev) -{ - int ret; - struct instance_data *idata; - - dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", - rpdev->src, rpdev->dst); - - idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); - if (!idata) - return -ENOMEM; - - dev_set_drvdata(&rpdev->dev, idata); - - /* send a message to our remote processor */ - ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); - if (ret) { - dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); - return ret; - } - - return 0; -} - -static void rpmsg_sample_remove(struct rpmsg_device *rpdev) -{ - dev_info(&rpdev->dev, "rpmsg sample client driver is removed\n"); -} - -static struct rpmsg_device_id rpmsg_driver_sample_id_table[] = { - { .name = "rpmsg-client-sample" }, - { }, -}; -MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sample_id_table); - -static struct rpmsg_driver rpmsg_sample_client = { - .drv.name = KBUILD_MODNAME, - .id_table = rpmsg_driver_sample_id_table, - .probe = rpmsg_sample_probe, - .callback = rpmsg_sample_cb, - .remove = rpmsg_sample_remove, -}; -module_rpmsg_driver(rpmsg_sample_client); - -MODULE_DESCRIPTION("Remote processor messaging sample client driver"); -MODULE_LICENSE("GPL v2"); diff --git a/books/pru-cookbook/05blocks/code/module/rpmsg_pru.c b/books/pru-cookbook/05blocks/code/module/rpmsg_pru.c deleted file mode 100644 index 5a96b20965035e5b12139f391a41529c94ff0dbc..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/module/rpmsg_pru.c +++ /dev/null @@ -1,359 +0,0 @@ -/* - * PRU Remote Processor Messaging Driver - * - * Copyright (C) 2015-2017 Texas Instruments Incorporated - http://www.ti.com/ - * Jason Reeder <jreeder@ti.com> - * Suman Anna <s-anna@ti.com> - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <linux/kernel.h> -#include <linux/rpmsg.h> -#include <linux/slab.h> -#include <linux/fs.h> -#include <linux/init.h> -#include <linux/cdev.h> -#include <linux/module.h> -#include <linux/kfifo.h> -#include <linux/uaccess.h> -#include <linux/mutex.h> -#include <linux/poll.h> -#include <linux/rpmsg/virtio_rpmsg.h> - -#define PRU_MAX_DEVICES (8) -/* Matches the definition in virtio_rpmsg_bus.c */ -#define RPMSG_BUF_SIZE (512) -#define MAX_FIFO_MSG (32) -#define FIFO_MSG_SIZE RPMSG_BUF_SIZE - -/** - * struct rpmsg_pru_dev - Structure that contains the per-device data - * @rpdev: rpmsg channel device that is associated with this rpmsg_pru device - * @dev: device - * @cdev: character device - * @locked: boolean used to determine whether or not the device file is in use - * @devt: dev_t structure for the rpmsg_pru device - * @msg_fifo: kernel fifo used to buffer the messages between userspace and PRU - * @msg_len: array storing the lengths of each message in the kernel fifo - * @msg_idx_rd: kernel fifo read index - * @msg_idx_wr: kernel fifo write index - * @wait_list: wait queue used to implement the poll operation of the character - * device - * - * Each rpmsg_pru device provides an interface, using an rpmsg channel (rpdev), - * between a user space character device (cdev) and a PRU core. A kernel fifo - * (msg_fifo) is used to buffer the messages in the kernel that are - * being passed between the character device and the PRU. - */ -struct rpmsg_pru_dev { - struct rpmsg_device *rpdev; - struct device *dev; - struct cdev cdev; - bool locked; - dev_t devt; - struct kfifo msg_fifo; - u32 msg_len[MAX_FIFO_MSG]; - int msg_idx_rd; - int msg_idx_wr; - wait_queue_head_t wait_list; -}; - -static struct class *rpmsg_pru_class; -static dev_t rpmsg_pru_devt; -static DEFINE_MUTEX(rpmsg_pru_lock); -static DEFINE_IDR(rpmsg_pru_minors); - -static int rpmsg_pru_open(struct inode *inode, struct file *filp) -{ - struct rpmsg_pru_dev *prudev; - int ret = -EACCES; - - prudev = container_of(inode->i_cdev, struct rpmsg_pru_dev, cdev); - - mutex_lock(&rpmsg_pru_lock); - if (!prudev->locked) { - prudev->locked = true; - filp->private_data = prudev; - ret = 0; - } - mutex_unlock(&rpmsg_pru_lock); - - if (ret) - dev_err(prudev->dev, "Device already open\n"); - - return ret; -} - -static int rpmsg_pru_release(struct inode *inode, struct file *filp) -{ - struct rpmsg_pru_dev *prudev; - - prudev = container_of(inode->i_cdev, struct rpmsg_pru_dev, cdev); - mutex_lock(&rpmsg_pru_lock); - prudev->locked = false; - mutex_unlock(&rpmsg_pru_lock); - return 0; -} - -static ssize_t rpmsg_pru_read(struct file *filp, char __user *buf, - size_t count, loff_t *f_pos) -{ - int ret; - u32 length; - struct rpmsg_pru_dev *prudev; - - prudev = filp->private_data; - - if (kfifo_is_empty(&prudev->msg_fifo) && - (filp->f_flags & O_NONBLOCK)) - return -EAGAIN; - - ret = wait_event_interruptible(prudev->wait_list, - !kfifo_is_empty(&prudev->msg_fifo)); - if (ret) - return -EINTR; - - ret = kfifo_to_user(&prudev->msg_fifo, buf, - prudev->msg_len[prudev->msg_idx_rd], &length); - prudev->msg_idx_rd = (prudev->msg_idx_rd + 1) % MAX_FIFO_MSG; - - return ret ? ret : length; -} - -static ssize_t rpmsg_pru_write(struct file *filp, const char __user *buf, - size_t count, loff_t *f_pos) -{ - int ret; - struct rpmsg_pru_dev *prudev; - static char rpmsg_pru_buf[RPMSG_BUF_SIZE]; - - prudev = filp->private_data; - - if (count > RPMSG_BUF_SIZE - sizeof(struct rpmsg_hdr)) { - dev_err(prudev->dev, "Data too large for RPMsg Buffer\n"); - return -EINVAL; - } - - if (copy_from_user(rpmsg_pru_buf, buf, count)) { - dev_err(prudev->dev, "Error copying buffer from user space"); - return -EFAULT; - } - - ret = rpmsg_send(prudev->rpdev->ept, (void *)rpmsg_pru_buf, count); - if (ret) - dev_err(prudev->dev, "rpmsg_send failed: %d\n", ret); - - return ret ? ret : count; -} - -static unsigned int rpmsg_pru_poll(struct file *filp, - struct poll_table_struct *wait) -{ - int mask; - struct rpmsg_pru_dev *prudev; - - prudev = filp->private_data; - - poll_wait(filp, &prudev->wait_list, wait); - - mask = POLLOUT | POLLWRNORM; - - if (!kfifo_is_empty(&prudev->msg_fifo)) - mask |= POLLIN | POLLRDNORM; - - return mask; -} - -static const struct file_operations rpmsg_pru_fops = { - .owner = THIS_MODULE, - .open = rpmsg_pru_open, - .release = rpmsg_pru_release, - .read = rpmsg_pru_read, - .write = rpmsg_pru_write, - .poll = rpmsg_pru_poll, -}; - -static int rpmsg_pru_cb(struct rpmsg_device *rpdev, void *data, int len, - void *priv, u32 src) -{ - u32 length; - struct rpmsg_pru_dev *prudev; - - prudev = dev_get_drvdata(&rpdev->dev); - - if (kfifo_avail(&prudev->msg_fifo) < len) { - dev_err(&rpdev->dev, "Not enough space on the FIFO\n"); - return -ENOSPC; - } - - if ((prudev->msg_idx_wr + 1) % MAX_FIFO_MSG == - prudev->msg_idx_rd) { - dev_err(&rpdev->dev, "Message length table is full\n"); - return -ENOSPC; - } - - length = kfifo_in(&prudev->msg_fifo, data, len); - prudev->msg_len[prudev->msg_idx_wr] = length; - prudev->msg_idx_wr = (prudev->msg_idx_wr + 1) % MAX_FIFO_MSG; - - wake_up_interruptible(&prudev->wait_list); - - return 0; -} - -static int rpmsg_pru_probe(struct rpmsg_device *rpdev) -{ - int ret; - struct rpmsg_pru_dev *prudev; - int minor_got; - - prudev = devm_kzalloc(&rpdev->dev, sizeof(*prudev), GFP_KERNEL); - if (!prudev) - return -ENOMEM; - - mutex_lock(&rpmsg_pru_lock); - minor_got = idr_alloc(&rpmsg_pru_minors, prudev, 0, PRU_MAX_DEVICES, - GFP_KERNEL); - mutex_unlock(&rpmsg_pru_lock); - if (minor_got < 0) { - ret = minor_got; - dev_err(&rpdev->dev, "Failed to get a minor number for the rpmsg_pru device: %d\n", - ret); - goto fail_alloc_minor; - } - - prudev->devt = MKDEV(MAJOR(rpmsg_pru_devt), minor_got); - - cdev_init(&prudev->cdev, &rpmsg_pru_fops); - prudev->cdev.owner = THIS_MODULE; - ret = cdev_add(&prudev->cdev, prudev->devt, 1); - if (ret) { - dev_err(&rpdev->dev, "Unable to add cdev for the rpmsg_pru device\n"); - goto fail_add_cdev; - } - - prudev->dev = device_create(rpmsg_pru_class, &rpdev->dev, prudev->devt, - NULL, "rpmsg_pru%d", rpdev->dst); - if (IS_ERR(prudev->dev)) { - dev_err(&rpdev->dev, "Unable to create the rpmsg_pru device\n"); - ret = PTR_ERR(prudev->dev); - goto fail_create_device; - } - - prudev->rpdev = rpdev; - - ret = kfifo_alloc(&prudev->msg_fifo, MAX_FIFO_MSG * FIFO_MSG_SIZE, - GFP_KERNEL); - if (ret) { - dev_err(&rpdev->dev, "Unable to allocate fifo for the rpmsg_pru device\n"); - goto fail_alloc_fifo; - } - - init_waitqueue_head(&prudev->wait_list); - - dev_set_drvdata(&rpdev->dev, prudev); - - dev_info(&rpdev->dev, "new rpmsg_pru device: /dev/rpmsg_pru%d", - rpdev->dst); - - return 0; - -fail_alloc_fifo: - device_destroy(rpmsg_pru_class, prudev->devt); -fail_create_device: - cdev_del(&prudev->cdev); -fail_add_cdev: - mutex_lock(&rpmsg_pru_lock); - idr_remove(&rpmsg_pru_minors, minor_got); - mutex_unlock(&rpmsg_pru_lock); -fail_alloc_minor: - return ret; -} - -static void rpmsg_pru_remove(struct rpmsg_device *rpdev) -{ - struct rpmsg_pru_dev *prudev; - - prudev = dev_get_drvdata(&rpdev->dev); - - kfifo_free(&prudev->msg_fifo); - device_destroy(rpmsg_pru_class, prudev->devt); - cdev_del(&prudev->cdev); - mutex_lock(&rpmsg_pru_lock); - idr_remove(&rpmsg_pru_minors, MINOR(prudev->devt)); - mutex_unlock(&rpmsg_pru_lock); -} - -/* .name matches on RPMsg Channels and causes a probe */ -static const struct rpmsg_device_id rpmsg_driver_pru_id_table[] = { - { .name = "rpmsg-pru" }, - { }, -}; -MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_pru_id_table); - -static struct rpmsg_driver rpmsg_pru_driver = { - .drv.name = KBUILD_MODNAME, - .id_table = rpmsg_driver_pru_id_table, - .probe = rpmsg_pru_probe, - .callback = rpmsg_pru_cb, - .remove = rpmsg_pru_remove, -}; - -static int __init rpmsg_pru_init(void) -{ - int ret; - - rpmsg_pru_class = class_create(THIS_MODULE, "rpmsg_pru"); - if (IS_ERR(rpmsg_pru_class)) { - pr_err("Unable to create class\n"); - ret = PTR_ERR(rpmsg_pru_class); - goto fail_create_class; - } - - ret = alloc_chrdev_region(&rpmsg_pru_devt, 0, PRU_MAX_DEVICES, - "rpmsg_pru"); - if (ret) { - pr_err("Unable to allocate chrdev region\n"); - goto fail_alloc_region; - } - - ret = register_rpmsg_driver(&rpmsg_pru_driver); - if (ret) { - pr_err("Unable to register rpmsg driver"); - goto fail_register_rpmsg_driver; - } - - return 0; - -fail_register_rpmsg_driver: - unregister_chrdev_region(rpmsg_pru_devt, PRU_MAX_DEVICES); -fail_alloc_region: - class_destroy(rpmsg_pru_class); -fail_create_class: - return ret; -} - -static void __exit rpmsg_pru_exit(void) -{ - unregister_rpmsg_driver(&rpmsg_pru_driver); - idr_destroy(&rpmsg_pru_minors); - mutex_destroy(&rpmsg_pru_lock); - class_destroy(rpmsg_pru_class); - unregister_chrdev_region(rpmsg_pru_devt, PRU_MAX_DEVICES); -} - -module_init(rpmsg_pru_init); -module_exit(rpmsg_pru_exit); - -MODULE_AUTHOR("Jason Reeder <jreeder@ti.com>"); -MODULE_ALIAS("rpmsg:rpmsg-pru"); -MODULE_DESCRIPTION("PRU Remote Processor Messaging Driver"); -MODULE_LICENSE("GPL v2"); diff --git a/books/pru-cookbook/05blocks/code/module/setup.sh b/books/pru-cookbook/05blocks/code/module/setup.sh deleted file mode 100755 index 3b313b366052438b0db8e7a7c0f00a04313b8687..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/module/setup.sh +++ /dev/null @@ -1 +0,0 @@ -insmod rpmsg_pru.ko diff --git a/books/pru-cookbook/05blocks/code/neo-colors.py b/books/pru-cookbook/05blocks/code/neo-colors.py deleted file mode 100755 index 736a47b3c7e6ae2507da296fdae5ac01be7f7a14..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo-colors.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/python3 -from time import sleep -import math - -length = 24 -max = 25 - -# Open a file -fo = open("/dev/rpmsg_pru30", "wb", 0) - -colors = [[1,0,0],[1,1,0],[0,1,0],[0,1,1],[0,0,1],[1,0,1]]# colors = [[1,0,0],[1,0,0]] - -oldr=0 -oldb=0 -oldg=0 - -while True: - for color in colors: - newr = color[0] - newg = color[1] - newb = color[2] - maxtime=20 - for time in range(0, maxtime): - r = (max*oldr+(newr-oldr)*max*time/maxtime) - g = (max*oldg+(newg-oldg)*max*time/maxtime) - b = (max*oldb+(newb-oldb)*max*time/maxtime) - for i in range(0, length): - fo.write(b"%d %d %d %d\n" % (i, r, g, b)) - # print("0 0 127 %d" % (i)) - fo.write(b"-1 0 0 0\n"); # Send colors to LEDs - - # print (r,g,b) - - sleep(0.05) - - oldr=newr - oldg=newg - oldb=newb - -# Close opened file -fo.close() \ No newline at end of file diff --git a/books/pru-cookbook/05blocks/code/neo-rainbow.py b/books/pru-cookbook/05blocks/code/neo-rainbow.py deleted file mode 100755 index ffd706a643a9c71609e8b8893b6ff91b53cde08b..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo-rainbow.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/python3 -from time import sleep -import math - -len = 24 -amp = 12 -f = 25 -shift = 3 -phase = 0 - -# Open a file -fo = open("/dev/rpmsg_pru30", "wb", 0) - -while True: - for i in range(0, len): - r = (amp * (math.sin(2*math.pi*f*(i-phase-0*shift)/len) + 1)) + 1; - g = (amp * (math.sin(2*math.pi*f*(i-phase-1*shift)/len) + 1)) + 1; - b = (amp * (math.sin(2*math.pi*f*(i-phase-2*shift)/len) + 1)) + 1; - fo.write(b"%d %d %d %d\n" % (i, r, g, b)) - # print("0 0 127 %d" % (i)) - - fo.write(b"-1 0 0 0\n"); - phase = phase + 1 - sleep(0.05) - -# Close opened file -fo.close() \ No newline at end of file diff --git a/books/pru-cookbook/05blocks/code/neo1.pru0.c b/books/pru-cookbook/05blocks/code/neo1.pru0.c deleted file mode 100644 index 5f2ce8248d73706b8f78c7b76e5df9009ffd4b02..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo1.pru0.c +++ /dev/null @@ -1,44 +0,0 @@ -// Control a ws2812 (NeoPixel) display, All on or all off -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define STR_LEN 24 -#define oneCyclesOn 700/5 // Stay on 700ns -#define oneCyclesOff 800/5 -#define zeroCyclesOn 350/5 -#define zeroCyclesOff 600/5 -#define resetCycles 60000/5 // Must be at least 50u, use 60u -#define gpio P9_29 // output pin - -#define ONE - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - uint32_t i; - for(i=0; i<STR_LEN*3*8; i++) { -#ifdef ONE - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(oneCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(oneCyclesOff-2); -#else - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(zeroCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(zeroCyclesOff-2); -#endif - } - // Send Reset - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(resetCycles); - - __halt(); -} diff --git a/books/pru-cookbook/05blocks/code/neo1.pru1_1.c b/books/pru-cookbook/05blocks/code/neo1.pru1_1.c deleted file mode 100644 index 2ad8d56d1cff431ab3c006788440454083b26e96..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo1.pru1_1.c +++ /dev/null @@ -1,44 +0,0 @@ -// Control a ws2812 (NeoPixel) display, All on or all off -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define STR_LEN 24 -#define oneCyclesOn 700/5 // Stay on 700ns -#define oneCyclesOff 800/5 -#define zeroCyclesOn 350/5 -#define zeroCyclesOff 600/5 -#define resetCycles 60000/5 // Must be at least 50u, use 60u -#define gpio P9_16 // output pin - -#define ONE - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - uint32_t i; - for(i=0; i<STR_LEN*3*8; i++) { -#ifdef ONE - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(oneCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(oneCyclesOff-2); -#else - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(zeroCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(zeroCyclesOff-2); -#endif - } - // Send Reset - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(resetCycles); - - __halt(); -} diff --git a/books/pru-cookbook/05blocks/code/neo2.pru0.c b/books/pru-cookbook/05blocks/code/neo2.pru0.c deleted file mode 100644 index a30077ceb090f7e3722cb0fe1a61162bdde9bb9d..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo2.pru0.c +++ /dev/null @@ -1,46 +0,0 @@ -// Control a ws2812 (neo pixel) display, green, red, blue, green, ... -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define STR_LEN 3 -#define oneCyclesOn 700/5 // Stay on 700ns -#define oneCyclesOff 800/5 -#define zeroCyclesOn 350/5 -#define zeroCyclesOff 600/5 -#define resetCycles 60000/5 // Must be at least 50u, use 60u -#define gpio P9_29 // output pin - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - uint32_t color[STR_LEN] = {0x0f0000, 0x000f00, 0x0000f}; // green, red, blue - int i, j; - - for(j=0; j<STR_LEN; j++) { - for(i=23; i>=0; i--) { - if(color[j] & (0x1<<i)) { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(oneCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(oneCyclesOff-2); - } else { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(zeroCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(zeroCyclesOff-2); - } - } - } - // Send Reset - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(resetCycles); - - __halt(); -} diff --git a/books/pru-cookbook/05blocks/code/neo2.pru1_1.c b/books/pru-cookbook/05blocks/code/neo2.pru1_1.c deleted file mode 100644 index 6b243dcfb53c2139f44d4a2aabd113a274c331e8..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo2.pru1_1.c +++ /dev/null @@ -1,46 +0,0 @@ -// Control a ws2812 (neo pixel) display, green, red, blue, green, ... -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define STR_LEN 3 -#define oneCyclesOn 700/5 // Stay on 700ns -#define oneCyclesOff 800/5 -#define zeroCyclesOn 350/5 -#define zeroCyclesOff 600/5 -#define resetCycles 60000/5 // Must be at least 50u, use 60u -#define gpio P9_16 // output pin - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - uint32_t color[STR_LEN] = {0x0f0000, 0x000f00, 0x0000f}; // green, red, blue - int i, j; - - for(j=0; j<STR_LEN; j++) { - for(i=23; i>=0; i--) { - if(color[j] & (0x1<<i)) { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(oneCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(oneCyclesOff-2); - } else { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(zeroCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(zeroCyclesOff-2); - } - } - } - // Send Reset - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(resetCycles); - - __halt(); -} diff --git a/books/pru-cookbook/05blocks/code/neo3.pru0.c b/books/pru-cookbook/05blocks/code/neo3.pru0.c deleted file mode 100644 index 8c1a9f1323d564d7894b299f1bd4f8a4020bc5e8..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo3.pru0.c +++ /dev/null @@ -1,67 +0,0 @@ -// Control a ws2812 (neo pixel) display, green, red, blue, green, ... -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define STR_LEN 24 -#define oneCyclesOn 700/5 // Stay on 700ns -#define oneCyclesOff 800/5 -#define zeroCyclesOn 350/5 -#define zeroCyclesOff 600/5 -#define resetCycles 60000/5 // Must be at least 50u, use 60u -#define gpio P9_29 // output pin - -#define SPEED 20000000/5 // Time to wait between updates - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t background = 0x00000f; - uint32_t foreground = 0x000f00; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - uint32_t color[STR_LEN]; // green, red, blue - int i, j; - int k, oldk = 0;; - // Set everything to background - for(i=0; i<STR_LEN; i++) { - color[i] = background; - } - - while(1) { - // Move forward one position - for(k=0; k<STR_LEN; k++) { - color[oldk] = background; - color[k] = foreground; - oldk=k; - - // Output the string - for(j=0; j<STR_LEN; j++) { - for(i=23; i>=0; i--) { - if(color[j] & (0x1<<i)) { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(oneCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(oneCyclesOff-2); - } else { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(zeroCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(zeroCyclesOff-2); - } - } - } - // Send Reset - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(resetCycles); - - // Wait - __delay_cycles(SPEED); - } - } -} diff --git a/books/pru-cookbook/05blocks/code/neo3.pru1_1.c b/books/pru-cookbook/05blocks/code/neo3.pru1_1.c deleted file mode 100644 index ee8dd63859680a930b3dca6c8c61895a87051ac9..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo3.pru1_1.c +++ /dev/null @@ -1,67 +0,0 @@ -// Control a ws2812 (neo pixel) display, green, red, blue, green, ... -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define STR_LEN 24 -#define oneCyclesOn 700/5 // Stay on 700ns -#define oneCyclesOff 800/5 -#define zeroCyclesOn 350/5 -#define zeroCyclesOff 600/5 -#define resetCycles 60000/5 // Must be at least 50u, use 60u -#define gpio P9_16 // output pin - -#define SPEED 20000000/5 // Time to wait between updates - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t background = 0x00000f; - uint32_t foreground = 0x000f00; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - uint32_t color[STR_LEN]; // green, red, blue - int i, j; - int k, oldk = 0;; - // Set everything to background - for(i=0; i<STR_LEN; i++) { - color[i] = background; - } - - while(1) { - // Move forward one position - for(k=0; k<STR_LEN; k++) { - color[oldk] = background; - color[k] = foreground; - oldk=k; - - // Output the string - for(j=0; j<STR_LEN; j++) { - for(i=23; i>=0; i--) { - if(color[j] & (0x1<<i)) { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(oneCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(oneCyclesOff-2); - } else { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(zeroCyclesOn-1); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(zeroCyclesOff-2); - } - } - } - // Send Reset - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(resetCycles); - - // Wait - __delay_cycles(SPEED); - } - } -} diff --git a/books/pru-cookbook/05blocks/code/neo4.pru0.c b/books/pru-cookbook/05blocks/code/neo4.pru0.c deleted file mode 100644 index 7fb5455781d8dc47cd414a433b1578ea84645ad9..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo4.pru0.c +++ /dev/null @@ -1,145 +0,0 @@ -// Use rpmsg to control the NeoPixels via /dev/rpmsg_pru30 -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> // atoi -#include <string.h> -#include <pru_cfg.h> -#include <pru_intc.h> -#include <rsc_types.h> -#include <pru_rpmsg.h> -#include "resource_table_0.h" -#include "prugpio.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -/* Host-0 Interrupt sets bit 30 in register R31 */ -#define HOST_INT ((uint32_t) 1 << 30) - -/* The PRU-ICSS system events used for RPMsg are defined in the Linux device tree - * PRU0 uses system event 16 (To ARM) and 17 (From ARM) - * PRU1 uses system event 18 (To ARM) and 19 (From ARM) - */ -#define TO_ARM_HOST 16 -#define FROM_ARM_HOST 17 - -/* -* Using the name 'rpmsg-pru' will probe the rpmsg_pru driver found -* at linux-x.y.z/drivers/rpmsg/rpmsg_pru.c -*/ -#define CHAN_NAME "rpmsg-pru" -#define CHAN_DESC "Channel 30" -#define CHAN_PORT 30 - -/* - * Used to make sure the Linux drivers are ready for RPMsg communication - * Found at linux-x.y.z/include/uapi/linux/virtio_config.h - */ -#define VIRTIO_CONFIG_S_DRIVER_OK 4 - -char payload[RPMSG_BUF_SIZE]; - -#define STR_LEN 24 -#define oneCyclesOn 700/5 // Stay on for 700ns -#define oneCyclesOff 600/5 -#define zeroCyclesOn 350/5 -#define zeroCyclesOff 800/5 -#define resetCycles 51000/5 // Must be at least 50u, use 51u -#define out P9_29 // Bit number to output on - -#define SPEED 20000000/5 // Time to wait between updates - -uint32_t color[STR_LEN]; // green, red, blue - -/* - * main.c - */ -void main(void) -{ - struct pru_rpmsg_transport transport; - uint16_t src, dst, len; - volatile uint8_t *status; - - uint8_t r, g, b; - int i, j; - // Set everything to background - for(i=0; i<STR_LEN; i++) { - color[i] = 0x010000; - } - - /* Allow OCP master port access by the PRU so the PRU can read external memories */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - /* Clear the status of the PRU-ICSS system event that the ARM will use to 'kick' us */ -#ifdef CHIP_IS_am57xx - CT_INTC.SICR_bit.STATUS_CLR_INDEX = FROM_ARM_HOST; -#else - CT_INTC.SICR_bit.STS_CLR_IDX = FROM_ARM_HOST; -#endif - - /* Make sure the Linux drivers are ready for RPMsg communication */ - status = &resourceTable.rpmsg_vdev.status; - while (!(*status & VIRTIO_CONFIG_S_DRIVER_OK)); - - /* Initialize the RPMsg transport structure */ - pru_rpmsg_init(&transport, &resourceTable.rpmsg_vring0, &resourceTable.rpmsg_vring1, TO_ARM_HOST, FROM_ARM_HOST); - - /* Create the RPMsg channel between the PRU and ARM user space using the transport structure. */ - while (pru_rpmsg_channel(RPMSG_NS_CREATE, &transport, CHAN_NAME, CHAN_DESC, CHAN_PORT) != PRU_RPMSG_SUCCESS); - while (1) { - /* Check bit 30 of register R31 to see if the ARM has kicked us */ - if (__R31 & HOST_INT) { - /* Clear the event status */ -#ifdef CHIP_IS_am57xx - CT_INTC.SICR_bit.STATUS_CLR_INDEX = FROM_ARM_HOST; -#else - CT_INTC.SICR_bit.STS_CLR_IDX = FROM_ARM_HOST; -#endif - /* Receive all available messages, multiple messages can be sent per kick */ - while (pru_rpmsg_receive(&transport, &src, &dst, payload, &len) == PRU_RPMSG_SUCCESS) { - char *ret; // rest of payload after front character is removed - int index; // index of LED to control - // Input format is: index red green blue - index = atoi(payload); - // Update the array, but don't write it out. - if((index >=0) & (index < STR_LEN)) { - ret = strchr(payload, ' '); // Skip over index - r = strtol(&ret[1], NULL, 0); - ret = strchr(&ret[1], ' '); // Skip over r, etc. - g = strtol(&ret[1], NULL, 0); - ret = strchr(&ret[1], ' '); - b = strtol(&ret[1], NULL, 0); - - color[index] = (g<<16)|(r<<8)|b; // String wants GRB - } - // When index is -1, send the array to the LED string - if(index == -1) { - // Output the string - for(j=0; j<STR_LEN; j++) { - // Cycle through each bit - for(i=23; i>=0; i--) { - if(color[j] & (0x1<<i)) { - __R30 |= out; // Set the GPIO pin to 1 - __delay_cycles(oneCyclesOn-1); - __R30 &= ~out; // Clear the GPIO pin - __delay_cycles(oneCyclesOff-14); - } else { - __R30 |= out; // Set the GPIO pin to 1 - __delay_cycles(zeroCyclesOn-1); - __R30 &= ~(out); // Clear the GPIO pin - __delay_cycles(zeroCyclesOff-14); - } - } - } - // Send Reset - __R30 &= ~out; // Clear the GPIO pin - __delay_cycles(resetCycles); - - // Wait - __delay_cycles(SPEED); - } - - } - } - } -} diff --git a/books/pru-cookbook/05blocks/code/neo4.pru1_1.c b/books/pru-cookbook/05blocks/code/neo4.pru1_1.c deleted file mode 100644 index 7c120937aa92b19fbc65971aa8a6ec3748c69ca4..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo4.pru1_1.c +++ /dev/null @@ -1,145 +0,0 @@ -// Use rpmsg to control the NeoPixels via /dev/rpmsg_pru30 -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> // atoi -#include <string.h> -#include <pru_cfg.h> -#include <pru_intc.h> -#include <rsc_types.h> -#include <pru_rpmsg.h> -#include "resource_table_1.h" -#include "prugpio.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -/* Host-1 Interrupt sets bit 31 in register R31 */ -#define HOST_INT ((uint32_t) 1 << 31) - -/* The PRU-ICSS system events used for RPMsg are defined in the Linux device tree - * PRU0 uses system event 16 (To ARM) and 17 (From ARM) - * PRU1 uses system event 18 (To ARM) and 19 (From ARM) - */ -#define TO_ARM_HOST 18 -#define FROM_ARM_HOST 19 - -/* -* Using the name 'rpmsg-pru' will probe the rpmsg_pru driver found -* at linux-x.y.z/drivers/rpmsg/rpmsg_pru.c -*/ -#define CHAN_NAME "rpmsg-pru" -#define CHAN_DESC "Channel 31" -#define CHAN_PORT 31 - -/* - * Used to make sure the Linux drivers are ready for RPMsg communication - * Found at linux-x.y.z/include/uapi/linux/virtio_config.h - */ -#define VIRTIO_CONFIG_S_DRIVER_OK 4 - -char payload[RPMSG_BUF_SIZE]; - -#define STR_LEN 24 -#define oneCyclesOn 700/5 // Stay on for 700ns -#define oneCyclesOff 600/5 -#define zeroCyclesOn 350/5 -#define zeroCyclesOff 800/5 -#define resetCycles 51000/5 // Must be at least 50u, use 51u -#define out P9_16 // Bit number to output on - -#define SPEED 20000000/5 // Time to wait between updates - -uint32_t color[STR_LEN]; // green, red, blue - -/* - * main.c - */ -void main(void) -{ - struct pru_rpmsg_transport transport; - uint16_t src, dst, len; - volatile uint8_t *status; - - uint8_t r, g, b; - int i, j; - // Set everything to background - for(i=0; i<STR_LEN; i++) { - color[i] = 0x010000; - } - - /* Allow OCP master port access by the PRU so the PRU can read external memories */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - /* Clear the status of the PRU-ICSS system event that the ARM will use to 'kick' us */ -#ifdef CHIP_IS_am57xx - CT_INTC.SICR_bit.STATUS_CLR_INDEX = FROM_ARM_HOST; -#else - CT_INTC.SICR_bit.STS_CLR_IDX = FROM_ARM_HOST; -#endif - - /* Make sure the Linux drivers are ready for RPMsg communication */ - status = &resourceTable.rpmsg_vdev.status; - while (!(*status & VIRTIO_CONFIG_S_DRIVER_OK)); - - /* Initialize the RPMsg transport structure */ - pru_rpmsg_init(&transport, &resourceTable.rpmsg_vring0, &resourceTable.rpmsg_vring1, TO_ARM_HOST, FROM_ARM_HOST); - - /* Create the RPMsg channel between the PRU and ARM user space using the transport structure. */ - while (pru_rpmsg_channel(RPMSG_NS_CREATE, &transport, CHAN_NAME, CHAN_DESC, CHAN_PORT) != PRU_RPMSG_SUCCESS); - while (1) { - /* Check bit 30 of register R31 to see if the ARM has kicked us */ - if (__R31 & HOST_INT) { - /* Clear the event status */ -#ifdef CHIP_IS_am57xx - CT_INTC.SICR_bit.STATUS_CLR_INDEX = FROM_ARM_HOST; -#else - CT_INTC.SICR_bit.STS_CLR_IDX = FROM_ARM_HOST; -#endif - /* Receive all available messages, multiple messages can be sent per kick */ - while (pru_rpmsg_receive(&transport, &src, &dst, payload, &len) == PRU_RPMSG_SUCCESS) { - char *ret; // rest of payload after front character is removed - int index; // index of LED to control - // Input format is: index red green blue - index = atoi(payload); - // Update the array, but don't write it out. - if((index >=0) & (index < STR_LEN)) { - ret = strchr(payload, ' '); // Skip over index - r = strtol(&ret[1], NULL, 0); - ret = strchr(&ret[1], ' '); // Skip over r, etc. - g = strtol(&ret[1], NULL, 0); - ret = strchr(&ret[1], ' '); - b = strtol(&ret[1], NULL, 0); - - color[index] = (g<<16)|(r<<8)|b; // String wants GRB - } - // When index is -1, send the array to the LED string - if(index == -1) { - // Output the string - for(j=0; j<STR_LEN; j++) { - // Cycle through each bit - for(i=23; i>=0; i--) { - if(color[j] & (0x1<<i)) { - __R30 |= out; // Set the GPIO pin to 1 - __delay_cycles(oneCyclesOn-1); - __R30 &= ~out; // Clear the GPIO pin - __delay_cycles(oneCyclesOff-14); - } else { - __R30 |= out; // Set the GPIO pin to 1 - __delay_cycles(zeroCyclesOn-1); - __R30 &= ~(out); // Clear the GPIO pin - __delay_cycles(zeroCyclesOff-14); - } - } - } - // Send Reset - __R30 &= ~out; // Clear the GPIO pin - __delay_cycles(resetCycles); - - // Wait - __delay_cycles(SPEED); - } - - } - } - } -} diff --git a/books/pru-cookbook/05blocks/code/neo_setup.sh b/books/pru-cookbook/05blocks/code/neo_setup.sh deleted file mode 100755 index 8f98cbb2a9ae5f915cafc47af006b958fffe44f7..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/neo_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -export TARGET=neo1.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_29 " -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P1_33" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruout - config-pin -q $pin -done diff --git a/books/pru-cookbook/05blocks/code/pwm-test.c b/books/pru-cookbook/05blocks/code/pwm-test.c deleted file mode 100644 index 3bff5f71b6598b3f6ee1fd0fc04bdac16793cda8..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm-test.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - * pwm tester - * The on cycle and off cycles are stored in each PRU's Data memory - * - */ - -#include <stdio.h> -#include <fcntl.h> -#include <sys/mman.h> - -#define MAXCH 4 - -#define PRU_ADDR 0x4A300000 // Start of PRU memory Page 184 am335x TRM -#define PRU_LEN 0x80000 // Length of PRU memory -#define PRU0_DRAM 0x00000 // Offset to DRAM -#define PRU1_DRAM 0x02000 -#define PRU_SHAREDMEM 0x10000 // Offset to shared memory - -unsigned int *pru0DRAM_32int_ptr; // Points to the start of local DRAM -unsigned int *pru1DRAM_32int_ptr; // Points to the start of local DRAM -unsigned int *prusharedMem_32int_ptr; // Points to the start of the shared memory - -/******************************************************************************* -* int start_pwm_count(int ch, int countOn, int countOff) -* -* Starts a pwm pulse on for countOn and off for countOff to a single channel (ch) -*******************************************************************************/ -int start_pwm_count(int ch, int countOn, int countOff) { - unsigned int *pruDRAM_32int_ptr = pru0DRAM_32int_ptr; - - printf("countOn: %d, countOff: %d, count: %d\n", - countOn, countOff, countOn+countOff); - // write to PRU shared memory - pruDRAM_32int_ptr[2*(ch)+0] = countOn; // On time - pruDRAM_32int_ptr[2*(ch)+1] = countOff; // Off time - return 0; -} - -int main(int argc, char *argv[]) -{ - unsigned int *pru; // Points to start of PRU memory. - int fd; - printf("Servo tester\n"); - - fd = open ("/dev/mem", O_RDWR | O_SYNC); - if (fd == -1) { - printf ("ERROR: could not open /dev/mem.\n\n"); - return 1; - } - pru = mmap (0, PRU_LEN, PROT_READ | PROT_WRITE, MAP_SHARED, fd, PRU_ADDR); - if (pru == MAP_FAILED) { - printf ("ERROR: could not map memory.\n\n"); - return 1; - } - close(fd); - printf ("Using /dev/mem.\n"); - - pru0DRAM_32int_ptr = pru + PRU0_DRAM/4 + 0x200/4; // Points to 0x200 of PRU0 memory - pru1DRAM_32int_ptr = pru + PRU1_DRAM/4 + 0x200/4; // Points to 0x200 of PRU1 memory - prusharedMem_32int_ptr = pru + PRU_SHAREDMEM/4; // Points to start of shared memory - - int i; - for(i=0; i<MAXCH; i++) { - start_pwm_count(i, i+1, 20-(i+1)); - } - - if(munmap(pru, PRU_LEN)) { - printf("munmap failed\n"); - } else { - printf("munmap succeeded\n"); - } -} - diff --git a/books/pru-cookbook/05blocks/code/pwm1.pru0.c b/books/pru-cookbook/05blocks/code/pwm1.pru0.c deleted file mode 100644 index 2ea5caa17efd570bad1cbc658d5e2c96557b1b0f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm1.pru0.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t gpio = P9_31; // Select which pin to toggle.; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - while(1) { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(100000000); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(100000000); - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm1.pru1_1.c b/books/pru-cookbook/05blocks/code/pwm1.pru1_1.c deleted file mode 100644 index 1f8b737e678691af3c4ab83cfa2d1d5bc442fe64..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm1.pru1_1.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t gpio = P9_16; // Select which pin to toggle.; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - while(1) { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(100000000); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(100000000); - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm2.pru0.c b/books/pru-cookbook/05blocks/code/pwm2.pru0.c deleted file mode 100644 index bfa0d0761411212a8a0f4469ca02dfd08f5a20bd..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm2.pru0.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t gpio = P9_31; // Select which pin to toggle.; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - while (1) { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(1); // Delay one cycle to correct for loop time - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(0); - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm3.pru0.c b/books/pru-cookbook/05blocks/code/pwm3.pru0.c deleted file mode 100644 index 4b2955a0573171e7e3525a9381e4a4a2acb15e36..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm3.pru0.c +++ /dev/null @@ -1,43 +0,0 @@ -// This code does MAXCH parallel PWM channels. -// It's period is 3 us -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" - -#define MAXCH 4 // Maximum number of channels - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t ch; - uint32_t on[] = {1, 2, 3, 4}; // Number of cycles to stay on - uint32_t off[] = {4, 3, 2, 1}; // Number to stay off - uint32_t onCount[MAXCH]; // Current count - uint32_t offCount[MAXCH]; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - // Initialize the channel counters. - for(ch=0; ch<MAXCH; ch++) { - onCount[ch] = on[ch]; - offCount[ch]= off[ch]; - } - - while (1) { - for(ch=0; ch<MAXCH; ch++) { - if(onCount[ch]) { - onCount[ch]--; - __R30 |= 0x1<<ch; // Set the GPIO pin to 1 - } else if(offCount[ch]) { - offCount[ch]--; - __R30 &= ~(0x1<<ch); // Clear the GPIO pin - } else { - onCount[ch] = on[ch]; - offCount[ch]= off[ch]; - } - } - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm4.pru0.c b/books/pru-cookbook/05blocks/code/pwm4.pru0.c deleted file mode 100644 index ee0f7ec6adf542562b8740ce410226840b01ac50..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm4.pru0.c +++ /dev/null @@ -1,50 +0,0 @@ -// This code does MAXCH parallel PWM channels. -// It's period is 3 us -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" - -#define PRU0_DRAM 0x00000 // Offset to DRAM -// Skip the first 0x200 byte of DRAM since the Makefile allocates -// 0x100 for the STACK and 0x100 for the HEAP. -volatile unsigned int *pru0_dram = (unsigned int *) (PRU0_DRAM + 0x200); - -#define MAXCH 4 // Maximum number of channels per PRU - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t ch; - uint32_t on[] = {1, 2, 3, 4}; // Number of cycles to stay on - uint32_t off[] = {4, 3, 2, 1}; // Number to stay off - uint32_t onCount[MAXCH]; // Current count - uint32_t offCount[MAXCH]; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - // Initialize the channel counters. - for(ch=0; ch<MAXCH; ch++) { - pru0_dram[2*ch ] = on[ch]; // Copy to DRAM0 so the ARM can change it - pru0_dram[2*ch+1] = off[ch]; // Interleave the on and off values - onCount[ch] = on[ch]; - offCount[ch]= off[ch]; - } - - while (1) { - for(ch=0; ch<MAXCH; ch++) { - if(onCount[ch]) { - onCount[ch]--; - __R30 |= 0x1<<ch; // Set the GPIO pin to 1 - } else if(offCount[ch]) { - offCount[ch]--; - __R30 &= ~(0x1<<ch); // Clear the GPIO pin - } else { - onCount[ch] = pru0_dram[2*ch]; // Read from DRAM0 - offCount[ch]= pru0_dram[2*ch+1]; - } - } - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm5.pru0.c b/books/pru-cookbook/05blocks/code/pwm5.pru0.c deleted file mode 100644 index 60a97b817c32ca25fcbd9445ec6d612151ed21c6..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm5.pru0.c +++ /dev/null @@ -1,53 +0,0 @@ -// This code does MAXCH parallel PWM channels. -// It's period is 510ns. -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" - -#define PRU0_DRAM 0x00000 // Offset to DRAM -// Skip the first 0x200 byte of DRAM since the Makefile allocates -// 0x100 for the STACK and 0x100 for the HEAP. -volatile unsigned int *pru0_dram = (unsigned int *) (PRU0_DRAM + 0x200); - -#define MAXCH 4 // Maximum number of channels per PRU - -#define update(ch) \ - if(onCount[ch]) { \ - onCount[ch]--; \ - __R30 |= 0x1<<ch; \ - } else if(offCount[ch]) { \ - offCount[ch]--; \ - __R30 &= ~(0x1<<ch); \ - } else { \ - onCount[ch] = pru0_dram[2*ch]; \ - offCount[ch]= pru0_dram[2*ch+1]; \ - } - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t ch; - uint32_t on[] = {1, 2, 3, 4}; - uint32_t off[] = {4, 3, 2, 1}; - uint32_t onCount[MAXCH], offCount[MAXCH]; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - -#pragma UNROLL(MAXCH) - for(ch=0; ch<MAXCH; ch++) { - pru0_dram[2*ch ] = on[ch]; // Copy to DRAM0 so the ARM can change it - pru0_dram[2*ch+1] = off[ch]; // Interleave the on and off values - onCount[ch] = on[ch]; - offCount[ch]= off[ch]; - } - - while (1) { - update(0) - update(1) - update(2) - update(3) - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm6.pru0.c b/books/pru-cookbook/05blocks/code/pwm6.pru0.c deleted file mode 100644 index 6df321f5f0d7094b6ec93e57cbf65a62994094a1..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm6.pru0.c +++ /dev/null @@ -1,56 +0,0 @@ -// This code does MAXCH parallel PWM channels. -// All channels start at the same time. It's period is 510ns -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" - -#define PRU0_DRAM 0x00000 // Offset to DRAM -// Skip the first 0x200 byte of DRAM since the Makefile allocates -// 0x100 for the STACK and 0x100 for the HEAP. -volatile unsigned int *pru0_dram = (unsigned int *) (PRU0_DRAM + 0x200); - -#define MAXCH 4 // Maximum number of channels per PRU - -#define update(ch) \ - if(onCount[ch]) { \ - onCount[ch]--; \ - Rtmp |= 0x1<<ch; \ - } else if(offCount[ch]) { \ - offCount[ch]--; \ - Rtmp &= ~(0x1<<ch); \ - } else { \ - onCount[ch] = pru0_dram[2*ch]; \ - offCount[ch]= pru0_dram[2*ch+1]; \ - } - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t ch; - uint32_t on[] = {1, 2, 3, 4}; - uint32_t off[] = {4, 3, 2, 1}; - uint32_t onCount[MAXCH], offCount[MAXCH]; - register uint32_t Rtmp; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - -#pragma UNROLL(MAXCH) - for(ch=0; ch<MAXCH; ch++) { - pru0_dram[2*ch ] = on[ch]; // Copy to DRAM0 so the ARM can change it - pru0_dram[2*ch+1] = off[ch]; // Interleave the on and off values - onCount[ch] = on[ch]; - offCount[ch]= off[ch]; - } - Rtmp = __R30; - - while (1) { - update(0) - update(1) - update(2) - update(3) - __R30 = Rtmp; - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm7-test.c b/books/pru-cookbook/05blocks/code/pwm7-test.c deleted file mode 100644 index cbb6769819050b95dec2fd402db0f69a4beaa752..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm7-test.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * - * pwm tester - * (c) Copyright 2016 - * Mark A. Yoder, 20-July-2016 - * The channels 0-11 are on PRU1 and channels 12-17 are on PRU0 - * The period and duty cycle values are stored in each PRU's Data memory - * The enable bits are stored in the shared memory - * - */ - -#include <stdio.h> -#include <fcntl.h> -#include <sys/mman.h> - -#define MAXCH 2 - -#define PRU_ADDR 0x4A300000 // Start of PRU memory Page 184 am335x TRM -#define PRU_LEN 0x80000 // Length of PRU memory -#define PRU0_DRAM 0x00000 // Offset to DRAM -#define PRU1_DRAM 0x02000 -#define PRU_SHAREDMEM 0x10000 // Offset to shared memory - -unsigned int *pru0DRAM_32int_ptr; // Points to the start of local DRAM -unsigned int *pru1DRAM_32int_ptr; // Points to the start of local DRAM -unsigned int *prusharedMem_32int_ptr; // Points to the start of the shared memory - -/******************************************************************************* -* int start_pwm_count(int ch, int countOn, int countOff) -* -* Starts a pwm pulse on for countOn and off for countOff to a single channel (ch) -*******************************************************************************/ -int start_pwm_count(int ch, int countOn, int countOff, unsigned int *ptr) { - unsigned int *pruDRAM_32int_ptr = ptr; - - printf("countOn: %d, countOff: %d, count: %d\n", - countOn, countOff, countOn+countOff); - // write to PRU shared memory - pruDRAM_32int_ptr[2*(ch)+0] = countOn; // On time - pruDRAM_32int_ptr[2*(ch)+1] = countOff; // Off time - return 0; -} - -int main(int argc, char *argv[]) -{ - unsigned int *pru; // Points to start of PRU memory. - int fd; - printf("Servo tester\n"); - - fd = open ("/dev/mem", O_RDWR | O_SYNC); - if (fd == -1) { - printf ("ERROR: could not open /dev/mem.\n\n"); - return 1; - } - pru = mmap (0, PRU_LEN, PROT_READ | PROT_WRITE, MAP_SHARED, fd, PRU_ADDR); - if (pru == MAP_FAILED) { - printf ("ERROR: could not map memory.\n\n"); - return 1; - } - close(fd); - printf ("Using /dev/mem.\n"); - - pru0DRAM_32int_ptr = pru + PRU0_DRAM/4 + 0x200/4; // Points to 0x200 of PRU0 memory - pru1DRAM_32int_ptr = pru + PRU1_DRAM/4 + 0x200/4; // Points to 0x200 of PRU1 memory - prusharedMem_32int_ptr = pru + PRU_SHAREDMEM/4; // Points to start of shared memory - - - int on[] = {1, 2, 3, 4}; - int off[] = {4, 3, 2, 1}; - - int ch; - for(ch=0; ch<MAXCH; ch++) { - start_pwm_count(ch, on[ch], off[ch], pru0DRAM_32int_ptr); - start_pwm_count(ch, on[ch+MAXCH], off[ch+MAXCH], pru1DRAM_32int_ptr); - } - - if(munmap(pru, PRU_LEN)) { - printf("munmap failed\n"); - } else { - printf("munmap succeeded\n"); - } -} - diff --git a/books/pru-cookbook/05blocks/code/pwm7.pru0.c b/books/pru-cookbook/05blocks/code/pwm7.pru0.c deleted file mode 100644 index b95c5caab89d3614e9dfa964d38c162921f67a4b..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm7.pru0.c +++ /dev/null @@ -1,57 +0,0 @@ -// This code does MAXCH parallel PWM channels on both PRU 0 and PRU 1 -// All channels start at the same time. But the PRU 1 ch have a difference period -// It's period is 370ns -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" - -#define PRUNUM 0 - -#define PRU0_DRAM 0x00000 // Offset to DRAM -// Skip the first 0x200 byte of DRAM since the Makefile allocates -// 0x100 for the STACK and 0x100 for the HEAP. -volatile unsigned int *pru0_dram = (unsigned int *) (PRU0_DRAM + 0x200); - -#define MAXCH 2 // Maximum number of channels per PRU - -#define update(ch) \ - if(onCount[ch]) { \ - onCount[ch]--; \ - Rtmp |= 0x1<<ch; \ - } else if(offCount[ch]) { \ - offCount[ch]--; \ - Rtmp &= ~(0x1<<ch); \ - } else { \ - onCount[ch] = pru0_dram[2*ch]; \ - offCount[ch]= pru0_dram[2*ch+1]; \ - } - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t ch; - uint32_t on[] = {1, 2, 3, 4}; - uint32_t off[] = {4, 3, 2, 1}; - uint32_t onCount[MAXCH], offCount[MAXCH]; - register uint32_t Rtmp; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - -#pragma UNROLL(MAXCH) - for(ch=0; ch<MAXCH; ch++) { - pru0_dram[2*ch ] = on [ch+PRUNUM*MAXCH]; // Copy to DRAM0 so the ARM can change it - pru0_dram[2*ch+1] = off[ch+PRUNUM*MAXCH]; // Interleave the on and off values - onCount[ch] = on [ch+PRUNUM*MAXCH]; - offCount[ch]= off[ch+PRUNUM*MAXCH]; - } - Rtmp = __R30; - - while (1) { - update(0) - update(1) - __R30 = Rtmp; - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm7.pru1.c b/books/pru-cookbook/05blocks/code/pwm7.pru1.c deleted file mode 100644 index 50d4788b8c4d07848a0f0ff651fc78a7545ff67f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm7.pru1.c +++ /dev/null @@ -1,57 +0,0 @@ -// This code does MAXCH parallel PWM channels on both PRU 0 and PRU 1 -// All channels start at the same time. But the PRU 1 ch have a difference period -// It's period is 370ns -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" - -#define PRUNUM 1 - -#define PRU0_DRAM 0x00000 // Offset to DRAM -// Skip the first 0x200 byte of DRAM since the Makefile allocates -// 0x100 for the STACK and 0x100 for the HEAP. -volatile unsigned int *pru0_dram = (unsigned int *) (PRU0_DRAM + 0x200); - -#define MAXCH 2 // Maximum number of channels per PRU - -#define update(ch) \ - if(onCount[ch]) { \ - onCount[ch]--; \ - Rtmp |= 0x1<<ch; \ - } else if(offCount[ch]) { \ - offCount[ch]--; \ - Rtmp &= ~(0x1<<ch); \ - } else { \ - onCount[ch] = pru0_dram[2*ch]; \ - offCount[ch]= pru0_dram[2*ch+1]; \ - } - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t ch; - uint32_t on[] = {1, 2, 3, 4}; - uint32_t off[] = {4, 3, 2, 1}; - uint32_t onCount[MAXCH], offCount[MAXCH]; - register uint32_t Rtmp; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - -#pragma UNROLL(MAXCH) - for(ch=0; ch<MAXCH; ch++) { - pru0_dram[2*ch ] = on [ch+PRUNUM*MAXCH]; // Copy to DRAM0 so the ARM can change it - pru0_dram[2*ch+1] = off[ch+PRUNUM*MAXCH]; // Interleave the on and off values - onCount[ch] = on [ch+PRUNUM*MAXCH]; - offCount[ch]= off[ch+PRUNUM*MAXCH]; - } - Rtmp = __R30; - - while (1) { - update(0) - update(1) - __R30 = Rtmp; - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm7_setup.sh b/books/pru-cookbook/05blocks/code/pwm7_setup.sh deleted file mode 100755 index aae4c778542c5209a799411b393b2d5b2130e76e..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm7_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -export TARGET=pwm7.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_31 P9_29 P8_45 P8_46" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P1_36 P1_33" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruout - config-pin -q $pin -done diff --git a/books/pru-cookbook/05blocks/code/pwm8.pru0.c b/books/pru-cookbook/05blocks/code/pwm8.pru0.c deleted file mode 100644 index 25499c3cd679d7df3c9ba20db331948700157862..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm8.pru0.c +++ /dev/null @@ -1,78 +0,0 @@ -// This code does MAXCH parallel PWM channels on both PRU 0 and PRU 1 -// All channels start at the same time. -// It's period is 430ns -#include <stdint.h> -#include <pru_cfg.h> -#include <pru_intc.h> -#include <pru_ctrl.h> -#include "resource_table_empty.h" - -#define PRUNUM 0 - -#define PRU0_DRAM 0x00000 // Offset to DRAM -// Skip the first 0x200 byte of DRAM since the Makefile allocates -// 0x100 for the STACK and 0x100 for the HEAP. -volatile unsigned int *pru0_dram = (unsigned int *) (PRU0_DRAM + 0x200); - -#define MAXCH 2 // Maximum number of channels per PRU - -#define update(ch) \ - if(onCount[ch]) { \ - onCount[ch]--; \ - Rtmp |= 0x1<<ch; \ - } else if(offCount[ch]) { \ - offCount[ch]--; \ - Rtmp &= ~(0x1<<ch); \ - } else { \ - onCount[ch] = pru0_dram[2*ch]; \ - offCount[ch]= pru0_dram[2*ch+1]; \ - } - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -// Initialize interrupts so the PRUs can be synchronized. -// PRU1 is started first and then waits for PRU0 -// PRU0 is then started and tells PRU1 when to start going -void configIntc(void) { - __R31 = 0x00000000; // Clear any pending PRU-generated events - CT_INTC.CMR4_bit.CH_MAP_16 = 1; // Map event 16 to channel 1 - CT_INTC.HMR0_bit.HINT_MAP_1 = 1; // Map channel 1 to host 1 - CT_INTC.SICR = 16; // Ensure event 16 is cleared - CT_INTC.EISR = 16; // Enable event 16 - CT_INTC.HIEISR |= (1 << 0); // Enable Host interrupt 1 - CT_INTC.GER = 1; // Globally enable host interrupts -} - -void main(void) -{ - uint32_t ch; - uint32_t on[] = {1, 2, 3, 4}; - uint32_t off[] = {4, 3, 2, 1}; - uint32_t onCount[MAXCH], offCount[MAXCH]; - register uint32_t Rtmp; - - CT_CFG.GPCFG0 = 0x0000; // Configure GPI and GPO as Mode 0 (Direct Connect) - configIntc(); // Configure INTC - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - -#pragma UNROLL(MAXCH) - for(ch=0; ch<MAXCH; ch++) { - pru0_dram[2*ch ] = on [ch+PRUNUM*MAXCH]; // Copy to DRAM0 so the ARM can change it - pru0_dram[2*ch+1] = off[ch+PRUNUM*MAXCH]; // Interleave the on and off values - onCount[ch] = on [ch+PRUNUM*MAXCH]; - offCount[ch]= off[ch+PRUNUM*MAXCH]; - } - Rtmp = __R30; - - while (1) { - __R30 = Rtmp; - update(0) - update(1) -#define PRU0_PRU1_EVT 16 - __R31 = (PRU0_PRU1_EVT-16) | (0x1<<5); //Tell PRU 1 to start - __delay_cycles(1); - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm8.pru1.c b/books/pru-cookbook/05blocks/code/pwm8.pru1.c deleted file mode 100644 index 7d4da138d6595ae4380655c3fffb3b8cdfb854ca..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm8.pru1.c +++ /dev/null @@ -1,66 +0,0 @@ -// This code does MAXCH parallel PWM channels on both PRU 0 and PRU 1 -// All channels start at the same time. -// It's period is 430ns -#include <stdint.h> -#include <pru_cfg.h> -#include <pru_intc.h> -#include <pru_ctrl.h> -#include "resource_table_empty.h" - -#define PRUNUM 1 - -#define PRU0_DRAM 0x00000 // Offset to DRAM -// Skip the first 0x200 byte of DRAM since the Makefile allocates -// 0x100 for the STACK and 0x100 for the HEAP. -volatile unsigned int *pru0_dram = (unsigned int *) (PRU0_DRAM + 0x200); - -#define MAXCH 2 // Maximum number of channels per PRU - -#define update(ch) \ - if(onCount[ch]) { \ - onCount[ch]--; \ - Rtmp |= 0x1<<ch; \ - } else if(offCount[ch]) { \ - offCount[ch]--; \ - Rtmp &= ~(0x1<<ch); \ - } else { \ - onCount[ch] = pru0_dram[2*ch]; \ - offCount[ch]= pru0_dram[2*ch+1]; \ - } - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -// Initialize interrupts so the PRUs can be synchronized. -// PRU1 is started first and then waits for PRU0 -// PRU0 is then started and tells PRU1 when to start going - -void main(void) -{ - uint32_t ch; - uint32_t on[] = {1, 2, 3, 4}; - uint32_t off[] = {4, 3, 2, 1}; - uint32_t onCount[MAXCH], offCount[MAXCH]; - register uint32_t Rtmp; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - -#pragma UNROLL(MAXCH) - for(ch=0; ch<MAXCH; ch++) { - pru0_dram[2*ch ] = on [ch+PRUNUM*MAXCH]; // Copy to DRAM0 so the ARM can change it - pru0_dram[2*ch+1] = off[ch+PRUNUM*MAXCH]; // Interleave the on and off values - onCount[ch] = on [ch+PRUNUM*MAXCH]; - offCount[ch]= off[ch+PRUNUM*MAXCH]; - } - Rtmp = __R30; - - while (1) { - while((__R31 & (0x1<<31))==0) { // Wait for PRU 0 - } - CT_INTC.SICR = 16; // Clear event 16 - __R30 = Rtmp; - update(0) - update(1) - } -} diff --git a/books/pru-cookbook/05blocks/code/pwm_setup.sh b/books/pru-cookbook/05blocks/code/pwm_setup.sh deleted file mode 100755 index b69ed1297ab4a73d309a7f46253c3b9b5f97add1..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/pwm_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -export TARGET=pwm1.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_31 P9_29 P9_30 P9_28" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P1_36 P1_33 P2_32 P2_30" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruout - config-pin -q $pin -done diff --git a/books/pru-cookbook/05blocks/code/resource_table_empty.h b/books/pru-cookbook/05blocks/code/resource_table_empty.h deleted file mode 100644 index 07e97d9b383c9d937d4b55e705024d6c28dc748a..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/resource_table_empty.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * ======== resource_table_empty.h ======== - * - * Define the resource table entries for all PRU cores. This will be - * incorporated into corresponding base images, and used by the remoteproc - * on the host-side to allocated/reserve resources. Note the remoteproc - * driver requires that all PRU firmware be built with a resource table. - * - * This file contains an empty resource table. It can be used either as: - * - * 1) A template, or - * 2) As-is if a PRU application does not need to configure PRU_INTC - * or interact with the rpmsg driver - * - */ - -#ifndef _RSC_TABLE_PRU_H_ -#define _RSC_TABLE_PRU_H_ - -#include <stddef.h> -#include <rsc_types.h> - -struct my_resource_table { - struct resource_table base; - - uint32_t offset[1]; /* Should match 'num' in actual definition */ -}; - -#pragma DATA_SECTION(pru_remoteproc_ResourceTable, ".resource_table") -#pragma RETAIN(pru_remoteproc_ResourceTable) -struct my_resource_table pru_remoteproc_ResourceTable = { - 1, /* we're the first version that implements this */ - 0, /* number of entries in the table */ - 0, 0, /* reserved, must be zero */ - 0, /* offset[0] */ -}; - -#endif /* _RSC_TABLE_PRU_H_ */ - diff --git a/books/pru-cookbook/05blocks/code/rgb1.pru0.c b/books/pru-cookbook/05blocks/code/rgb1.pru0.c deleted file mode 100644 index 9936d627336863daf9c4c1d5e92f70afd602b3a9..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb1.pru0.c +++ /dev/null @@ -1,80 +0,0 @@ -// This code drives the RGB LED Matrix on the 1st Connector -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" -#include "rgb_pocket.h" - -#define DELAY 10 // Number of cycles (5ns each) to wait after a write - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - // Set up the pointers to each of the GPIO ports - uint32_t *gpio[] = { - (uint32_t *) GPIO0, - (uint32_t *) GPIO1, - (uint32_t *) GPIO2, - (uint32_t *) GPIO3 - }; - - uint32_t i, row; - - while(1) { - for(row=0; row<16; row++) { - // Set the row address - // Here we take advantage of the select bits (LA,LB,LC,LD) - // being sequential in the R30 register (bits 2,3,4,5) - // We shift row over so it lines up with the select bits - // Oring (|=) with R30 sets bits to 1 and - // Anding (&=) clears bits to 0, the 0xffc mask makes sure the - // other bits aren't changed. - __R30 |= row<<pru_sel0; - __R30 &= (row<<pru_sel0)|0xffc3; - - for(i=0; i<64; i++) { - // Top row white - // Combining these to one write works because they are all in - // the same gpio port - gpio[r11_gpio][GPIO_SETDATAOUT] = r11_pin | g11_pin | b11_pin; - __delay_cycles(DELAY);; - - // Bottom row red - gpio[r12_gpio][GPIO_SETDATAOUT] = r12_pin; - __delay_cycles(DELAY); - gpio[r12_gpio][GPIO_CLEARDATAOUT] = g12_pin | b12_pin; - __delay_cycles(DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - - // Top row black - gpio[r11_gpio][GPIO_CLEARDATAOUT] = r11_pin | g11_pin | b11_pin; - __delay_cycles(DELAY); - - // Bottom row green - gpio[r12_gpio][GPIO_CLEARDATAOUT] = r12_pin | b12_pin; - __delay_cycles(DELAY); - gpio[r12_gpio][GPIO_SETDATAOUT] = g12_pin; - __delay_cycles(DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - } - __R30 |= pru_oe; // Disable display - __delay_cycles(DELAY); - __R30 |= pru_latch; // Toggle latch - __delay_cycles(DELAY); - __R30 &= ~pru_latch; - __delay_cycles(DELAY); - __R30 &= ~pru_oe; // Enable display - __delay_cycles(DELAY); - } - } -} diff --git a/books/pru-cookbook/05blocks/code/rgb2.pru0.c b/books/pru-cookbook/05blocks/code/rgb2.pru0.c deleted file mode 100644 index eb43b357bb3cdb92f6853a0d46600b1e53a7b6ac..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb2.pru0.c +++ /dev/null @@ -1,81 +0,0 @@ -// This code drives the RGB LED Matrix on J1 connector -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" -#include "rgb_pocket.h" - -#define DELAY 100 - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - // Set up the pointers to each of the GPIO ports - uint32_t *gpio[] = { - (uint32_t *) GPIO0, - (uint32_t *) GPIO1, - (uint32_t *) GPIO2, - (uint32_t *) GPIO3 - }; - - uint32_t i, row; - - while(1) { - for(row=0; row<16; row++) { - if(row&(0x1<<0)) __R30|=(0x1<<pru_sel0); else __R30&=~(0x1<<pru_sel0); - __delay_cycles(DELAY); - if(row&(0x1<<1)) __R30|=(0x1<<pru_sel1); else __R30&=~(0x1<<pru_sel1); - __delay_cycles(DELAY); - if(row&(0x1<<2)) __R30|=(0x1<<pru_sel2); else __R30&=~(0x1<<pru_sel2); - __delay_cycles(DELAY); - if(row&(0x1<<3)) __R30|=(0x1<<pru_sel3); else __R30&=~(0x1<<pru_sel3); - __delay_cycles(DELAY); - - for(i=0; i<64; i++) { - // red - gpio[r11_gpio][GPIO_SETDATAOUT] = r11_pin; - __delay_cycles(DELAY); - gpio[r11_gpio][GPIO_CLEARDATAOUT] = g11_pin | b11_pin; - __delay_cycles(DELAY); - - // green - gpio[r11_gpio][GPIO_CLEARDATAOUT] = r12_pin | b12_pin; - __delay_cycles(DELAY); - gpio[r11_gpio][GPIO_SETDATAOUT] = g12_pin; - __delay_cycles(DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - - // blue - gpio[r11_gpio][GPIO_CLEARDATAOUT] = r11_pin | g11_pin; - __delay_cycles(DELAY); - gpio[r11_gpio][GPIO_SETDATAOUT] = b11_pin; - __delay_cycles(DELAY); - - //blue - gpio[r11_gpio][GPIO_CLEARDATAOUT] = r12_pin | g12_pin; - __delay_cycles(DELAY); - gpio[r11_gpio][GPIO_SETDATAOUT] = b12_pin; - __delay_cycles(DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - } - __R30 |= pru_oe; // Disable display - __delay_cycles(DELAY); - __R30 |= pru_latch; // Toggle latch - __delay_cycles(DELAY); - __R30 &= ~pru_latch; - __delay_cycles(DELAY); - __R30 &= ~pru_oe; // Enable display - __delay_cycles(DELAY); - } - } -} diff --git a/books/pru-cookbook/05blocks/code/rgb3.pru0.c b/books/pru-cookbook/05blocks/code/rgb3.pru0.c deleted file mode 100644 index b14ad864c4de0c621561f1cb031aae0af5367dd4..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb3.pru0.c +++ /dev/null @@ -1,114 +0,0 @@ -// This code drives the RGB LED Matrix on the 1st and 2nd Connectors -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" -#include "rgb_pocket.h" - -#define DELAY 10 // Number of cycles (5ns each) to wait after a write - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - // Set up the pointers to each of the GPIO ports - uint32_t *gpio[] = { - (uint32_t *) GPIO0, - (uint32_t *) GPIO1, - (uint32_t *) GPIO2, - (uint32_t *) GPIO3 - }; - - uint32_t i, row; - - while(1) { - for(row=0; row<16; row++) { - // Set the row address - // Here we take advantage of the select bits (LA,LB,LC,LD) - // being sequential in the R30 register (bits 2,3,4,5) - // We shift row over so it lines up with the select bits - // Oring (|=) with R30 sets bits to 1 and - // Anding (&=) clears bits to 0, the 0xffc mask makes sure the - // other bits aren't changed. - __R30 |= row<<pru_sel0; - __R30 &= (row<<pru_sel0)|0xffc3; - - for(i=0; i<64; i++) { - // Panel 1 Upper - // Top row white - // Combining these to one write works because they are all in - // the same gpio port - gpio[r11_gpio][GPIO_SETDATAOUT] = r11_pin | g11_pin | b11_pin; - __delay_cycles(DELAY); - - // Bottom row red - gpio[r12_gpio][GPIO_SETDATAOUT] = r12_pin; - // __delay_cycles(DELAY); - gpio[g12_gpio][GPIO_CLEARDATAOUT] = g12_pin | b12_pin; - __delay_cycles(DELAY); - - // Panel 2 Upper - // Top row blue - // Combining these to one write works because they are all in - // the same gpio port except b12 - gpio[r21_gpio][GPIO_CLEARDATAOUT] = r21_pin | g21_pin; - // __delay_cycles(DELAY); - gpio[b21_gpio][GPIO_SETDATAOUT] = b21_pin; - __delay_cycles(DELAY); - - // Bottom row red - gpio[r22_gpio][GPIO_SETDATAOUT] = r22_pin; - __delay_cycles(DELAY); - gpio[g22_gpio][GPIO_CLEARDATAOUT] = g22_pin; - __delay_cycles(DELAY); - gpio[b22_gpio][GPIO_CLEARDATAOUT] = b22_pin; - __delay_cycles(DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - - // Panel 1 Lower - // Top row black - gpio[r11_gpio][GPIO_CLEARDATAOUT] = r11_pin | g11_pin | b11_pin; - __delay_cycles(DELAY); - - // Bottom row green - gpio[r12_gpio][GPIO_CLEARDATAOUT] = r12_pin | b12_pin; - __delay_cycles(DELAY); - gpio[g12_gpio][GPIO_SETDATAOUT] = g12_pin; - __delay_cycles(DELAY); - - // Panel 2 Lower - // Top row reg+green = yellow - gpio[r21_gpio][GPIO_SETDATAOUT] = r21_pin | g21_pin; - __delay_cycles(DELAY); - gpio[b21_gpio][GPIO_CLEARDATAOUT] = b21_pin; - __delay_cycles(DELAY); - - // Bottom row green - gpio[r22_gpio][GPIO_CLEARDATAOUT] = r22_pin; - __delay_cycles(DELAY); - gpio[b22_gpio][GPIO_CLEARDATAOUT] = b22_pin; - __delay_cycles(DELAY); - gpio[g22_gpio][GPIO_SETDATAOUT] = g22_pin; - __delay_cycles(2*DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - } - __R30 |= pru_oe; // Disable display - __delay_cycles(DELAY); - __R30 |= pru_latch; // Toggle latch - __delay_cycles(DELAY); - __R30 &= ~pru_latch; - __delay_cycles(DELAY); - __R30 &= ~pru_oe; // Enable display - __delay_cycles(DELAY); - } - } -} diff --git a/books/pru-cookbook/05blocks/code/rgb4.pru0.c b/books/pru-cookbook/05blocks/code/rgb4.pru0.c deleted file mode 100644 index 6d06f1210e18bb3bbf74bf20b9c0b0c876c365e0..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb4.pru0.c +++ /dev/null @@ -1,84 +0,0 @@ -// This code drives the RGB LED Matrix on the 2nd Connector -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" -#include "rgb_pocket.h" - -#define DELAY 10 // Number of cycles (5ns each) to wait after a write - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - // Set up the pointers to each of the GPIO ports - uint32_t *gpio[] = { - (uint32_t *) GPIO0, - (uint32_t *) GPIO1, - (uint32_t *) GPIO2, - (uint32_t *) GPIO3 - }; - - uint32_t i, row; - - while(1) { - for(row=0; row<16; row++) { - // Set the row address - // Here we take advantage of the select bits (LA,LB,LC,LD) - // being sequential in the R30 register (bits 2,3,4,5) - // We shift row over so it lines up with the select bits - // Oring (|=) with R30 sets bits to 1 and - // Anding (&=) clears bits to 0, the 0xffc mask makes sure the - // other bits aren't changed. - __R30 |= row<<pru_sel0; - __R30 &= (row<<pru_sel0)|0xffc3; - - for(i=0; i<64; i++) { - // Top row white - // Combining these to one write works because they are all in - // the same gpio port except b12 - gpio[r21_gpio][GPIO_SETDATAOUT] = r21_pin | g21_pin; - __delay_cycles(DELAY); - gpio[b21_gpio][GPIO_SETDATAOUT] = b21_pin; - __delay_cycles(DELAY); - - // Bottom row red - gpio[r22_gpio][GPIO_SETDATAOUT] = r22_pin; - __delay_cycles(DELAY); - gpio[g22_gpio][GPIO_CLEARDATAOUT] = g22_pin | b22_pin; - __delay_cycles(2*DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - - // Top row black - gpio[r21_gpio][GPIO_CLEARDATAOUT] = r21_pin | g21_pin; - __delay_cycles(DELAY); - gpio[b21_gpio][GPIO_CLEARDATAOUT] = b21_pin; - __delay_cycles(DELAY); - - // Bottom row green - gpio[r22_gpio][GPIO_CLEARDATAOUT] = r22_pin | b22_pin; - __delay_cycles(DELAY); - gpio[g22_gpio][GPIO_SETDATAOUT] = g22_pin; - __delay_cycles(2*DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - } - __R30 |= pru_oe; // Disable display - __delay_cycles(DELAY); - __R30 |= pru_latch; // Toggle latch - __delay_cycles(DELAY); - __R30 &= ~pru_latch; - __delay_cycles(DELAY); - __R30 &= ~pru_oe; // Enable display - __delay_cycles(DELAY); - } - } -} diff --git a/books/pru-cookbook/05blocks/code/rgb_black.h b/books/pru-cookbook/05blocks/code/rgb_black.h deleted file mode 100644 index be7cf4ba8ab0da67ee7ce7301fe49a90bfad539e..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb_black.h +++ /dev/null @@ -1,31 +0,0 @@ -//Black - Not tested -// These are from https://github.com/FalconChristmas/fpp/blob/master/src/pru/PocketScrollerV1.hp -// _gpio tells which gpio port and _pin tells which bit in the port -// The first 1 in r11 is for the J1 connector -// See the githuub file for the other connectors - -#define r11_gpio 2 -#define r11_pin 9 -#define g11_gpio 2 -#define g11_pin 11 -#define b11_gpio 2 -#define b11_pin 10 - -#define r12_gpio 2 -#define r12_pin 12 -#define g12_gpio 2 -#define g12_pin 22 -#define b12_gpio 2 -#define b12_pin 23 - -#define pru_latch 1 // These are the bit positions in R30 -#define pru_oe 0 -#define pru_clock 2 - -// Control pins are all in GPIO2 -// The pocket has these on R0, the code needs to be changed for this work work -#define gpio_sel0 13 /* must be sequential with sel1 and sel2 */ -#define gpio_sel1 14 -#define gpio_sel2 15 -#define gpio_sel3 16 -#define gpio_sel4 17 diff --git a/books/pru-cookbook/05blocks/code/rgb_pocket.h b/books/pru-cookbook/05blocks/code/rgb_pocket.h deleted file mode 100644 index 45a91118038898605939bc4493a3337cb4fd86a0..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb_pocket.h +++ /dev/null @@ -1,45 +0,0 @@ -// Pocket -// These are from https://github.com/FalconChristmas/fpp/blob/master/src/pru/PocketScrollerV1.hp -// _gpio tells which gpio port and _pin tells which bit in the port -// The first 1 in r11 is for the J1 connector -// See the githuub file for the other connectors - -// J1 -#define r11_gpio 1 -#define r11_pin (0x1<<20) -#define g11_gpio 1 -#define g11_pin (0x1<<28) -#define b11_gpio 1 -#define b11_pin (0x1<<25) - -#define r12_gpio 1 -#define r12_pin (0x1<<26) -#define g12_gpio 1 -#define g12_pin (0x1<<27) -#define b12_gpio 1 -#define b12_pin (0x1<<18) - -// J2 -#define r21_gpio 1 -#define r21_pin (0x1<<8) -#define g21_gpio 1 -#define g21_pin (0x1<<9) -#define b21_gpio 0 -#define b21_pin (0x1<<30) - -#define r22_gpio 1 -#define r22_pin (0x1<<12) -#define g22_gpio 1 -#define g22_pin (0x1<<14) -#define b22_gpio 1 -#define b22_pin (0x1<<15) - -// All connectors -#define pru_latch (0x1<<0) // These are the bit positions in R30 -#define pru_oe (0x1<<7) -#define pru_clock (0x1<<1) - -#define pru_sel0 2 // These are called LA, LB, LC and LD in the python code -#define pru_sel1 3 // Also bit positions -#define pru_sel2 4 -#define pru_sel3 5 diff --git a/books/pru-cookbook/05blocks/code/rgb_python.py b/books/pru-cookbook/05blocks/code/rgb_python.py deleted file mode 100755 index 25e353343f3c8f829a60376f4c3121e8ada1bbd1..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb_python.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python3 -import Adafruit_BBIO.GPIO as GPIO - -# Define which functions are connect to which pins -OE="P1_29" # Output Enable, active low -LAT="P1_36" # Latch, toggle after clocking in a row of pixels -CLK="P1_33" # Clock, toggle after each pixel - -# Input data pins -R1="P2_10" # R1, G1, B1 are for the top rows (1-16) of pixels -G1="P2_8" -B1="P2_6" - -R2="P2_4" # R2, G2, B2 are for the bottom rows (17-32) of pixels -G2="P2_2" -B2="P2_1" - -LA="P2_32" # Address lines for which row (1-16 or 17-32) to update -LB="P2_30" -LC="P1_31" -LD="P2_34" - -# Set everything as output ports -GPIO.setup(OE, GPIO.OUT) -GPIO.setup(LAT, GPIO.OUT) -GPIO.setup(CLK, GPIO.OUT) - -GPIO.setup(R1, GPIO.OUT) -GPIO.setup(G1, GPIO.OUT) -GPIO.setup(B1, GPIO.OUT) -GPIO.setup(R2, GPIO.OUT) -GPIO.setup(G2, GPIO.OUT) -GPIO.setup(B2, GPIO.OUT) - -GPIO.setup(LA, GPIO.OUT) -GPIO.setup(LB, GPIO.OUT) -GPIO.setup(LC, GPIO.OUT) -GPIO.setup(LD, GPIO.OUT) - -GPIO.output(OE, 0) # Enable the display -GPIO.output(LAT, 0) # Set latch to low - -while True: - for bank in range(64): - GPIO.output(LA, bank>>0&0x1) # Select rows - GPIO.output(LB, bank>>1&0x1) - GPIO.output(LC, bank>>2&0x1) - GPIO.output(LD, bank>>3&0x1) - - # Shift the colors out. Here we only have four different - # colors to keep things simple. - for i in range(16): - GPIO.output(R1, 1) # Top row, white - GPIO.output(G1, 1) - GPIO.output(B1, 1) - - GPIO.output(R2, 1) # Bottom row, red - GPIO.output(G2, 0) - GPIO.output(B2, 0) - - GPIO.output(CLK, 0) # Toggle clock - GPIO.output(CLK, 1) - - GPIO.output(R1, 0) # Top row, black - GPIO.output(G1, 0) - GPIO.output(B1, 0) - - GPIO.output(R2, 0) # Bottom row, green - GPIO.output(G2, 1) - GPIO.output(B2, 0) - - GPIO.output(CLK, 0) # Toggle clock - GPIO.output(CLK, 1) - - GPIO.output(OE, 1) # Disable display while updating - GPIO.output(LAT, 1) # Toggle latch - GPIO.output(LAT, 0) - GPIO.output(OE, 0) # Enable display diff --git a/books/pru-cookbook/05blocks/code/rgb_python_setup.sh b/books/pru-cookbook/05blocks/code/rgb_python_setup.sh deleted file mode 100755 index 721067461771c4d0426a0646f28f748e384ec22d..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb_python_setup.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# Setup for 64x32 RGB Matrix -export TARGET=rgb1.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - prupins="P2_32 P1_31 P1_33 P1_29 P2_30 P2_34 P1_36" - gpiopins="P2_10 P2_06 P2_04 P2_01 P2_08 P2_02" - # Uncomment for J2 - # gpiopins="$gpiopins P2_27 P2_25 P2_05 P2_24 P2_22 P2_18" -else - echo " Not Found" - pins="" -fi - -for pin in $prupins -do - echo $pin - # config-pin $pin pruout - config-pin $pin gpio - config-pin $pin out - config-pin -q $pin -done - -for pin in $gpiopins -do - echo $pin - config-pin $pin gpio - config-pin $pin out - config-pin -q $pin -done diff --git a/books/pru-cookbook/05blocks/code/rgb_setup.sh b/books/pru-cookbook/05blocks/code/rgb_setup.sh deleted file mode 100755 index fc5451444ad10b848f7ec42bb56f4b8f0ffd9195..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb_setup.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# Setup for 64x32 RGB Matrix -export TARGET=rgb1.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - prupins="P2_32 P1_31 P1_33 P1_29 P2_30 P2_34 P1_36" - gpiopins="P2_10 P2_06 P2_04 P2_01 P2_08 P2_02" - # Uncomment for J2 - # gpiopins="$gpiopins P2_27 P2_25 P2_05 P2_24 P2_22 P2_18" -else - echo " Not Found" - pins="" -fi - -for pin in $prupins -do - echo $pin - config-pin $pin pruout - # config-pin $pin gpio - # config-pin $pin out - config-pin -q $pin -done - -for pin in $gpiopins -do - echo $pin - config-pin $pin gpio - config-pin $pin out - config-pin -q $pin -done diff --git a/books/pru-cookbook/05blocks/code/rgb_white.pru0.c b/books/pru-cookbook/05blocks/code/rgb_white.pru0.c deleted file mode 100644 index e62d98e000c746e37a11c7a0402b13fb5f92b2df..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/rgb_white.pru0.c +++ /dev/null @@ -1,64 +0,0 @@ -// This code drives the RGB LED Matrix -// Turns all the LEDs on -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" -#include "rgb_pocket.h" - -#define DELAY 10 // Number of cycles (5ns each) to wait after a write - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - // Set up the pointers to each of the GPIO ports - uint32_t *gpio[] = { - (uint32_t *) GPIO0, - (uint32_t *) GPIO1, - (uint32_t *) GPIO2, - (uint32_t *) GPIO3 - }; - - uint32_t i, row; - - while(1) { - for(row=0; row<16; row++) { - // Set the row address - // Here we take advantage of the select bits (LA,LB,LC,LD) - // being sequential in the R30 register (bits 2,3,4,5) - // We shift row over so it lines up with the select bits - // Oring (|=) with R30 sets bits to 1 and - // Anding (&=) clears bits to 0, the 0xffc mask makes sure the - // other bits aren't changed. - __R30 |= row<<pru_sel0; - __R30 &= (row<<pru_sel0)|0xffc3; - - for(i=0; i<64; i++) { - // Top row white - // Combining these to one write works because they are all in - // the same gpio port - gpio[r11_gpio][GPIO_SETDATAOUT] = r11_pin | g11_pin | b11_pin; - __delay_cycles(DELAY);; - - // Bottom row white - gpio[r12_gpio][GPIO_SETDATAOUT] = r12_pin | g12_pin | b12_pin; - __delay_cycles(DELAY); - - __R30 |= pru_clock; // Toggle clock - __delay_cycles(DELAY); - __R30 &= ~pru_clock; - __delay_cycles(DELAY); - } - __R30 |= pru_oe; // Disable display - __delay_cycles(DELAY); - __R30 |= pru_latch; // Toggle latch - __delay_cycles(DELAY); - __R30 &= ~pru_latch; - __delay_cycles(DELAY); - __R30 &= ~pru_oe; // Enable display - __delay_cycles(DELAY); - } - } -} diff --git a/books/pru-cookbook/05blocks/code/shared.pru0.c b/books/pru-cookbook/05blocks/code/shared.pru0.c deleted file mode 100644 index 95d87c5de147334e439c18bc6cadc68f6ebac98d..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/shared.pru0.c +++ /dev/null @@ -1,63 +0,0 @@ -// From: http://git.ti.com/pru-software-support-package/pru-software-support-package/blobs/master/examples/am335x/PRU_access_const_table/PRU_access_const_table.c -#include <stdint.h> -#include <pru_cfg.h> -#include <pru_ctrl.h> -#include "resource_table_empty.h" - -#define PRU_SRAM __far __attribute__((cregister("PRU_SHAREDMEM", near))) -#define PRU_DMEM0 __far __attribute__((cregister("PRU_DMEM_0_1", near))) -#define PRU_DMEM1 __far __attribute__((cregister("PRU_DMEM_1_0", near))) - -/* NOTE: Allocating shared_x to PRU Shared Memory means that other PRU cores on - * the same subsystem must take care not to allocate data to that memory. - * Users also cannot rely on where in shared memory these variables are placed - * so accessing them from another PRU core or from the ARM is an undefined behavior. - */ -volatile uint32_t shared_0; -PRU_SRAM volatile uint32_t shared_1; -PRU_DMEM0 volatile uint32_t shared_2; -PRU_DMEM1 volatile uint32_t shared_3; -#pragma DATA_SECTION(shared_4, ".bss") -volatile uint32_t shared_4; - -/* NOTE: Here we pick where in memory to store shared_5. The stack and - * heap take up the first 0x200 words, so we must start after that. - * Since we are hardcoding where things are stored we can share - * this between the PRUs and the ARM. -*/ -#define PRU0_DRAM 0x00000 // Offset to DRAM -// Skip the first 0x200 bytes of DRAM since the Makefile allocates -// 0x100 for the STACK and 0x100 for the HEAP. -volatile unsigned int *shared_5 = (unsigned int *) (PRU0_DRAM + 0x200); - - -int main(void) -{ - volatile uint32_t shared_6; - volatile uint32_t shared_7; - /*****************************************************************/ - /* Access PRU peripherals using Constant Table & PRU header file */ - /*****************************************************************/ - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - /*****************************************************************/ - /* Access PRU Shared RAM using Constant Table */ - /*****************************************************************/ - - /* C28 defaults to 0x00000000, we need to set bits 23:8 to 0x0100 in order to have it point to 0x00010000 */ - PRU0_CTRL.CTPPR0_bit.C28_BLK_POINTER = 0x0100; - - shared_0 = 0xfeef; - shared_1 = 0xdeadbeef; - shared_2 = shared_2 + 0xfeed; - shared_3 = 0xdeed; - shared_4 = 0xbeed; - shared_5[0] = 0x1234; - shared_6 = 0x4321; - shared_7 = 0x9876; - - /* Halt PRU core */ - __halt(); -} diff --git a/books/pru-cookbook/05blocks/code/shared_setup.sh b/books/pru-cookbook/05blocks/code/shared_setup.sh deleted file mode 100755 index eefbcd553ac53d0fb0c289fefc536c5f5eb0a7f7..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/shared_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -export TARGET=shared.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_31 P9_29 P9_30 P9_28" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P1_36 P1_33 P2_32 P2_30" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruout - config-pin -q $pin -done diff --git a/books/pru-cookbook/05blocks/code/sine.map b/books/pru-cookbook/05blocks/code/sine.map deleted file mode 100644 index 45872d39e001a44e2a2b38b1ed1bf38c85b8837d..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/sine.map +++ /dev/null @@ -1,338 +0,0 @@ -****************************************************************************** -PRU Linker Unix v2.1.5 -****************************************************************************** ->> Linked Fri Jun 29 13:58:08 2018 - -OUTPUT FILE NAME: </tmp/pru0-gen/sine1.out> -ENTRY POINT SYMBOL: "_c_int00_noinit_noargs_noexit" address: 00000000 - - -MEMORY CONFIGURATION - - name origin length used unused attr fill ----------------------- -------- --------- -------- -------- ---- -------- -PAGE 0: - PRU_IMEM 00000000 00002000 000018c0 00000740 RWIX - -PAGE 1: - PRU_DMEM_0_1 00000000 00002000 00000154 00001eac RWIX - PRU_DMEM_1_0 00002000 00002000 00000000 00002000 RWIX - -PAGE 2: - PRU_SHAREDMEM 00010000 00003000 00000000 00003000 RWIX - PRU_INTC 00020000 00001504 00000000 00001504 RWIX - PRU_CFG 00026000 00000044 00000044 00000000 RWIX - PRU_UART 00028000 00000038 00000000 00000038 RWIX - PRU_IEP 0002e000 0000031c 00000000 0000031c RWIX - PRU_ECAP 00030000 00000060 00000000 00000060 RWIX - RSVD27 00032000 00000100 00000000 00000100 RWIX - RSVD21 00032400 00000100 00000000 00000100 RWIX - L3OCMC 40000000 00010000 00000000 00010000 RWIX - MCASP0_DMA 46000000 00000100 00000000 00000100 RWIX - UART1 48022000 00000088 00000000 00000088 RWIX - UART2 48024000 00000088 00000000 00000088 RWIX - I2C1 4802a000 000000d8 00000000 000000d8 RWIX - MCSPI0 48030000 000001a4 00000000 000001a4 RWIX - DMTIMER2 48040000 0000005c 00000000 0000005c RWIX - MMCHS0 48060000 00000300 00000000 00000300 RWIX - MBX0 480c8000 00000140 00000000 00000140 RWIX - SPINLOCK 480ca000 00000880 00000000 00000880 RWIX - I2C2 4819c000 000000d8 00000000 000000d8 RWIX - MCSPI1 481a0000 000001a4 00000000 000001a4 RWIX - DCAN0 481cc000 000001e8 00000000 000001e8 RWIX - DCAN1 481d0000 000001e8 00000000 000001e8 RWIX - PWMSS0 48300000 000002c4 00000000 000002c4 RWIX - PWMSS1 48302000 000002c4 00000000 000002c4 RWIX - PWMSS2 48304000 000002c4 00000000 000002c4 RWIX - RSVD13 48310000 00000100 00000000 00000100 RWIX - RSVD10 48318000 00000100 00000000 00000100 RWIX - TPCC 49000000 00001098 00000000 00001098 RWIX - GEMAC 4a100000 0000128c 00000000 0000128c RWIX - DDR 80000000 00000100 00000000 00000100 RWIX - - -SECTION ALLOCATION MAP - - output attributes/ -section page origin length input sections --------- ---- ---------- ---------- ---------------- -.text:_c_int00* -* 0 00000000 00000014 - 00000000 00000014 rtspruv3_le.lib : boot_special.obj (.text:_c_int00_noinit_noargs_noexit) - -.text 0 00000014 000018ac - 00000014 00000374 rtspruv3_le.lib : sin.obj (.text:sin) - 00000388 00000314 : frcmpyd.obj (.text:__TI_frcmpyd) - 0000069c 00000258 : frcaddd.obj (.text:__TI_frcaddd) - 000008f4 00000254 : mpyd.obj (.text:__pruabi_mpyd) - 00000b48 00000248 : addd.obj (.text:__pruabi_addd) - 00000d90 000001c8 : mpyf.obj (.text:__pruabi_mpyf) - 00000f58 00000100 : modf.obj (.text:modf) - 00001058 000000b4 : gtd.obj (.text:__pruabi_gtd) - 0000110c 000000b0 : ged.obj (.text:__pruabi_ged) - 000011bc 000000b0 : ltd.obj (.text:__pruabi_ltd) - 0000126c 000000b0 sine1.obj (.text:main) - 0000131c 000000a8 rtspruv3_le.lib : frcmpyf.obj (.text:__TI_frcmpyf) - 000013c4 000000a0 : fixdu.obj (.text:__pruabi_fixdu) - 00001464 0000009c : round.obj (.text:__pruabi_nround) - 00001500 00000090 : eqld.obj (.text:__pruabi_eqd) - 00001590 0000008c : renormd.obj (.text:__TI_renormd) - 0000161c 0000008c : fixdi.obj (.text:__pruabi_fixdi) - 000016a8 00000084 : fltid.obj (.text:__pruabi_fltid) - 0000172c 00000078 : cvtfd.obj (.text:__pruabi_cvtfd) - 000017a4 00000050 : fltuf.obj (.text:__pruabi_fltuf) - 000017f4 0000002c : asri.obj (.text:__pruabi_asri) - 00001820 0000002c : subd.obj (.text:__pruabi_subd) - 0000184c 00000024 : mpyi.obj (.text:__pruabi_mpyi) - 00001870 00000020 : negd.obj (.text:__pruabi_negd) - 00001890 00000020 : trunc.obj (.text:__pruabi_trunc) - 000018b0 00000008 : exit.obj (.text:abort) - 000018b8 00000008 : exit.obj (.text:loader_exit) - -.stack 1 00000000 00000100 UNINITIALIZED - 00000000 00000004 rtspruv3_le.lib : boot.obj (.stack) - 00000004 000000fc --HOLE-- - -.cinit 1 00000000 00000000 UNINITIALIZED - -.fardata 1 00000100 00000040 - 00000100 00000040 rtspruv3_le.lib : sin.obj (.fardata:R$1) - -.resource_table -* 1 00000140 00000014 - 00000140 00000014 sine1.obj (.resource_table:retain) - -.creg.PRU_CFG.noload.near -* 2 00026000 00000044 NOLOAD SECTION - 00026000 00000044 sine1.obj (.creg.PRU_CFG.noload.near) - -.creg.PRU_CFG.near -* 2 00026044 00000000 UNINITIALIZED - -.creg.PRU_CFG.noload.far -* 2 00026044 00000000 NOLOAD SECTION - -.creg.PRU_CFG.far -* 2 00026044 00000000 UNINITIALIZED - - -SEGMENT ATTRIBUTES - - id tag seg value - -- --- --- ----- - 0 PHA_PAGE 1 1 - 1 PHA_PAGE 2 1 - - -GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name - -page address name ----- ------- ---- -0 000018b8 C$$EXIT -2 00026000 CT_CFG -abs 481cc000 __PRU_CREG_BASE_DCAN0 -abs 481d0000 __PRU_CREG_BASE_DCAN1 -abs 80000000 __PRU_CREG_BASE_DDR -abs 48040000 __PRU_CREG_BASE_DMTIMER2 -abs 4a100000 __PRU_CREG_BASE_GEMAC -abs 4802a000 __PRU_CREG_BASE_I2C1 -abs 4819c000 __PRU_CREG_BASE_I2C2 -abs 40000000 __PRU_CREG_BASE_L3OCMC -abs 480c8000 __PRU_CREG_BASE_MBX0 -abs 46000000 __PRU_CREG_BASE_MCASP0_DMA -abs 48030000 __PRU_CREG_BASE_MCSPI0 -abs 481a0000 __PRU_CREG_BASE_MCSPI1 -abs 48060000 __PRU_CREG_BASE_MMCHS0 -abs 00026000 __PRU_CREG_BASE_PRU_CFG -abs 00000000 __PRU_CREG_BASE_PRU_DMEM_0_1 -abs 00002000 __PRU_CREG_BASE_PRU_DMEM_1_0 -abs 00030000 __PRU_CREG_BASE_PRU_ECAP -abs 0002e000 __PRU_CREG_BASE_PRU_IEP -abs 00020000 __PRU_CREG_BASE_PRU_INTC -abs 00010000 __PRU_CREG_BASE_PRU_SHAREDMEM -abs 00028000 __PRU_CREG_BASE_PRU_UART -abs 48300000 __PRU_CREG_BASE_PWMSS0 -abs 48302000 __PRU_CREG_BASE_PWMSS1 -abs 48304000 __PRU_CREG_BASE_PWMSS2 -abs 48318000 __PRU_CREG_BASE_RSVD10 -abs 48310000 __PRU_CREG_BASE_RSVD13 -abs 00032400 __PRU_CREG_BASE_RSVD21 -abs 00032000 __PRU_CREG_BASE_RSVD27 -abs 480ca000 __PRU_CREG_BASE_SPINLOCK -abs 49000000 __PRU_CREG_BASE_TPCC -abs 48022000 __PRU_CREG_BASE_UART1 -abs 48024000 __PRU_CREG_BASE_UART2 -abs 0000000e __PRU_CREG_DCAN0 -abs 0000000f __PRU_CREG_DCAN1 -abs 0000001f __PRU_CREG_DDR -abs 00000001 __PRU_CREG_DMTIMER2 -abs 00000009 __PRU_CREG_GEMAC -abs 00000002 __PRU_CREG_I2C1 -abs 00000011 __PRU_CREG_I2C2 -abs 0000001e __PRU_CREG_L3OCMC -abs 00000016 __PRU_CREG_MBX0 -abs 00000008 __PRU_CREG_MCASP0_DMA -abs 00000006 __PRU_CREG_MCSPI0 -abs 00000010 __PRU_CREG_MCSPI1 -abs 00000005 __PRU_CREG_MMCHS0 -abs 00000004 __PRU_CREG_PRU_CFG -abs 00000018 __PRU_CREG_PRU_DMEM_0_1 -abs 00000019 __PRU_CREG_PRU_DMEM_1_0 -abs 00000003 __PRU_CREG_PRU_ECAP -abs 0000001a __PRU_CREG_PRU_IEP -abs 00000000 __PRU_CREG_PRU_INTC -abs 0000001c __PRU_CREG_PRU_SHAREDMEM -abs 00000007 __PRU_CREG_PRU_UART -abs 00000012 __PRU_CREG_PWMSS0 -abs 00000013 __PRU_CREG_PWMSS1 -abs 00000014 __PRU_CREG_PWMSS2 -abs 0000000a __PRU_CREG_RSVD10 -abs 0000000d __PRU_CREG_RSVD13 -abs 00000015 __PRU_CREG_RSVD21 -abs 0000001b __PRU_CREG_RSVD27 -abs 00000017 __PRU_CREG_SPINLOCK -abs 0000001d __PRU_CREG_TPCC -abs 0000000b __PRU_CREG_UART1 -abs 0000000c __PRU_CREG_UART2 -1 00000100 __TI_STACK_END -abs 00000100 __TI_STACK_SIZE -0 0000069c __TI_frcaddd -0 00000388 __TI_frcmpyd -0 0000131c __TI_frcmpyf -0 00001590 __TI_renormd -abs ffffffff __binit__ -abs ffffffff __c_args__ -0 00000b48 __pruabi_addd -0 000017f4 __pruabi_asri -0 0000172c __pruabi_cvtfd -0 00001500 __pruabi_eqd -0 0000161c __pruabi_fixdi -0 000013c4 __pruabi_fixdu -0 000016a8 __pruabi_fltid -0 000017a4 __pruabi_fltuf -0 0000110c __pruabi_ged -0 00001058 __pruabi_gtd -0 000011bc __pruabi_ltd -0 000008f4 __pruabi_mpyd -0 00000d90 __pruabi_mpyf -0 0000184c __pruabi_mpyi -0 00001870 __pruabi_negd -0 00001464 __pruabi_nround -0 00001820 __pruabi_subd -0 00001890 __pruabi_trunc -0 00000000 _c_int00_noinit_noargs_noexit -1 00000000 _stack -0 000018b0 abort -abs ffffffff binit -0 0000126c main -0 00000f58 modf -1 00000140 pru_remoteproc_ResourceTable -0 00000014 sin - - -GLOBAL SYMBOLS: SORTED BY Symbol Address - -page address name ----- ------- ---- -0 00000000 _c_int00_noinit_noargs_noexit -0 00000014 sin -0 00000388 __TI_frcmpyd -0 0000069c __TI_frcaddd -0 000008f4 __pruabi_mpyd -0 00000b48 __pruabi_addd -0 00000d90 __pruabi_mpyf -0 00000f58 modf -0 00001058 __pruabi_gtd -0 0000110c __pruabi_ged -0 000011bc __pruabi_ltd -0 0000126c main -0 0000131c __TI_frcmpyf -0 000013c4 __pruabi_fixdu -0 00001464 __pruabi_nround -0 00001500 __pruabi_eqd -0 00001590 __TI_renormd -0 0000161c __pruabi_fixdi -0 000016a8 __pruabi_fltid -0 0000172c __pruabi_cvtfd -0 000017a4 __pruabi_fltuf -0 000017f4 __pruabi_asri -0 00001820 __pruabi_subd -0 0000184c __pruabi_mpyi -0 00001870 __pruabi_negd -0 00001890 __pruabi_trunc -0 000018b0 abort -0 000018b8 C$$EXIT -1 00000000 _stack -1 00000100 __TI_STACK_END -1 00000140 pru_remoteproc_ResourceTable -2 00026000 CT_CFG -abs 00000000 __PRU_CREG_BASE_PRU_DMEM_0_1 -abs 00000000 __PRU_CREG_PRU_INTC -abs 00000001 __PRU_CREG_DMTIMER2 -abs 00000002 __PRU_CREG_I2C1 -abs 00000003 __PRU_CREG_PRU_ECAP -abs 00000004 __PRU_CREG_PRU_CFG -abs 00000005 __PRU_CREG_MMCHS0 -abs 00000006 __PRU_CREG_MCSPI0 -abs 00000007 __PRU_CREG_PRU_UART -abs 00000008 __PRU_CREG_MCASP0_DMA -abs 00000009 __PRU_CREG_GEMAC -abs 0000000a __PRU_CREG_RSVD10 -abs 0000000b __PRU_CREG_UART1 -abs 0000000c __PRU_CREG_UART2 -abs 0000000d __PRU_CREG_RSVD13 -abs 0000000e __PRU_CREG_DCAN0 -abs 0000000f __PRU_CREG_DCAN1 -abs 00000010 __PRU_CREG_MCSPI1 -abs 00000011 __PRU_CREG_I2C2 -abs 00000012 __PRU_CREG_PWMSS0 -abs 00000013 __PRU_CREG_PWMSS1 -abs 00000014 __PRU_CREG_PWMSS2 -abs 00000015 __PRU_CREG_RSVD21 -abs 00000016 __PRU_CREG_MBX0 -abs 00000017 __PRU_CREG_SPINLOCK -abs 00000018 __PRU_CREG_PRU_DMEM_0_1 -abs 00000019 __PRU_CREG_PRU_DMEM_1_0 -abs 0000001a __PRU_CREG_PRU_IEP -abs 0000001b __PRU_CREG_RSVD27 -abs 0000001c __PRU_CREG_PRU_SHAREDMEM -abs 0000001d __PRU_CREG_TPCC -abs 0000001e __PRU_CREG_L3OCMC -abs 0000001f __PRU_CREG_DDR -abs 00000100 __TI_STACK_SIZE -abs 00002000 __PRU_CREG_BASE_PRU_DMEM_1_0 -abs 00010000 __PRU_CREG_BASE_PRU_SHAREDMEM -abs 00020000 __PRU_CREG_BASE_PRU_INTC -abs 00026000 __PRU_CREG_BASE_PRU_CFG -abs 00028000 __PRU_CREG_BASE_PRU_UART -abs 0002e000 __PRU_CREG_BASE_PRU_IEP -abs 00030000 __PRU_CREG_BASE_PRU_ECAP -abs 00032000 __PRU_CREG_BASE_RSVD27 -abs 00032400 __PRU_CREG_BASE_RSVD21 -abs 40000000 __PRU_CREG_BASE_L3OCMC -abs 46000000 __PRU_CREG_BASE_MCASP0_DMA -abs 48022000 __PRU_CREG_BASE_UART1 -abs 48024000 __PRU_CREG_BASE_UART2 -abs 4802a000 __PRU_CREG_BASE_I2C1 -abs 48030000 __PRU_CREG_BASE_MCSPI0 -abs 48040000 __PRU_CREG_BASE_DMTIMER2 -abs 48060000 __PRU_CREG_BASE_MMCHS0 -abs 480c8000 __PRU_CREG_BASE_MBX0 -abs 480ca000 __PRU_CREG_BASE_SPINLOCK -abs 4819c000 __PRU_CREG_BASE_I2C2 -abs 481a0000 __PRU_CREG_BASE_MCSPI1 -abs 481cc000 __PRU_CREG_BASE_DCAN0 -abs 481d0000 __PRU_CREG_BASE_DCAN1 -abs 48300000 __PRU_CREG_BASE_PWMSS0 -abs 48302000 __PRU_CREG_BASE_PWMSS1 -abs 48304000 __PRU_CREG_BASE_PWMSS2 -abs 48310000 __PRU_CREG_BASE_RSVD13 -abs 48318000 __PRU_CREG_BASE_RSVD10 -abs 49000000 __PRU_CREG_BASE_TPCC -abs 4a100000 __PRU_CREG_BASE_GEMAC -abs 80000000 __PRU_CREG_BASE_DDR -abs ffffffff __binit__ -abs ffffffff __c_args__ -abs ffffffff binit - -[100 symbols] diff --git a/books/pru-cookbook/05blocks/code/sine.pru0.c b/books/pru-cookbook/05blocks/code/sine.pru0.c deleted file mode 100644 index ed6b5778c644f860c8fa2c0f91b7f23cf50e6df7..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/sine.pru0.c +++ /dev/null @@ -1,58 +0,0 @@ -// Generate an analog waveform and use a filter to reconstruct it. -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include <math.h> - -#define MAXT 100 // Maximum number of time samples -#define SAWTOOTH // Pick which waveform - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t onCount; // Current count for 1 out - uint32_t offCount; // count for 0 out - uint32_t i; - uint32_t waveform[MAXT]; // Waveform to be produced - - // Generate a periodic wave in an array of MAXT values -#ifdef SAWTOOTH - for(i=0; i<MAXT; i++) { - waveform[i] = i*100/MAXT; - } -#endif -#ifdef TRIANGLE - for(i=0; i<MAXT/2; i++) { - waveform[i] = 2*i*100/MAXT; - waveform[MAXT-i-1] = 2*i*100/MAXT; - } -#endif -#ifdef SINE - float gain = 50.0f; - float bias = 50.0f; - float freq = 2.0f * 3.14159f / MAXT; - for (i=0; i<MAXT; i++){ - waveform[i] = (uint32_t)(bias+gain*sin(i*freq)); - } -#endif - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - while (1) { - // Generate a PWM signal whose duty cycle matches - // the amplitude of the signal. - for(i=0; i<MAXT; i++) { - onCount = waveform[i]; - offCount = 100 - onCount; - while(onCount--) { - __R30 |= 0x1; // Set the GPIO pin to 1 - } - while(offCount--) { - __R30 &= ~(0x1); // Clear the GPIO pin - } - } - } -} diff --git a/books/pru-cookbook/05blocks/code/write_init_pins.sh b/books/pru-cookbook/05blocks/code/write_init_pins.sh deleted file mode 100755 index f52082365a8b2a72a6c30d39938077bd9addf741..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/05blocks/code/write_init_pins.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -init_pins=$(readelf -x .init_pins $1 | grep 0x000 | cut -d' ' -f4-7 | xxd -r -p | tr '\0' '\n' | paste - -) -while read -a line; do - if [ ${#line[@]} == 2 ]; then - echo writing \"${line[1]}\" to \"${line[0]}\" - echo ${line[1]} > ${line[0]} - sleep 0.1 - fi -done <<< "$init_pins" diff --git a/books/pru-cookbook/06io/code/Makefile b/books/pru-cookbook/06io/code/Makefile deleted file mode 100644 index a7557fdaa22988d89cec879477ded78522d7116f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/06io/code/Makefile +++ /dev/null @@ -1 +0,0 @@ -include /var/lib/cloud9/common/Makefile diff --git a/books/pru-cookbook/06io/code/gpio.pru0.c b/books/pru-cookbook/06io/code/gpio.pru0.c deleted file mode 100644 index bcab90eff3f115577055dac3781c50bfb3e0efbf..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/06io/code/gpio.pru0.c +++ /dev/null @@ -1,23 +0,0 @@ -// This code accesses GPIO without using R30 and R31 -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define P9_11 (0x1<<30) // Bit position tied to P9_11 on Black -#define P2_05 (0x1<<30) // Bit position tied to P2_05 on Pocket - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t *gpio0 = (uint32_t *)GPIO0; - - while(1) { - gpio0[GPIO_SETDATAOUT] = P9_11; - __delay_cycles(100000000); - gpio0[GPIO_CLEARDATAOUT] = P9_11; - __delay_cycles(100000000); - } -} diff --git a/books/pru-cookbook/06io/code/setup.sh b/books/pru-cookbook/06io/code/setup.sh deleted file mode 100755 index e676ed7abe2a6beaf62d3ce6c56f5aa151d86700..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/06io/code/setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -export TARGET=gpio.pru0 -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_11" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P2_05" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin gpio - config-pin -q $pin -done diff --git a/books/pru-cookbook/06io/io.rst b/books/pru-cookbook/06io/io.rst index ad4fdd59f5c96d2b6298f1d9e84e44f9aa63ba20..b01cf60333d0391a501fb20139dcc4f6a4615b0e 100644 --- a/books/pru-cookbook/06io/io.rst +++ b/books/pru-cookbook/06io/io.rst @@ -189,7 +189,7 @@ If you are using an oscilloscope, look closely and you'll see the following. PWM with jitter -The PRU is still as solid as before in it's timing, but now it's going through +The PRU is still as solid as before in its timing, but now it's going through the OCP interface. This interface is shared with other parts of the system, therefore the sometimes the PRU must wait for the other parts to finish. When this happens the pulse width is a bit longer than usual thus adding diff --git a/books/pru-cookbook/07more/code/Makefile b/books/pru-cookbook/07more/code/Makefile deleted file mode 100644 index a7557fdaa22988d89cec879477ded78522d7116f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/Makefile +++ /dev/null @@ -1 +0,0 @@ -include /var/lib/cloud9/common/Makefile diff --git a/books/pru-cookbook/07more/code/copyright.c b/books/pru-cookbook/07more/code/copyright.c deleted file mode 100644 index 63b6a419e4ee3a2767de3fcec0c29e74e3754700..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/copyright.c +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - \ No newline at end of file diff --git a/books/pru-cookbook/07more/code/cycle.pru0.c b/books/pru-cookbook/07more/code/cycle.pru0.c deleted file mode 100644 index 3217c2eb33c1f881da1fdba6e158b6caac974772..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/cycle.pru0.c +++ /dev/null @@ -1,32 +0,0 @@ -// Access the CYCLE and STALL registers -#include <stdint.h> -#include <pru_cfg.h> -#include <pru_ctrl.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t gpio = P9_31; // Select which pin to toggle.; - - // These will be kept in registers and never written to DRAM - uint32_t cycle, stall; - - // Clear SYSCFG[STANDBY_INIT] to enable OCP master port - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - PRU0_CTRL.CTRL_bit.CTR_EN = 1; // Enable cycle counter - - __R30 |= gpio; // Set the GPIO pin to 1 - // Reset cycle counter, cycle is on the right side to force the compiler - // to put it in it's own register - PRU0_CTRL.CYCLE = cycle; - __R30 &= ~gpio; // Clear the GPIO pin - cycle = PRU0_CTRL.CYCLE; // Read cycle and store in a register - stall = PRU0_CTRL.STALL; // Ditto for stall - - __halt(); -} diff --git a/books/pru-cookbook/07more/code/cycle.pru0.lst b/books/pru-cookbook/07more/code/cycle.pru0.lst deleted file mode 100644 index d10187efb7c80bfef7e2a56a92f066133bf606ad..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/cycle.pru0.lst +++ /dev/null @@ -1,3082 +0,0 @@ -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 1 - - 1;****************************************************************************** - 2;* PRU C/C++ Codegen Unix v2.1.5 * - 3;* Date/Time created: Fri Jun 5 14:14:07 2020 * - 4;****************************************************************************** - 5 .compiler_opts --abi=eabi --endian=little --hll_source=on --object_format=elf --silicon_versio - 6 - 7$C$DW$CU .dwtag DW_TAG_compile_unit - 8 .dwattr $C$DW$CU, DW_AT_name("cycle.pru0.c") - 9 .dwattr $C$DW$CU, DW_AT_producer("TI PRU C/C++ Codegen Unix v2.1.5 Copyright (c) 2012-2017 Tex - 10 .dwattr $C$DW$CU, DW_AT_TI_version(0x01) - 11 .dwattr $C$DW$CU, DW_AT_comp_dir("/home/debian/PRUCookbook/docs/07more/code") - 12 .global __PRU_CREG_PRU_CFG - 13 - 14$C$DW$1 .dwtag DW_TAG_subprogram, DW_AT_name("__halt") - 15 .dwattr $C$DW$1, DW_AT_TI_symbol_name("__halt") - 16 .dwattr $C$DW$1, DW_AT_declaration - 17 .dwattr $C$DW$1, DW_AT_external - 18 .weak ||CT_CFG|| - 19 00000000 ||CT_CFG||: .usect ".creg.PRU_CFG.noload.near",68,1 - 20$C$DW$2 .dwtag DW_TAG_variable, DW_AT_name("CT_CFG") - 21 .dwattr $C$DW$2, DW_AT_TI_symbol_name("CT_CFG") - 22 .dwattr $C$DW$2, DW_AT_location[DW_OP_addr ||CT_CFG||] - 23 .dwattr $C$DW$2, DW_AT_type(*$C$DW$T$98) - 24 .dwattr $C$DW$2, DW_AT_external - 25 .dwattr $C$DW$2, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru_ - 26 .dwattr $C$DW$2, DW_AT_decl_line(0xf2) - 27 .dwattr $C$DW$2, DW_AT_decl_column(0x17) - 28 .global ||pru_remoteproc_ResourceTable|| - 29 00000000 .sect ".resource_table:retain", RW - 30 .retain - 31 .align 1 - 32 .elfsym ||pru_remoteproc_ResourceTable||,SYM_SIZE(20) - 33 00000000 ||pru_remoteproc_ResourceTable||: - 34 00000000 00000000000001 .bits 1,32 ; pru_remoteproc_ResourceTable.base.ver @ 0 - 35 00000004 00000000000000 .bits 0,32 ; pru_remoteproc_ResourceTable.base.num @ 32 - 36 00000008 00000000000000 .bits 0,32 ; pru_remoteproc_ResourceTable.base.reserved[0] @ 64 - 37 0000000c 00000000000000 .bits 0,32 ; pru_remoteproc_ResourceTable.base.reserved[1] @ 96 - 38 00000010 00000000000000 .bits 0,32 ; pru_remoteproc_ResourceTable.offset[0] @ 128 - 39 - 40$C$DW$3 .dwtag DW_TAG_variable, DW_AT_name("pru_remoteproc_ResourceTable") - 41 .dwattr $C$DW$3, DW_AT_TI_symbol_name("pru_remoteproc_ResourceTable") - 42 .dwattr $C$DW$3, DW_AT_location[DW_OP_addr ||pru_remoteproc_ResourceTable||] - 43 .dwattr $C$DW$3, DW_AT_type(*$C$DW$T$92) - 44 .dwattr $C$DW$3, DW_AT_external - 45 .dwattr $C$DW$3, DW_AT_decl_file("/var/lib/cloud9/common/resource_table_empty.h") - 46 .dwattr $C$DW$3, DW_AT_decl_line(0x1f) - 47 .dwattr $C$DW$3, DW_AT_decl_column(0x1a) - 48; optpru /tmp/TI18yQKu8QO /tmp/TI18y6Ruqzt - 49; acpiapru -@/tmp/TI18yH9tQJL - 50 00000000 .sect ".text:main" - 51 .clink - 52 .global ||main|| - 53 - 54$C$DW$4 .dwtag DW_TAG_subprogram, DW_AT_name("main") - 55 .dwattr $C$DW$4, DW_AT_low_pc(||main||) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 2 - - 56 .dwattr $C$DW$4, DW_AT_high_pc(0x00) - 57 .dwattr $C$DW$4, DW_AT_TI_symbol_name("main") - 58 .dwattr $C$DW$4, DW_AT_external - 59 .dwattr $C$DW$4, DW_AT_TI_begin_file("cycle.pru0.c") - 60 .dwattr $C$DW$4, DW_AT_TI_begin_line(0x0d) - 61 .dwattr $C$DW$4, DW_AT_TI_begin_column(0x06) - 62 .dwattr $C$DW$4, DW_AT_decl_file("cycle.pru0.c") - 63 .dwattr $C$DW$4, DW_AT_decl_line(0x0d) - 64 .dwattr $C$DW$4, DW_AT_decl_column(0x06) - 65 .dwattr $C$DW$4, DW_AT_TI_max_frame_size(0x00) - 66 .dwpsn file "cycle.pru0.c",line 14,column 1,is_stmt,address ||main||,isa 0 - 67 - 68 .dwfde $C$DW$CIE, ||main|| - 69;---------------------------------------------------------------------- - 70; 13 | void main(void) - 71; 15 | uint32_t gpio = P9_31; // Select which pin to toggle.; - 72; 17 | // These will be kept in registers and never written to DRAM - 73; 18 | uint32_t cycle, stall; - 74; 20 | // Clear SYSCFG[STANDBY_INIT] to enable OCP master port - 75;---------------------------------------------------------------------- - 76 - 77;*************************************************************** - 78;* FNAME: main FR SIZE: 0 * - 79;* * - 80;* FUNCTION ENVIRONMENT * - 81;* * - 82;* FUNCTION PROPERTIES * - 83;* 0 Auto, 0 SOE * - 84;*************************************************************** - 85 - 86||main||: - 87;* --------------------------------------------------------------------------* - 88;* r0_0 assigned to $O$C1 - 89;* r14_0 assigned to cycle - 90$C$DW$5 .dwtag DW_TAG_variable, DW_AT_name("cycle") - 91 .dwattr $C$DW$5, DW_AT_TI_symbol_name("cycle") - 92 .dwattr $C$DW$5, DW_AT_type(*$C$DW$T$32) - 93 .dwattr $C$DW$5, DW_AT_location[DW_OP_regx 0x38] - 94 .dwcfi cfa_offset, 0 - 95 .dwpsn file "cycle.pru0.c",line 21,column 2,is_stmt,isa 0 - 96;---------------------------------------------------------------------- - 97; 21 | CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - 98;---------------------------------------------------------------------- - 99 00000000 00000091042080! LBCO &r0, __PRU_CREG_PRU_CFG, $CSBREL(||CT_CFG||+4), 4 ; [ALU_PRU] |21| CT_CFG - 100 00000004 0000001D04E0E0 CLR r0, r0, 0x00000004 ; [ALU_PRU] |21| - 101 00000008 00000081042080! SBCO &r0, __PRU_CREG_PRU_CFG, $CSBREL(||CT_CFG||+4), 4 ; [ALU_PRU] |21| CT_CFG - 102 .dwpsn file "cycle.pru0.c",line 23,column 2,is_stmt,isa 0 - 103;---------------------------------------------------------------------- - 104; 23 | PRU0_CTRL.CTRL_bit.CTR_EN = 1; // Enable cycle counter - 105;---------------------------------------------------------------------- - 106 0000000c 200080240002C0 LDI32 r0, 0x00022000 ; [ALU_PRU] |23| $O$C1 - 107 00000014 000000F1002081 LBBO &r1, r0, 0, 4 ; [ALU_PRU] |23| - 108 00000018 0000001F03E1E1 SET r1, r1, 0x00000003 ; [ALU_PRU] |23| - 109 0000001c 000000E1002081 SBBO &r1, r0, 0, 4 ; [ALU_PRU] |23| - 110 .dwpsn file "cycle.pru0.c",line 25,column 2,is_stmt,isa 0 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 3 - - 111;---------------------------------------------------------------------- - 112; 25 | __R30 |= gpio; // Set the GPIO pin to 1 - 113; 26 | // Reset cycle counter, cycle is on the right side to force the compile - 114; | r - 115; 27 | // to put it in it's own register - 116;---------------------------------------------------------------------- - 117 00000020 0000001F00FEFE SET r30, r30, 0x00000000 ; [ALU_PRU] |25| - 118 .dwpsn file "cycle.pru0.c",line 28,column 2,is_stmt,isa 0 - 119;---------------------------------------------------------------------- - 120; 28 | PRU0_CTRL.CYCLE = cycle; - 121;---------------------------------------------------------------------- - 122 00000024 000000E10C208E SBBO &r14, r0, 12, 4 ; [ALU_PRU] |28| $O$C1,cycle - 123 .dwpsn file "cycle.pru0.c",line 29,column 2,is_stmt,isa 0 - 124;---------------------------------------------------------------------- - 125; 29 | __R30 &= ~gpio; // Clear the GPIO pin - 126;---------------------------------------------------------------------- - 127 00000028 0000001D00FEFE CLR r30, r30, 0x00000000 ; [ALU_PRU] |29| - 128 .dwpsn file "cycle.pru0.c",line 30,column 2,is_stmt,isa 0 - 129;---------------------------------------------------------------------- - 130; 30 | cycle = PRU0_CTRL.CYCLE; // Read cycle and store in a register - 131;---------------------------------------------------------------------- - 132 0000002c 000000F10C2081 LBBO &r1, r0, 12, 4 ; [ALU_PRU] |30| $O$C1 - 133 .dwpsn file "cycle.pru0.c",line 31,column 2,is_stmt,isa 0 - 134;---------------------------------------------------------------------- - 135; 31 | stall = PRU0_CTRL.STALL; // Ditto for stall - 136;---------------------------------------------------------------------- - 137 00000030 000000F1102080 LBBO &r0, r0, 16, 4 ; [ALU_PRU] |31| $O$C1 - 138 .dwpsn file "cycle.pru0.c",line 33,column 2,is_stmt,isa 0 - 139;---------------------------------------------------------------------- - 140; 33 | __halt(); - 141;---------------------------------------------------------------------- - 142 00000034 0000002A000000 HALT ; [ALU_PRU] |33| - 143$C$DW$6 .dwtag DW_TAG_TI_branch - 144 .dwattr $C$DW$6, DW_AT_low_pc(0x00) - 145 .dwattr $C$DW$6, DW_AT_TI_return - 146 00000038 00000020C30000 JMP r3.w2 ; [ALU_PRU] - 147 .dwattr $C$DW$4, DW_AT_TI_end_file("cycle.pru0.c") - 148 .dwattr $C$DW$4, DW_AT_TI_end_line(0x22) - 149 .dwattr $C$DW$4, DW_AT_TI_end_column(0x01) - 150 .dwendentry - 151 .dwendtag $C$DW$4 - 152 - 153 - 154;****************************************************************************** - 155;* TYPE INFORMATION * - 156;****************************************************************************** - 157 - 158$C$DW$T$19 .dwtag DW_TAG_structure_type - 159 .dwattr $C$DW$T$19, DW_AT_byte_size(0x04) - 160$C$DW$7 .dwtag DW_TAG_member - 161 .dwattr $C$DW$7, DW_AT_type(*$C$DW$T$11) - 162 .dwattr $C$DW$7, DW_AT_name("REVID") - 163 .dwattr $C$DW$7, DW_AT_TI_symbol_name("REVID") - 164 .dwattr $C$DW$7, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x20) - 165 .dwattr $C$DW$7, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 4 - - 166 .dwattr $C$DW$7, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 167 .dwattr $C$DW$7, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru_ - 168 .dwattr $C$DW$7, DW_AT_decl_line(0x2d) - 169 .dwattr $C$DW$7, DW_AT_decl_column(0x0d) - 170 .dwendtag $C$DW$T$19 - 171 - 172 .dwattr $C$DW$T$19, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 173 .dwattr $C$DW$T$19, DW_AT_decl_line(0x2c) - 174 .dwattr $C$DW$T$19, DW_AT_decl_column(0x13) - 175$C$DW$T$48 .dwtag DW_TAG_volatile_type - 176 .dwattr $C$DW$T$48, DW_AT_type(*$C$DW$T$19) - 177 - 178$C$DW$T$20 .dwtag DW_TAG_structure_type - 179 .dwattr $C$DW$T$20, DW_AT_byte_size(0x04) - 180$C$DW$8 .dwtag DW_TAG_member - 181 .dwattr $C$DW$8, DW_AT_type(*$C$DW$T$11) - 182 .dwattr $C$DW$8, DW_AT_name("IDLE_MODE") - 183 .dwattr $C$DW$8, DW_AT_TI_symbol_name("IDLE_MODE") - 184 .dwattr $C$DW$8, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x02) - 185 .dwattr $C$DW$8, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 186 .dwattr $C$DW$8, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 187 .dwattr $C$DW$8, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru_ - 188 .dwattr $C$DW$8, DW_AT_decl_line(0x37) - 189 .dwattr $C$DW$8, DW_AT_decl_column(0x0d) - 190$C$DW$9 .dwtag DW_TAG_member - 191 .dwattr $C$DW$9, DW_AT_type(*$C$DW$T$11) - 192 .dwattr $C$DW$9, DW_AT_name("STANDBY_MODE") - 193 .dwattr $C$DW$9, DW_AT_TI_symbol_name("STANDBY_MODE") - 194 .dwattr $C$DW$9, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x02) - 195 .dwattr $C$DW$9, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 196 .dwattr $C$DW$9, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 197 .dwattr $C$DW$9, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru_ - 198 .dwattr $C$DW$9, DW_AT_decl_line(0x38) - 199 .dwattr $C$DW$9, DW_AT_decl_column(0x0d) - 200$C$DW$10 .dwtag DW_TAG_member - 201 .dwattr $C$DW$10, DW_AT_type(*$C$DW$T$11) - 202 .dwattr $C$DW$10, DW_AT_name("STANDBY_INIT") - 203 .dwattr $C$DW$10, DW_AT_TI_symbol_name("STANDBY_INIT") - 204 .dwattr $C$DW$10, DW_AT_bit_offset(0x1b), DW_AT_bit_size(0x01) - 205 .dwattr $C$DW$10, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 206 .dwattr $C$DW$10, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 207 .dwattr $C$DW$10, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 208 .dwattr $C$DW$10, DW_AT_decl_line(0x39) - 209 .dwattr $C$DW$10, DW_AT_decl_column(0x0d) - 210$C$DW$11 .dwtag DW_TAG_member - 211 .dwattr $C$DW$11, DW_AT_type(*$C$DW$T$11) - 212 .dwattr $C$DW$11, DW_AT_name("SUB_MWAIT") - 213 .dwattr $C$DW$11, DW_AT_TI_symbol_name("SUB_MWAIT") - 214 .dwattr $C$DW$11, DW_AT_bit_offset(0x1a), DW_AT_bit_size(0x01) - 215 .dwattr $C$DW$11, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 216 .dwattr $C$DW$11, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 217 .dwattr $C$DW$11, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 218 .dwattr $C$DW$11, DW_AT_decl_line(0x3a) - 219 .dwattr $C$DW$11, DW_AT_decl_column(0x0d) - 220$C$DW$12 .dwtag DW_TAG_member -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 5 - - 221 .dwattr $C$DW$12, DW_AT_type(*$C$DW$T$11) - 222 .dwattr $C$DW$12, DW_AT_name("rsvd6") - 223 .dwattr $C$DW$12, DW_AT_TI_symbol_name("rsvd6") - 224 .dwattr $C$DW$12, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x1a) - 225 .dwattr $C$DW$12, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 226 .dwattr $C$DW$12, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 227 .dwattr $C$DW$12, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 228 .dwattr $C$DW$12, DW_AT_decl_line(0x3b) - 229 .dwattr $C$DW$12, DW_AT_decl_column(0x0d) - 230 .dwendtag $C$DW$T$20 - 231 - 232 .dwattr $C$DW$T$20, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 233 .dwattr $C$DW$T$20, DW_AT_decl_line(0x36) - 234 .dwattr $C$DW$T$20, DW_AT_decl_column(0x13) - 235$C$DW$T$50 .dwtag DW_TAG_volatile_type - 236 .dwattr $C$DW$T$50, DW_AT_type(*$C$DW$T$20) - 237 - 238$C$DW$T$21 .dwtag DW_TAG_structure_type - 239 .dwattr $C$DW$T$21, DW_AT_byte_size(0x04) - 240$C$DW$13 .dwtag DW_TAG_member - 241 .dwattr $C$DW$13, DW_AT_type(*$C$DW$T$11) - 242 .dwattr $C$DW$13, DW_AT_name("PRU0_GPI_MODE") - 243 .dwattr $C$DW$13, DW_AT_TI_symbol_name("PRU0_GPI_MODE") - 244 .dwattr $C$DW$13, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x02) - 245 .dwattr $C$DW$13, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 246 .dwattr $C$DW$13, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 247 .dwattr $C$DW$13, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 248 .dwattr $C$DW$13, DW_AT_decl_line(0x45) - 249 .dwattr $C$DW$13, DW_AT_decl_column(0x0d) - 250$C$DW$14 .dwtag DW_TAG_member - 251 .dwattr $C$DW$14, DW_AT_type(*$C$DW$T$11) - 252 .dwattr $C$DW$14, DW_AT_name("PRU0_GPI_CLK_MODE") - 253 .dwattr $C$DW$14, DW_AT_TI_symbol_name("PRU0_GPI_CLK_MODE") - 254 .dwattr $C$DW$14, DW_AT_bit_offset(0x1d), DW_AT_bit_size(0x01) - 255 .dwattr $C$DW$14, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 256 .dwattr $C$DW$14, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 257 .dwattr $C$DW$14, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 258 .dwattr $C$DW$14, DW_AT_decl_line(0x46) - 259 .dwattr $C$DW$14, DW_AT_decl_column(0x0d) - 260$C$DW$15 .dwtag DW_TAG_member - 261 .dwattr $C$DW$15, DW_AT_type(*$C$DW$T$11) - 262 .dwattr $C$DW$15, DW_AT_name("PRU0_GPI_DIV0") - 263 .dwattr $C$DW$15, DW_AT_TI_symbol_name("PRU0_GPI_DIV0") - 264 .dwattr $C$DW$15, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x05) - 265 .dwattr $C$DW$15, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 266 .dwattr $C$DW$15, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 267 .dwattr $C$DW$15, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 268 .dwattr $C$DW$15, DW_AT_decl_line(0x47) - 269 .dwattr $C$DW$15, DW_AT_decl_column(0x0d) - 270$C$DW$16 .dwtag DW_TAG_member - 271 .dwattr $C$DW$16, DW_AT_type(*$C$DW$T$11) - 272 .dwattr $C$DW$16, DW_AT_name("PRU0_GPI_DIV1") - 273 .dwattr $C$DW$16, DW_AT_TI_symbol_name("PRU0_GPI_DIV1") - 274 .dwattr $C$DW$16, DW_AT_bit_offset(0x13), DW_AT_bit_size(0x05) - 275 .dwattr $C$DW$16, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 6 - - 276 .dwattr $C$DW$16, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 277 .dwattr $C$DW$16, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 278 .dwattr $C$DW$16, DW_AT_decl_line(0x48) - 279 .dwattr $C$DW$16, DW_AT_decl_column(0x0d) - 280$C$DW$17 .dwtag DW_TAG_member - 281 .dwattr $C$DW$17, DW_AT_type(*$C$DW$T$11) - 282 .dwattr $C$DW$17, DW_AT_name("PRU0_GPI_SB") - 283 .dwattr $C$DW$17, DW_AT_TI_symbol_name("PRU0_GPI_SB") - 284 .dwattr $C$DW$17, DW_AT_bit_offset(0x12), DW_AT_bit_size(0x01) - 285 .dwattr $C$DW$17, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 286 .dwattr $C$DW$17, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 287 .dwattr $C$DW$17, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 288 .dwattr $C$DW$17, DW_AT_decl_line(0x49) - 289 .dwattr $C$DW$17, DW_AT_decl_column(0x0d) - 290$C$DW$18 .dwtag DW_TAG_member - 291 .dwattr $C$DW$18, DW_AT_type(*$C$DW$T$11) - 292 .dwattr $C$DW$18, DW_AT_name("PRU0_GPO_MODE") - 293 .dwattr $C$DW$18, DW_AT_TI_symbol_name("PRU0_GPO_MODE") - 294 .dwattr $C$DW$18, DW_AT_bit_offset(0x11), DW_AT_bit_size(0x01) - 295 .dwattr $C$DW$18, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 296 .dwattr $C$DW$18, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 297 .dwattr $C$DW$18, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 298 .dwattr $C$DW$18, DW_AT_decl_line(0x4a) - 299 .dwattr $C$DW$18, DW_AT_decl_column(0x0d) - 300$C$DW$19 .dwtag DW_TAG_member - 301 .dwattr $C$DW$19, DW_AT_type(*$C$DW$T$11) - 302 .dwattr $C$DW$19, DW_AT_name("PRU0_GPO_DIV0") - 303 .dwattr $C$DW$19, DW_AT_TI_symbol_name("PRU0_GPO_DIV0") - 304 .dwattr $C$DW$19, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x05) - 305 .dwattr $C$DW$19, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 306 .dwattr $C$DW$19, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 307 .dwattr $C$DW$19, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 308 .dwattr $C$DW$19, DW_AT_decl_line(0x4b) - 309 .dwattr $C$DW$19, DW_AT_decl_column(0x0d) - 310$C$DW$20 .dwtag DW_TAG_member - 311 .dwattr $C$DW$20, DW_AT_type(*$C$DW$T$11) - 312 .dwattr $C$DW$20, DW_AT_name("PRU0_GPO_DIV1") - 313 .dwattr $C$DW$20, DW_AT_TI_symbol_name("PRU0_GPO_DIV1") - 314 .dwattr $C$DW$20, DW_AT_bit_offset(0x07), DW_AT_bit_size(0x05) - 315 .dwattr $C$DW$20, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 316 .dwattr $C$DW$20, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 317 .dwattr $C$DW$20, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 318 .dwattr $C$DW$20, DW_AT_decl_line(0x4c) - 319 .dwattr $C$DW$20, DW_AT_decl_column(0x0d) - 320$C$DW$21 .dwtag DW_TAG_member - 321 .dwattr $C$DW$21, DW_AT_type(*$C$DW$T$11) - 322 .dwattr $C$DW$21, DW_AT_name("PRU0_GPO_SH_SEL") - 323 .dwattr $C$DW$21, DW_AT_TI_symbol_name("PRU0_GPO_SH_SEL") - 324 .dwattr $C$DW$21, DW_AT_bit_offset(0x06), DW_AT_bit_size(0x01) - 325 .dwattr $C$DW$21, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 326 .dwattr $C$DW$21, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 327 .dwattr $C$DW$21, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 328 .dwattr $C$DW$21, DW_AT_decl_line(0x4d) - 329 .dwattr $C$DW$21, DW_AT_decl_column(0x0d) - 330$C$DW$22 .dwtag DW_TAG_member -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 7 - - 331 .dwattr $C$DW$22, DW_AT_type(*$C$DW$T$11) - 332 .dwattr $C$DW$22, DW_AT_name("rsvd26") - 333 .dwattr $C$DW$22, DW_AT_TI_symbol_name("rsvd26") - 334 .dwattr $C$DW$22, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x06) - 335 .dwattr $C$DW$22, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 336 .dwattr $C$DW$22, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 337 .dwattr $C$DW$22, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 338 .dwattr $C$DW$22, DW_AT_decl_line(0x4e) - 339 .dwattr $C$DW$22, DW_AT_decl_column(0x0d) - 340 .dwendtag $C$DW$T$21 - 341 - 342 .dwattr $C$DW$T$21, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 343 .dwattr $C$DW$T$21, DW_AT_decl_line(0x44) - 344 .dwattr $C$DW$T$21, DW_AT_decl_column(0x13) - 345$C$DW$T$52 .dwtag DW_TAG_volatile_type - 346 .dwattr $C$DW$T$52, DW_AT_type(*$C$DW$T$21) - 347 - 348$C$DW$T$22 .dwtag DW_TAG_structure_type - 349 .dwattr $C$DW$T$22, DW_AT_byte_size(0x04) - 350$C$DW$23 .dwtag DW_TAG_member - 351 .dwattr $C$DW$23, DW_AT_type(*$C$DW$T$11) - 352 .dwattr $C$DW$23, DW_AT_name("PRU1_GPI_MODE") - 353 .dwattr $C$DW$23, DW_AT_TI_symbol_name("PRU1_GPI_MODE") - 354 .dwattr $C$DW$23, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x02) - 355 .dwattr $C$DW$23, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 356 .dwattr $C$DW$23, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 357 .dwattr $C$DW$23, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 358 .dwattr $C$DW$23, DW_AT_decl_line(0x58) - 359 .dwattr $C$DW$23, DW_AT_decl_column(0x0d) - 360$C$DW$24 .dwtag DW_TAG_member - 361 .dwattr $C$DW$24, DW_AT_type(*$C$DW$T$11) - 362 .dwattr $C$DW$24, DW_AT_name("PRU1_GPI_CLK_MODE") - 363 .dwattr $C$DW$24, DW_AT_TI_symbol_name("PRU1_GPI_CLK_MODE") - 364 .dwattr $C$DW$24, DW_AT_bit_offset(0x1d), DW_AT_bit_size(0x01) - 365 .dwattr $C$DW$24, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 366 .dwattr $C$DW$24, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 367 .dwattr $C$DW$24, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 368 .dwattr $C$DW$24, DW_AT_decl_line(0x59) - 369 .dwattr $C$DW$24, DW_AT_decl_column(0x0d) - 370$C$DW$25 .dwtag DW_TAG_member - 371 .dwattr $C$DW$25, DW_AT_type(*$C$DW$T$11) - 372 .dwattr $C$DW$25, DW_AT_name("PRU1_GPI_DIV0") - 373 .dwattr $C$DW$25, DW_AT_TI_symbol_name("PRU1_GPI_DIV0") - 374 .dwattr $C$DW$25, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x05) - 375 .dwattr $C$DW$25, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 376 .dwattr $C$DW$25, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 377 .dwattr $C$DW$25, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 378 .dwattr $C$DW$25, DW_AT_decl_line(0x5a) - 379 .dwattr $C$DW$25, DW_AT_decl_column(0x0d) - 380$C$DW$26 .dwtag DW_TAG_member - 381 .dwattr $C$DW$26, DW_AT_type(*$C$DW$T$11) - 382 .dwattr $C$DW$26, DW_AT_name("PRU1_GPI_DIV1") - 383 .dwattr $C$DW$26, DW_AT_TI_symbol_name("PRU1_GPI_DIV1") - 384 .dwattr $C$DW$26, DW_AT_bit_offset(0x13), DW_AT_bit_size(0x05) - 385 .dwattr $C$DW$26, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 8 - - 386 .dwattr $C$DW$26, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 387 .dwattr $C$DW$26, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 388 .dwattr $C$DW$26, DW_AT_decl_line(0x5b) - 389 .dwattr $C$DW$26, DW_AT_decl_column(0x0d) - 390$C$DW$27 .dwtag DW_TAG_member - 391 .dwattr $C$DW$27, DW_AT_type(*$C$DW$T$11) - 392 .dwattr $C$DW$27, DW_AT_name("PRU1_GPI_SB") - 393 .dwattr $C$DW$27, DW_AT_TI_symbol_name("PRU1_GPI_SB") - 394 .dwattr $C$DW$27, DW_AT_bit_offset(0x12), DW_AT_bit_size(0x01) - 395 .dwattr $C$DW$27, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 396 .dwattr $C$DW$27, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 397 .dwattr $C$DW$27, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 398 .dwattr $C$DW$27, DW_AT_decl_line(0x5c) - 399 .dwattr $C$DW$27, DW_AT_decl_column(0x0d) - 400$C$DW$28 .dwtag DW_TAG_member - 401 .dwattr $C$DW$28, DW_AT_type(*$C$DW$T$11) - 402 .dwattr $C$DW$28, DW_AT_name("PRU1_GPO_MODE") - 403 .dwattr $C$DW$28, DW_AT_TI_symbol_name("PRU1_GPO_MODE") - 404 .dwattr $C$DW$28, DW_AT_bit_offset(0x11), DW_AT_bit_size(0x01) - 405 .dwattr $C$DW$28, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 406 .dwattr $C$DW$28, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 407 .dwattr $C$DW$28, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 408 .dwattr $C$DW$28, DW_AT_decl_line(0x5d) - 409 .dwattr $C$DW$28, DW_AT_decl_column(0x0d) - 410$C$DW$29 .dwtag DW_TAG_member - 411 .dwattr $C$DW$29, DW_AT_type(*$C$DW$T$11) - 412 .dwattr $C$DW$29, DW_AT_name("PRU1_GPO_DIV0") - 413 .dwattr $C$DW$29, DW_AT_TI_symbol_name("PRU1_GPO_DIV0") - 414 .dwattr $C$DW$29, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x05) - 415 .dwattr $C$DW$29, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 416 .dwattr $C$DW$29, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 417 .dwattr $C$DW$29, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 418 .dwattr $C$DW$29, DW_AT_decl_line(0x5e) - 419 .dwattr $C$DW$29, DW_AT_decl_column(0x0d) - 420$C$DW$30 .dwtag DW_TAG_member - 421 .dwattr $C$DW$30, DW_AT_type(*$C$DW$T$11) - 422 .dwattr $C$DW$30, DW_AT_name("PRU1_GPO_DIV1") - 423 .dwattr $C$DW$30, DW_AT_TI_symbol_name("PRU1_GPO_DIV1") - 424 .dwattr $C$DW$30, DW_AT_bit_offset(0x07), DW_AT_bit_size(0x05) - 425 .dwattr $C$DW$30, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 426 .dwattr $C$DW$30, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 427 .dwattr $C$DW$30, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 428 .dwattr $C$DW$30, DW_AT_decl_line(0x5f) - 429 .dwattr $C$DW$30, DW_AT_decl_column(0x0d) - 430$C$DW$31 .dwtag DW_TAG_member - 431 .dwattr $C$DW$31, DW_AT_type(*$C$DW$T$11) - 432 .dwattr $C$DW$31, DW_AT_name("PRU1_GPO_SH_SEL") - 433 .dwattr $C$DW$31, DW_AT_TI_symbol_name("PRU1_GPO_SH_SEL") - 434 .dwattr $C$DW$31, DW_AT_bit_offset(0x06), DW_AT_bit_size(0x01) - 435 .dwattr $C$DW$31, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 436 .dwattr $C$DW$31, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 437 .dwattr $C$DW$31, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 438 .dwattr $C$DW$31, DW_AT_decl_line(0x60) - 439 .dwattr $C$DW$31, DW_AT_decl_column(0x0d) - 440$C$DW$32 .dwtag DW_TAG_member -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 9 - - 441 .dwattr $C$DW$32, DW_AT_type(*$C$DW$T$11) - 442 .dwattr $C$DW$32, DW_AT_name("rsvd26") - 443 .dwattr $C$DW$32, DW_AT_TI_symbol_name("rsvd26") - 444 .dwattr $C$DW$32, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x06) - 445 .dwattr $C$DW$32, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 446 .dwattr $C$DW$32, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 447 .dwattr $C$DW$32, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 448 .dwattr $C$DW$32, DW_AT_decl_line(0x61) - 449 .dwattr $C$DW$32, DW_AT_decl_column(0x0d) - 450 .dwendtag $C$DW$T$22 - 451 - 452 .dwattr $C$DW$T$22, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 453 .dwattr $C$DW$T$22, DW_AT_decl_line(0x57) - 454 .dwattr $C$DW$T$22, DW_AT_decl_column(0x13) - 455$C$DW$T$54 .dwtag DW_TAG_volatile_type - 456 .dwattr $C$DW$T$54, DW_AT_type(*$C$DW$T$22) - 457 - 458$C$DW$T$23 .dwtag DW_TAG_structure_type - 459 .dwattr $C$DW$T$23, DW_AT_byte_size(0x04) - 460$C$DW$33 .dwtag DW_TAG_member - 461 .dwattr $C$DW$33, DW_AT_type(*$C$DW$T$11) - 462 .dwattr $C$DW$33, DW_AT_name("PRU0_CLK_STOP_REQ") - 463 .dwattr $C$DW$33, DW_AT_TI_symbol_name("PRU0_CLK_STOP_REQ") - 464 .dwattr $C$DW$33, DW_AT_bit_offset(0x1f), DW_AT_bit_size(0x01) - 465 .dwattr $C$DW$33, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 466 .dwattr $C$DW$33, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 467 .dwattr $C$DW$33, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 468 .dwattr $C$DW$33, DW_AT_decl_line(0x6b) - 469 .dwattr $C$DW$33, DW_AT_decl_column(0x0d) - 470$C$DW$34 .dwtag DW_TAG_member - 471 .dwattr $C$DW$34, DW_AT_type(*$C$DW$T$11) - 472 .dwattr $C$DW$34, DW_AT_name("PRU0_CLK_STOP_ACK") - 473 .dwattr $C$DW$34, DW_AT_TI_symbol_name("PRU0_CLK_STOP_ACK") - 474 .dwattr $C$DW$34, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x01) - 475 .dwattr $C$DW$34, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 476 .dwattr $C$DW$34, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 477 .dwattr $C$DW$34, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 478 .dwattr $C$DW$34, DW_AT_decl_line(0x6c) - 479 .dwattr $C$DW$34, DW_AT_decl_column(0x0d) - 480$C$DW$35 .dwtag DW_TAG_member - 481 .dwattr $C$DW$35, DW_AT_type(*$C$DW$T$11) - 482 .dwattr $C$DW$35, DW_AT_name("PRU0_CLK_EN") - 483 .dwattr $C$DW$35, DW_AT_TI_symbol_name("PRU0_CLK_EN") - 484 .dwattr $C$DW$35, DW_AT_bit_offset(0x1d), DW_AT_bit_size(0x01) - 485 .dwattr $C$DW$35, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 486 .dwattr $C$DW$35, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 487 .dwattr $C$DW$35, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 488 .dwattr $C$DW$35, DW_AT_decl_line(0x6d) - 489 .dwattr $C$DW$35, DW_AT_decl_column(0x0d) - 490$C$DW$36 .dwtag DW_TAG_member - 491 .dwattr $C$DW$36, DW_AT_type(*$C$DW$T$11) - 492 .dwattr $C$DW$36, DW_AT_name("PRU1_CLK_STOP_REQ") - 493 .dwattr $C$DW$36, DW_AT_TI_symbol_name("PRU1_CLK_STOP_REQ") - 494 .dwattr $C$DW$36, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x01) - 495 .dwattr $C$DW$36, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 10 - - 496 .dwattr $C$DW$36, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 497 .dwattr $C$DW$36, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 498 .dwattr $C$DW$36, DW_AT_decl_line(0x6e) - 499 .dwattr $C$DW$36, DW_AT_decl_column(0x0d) - 500$C$DW$37 .dwtag DW_TAG_member - 501 .dwattr $C$DW$37, DW_AT_type(*$C$DW$T$11) - 502 .dwattr $C$DW$37, DW_AT_name("PRU1_CLK_STOP_ACK") - 503 .dwattr $C$DW$37, DW_AT_TI_symbol_name("PRU1_CLK_STOP_ACK") - 504 .dwattr $C$DW$37, DW_AT_bit_offset(0x1b), DW_AT_bit_size(0x01) - 505 .dwattr $C$DW$37, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 506 .dwattr $C$DW$37, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 507 .dwattr $C$DW$37, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 508 .dwattr $C$DW$37, DW_AT_decl_line(0x6f) - 509 .dwattr $C$DW$37, DW_AT_decl_column(0x0d) - 510$C$DW$38 .dwtag DW_TAG_member - 511 .dwattr $C$DW$38, DW_AT_type(*$C$DW$T$11) - 512 .dwattr $C$DW$38, DW_AT_name("PRU1_CLK_EN") - 513 .dwattr $C$DW$38, DW_AT_TI_symbol_name("PRU1_CLK_EN") - 514 .dwattr $C$DW$38, DW_AT_bit_offset(0x1a), DW_AT_bit_size(0x01) - 515 .dwattr $C$DW$38, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 516 .dwattr $C$DW$38, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 517 .dwattr $C$DW$38, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 518 .dwattr $C$DW$38, DW_AT_decl_line(0x70) - 519 .dwattr $C$DW$38, DW_AT_decl_column(0x0d) - 520$C$DW$39 .dwtag DW_TAG_member - 521 .dwattr $C$DW$39, DW_AT_type(*$C$DW$T$11) - 522 .dwattr $C$DW$39, DW_AT_name("INTC_CLK_STOP_REQ") - 523 .dwattr $C$DW$39, DW_AT_TI_symbol_name("INTC_CLK_STOP_REQ") - 524 .dwattr $C$DW$39, DW_AT_bit_offset(0x19), DW_AT_bit_size(0x01) - 525 .dwattr $C$DW$39, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 526 .dwattr $C$DW$39, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 527 .dwattr $C$DW$39, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 528 .dwattr $C$DW$39, DW_AT_decl_line(0x71) - 529 .dwattr $C$DW$39, DW_AT_decl_column(0x0d) - 530$C$DW$40 .dwtag DW_TAG_member - 531 .dwattr $C$DW$40, DW_AT_type(*$C$DW$T$11) - 532 .dwattr $C$DW$40, DW_AT_name("INTC_CLK_STOP_ACK") - 533 .dwattr $C$DW$40, DW_AT_TI_symbol_name("INTC_CLK_STOP_ACK") - 534 .dwattr $C$DW$40, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x01) - 535 .dwattr $C$DW$40, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 536 .dwattr $C$DW$40, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 537 .dwattr $C$DW$40, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 538 .dwattr $C$DW$40, DW_AT_decl_line(0x72) - 539 .dwattr $C$DW$40, DW_AT_decl_column(0x0d) - 540$C$DW$41 .dwtag DW_TAG_member - 541 .dwattr $C$DW$41, DW_AT_type(*$C$DW$T$11) - 542 .dwattr $C$DW$41, DW_AT_name("INTC_CLK_EN") - 543 .dwattr $C$DW$41, DW_AT_TI_symbol_name("INTC_CLK_EN") - 544 .dwattr $C$DW$41, DW_AT_bit_offset(0x17), DW_AT_bit_size(0x01) - 545 .dwattr $C$DW$41, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 546 .dwattr $C$DW$41, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 547 .dwattr $C$DW$41, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 548 .dwattr $C$DW$41, DW_AT_decl_line(0x73) - 549 .dwattr $C$DW$41, DW_AT_decl_column(0x0d) - 550$C$DW$42 .dwtag DW_TAG_member -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 11 - - 551 .dwattr $C$DW$42, DW_AT_type(*$C$DW$T$11) - 552 .dwattr $C$DW$42, DW_AT_name("UART_CLK_STOP_REQ") - 553 .dwattr $C$DW$42, DW_AT_TI_symbol_name("UART_CLK_STOP_REQ") - 554 .dwattr $C$DW$42, DW_AT_bit_offset(0x16), DW_AT_bit_size(0x01) - 555 .dwattr $C$DW$42, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 556 .dwattr $C$DW$42, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 557 .dwattr $C$DW$42, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 558 .dwattr $C$DW$42, DW_AT_decl_line(0x74) - 559 .dwattr $C$DW$42, DW_AT_decl_column(0x0d) - 560$C$DW$43 .dwtag DW_TAG_member - 561 .dwattr $C$DW$43, DW_AT_type(*$C$DW$T$11) - 562 .dwattr $C$DW$43, DW_AT_name("UART_CLK_STOP_ACK") - 563 .dwattr $C$DW$43, DW_AT_TI_symbol_name("UART_CLK_STOP_ACK") - 564 .dwattr $C$DW$43, DW_AT_bit_offset(0x15), DW_AT_bit_size(0x01) - 565 .dwattr $C$DW$43, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 566 .dwattr $C$DW$43, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 567 .dwattr $C$DW$43, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 568 .dwattr $C$DW$43, DW_AT_decl_line(0x75) - 569 .dwattr $C$DW$43, DW_AT_decl_column(0x0d) - 570$C$DW$44 .dwtag DW_TAG_member - 571 .dwattr $C$DW$44, DW_AT_type(*$C$DW$T$11) - 572 .dwattr $C$DW$44, DW_AT_name("UART_CLK_EN") - 573 .dwattr $C$DW$44, DW_AT_TI_symbol_name("UART_CLK_EN") - 574 .dwattr $C$DW$44, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x01) - 575 .dwattr $C$DW$44, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 576 .dwattr $C$DW$44, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 577 .dwattr $C$DW$44, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 578 .dwattr $C$DW$44, DW_AT_decl_line(0x76) - 579 .dwattr $C$DW$44, DW_AT_decl_column(0x0d) - 580$C$DW$45 .dwtag DW_TAG_member - 581 .dwattr $C$DW$45, DW_AT_type(*$C$DW$T$11) - 582 .dwattr $C$DW$45, DW_AT_name("ECAP_CLK_STOP_REQ") - 583 .dwattr $C$DW$45, DW_AT_TI_symbol_name("ECAP_CLK_STOP_REQ") - 584 .dwattr $C$DW$45, DW_AT_bit_offset(0x13), DW_AT_bit_size(0x01) - 585 .dwattr $C$DW$45, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 586 .dwattr $C$DW$45, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 587 .dwattr $C$DW$45, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 588 .dwattr $C$DW$45, DW_AT_decl_line(0x77) - 589 .dwattr $C$DW$45, DW_AT_decl_column(0x0d) - 590$C$DW$46 .dwtag DW_TAG_member - 591 .dwattr $C$DW$46, DW_AT_type(*$C$DW$T$11) - 592 .dwattr $C$DW$46, DW_AT_name("ECAP_CLK_STOP_ACK") - 593 .dwattr $C$DW$46, DW_AT_TI_symbol_name("ECAP_CLK_STOP_ACK") - 594 .dwattr $C$DW$46, DW_AT_bit_offset(0x12), DW_AT_bit_size(0x01) - 595 .dwattr $C$DW$46, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 596 .dwattr $C$DW$46, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 597 .dwattr $C$DW$46, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 598 .dwattr $C$DW$46, DW_AT_decl_line(0x78) - 599 .dwattr $C$DW$46, DW_AT_decl_column(0x0d) - 600$C$DW$47 .dwtag DW_TAG_member - 601 .dwattr $C$DW$47, DW_AT_type(*$C$DW$T$11) - 602 .dwattr $C$DW$47, DW_AT_name("ECAP_CLK_EN") - 603 .dwattr $C$DW$47, DW_AT_TI_symbol_name("ECAP_CLK_EN") - 604 .dwattr $C$DW$47, DW_AT_bit_offset(0x11), DW_AT_bit_size(0x01) - 605 .dwattr $C$DW$47, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 12 - - 606 .dwattr $C$DW$47, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 607 .dwattr $C$DW$47, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 608 .dwattr $C$DW$47, DW_AT_decl_line(0x79) - 609 .dwattr $C$DW$47, DW_AT_decl_column(0x0d) - 610$C$DW$48 .dwtag DW_TAG_member - 611 .dwattr $C$DW$48, DW_AT_type(*$C$DW$T$11) - 612 .dwattr $C$DW$48, DW_AT_name("IEP_CLK_STOP_REQ") - 613 .dwattr $C$DW$48, DW_AT_TI_symbol_name("IEP_CLK_STOP_REQ") - 614 .dwattr $C$DW$48, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x01) - 615 .dwattr $C$DW$48, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 616 .dwattr $C$DW$48, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 617 .dwattr $C$DW$48, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 618 .dwattr $C$DW$48, DW_AT_decl_line(0x7a) - 619 .dwattr $C$DW$48, DW_AT_decl_column(0x0d) - 620$C$DW$49 .dwtag DW_TAG_member - 621 .dwattr $C$DW$49, DW_AT_type(*$C$DW$T$11) - 622 .dwattr $C$DW$49, DW_AT_name("IEP_CLK_STOP_ACK") - 623 .dwattr $C$DW$49, DW_AT_TI_symbol_name("IEP_CLK_STOP_ACK") - 624 .dwattr $C$DW$49, DW_AT_bit_offset(0x0f), DW_AT_bit_size(0x01) - 625 .dwattr $C$DW$49, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 626 .dwattr $C$DW$49, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 627 .dwattr $C$DW$49, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 628 .dwattr $C$DW$49, DW_AT_decl_line(0x7b) - 629 .dwattr $C$DW$49, DW_AT_decl_column(0x0d) - 630$C$DW$50 .dwtag DW_TAG_member - 631 .dwattr $C$DW$50, DW_AT_type(*$C$DW$T$11) - 632 .dwattr $C$DW$50, DW_AT_name("IEP_CLK_EN") - 633 .dwattr $C$DW$50, DW_AT_TI_symbol_name("IEP_CLK_EN") - 634 .dwattr $C$DW$50, DW_AT_bit_offset(0x0e), DW_AT_bit_size(0x01) - 635 .dwattr $C$DW$50, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 636 .dwattr $C$DW$50, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 637 .dwattr $C$DW$50, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 638 .dwattr $C$DW$50, DW_AT_decl_line(0x7c) - 639 .dwattr $C$DW$50, DW_AT_decl_column(0x0d) - 640$C$DW$51 .dwtag DW_TAG_member - 641 .dwattr $C$DW$51, DW_AT_type(*$C$DW$T$11) - 642 .dwattr $C$DW$51, DW_AT_name("rsvd18") - 643 .dwattr $C$DW$51, DW_AT_TI_symbol_name("rsvd18") - 644 .dwattr $C$DW$51, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x0e) - 645 .dwattr $C$DW$51, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 646 .dwattr $C$DW$51, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 647 .dwattr $C$DW$51, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 648 .dwattr $C$DW$51, DW_AT_decl_line(0x7d) - 649 .dwattr $C$DW$51, DW_AT_decl_column(0x0d) - 650 .dwendtag $C$DW$T$23 - 651 - 652 .dwattr $C$DW$T$23, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 653 .dwattr $C$DW$T$23, DW_AT_decl_line(0x6a) - 654 .dwattr $C$DW$T$23, DW_AT_decl_column(0x13) - 655$C$DW$T$56 .dwtag DW_TAG_volatile_type - 656 .dwattr $C$DW$T$56, DW_AT_type(*$C$DW$T$23) - 657 - 658$C$DW$T$24 .dwtag DW_TAG_structure_type - 659 .dwattr $C$DW$T$24, DW_AT_byte_size(0x04) - 660$C$DW$52 .dwtag DW_TAG_member -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 13 - - 661 .dwattr $C$DW$52, DW_AT_type(*$C$DW$T$11) - 662 .dwattr $C$DW$52, DW_AT_name("PRU0_IMEM_PE_RAW") - 663 .dwattr $C$DW$52, DW_AT_TI_symbol_name("PRU0_IMEM_PE_RAW") - 664 .dwattr $C$DW$52, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x04) - 665 .dwattr $C$DW$52, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 666 .dwattr $C$DW$52, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 667 .dwattr $C$DW$52, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 668 .dwattr $C$DW$52, DW_AT_decl_line(0x87) - 669 .dwattr $C$DW$52, DW_AT_decl_column(0x0d) - 670$C$DW$53 .dwtag DW_TAG_member - 671 .dwattr $C$DW$53, DW_AT_type(*$C$DW$T$11) - 672 .dwattr $C$DW$53, DW_AT_name("PRU0_DMEM_PE_RAW") - 673 .dwattr $C$DW$53, DW_AT_TI_symbol_name("PRU0_DMEM_PE_RAW") - 674 .dwattr $C$DW$53, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04) - 675 .dwattr $C$DW$53, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 676 .dwattr $C$DW$53, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 677 .dwattr $C$DW$53, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 678 .dwattr $C$DW$53, DW_AT_decl_line(0x88) - 679 .dwattr $C$DW$53, DW_AT_decl_column(0x0d) - 680$C$DW$54 .dwtag DW_TAG_member - 681 .dwattr $C$DW$54, DW_AT_type(*$C$DW$T$11) - 682 .dwattr $C$DW$54, DW_AT_name("PRU1_IMEM_PE_RAW") - 683 .dwattr $C$DW$54, DW_AT_TI_symbol_name("PRU1_IMEM_PE_RAW") - 684 .dwattr $C$DW$54, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x04) - 685 .dwattr $C$DW$54, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 686 .dwattr $C$DW$54, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 687 .dwattr $C$DW$54, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 688 .dwattr $C$DW$54, DW_AT_decl_line(0x89) - 689 .dwattr $C$DW$54, DW_AT_decl_column(0x0d) - 690$C$DW$55 .dwtag DW_TAG_member - 691 .dwattr $C$DW$55, DW_AT_type(*$C$DW$T$11) - 692 .dwattr $C$DW$55, DW_AT_name("PRU1_DMEM_PE_RAW") - 693 .dwattr $C$DW$55, DW_AT_TI_symbol_name("PRU1_DMEM_PE_RAW") - 694 .dwattr $C$DW$55, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x04) - 695 .dwattr $C$DW$55, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 696 .dwattr $C$DW$55, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 697 .dwattr $C$DW$55, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 698 .dwattr $C$DW$55, DW_AT_decl_line(0x8a) - 699 .dwattr $C$DW$55, DW_AT_decl_column(0x0d) - 700$C$DW$56 .dwtag DW_TAG_member - 701 .dwattr $C$DW$56, DW_AT_type(*$C$DW$T$11) - 702 .dwattr $C$DW$56, DW_AT_name("RAM_PE_RAW") - 703 .dwattr $C$DW$56, DW_AT_TI_symbol_name("RAM_PE_RAW") - 704 .dwattr $C$DW$56, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x04) - 705 .dwattr $C$DW$56, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 706 .dwattr $C$DW$56, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 707 .dwattr $C$DW$56, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 708 .dwattr $C$DW$56, DW_AT_decl_line(0x8b) - 709 .dwattr $C$DW$56, DW_AT_decl_column(0x0d) - 710$C$DW$57 .dwtag DW_TAG_member - 711 .dwattr $C$DW$57, DW_AT_type(*$C$DW$T$11) - 712 .dwattr $C$DW$57, DW_AT_name("rsvd20") - 713 .dwattr $C$DW$57, DW_AT_TI_symbol_name("rsvd20") - 714 .dwattr $C$DW$57, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x0c) - 715 .dwattr $C$DW$57, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 14 - - 716 .dwattr $C$DW$57, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 717 .dwattr $C$DW$57, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 718 .dwattr $C$DW$57, DW_AT_decl_line(0x8c) - 719 .dwattr $C$DW$57, DW_AT_decl_column(0x0d) - 720 .dwendtag $C$DW$T$24 - 721 - 722 .dwattr $C$DW$T$24, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 723 .dwattr $C$DW$T$24, DW_AT_decl_line(0x86) - 724 .dwattr $C$DW$T$24, DW_AT_decl_column(0x14) - 725$C$DW$T$58 .dwtag DW_TAG_volatile_type - 726 .dwattr $C$DW$T$58, DW_AT_type(*$C$DW$T$24) - 727 - 728$C$DW$T$25 .dwtag DW_TAG_structure_type - 729 .dwattr $C$DW$T$25, DW_AT_byte_size(0x04) - 730$C$DW$58 .dwtag DW_TAG_member - 731 .dwattr $C$DW$58, DW_AT_type(*$C$DW$T$11) - 732 .dwattr $C$DW$58, DW_AT_name("PRU0_IMEM_PE") - 733 .dwattr $C$DW$58, DW_AT_TI_symbol_name("PRU0_IMEM_PE") - 734 .dwattr $C$DW$58, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x04) - 735 .dwattr $C$DW$58, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 736 .dwattr $C$DW$58, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 737 .dwattr $C$DW$58, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 738 .dwattr $C$DW$58, DW_AT_decl_line(0x96) - 739 .dwattr $C$DW$58, DW_AT_decl_column(0x0d) - 740$C$DW$59 .dwtag DW_TAG_member - 741 .dwattr $C$DW$59, DW_AT_type(*$C$DW$T$11) - 742 .dwattr $C$DW$59, DW_AT_name("PRU0_DMEM_PE") - 743 .dwattr $C$DW$59, DW_AT_TI_symbol_name("PRU0_DMEM_PE") - 744 .dwattr $C$DW$59, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04) - 745 .dwattr $C$DW$59, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 746 .dwattr $C$DW$59, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 747 .dwattr $C$DW$59, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 748 .dwattr $C$DW$59, DW_AT_decl_line(0x97) - 749 .dwattr $C$DW$59, DW_AT_decl_column(0x0d) - 750$C$DW$60 .dwtag DW_TAG_member - 751 .dwattr $C$DW$60, DW_AT_type(*$C$DW$T$11) - 752 .dwattr $C$DW$60, DW_AT_name("PRU1_IMEM_PE") - 753 .dwattr $C$DW$60, DW_AT_TI_symbol_name("PRU1_IMEM_PE") - 754 .dwattr $C$DW$60, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x04) - 755 .dwattr $C$DW$60, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 756 .dwattr $C$DW$60, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 757 .dwattr $C$DW$60, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 758 .dwattr $C$DW$60, DW_AT_decl_line(0x98) - 759 .dwattr $C$DW$60, DW_AT_decl_column(0x0d) - 760$C$DW$61 .dwtag DW_TAG_member - 761 .dwattr $C$DW$61, DW_AT_type(*$C$DW$T$11) - 762 .dwattr $C$DW$61, DW_AT_name("PRU1_DMEM_PE") - 763 .dwattr $C$DW$61, DW_AT_TI_symbol_name("PRU1_DMEM_PE") - 764 .dwattr $C$DW$61, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x04) - 765 .dwattr $C$DW$61, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 766 .dwattr $C$DW$61, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 767 .dwattr $C$DW$61, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 768 .dwattr $C$DW$61, DW_AT_decl_line(0x99) - 769 .dwattr $C$DW$61, DW_AT_decl_column(0x0d) - 770$C$DW$62 .dwtag DW_TAG_member -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 15 - - 771 .dwattr $C$DW$62, DW_AT_type(*$C$DW$T$11) - 772 .dwattr $C$DW$62, DW_AT_name("RAM_PE") - 773 .dwattr $C$DW$62, DW_AT_TI_symbol_name("RAM_PE") - 774 .dwattr $C$DW$62, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x04) - 775 .dwattr $C$DW$62, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 776 .dwattr $C$DW$62, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 777 .dwattr $C$DW$62, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 778 .dwattr $C$DW$62, DW_AT_decl_line(0x9a) - 779 .dwattr $C$DW$62, DW_AT_decl_column(0x0d) - 780$C$DW$63 .dwtag DW_TAG_member - 781 .dwattr $C$DW$63, DW_AT_type(*$C$DW$T$11) - 782 .dwattr $C$DW$63, DW_AT_name("rsvd20") - 783 .dwattr $C$DW$63, DW_AT_TI_symbol_name("rsvd20") - 784 .dwattr $C$DW$63, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x0c) - 785 .dwattr $C$DW$63, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 786 .dwattr $C$DW$63, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 787 .dwattr $C$DW$63, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 788 .dwattr $C$DW$63, DW_AT_decl_line(0x9b) - 789 .dwattr $C$DW$63, DW_AT_decl_column(0x0d) - 790 .dwendtag $C$DW$T$25 - 791 - 792 .dwattr $C$DW$T$25, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 793 .dwattr $C$DW$T$25, DW_AT_decl_line(0x95) - 794 .dwattr $C$DW$T$25, DW_AT_decl_column(0x14) - 795$C$DW$T$60 .dwtag DW_TAG_volatile_type - 796 .dwattr $C$DW$T$60, DW_AT_type(*$C$DW$T$25) - 797 - 798$C$DW$T$26 .dwtag DW_TAG_structure_type - 799 .dwattr $C$DW$T$26, DW_AT_byte_size(0x04) - 800$C$DW$64 .dwtag DW_TAG_member - 801 .dwattr $C$DW$64, DW_AT_type(*$C$DW$T$11) - 802 .dwattr $C$DW$64, DW_AT_name("PRU0_IMEM_PE_SET") - 803 .dwattr $C$DW$64, DW_AT_TI_symbol_name("PRU0_IMEM_PE_SET") - 804 .dwattr $C$DW$64, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x04) - 805 .dwattr $C$DW$64, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 806 .dwattr $C$DW$64, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 807 .dwattr $C$DW$64, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 808 .dwattr $C$DW$64, DW_AT_decl_line(0xa4) - 809 .dwattr $C$DW$64, DW_AT_decl_column(0x0d) - 810$C$DW$65 .dwtag DW_TAG_member - 811 .dwattr $C$DW$65, DW_AT_type(*$C$DW$T$11) - 812 .dwattr $C$DW$65, DW_AT_name("PRU0_DMEM_PE_SET") - 813 .dwattr $C$DW$65, DW_AT_TI_symbol_name("PRU0_DMEM_PE_SET") - 814 .dwattr $C$DW$65, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04) - 815 .dwattr $C$DW$65, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 816 .dwattr $C$DW$65, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 817 .dwattr $C$DW$65, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 818 .dwattr $C$DW$65, DW_AT_decl_line(0xa5) - 819 .dwattr $C$DW$65, DW_AT_decl_column(0x0d) - 820$C$DW$66 .dwtag DW_TAG_member - 821 .dwattr $C$DW$66, DW_AT_type(*$C$DW$T$11) - 822 .dwattr $C$DW$66, DW_AT_name("PRU1_IMEM_PE_SET") - 823 .dwattr $C$DW$66, DW_AT_TI_symbol_name("PRU1_IMEM_PE_SET") - 824 .dwattr $C$DW$66, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x04) - 825 .dwattr $C$DW$66, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 16 - - 826 .dwattr $C$DW$66, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 827 .dwattr $C$DW$66, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 828 .dwattr $C$DW$66, DW_AT_decl_line(0xa6) - 829 .dwattr $C$DW$66, DW_AT_decl_column(0x0d) - 830$C$DW$67 .dwtag DW_TAG_member - 831 .dwattr $C$DW$67, DW_AT_type(*$C$DW$T$11) - 832 .dwattr $C$DW$67, DW_AT_name("PRU1_DMEM_PE_SET") - 833 .dwattr $C$DW$67, DW_AT_TI_symbol_name("PRU1_DMEM_PE_SET") - 834 .dwattr $C$DW$67, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x04) - 835 .dwattr $C$DW$67, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 836 .dwattr $C$DW$67, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 837 .dwattr $C$DW$67, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 838 .dwattr $C$DW$67, DW_AT_decl_line(0xa7) - 839 .dwattr $C$DW$67, DW_AT_decl_column(0x0d) - 840$C$DW$68 .dwtag DW_TAG_member - 841 .dwattr $C$DW$68, DW_AT_type(*$C$DW$T$11) - 842 .dwattr $C$DW$68, DW_AT_name("RAM_PE_SET") - 843 .dwattr $C$DW$68, DW_AT_TI_symbol_name("RAM_PE_SET") - 844 .dwattr $C$DW$68, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x04) - 845 .dwattr $C$DW$68, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 846 .dwattr $C$DW$68, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 847 .dwattr $C$DW$68, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 848 .dwattr $C$DW$68, DW_AT_decl_line(0xa8) - 849 .dwattr $C$DW$68, DW_AT_decl_column(0x0d) - 850$C$DW$69 .dwtag DW_TAG_member - 851 .dwattr $C$DW$69, DW_AT_type(*$C$DW$T$11) - 852 .dwattr $C$DW$69, DW_AT_name("rsvd20") - 853 .dwattr $C$DW$69, DW_AT_TI_symbol_name("rsvd20") - 854 .dwattr $C$DW$69, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x0c) - 855 .dwattr $C$DW$69, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 856 .dwattr $C$DW$69, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 857 .dwattr $C$DW$69, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 858 .dwattr $C$DW$69, DW_AT_decl_line(0xa9) - 859 .dwattr $C$DW$69, DW_AT_decl_column(0x0d) - 860 .dwendtag $C$DW$T$26 - 861 - 862 .dwattr $C$DW$T$26, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 863 .dwattr $C$DW$T$26, DW_AT_decl_line(0xa3) - 864 .dwattr $C$DW$T$26, DW_AT_decl_column(0x13) - 865$C$DW$T$62 .dwtag DW_TAG_volatile_type - 866 .dwattr $C$DW$T$62, DW_AT_type(*$C$DW$T$26) - 867 - 868$C$DW$T$27 .dwtag DW_TAG_structure_type - 869 .dwattr $C$DW$T$27, DW_AT_byte_size(0x04) - 870$C$DW$70 .dwtag DW_TAG_member - 871 .dwattr $C$DW$70, DW_AT_type(*$C$DW$T$11) - 872 .dwattr $C$DW$70, DW_AT_name("PRU0_IMEM_PE_CLR") - 873 .dwattr $C$DW$70, DW_AT_TI_symbol_name("PRU0_IMEM_PE_CLR") - 874 .dwattr $C$DW$70, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x04) - 875 .dwattr $C$DW$70, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 876 .dwattr $C$DW$70, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 877 .dwattr $C$DW$70, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 878 .dwattr $C$DW$70, DW_AT_decl_line(0xb3) - 879 .dwattr $C$DW$70, DW_AT_decl_column(0x0d) - 880$C$DW$71 .dwtag DW_TAG_member -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 17 - - 881 .dwattr $C$DW$71, DW_AT_type(*$C$DW$T$11) - 882 .dwattr $C$DW$71, DW_AT_name("PRU0_DMEM_PE_CLR") - 883 .dwattr $C$DW$71, DW_AT_TI_symbol_name("PRU0_DMEM_PE_CLR") - 884 .dwattr $C$DW$71, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04) - 885 .dwattr $C$DW$71, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 886 .dwattr $C$DW$71, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 887 .dwattr $C$DW$71, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 888 .dwattr $C$DW$71, DW_AT_decl_line(0xb4) - 889 .dwattr $C$DW$71, DW_AT_decl_column(0x0d) - 890$C$DW$72 .dwtag DW_TAG_member - 891 .dwattr $C$DW$72, DW_AT_type(*$C$DW$T$11) - 892 .dwattr $C$DW$72, DW_AT_name("PRU1_IMEM_PE_CLR") - 893 .dwattr $C$DW$72, DW_AT_TI_symbol_name("PRU1_IMEM_PE_CLR") - 894 .dwattr $C$DW$72, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x04) - 895 .dwattr $C$DW$72, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 896 .dwattr $C$DW$72, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 897 .dwattr $C$DW$72, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 898 .dwattr $C$DW$72, DW_AT_decl_line(0xb5) - 899 .dwattr $C$DW$72, DW_AT_decl_column(0x0d) - 900$C$DW$73 .dwtag DW_TAG_member - 901 .dwattr $C$DW$73, DW_AT_type(*$C$DW$T$11) - 902 .dwattr $C$DW$73, DW_AT_name("PRU1_DMEM_PE_CLR") - 903 .dwattr $C$DW$73, DW_AT_TI_symbol_name("PRU1_DMEM_PE_CLR") - 904 .dwattr $C$DW$73, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x04) - 905 .dwattr $C$DW$73, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 906 .dwattr $C$DW$73, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 907 .dwattr $C$DW$73, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 908 .dwattr $C$DW$73, DW_AT_decl_line(0xb6) - 909 .dwattr $C$DW$73, DW_AT_decl_column(0x0d) - 910$C$DW$74 .dwtag DW_TAG_member - 911 .dwattr $C$DW$74, DW_AT_type(*$C$DW$T$11) - 912 .dwattr $C$DW$74, DW_AT_name("rsvd16") - 913 .dwattr $C$DW$74, DW_AT_TI_symbol_name("rsvd16") - 914 .dwattr $C$DW$74, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x10) - 915 .dwattr $C$DW$74, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 916 .dwattr $C$DW$74, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 917 .dwattr $C$DW$74, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 918 .dwattr $C$DW$74, DW_AT_decl_line(0xb7) - 919 .dwattr $C$DW$74, DW_AT_decl_column(0x0d) - 920 .dwendtag $C$DW$T$27 - 921 - 922 .dwattr $C$DW$T$27, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 923 .dwattr $C$DW$T$27, DW_AT_decl_line(0xb2) - 924 .dwattr $C$DW$T$27, DW_AT_decl_column(0x13) - 925$C$DW$T$64 .dwtag DW_TAG_volatile_type - 926 .dwattr $C$DW$T$64, DW_AT_type(*$C$DW$T$27) - 927 - 928$C$DW$T$28 .dwtag DW_TAG_structure_type - 929 .dwattr $C$DW$T$28, DW_AT_byte_size(0x04) - 930$C$DW$75 .dwtag DW_TAG_member - 931 .dwattr $C$DW$75, DW_AT_type(*$C$DW$T$11) - 932 .dwattr $C$DW$75, DW_AT_name("PMAO_PRU0") - 933 .dwattr $C$DW$75, DW_AT_TI_symbol_name("PMAO_PRU0") - 934 .dwattr $C$DW$75, DW_AT_bit_offset(0x1f), DW_AT_bit_size(0x01) - 935 .dwattr $C$DW$75, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 18 - - 936 .dwattr $C$DW$75, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 937 .dwattr $C$DW$75, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 938 .dwattr $C$DW$75, DW_AT_decl_line(0xc4) - 939 .dwattr $C$DW$75, DW_AT_decl_column(0x0d) - 940$C$DW$76 .dwtag DW_TAG_member - 941 .dwattr $C$DW$76, DW_AT_type(*$C$DW$T$11) - 942 .dwattr $C$DW$76, DW_AT_name("PMAO_PRU1") - 943 .dwattr $C$DW$76, DW_AT_TI_symbol_name("PMAO_PRU1") - 944 .dwattr $C$DW$76, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x01) - 945 .dwattr $C$DW$76, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 946 .dwattr $C$DW$76, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 947 .dwattr $C$DW$76, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 948 .dwattr $C$DW$76, DW_AT_decl_line(0xc5) - 949 .dwattr $C$DW$76, DW_AT_decl_column(0x0d) - 950$C$DW$77 .dwtag DW_TAG_member - 951 .dwattr $C$DW$77, DW_AT_type(*$C$DW$T$11) - 952 .dwattr $C$DW$77, DW_AT_name("rsvd2") - 953 .dwattr $C$DW$77, DW_AT_TI_symbol_name("rsvd2") - 954 .dwattr $C$DW$77, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x1e) - 955 .dwattr $C$DW$77, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 956 .dwattr $C$DW$77, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 957 .dwattr $C$DW$77, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 958 .dwattr $C$DW$77, DW_AT_decl_line(0xc6) - 959 .dwattr $C$DW$77, DW_AT_decl_column(0x0d) - 960 .dwendtag $C$DW$T$28 - 961 - 962 .dwattr $C$DW$T$28, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 963 .dwattr $C$DW$T$28, DW_AT_decl_line(0xc3) - 964 .dwattr $C$DW$T$28, DW_AT_decl_column(0x13) - 965$C$DW$T$66 .dwtag DW_TAG_volatile_type - 966 .dwattr $C$DW$T$66, DW_AT_type(*$C$DW$T$28) - 967 - 968$C$DW$T$29 .dwtag DW_TAG_structure_type - 969 .dwattr $C$DW$T$29, DW_AT_byte_size(0x04) - 970$C$DW$78 .dwtag DW_TAG_member - 971 .dwattr $C$DW$78, DW_AT_type(*$C$DW$T$11) - 972 .dwattr $C$DW$78, DW_AT_name("OCP_EN") - 973 .dwattr $C$DW$78, DW_AT_TI_symbol_name("OCP_EN") - 974 .dwattr $C$DW$78, DW_AT_bit_offset(0x1f), DW_AT_bit_size(0x01) - 975 .dwattr $C$DW$78, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 976 .dwattr $C$DW$78, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 977 .dwattr $C$DW$78, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 978 .dwattr $C$DW$78, DW_AT_decl_line(0xd3) - 979 .dwattr $C$DW$78, DW_AT_decl_column(0x0d) - 980$C$DW$79 .dwtag DW_TAG_member - 981 .dwattr $C$DW$79, DW_AT_type(*$C$DW$T$11) - 982 .dwattr $C$DW$79, DW_AT_name("rsvd1") - 983 .dwattr $C$DW$79, DW_AT_TI_symbol_name("rsvd1") - 984 .dwattr $C$DW$79, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x1f) - 985 .dwattr $C$DW$79, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 986 .dwattr $C$DW$79, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 987 .dwattr $C$DW$79, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 988 .dwattr $C$DW$79, DW_AT_decl_line(0xd4) - 989 .dwattr $C$DW$79, DW_AT_decl_column(0x0d) - 990 .dwendtag $C$DW$T$29 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 19 - - 991 - 992 .dwattr $C$DW$T$29, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 993 .dwattr $C$DW$T$29, DW_AT_decl_line(0xd2) - 994 .dwattr $C$DW$T$29, DW_AT_decl_column(0x13) - 995$C$DW$T$68 .dwtag DW_TAG_volatile_type - 996 .dwattr $C$DW$T$68, DW_AT_type(*$C$DW$T$29) - 997 - 998$C$DW$T$30 .dwtag DW_TAG_structure_type - 999 .dwattr $C$DW$T$30, DW_AT_byte_size(0x04) - 1000$C$DW$80 .dwtag DW_TAG_member - 1001 .dwattr $C$DW$80, DW_AT_type(*$C$DW$T$11) - 1002 .dwattr $C$DW$80, DW_AT_name("PRU1_PAD_HP_EN") - 1003 .dwattr $C$DW$80, DW_AT_TI_symbol_name("PRU1_PAD_HP_EN") - 1004 .dwattr $C$DW$80, DW_AT_bit_offset(0x1f), DW_AT_bit_size(0x01) - 1005 .dwattr $C$DW$80, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1006 .dwattr $C$DW$80, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1007 .dwattr $C$DW$80, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1008 .dwattr $C$DW$80, DW_AT_decl_line(0xde) - 1009 .dwattr $C$DW$80, DW_AT_decl_column(0x0d) - 1010$C$DW$81 .dwtag DW_TAG_member - 1011 .dwattr $C$DW$81, DW_AT_type(*$C$DW$T$11) - 1012 .dwattr $C$DW$81, DW_AT_name("XFR_SHIFT_EN") - 1013 .dwattr $C$DW$81, DW_AT_TI_symbol_name("XFR_SHIFT_EN") - 1014 .dwattr $C$DW$81, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x01) - 1015 .dwattr $C$DW$81, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1016 .dwattr $C$DW$81, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1017 .dwattr $C$DW$81, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1018 .dwattr $C$DW$81, DW_AT_decl_line(0xdf) - 1019 .dwattr $C$DW$81, DW_AT_decl_column(0x0d) - 1020$C$DW$82 .dwtag DW_TAG_member - 1021 .dwattr $C$DW$82, DW_AT_type(*$C$DW$T$11) - 1022 .dwattr $C$DW$82, DW_AT_name("rsvd2") - 1023 .dwattr $C$DW$82, DW_AT_TI_symbol_name("rsvd2") - 1024 .dwattr $C$DW$82, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x1e) - 1025 .dwattr $C$DW$82, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1026 .dwattr $C$DW$82, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1027 .dwattr $C$DW$82, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1028 .dwattr $C$DW$82, DW_AT_decl_line(0xe0) - 1029 .dwattr $C$DW$82, DW_AT_decl_column(0x0d) - 1030 .dwendtag $C$DW$T$30 - 1031 - 1032 .dwattr $C$DW$T$30, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1033 .dwattr $C$DW$T$30, DW_AT_decl_line(0xdd) - 1034 .dwattr $C$DW$T$30, DW_AT_decl_column(0x13) - 1035$C$DW$T$70 .dwtag DW_TAG_volatile_type - 1036 .dwattr $C$DW$T$70, DW_AT_type(*$C$DW$T$30) - 1037 - 1038$C$DW$T$31 .dwtag DW_TAG_structure_type - 1039 .dwattr $C$DW$T$31, DW_AT_byte_size(0x04) - 1040$C$DW$83 .dwtag DW_TAG_member - 1041 .dwattr $C$DW$83, DW_AT_type(*$C$DW$T$11) - 1042 .dwattr $C$DW$83, DW_AT_name("PIN_MUX_SEL") - 1043 .dwattr $C$DW$83, DW_AT_TI_symbol_name("PIN_MUX_SEL") - 1044 .dwattr $C$DW$83, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x08) - 1045 .dwattr $C$DW$83, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 20 - - 1046 .dwattr $C$DW$83, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1047 .dwattr $C$DW$83, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1048 .dwattr $C$DW$83, DW_AT_decl_line(0xec) - 1049 .dwattr $C$DW$83, DW_AT_decl_column(0x0d) - 1050$C$DW$84 .dwtag DW_TAG_member - 1051 .dwattr $C$DW$84, DW_AT_type(*$C$DW$T$11) - 1052 .dwattr $C$DW$84, DW_AT_name("rsvd2") - 1053 .dwattr $C$DW$84, DW_AT_TI_symbol_name("rsvd2") - 1054 .dwattr $C$DW$84, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x18) - 1055 .dwattr $C$DW$84, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1056 .dwattr $C$DW$84, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1057 .dwattr $C$DW$84, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1058 .dwattr $C$DW$84, DW_AT_decl_line(0xed) - 1059 .dwattr $C$DW$84, DW_AT_decl_column(0x0d) - 1060 .dwendtag $C$DW$T$31 - 1061 - 1062 .dwattr $C$DW$T$31, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1063 .dwattr $C$DW$T$31, DW_AT_decl_line(0xeb) - 1064 .dwattr $C$DW$T$31, DW_AT_decl_column(0x13) - 1065$C$DW$T$72 .dwtag DW_TAG_volatile_type - 1066 .dwattr $C$DW$T$72, DW_AT_type(*$C$DW$T$31) - 1067 - 1068$C$DW$T$35 .dwtag DW_TAG_structure_type - 1069 .dwattr $C$DW$T$35, DW_AT_byte_size(0x44) - 1070$C$DW$85 .dwtag DW_TAG_member - 1071 .dwattr $C$DW$85, DW_AT_type(*$C$DW$T$49) - 1072 .dwattr $C$DW$85, DW_AT_name("$P$T0") - 1073 .dwattr $C$DW$85, DW_AT_TI_symbol_name("$P$T0") - 1074 .dwattr $C$DW$85, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1075 .dwattr $C$DW$85, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1076 .dwattr $C$DW$85, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1077 .dwattr $C$DW$85, DW_AT_decl_line(0x29) - 1078 .dwattr $C$DW$85, DW_AT_decl_column(0x02) - 1079$C$DW$86 .dwtag DW_TAG_member - 1080 .dwattr $C$DW$86, DW_AT_type(*$C$DW$T$51) - 1081 .dwattr $C$DW$86, DW_AT_name("$P$T1") - 1082 .dwattr $C$DW$86, DW_AT_TI_symbol_name("$P$T1") - 1083 .dwattr $C$DW$86, DW_AT_data_member_location[DW_OP_plus_uconst 0x4] - 1084 .dwattr $C$DW$86, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1085 .dwattr $C$DW$86, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1086 .dwattr $C$DW$86, DW_AT_decl_line(0x33) - 1087 .dwattr $C$DW$86, DW_AT_decl_column(0x02) - 1088$C$DW$87 .dwtag DW_TAG_member - 1089 .dwattr $C$DW$87, DW_AT_type(*$C$DW$T$53) - 1090 .dwattr $C$DW$87, DW_AT_name("$P$T2") - 1091 .dwattr $C$DW$87, DW_AT_TI_symbol_name("$P$T2") - 1092 .dwattr $C$DW$87, DW_AT_data_member_location[DW_OP_plus_uconst 0x8] - 1093 .dwattr $C$DW$87, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1094 .dwattr $C$DW$87, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1095 .dwattr $C$DW$87, DW_AT_decl_line(0x41) - 1096 .dwattr $C$DW$87, DW_AT_decl_column(0x02) - 1097$C$DW$88 .dwtag DW_TAG_member - 1098 .dwattr $C$DW$88, DW_AT_type(*$C$DW$T$55) - 1099 .dwattr $C$DW$88, DW_AT_name("$P$T3") - 1100 .dwattr $C$DW$88, DW_AT_TI_symbol_name("$P$T3") -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 21 - - 1101 .dwattr $C$DW$88, DW_AT_data_member_location[DW_OP_plus_uconst 0xc] - 1102 .dwattr $C$DW$88, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1103 .dwattr $C$DW$88, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1104 .dwattr $C$DW$88, DW_AT_decl_line(0x54) - 1105 .dwattr $C$DW$88, DW_AT_decl_column(0x02) - 1106$C$DW$89 .dwtag DW_TAG_member - 1107 .dwattr $C$DW$89, DW_AT_type(*$C$DW$T$57) - 1108 .dwattr $C$DW$89, DW_AT_name("$P$T4") - 1109 .dwattr $C$DW$89, DW_AT_TI_symbol_name("$P$T4") - 1110 .dwattr $C$DW$89, DW_AT_data_member_location[DW_OP_plus_uconst 0x10] - 1111 .dwattr $C$DW$89, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1112 .dwattr $C$DW$89, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1113 .dwattr $C$DW$89, DW_AT_decl_line(0x67) - 1114 .dwattr $C$DW$89, DW_AT_decl_column(0x02) - 1115$C$DW$90 .dwtag DW_TAG_member - 1116 .dwattr $C$DW$90, DW_AT_type(*$C$DW$T$59) - 1117 .dwattr $C$DW$90, DW_AT_name("$P$T5") - 1118 .dwattr $C$DW$90, DW_AT_TI_symbol_name("$P$T5") - 1119 .dwattr $C$DW$90, DW_AT_data_member_location[DW_OP_plus_uconst 0x14] - 1120 .dwattr $C$DW$90, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1121 .dwattr $C$DW$90, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1122 .dwattr $C$DW$90, DW_AT_decl_line(0x83) - 1123 .dwattr $C$DW$90, DW_AT_decl_column(0x02) - 1124$C$DW$91 .dwtag DW_TAG_member - 1125 .dwattr $C$DW$91, DW_AT_type(*$C$DW$T$61) - 1126 .dwattr $C$DW$91, DW_AT_name("$P$T6") - 1127 .dwattr $C$DW$91, DW_AT_TI_symbol_name("$P$T6") - 1128 .dwattr $C$DW$91, DW_AT_data_member_location[DW_OP_plus_uconst 0x18] - 1129 .dwattr $C$DW$91, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1130 .dwattr $C$DW$91, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1131 .dwattr $C$DW$91, DW_AT_decl_line(0x92) - 1132 .dwattr $C$DW$91, DW_AT_decl_column(0x02) - 1133$C$DW$92 .dwtag DW_TAG_member - 1134 .dwattr $C$DW$92, DW_AT_type(*$C$DW$T$63) - 1135 .dwattr $C$DW$92, DW_AT_name("$P$T7") - 1136 .dwattr $C$DW$92, DW_AT_TI_symbol_name("$P$T7") - 1137 .dwattr $C$DW$92, DW_AT_data_member_location[DW_OP_plus_uconst 0x1c] - 1138 .dwattr $C$DW$92, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1139 .dwattr $C$DW$92, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1140 .dwattr $C$DW$92, DW_AT_decl_line(0xa0) - 1141 .dwattr $C$DW$92, DW_AT_decl_column(0x02) - 1142$C$DW$93 .dwtag DW_TAG_member - 1143 .dwattr $C$DW$93, DW_AT_type(*$C$DW$T$65) - 1144 .dwattr $C$DW$93, DW_AT_name("$P$T8") - 1145 .dwattr $C$DW$93, DW_AT_TI_symbol_name("$P$T8") - 1146 .dwattr $C$DW$93, DW_AT_data_member_location[DW_OP_plus_uconst 0x20] - 1147 .dwattr $C$DW$93, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1148 .dwattr $C$DW$93, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1149 .dwattr $C$DW$93, DW_AT_decl_line(0xaf) - 1150 .dwattr $C$DW$93, DW_AT_decl_column(0x02) - 1151$C$DW$94 .dwtag DW_TAG_member - 1152 .dwattr $C$DW$94, DW_AT_type(*$C$DW$T$32) - 1153 .dwattr $C$DW$94, DW_AT_name("rsvd24") - 1154 .dwattr $C$DW$94, DW_AT_TI_symbol_name("rsvd24") - 1155 .dwattr $C$DW$94, DW_AT_data_member_location[DW_OP_plus_uconst 0x24] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 22 - - 1156 .dwattr $C$DW$94, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1157 .dwattr $C$DW$94, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1158 .dwattr $C$DW$94, DW_AT_decl_line(0xbc) - 1159 .dwattr $C$DW$94, DW_AT_decl_column(0x0b) - 1160$C$DW$95 .dwtag DW_TAG_member - 1161 .dwattr $C$DW$95, DW_AT_type(*$C$DW$T$67) - 1162 .dwattr $C$DW$95, DW_AT_name("$P$T9") - 1163 .dwattr $C$DW$95, DW_AT_TI_symbol_name("$P$T9") - 1164 .dwattr $C$DW$95, DW_AT_data_member_location[DW_OP_plus_uconst 0x28] - 1165 .dwattr $C$DW$95, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1166 .dwattr $C$DW$95, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1167 .dwattr $C$DW$95, DW_AT_decl_line(0xc0) - 1168 .dwattr $C$DW$95, DW_AT_decl_column(0x02) - 1169$C$DW$96 .dwtag DW_TAG_member - 1170 .dwattr $C$DW$96, DW_AT_type(*$C$DW$T$33) - 1171 .dwattr $C$DW$96, DW_AT_name("rsvd2c") - 1172 .dwattr $C$DW$96, DW_AT_TI_symbol_name("rsvd2c") - 1173 .dwattr $C$DW$96, DW_AT_data_member_location[DW_OP_plus_uconst 0x2c] - 1174 .dwattr $C$DW$96, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1175 .dwattr $C$DW$96, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1176 .dwattr $C$DW$96, DW_AT_decl_line(0xcb) - 1177 .dwattr $C$DW$96, DW_AT_decl_column(0x0b) - 1178$C$DW$97 .dwtag DW_TAG_member - 1179 .dwattr $C$DW$97, DW_AT_type(*$C$DW$T$69) - 1180 .dwattr $C$DW$97, DW_AT_name("$P$T10") - 1181 .dwattr $C$DW$97, DW_AT_TI_symbol_name("$P$T10") - 1182 .dwattr $C$DW$97, DW_AT_data_member_location[DW_OP_plus_uconst 0x30] - 1183 .dwattr $C$DW$97, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1184 .dwattr $C$DW$97, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1185 .dwattr $C$DW$97, DW_AT_decl_line(0xcf) - 1186 .dwattr $C$DW$97, DW_AT_decl_column(0x02) - 1187$C$DW$98 .dwtag DW_TAG_member - 1188 .dwattr $C$DW$98, DW_AT_type(*$C$DW$T$71) - 1189 .dwattr $C$DW$98, DW_AT_name("$P$T11") - 1190 .dwattr $C$DW$98, DW_AT_TI_symbol_name("$P$T11") - 1191 .dwattr $C$DW$98, DW_AT_data_member_location[DW_OP_plus_uconst 0x34] - 1192 .dwattr $C$DW$98, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1193 .dwattr $C$DW$98, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1194 .dwattr $C$DW$98, DW_AT_decl_line(0xda) - 1195 .dwattr $C$DW$98, DW_AT_decl_column(0x02) - 1196$C$DW$99 .dwtag DW_TAG_member - 1197 .dwattr $C$DW$99, DW_AT_type(*$C$DW$T$34) - 1198 .dwattr $C$DW$99, DW_AT_name("rsvd38") - 1199 .dwattr $C$DW$99, DW_AT_TI_symbol_name("rsvd38") - 1200 .dwattr $C$DW$99, DW_AT_data_member_location[DW_OP_plus_uconst 0x38] - 1201 .dwattr $C$DW$99, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1202 .dwattr $C$DW$99, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pru - 1203 .dwattr $C$DW$99, DW_AT_decl_line(0xe5) - 1204 .dwattr $C$DW$99, DW_AT_decl_column(0x0b) - 1205$C$DW$100 .dwtag DW_TAG_member - 1206 .dwattr $C$DW$100, DW_AT_type(*$C$DW$T$73) - 1207 .dwattr $C$DW$100, DW_AT_name("$P$T12") - 1208 .dwattr $C$DW$100, DW_AT_TI_symbol_name("$P$T12") - 1209 .dwattr $C$DW$100, DW_AT_data_member_location[DW_OP_plus_uconst 0x40] - 1210 .dwattr $C$DW$100, DW_AT_accessibility(DW_ACCESS_ai_64_lic) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 23 - - 1211 .dwattr $C$DW$100, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1212 .dwattr $C$DW$100, DW_AT_decl_line(0xe8) - 1213 .dwattr $C$DW$100, DW_AT_decl_column(0x02) - 1214 .dwendtag $C$DW$T$35 - 1215 - 1216 .dwattr $C$DW$T$35, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1217 .dwattr $C$DW$T$35, DW_AT_decl_line(0x26) - 1218 .dwattr $C$DW$T$35, DW_AT_decl_column(0x10) - 1219$C$DW$T$97 .dwtag DW_TAG_typedef, DW_AT_name("pruCfg") - 1220 .dwattr $C$DW$T$97, DW_AT_type(*$C$DW$T$35) - 1221 .dwattr $C$DW$T$97, DW_AT_language(DW_LANG_C) - 1222 .dwattr $C$DW$T$97, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1223 .dwattr $C$DW$T$97, DW_AT_decl_line(0xf0) - 1224 .dwattr $C$DW$T$97, DW_AT_decl_column(0x03) - 1225$C$DW$T$98 .dwtag DW_TAG_volatile_type - 1226 .dwattr $C$DW$T$98, DW_AT_type(*$C$DW$T$97) - 1227 - 1228$C$DW$T$36 .dwtag DW_TAG_structure_type - 1229 .dwattr $C$DW$T$36, DW_AT_byte_size(0x04) - 1230$C$DW$101 .dwtag DW_TAG_member - 1231 .dwattr $C$DW$101, DW_AT_type(*$C$DW$T$11) - 1232 .dwattr $C$DW$101, DW_AT_name("SOFT_RST_N") - 1233 .dwattr $C$DW$101, DW_AT_TI_symbol_name("SOFT_RST_N") - 1234 .dwattr $C$DW$101, DW_AT_bit_offset(0x1f), DW_AT_bit_size(0x01) - 1235 .dwattr $C$DW$101, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1236 .dwattr $C$DW$101, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1237 .dwattr $C$DW$101, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1238 .dwattr $C$DW$101, DW_AT_decl_line(0x2d) - 1239 .dwattr $C$DW$101, DW_AT_decl_column(0x0d) - 1240$C$DW$102 .dwtag DW_TAG_member - 1241 .dwattr $C$DW$102, DW_AT_type(*$C$DW$T$11) - 1242 .dwattr $C$DW$102, DW_AT_name("EN") - 1243 .dwattr $C$DW$102, DW_AT_TI_symbol_name("EN") - 1244 .dwattr $C$DW$102, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x01) - 1245 .dwattr $C$DW$102, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1246 .dwattr $C$DW$102, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1247 .dwattr $C$DW$102, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1248 .dwattr $C$DW$102, DW_AT_decl_line(0x2e) - 1249 .dwattr $C$DW$102, DW_AT_decl_column(0x0d) - 1250$C$DW$103 .dwtag DW_TAG_member - 1251 .dwattr $C$DW$103, DW_AT_type(*$C$DW$T$11) - 1252 .dwattr $C$DW$103, DW_AT_name("SLEEPING") - 1253 .dwattr $C$DW$103, DW_AT_TI_symbol_name("SLEEPING") - 1254 .dwattr $C$DW$103, DW_AT_bit_offset(0x1d), DW_AT_bit_size(0x01) - 1255 .dwattr $C$DW$103, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1256 .dwattr $C$DW$103, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1257 .dwattr $C$DW$103, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1258 .dwattr $C$DW$103, DW_AT_decl_line(0x2f) - 1259 .dwattr $C$DW$103, DW_AT_decl_column(0x0d) - 1260$C$DW$104 .dwtag DW_TAG_member - 1261 .dwattr $C$DW$104, DW_AT_type(*$C$DW$T$11) - 1262 .dwattr $C$DW$104, DW_AT_name("CTR_EN") - 1263 .dwattr $C$DW$104, DW_AT_TI_symbol_name("CTR_EN") - 1264 .dwattr $C$DW$104, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x01) - 1265 .dwattr $C$DW$104, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 24 - - 1266 .dwattr $C$DW$104, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1267 .dwattr $C$DW$104, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1268 .dwattr $C$DW$104, DW_AT_decl_line(0x30) - 1269 .dwattr $C$DW$104, DW_AT_decl_column(0x0d) - 1270$C$DW$105 .dwtag DW_TAG_member - 1271 .dwattr $C$DW$105, DW_AT_type(*$C$DW$T$11) - 1272 .dwattr $C$DW$105, DW_AT_name("rsvd4") - 1273 .dwattr $C$DW$105, DW_AT_TI_symbol_name("rsvd4") - 1274 .dwattr $C$DW$105, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04) - 1275 .dwattr $C$DW$105, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1276 .dwattr $C$DW$105, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1277 .dwattr $C$DW$105, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1278 .dwattr $C$DW$105, DW_AT_decl_line(0x31) - 1279 .dwattr $C$DW$105, DW_AT_decl_column(0x0d) - 1280$C$DW$106 .dwtag DW_TAG_member - 1281 .dwattr $C$DW$106, DW_AT_type(*$C$DW$T$11) - 1282 .dwattr $C$DW$106, DW_AT_name("SINGLE_STEP") - 1283 .dwattr $C$DW$106, DW_AT_TI_symbol_name("SINGLE_STEP") - 1284 .dwattr $C$DW$106, DW_AT_bit_offset(0x17), DW_AT_bit_size(0x01) - 1285 .dwattr $C$DW$106, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1286 .dwattr $C$DW$106, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1287 .dwattr $C$DW$106, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1288 .dwattr $C$DW$106, DW_AT_decl_line(0x32) - 1289 .dwattr $C$DW$106, DW_AT_decl_column(0x0d) - 1290$C$DW$107 .dwtag DW_TAG_member - 1291 .dwattr $C$DW$107, DW_AT_type(*$C$DW$T$11) - 1292 .dwattr $C$DW$107, DW_AT_name("rsvd9") - 1293 .dwattr $C$DW$107, DW_AT_TI_symbol_name("rsvd9") - 1294 .dwattr $C$DW$107, DW_AT_bit_offset(0x11), DW_AT_bit_size(0x06) - 1295 .dwattr $C$DW$107, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1296 .dwattr $C$DW$107, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1297 .dwattr $C$DW$107, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1298 .dwattr $C$DW$107, DW_AT_decl_line(0x33) - 1299 .dwattr $C$DW$107, DW_AT_decl_column(0x0d) - 1300$C$DW$108 .dwtag DW_TAG_member - 1301 .dwattr $C$DW$108, DW_AT_type(*$C$DW$T$11) - 1302 .dwattr $C$DW$108, DW_AT_name("RUNSTATE") - 1303 .dwattr $C$DW$108, DW_AT_TI_symbol_name("RUNSTATE") - 1304 .dwattr $C$DW$108, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x01) - 1305 .dwattr $C$DW$108, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1306 .dwattr $C$DW$108, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1307 .dwattr $C$DW$108, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1308 .dwattr $C$DW$108, DW_AT_decl_line(0x34) - 1309 .dwattr $C$DW$108, DW_AT_decl_column(0x0d) - 1310$C$DW$109 .dwtag DW_TAG_member - 1311 .dwattr $C$DW$109, DW_AT_type(*$C$DW$T$11) - 1312 .dwattr $C$DW$109, DW_AT_name("PCTR_RST_VAL") - 1313 .dwattr $C$DW$109, DW_AT_TI_symbol_name("PCTR_RST_VAL") - 1314 .dwattr $C$DW$109, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x10) - 1315 .dwattr $C$DW$109, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1316 .dwattr $C$DW$109, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1317 .dwattr $C$DW$109, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1318 .dwattr $C$DW$109, DW_AT_decl_line(0x35) - 1319 .dwattr $C$DW$109, DW_AT_decl_column(0x0d) - 1320 .dwendtag $C$DW$T$36 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 25 - - 1321 - 1322 .dwattr $C$DW$T$36, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1323 .dwattr $C$DW$T$36, DW_AT_decl_line(0x2c) - 1324 .dwattr $C$DW$T$36, DW_AT_decl_column(0x13) - 1325$C$DW$T$74 .dwtag DW_TAG_volatile_type - 1326 .dwattr $C$DW$T$74, DW_AT_type(*$C$DW$T$36) - 1327 - 1328$C$DW$T$37 .dwtag DW_TAG_structure_type - 1329 .dwattr $C$DW$T$37, DW_AT_byte_size(0x04) - 1330$C$DW$110 .dwtag DW_TAG_member - 1331 .dwattr $C$DW$110, DW_AT_type(*$C$DW$T$11) - 1332 .dwattr $C$DW$110, DW_AT_name("PCTR") - 1333 .dwattr $C$DW$110, DW_AT_TI_symbol_name("PCTR") - 1334 .dwattr $C$DW$110, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x10) - 1335 .dwattr $C$DW$110, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1336 .dwattr $C$DW$110, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1337 .dwattr $C$DW$110, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1338 .dwattr $C$DW$110, DW_AT_decl_line(0x3f) - 1339 .dwattr $C$DW$110, DW_AT_decl_column(0x0d) - 1340$C$DW$111 .dwtag DW_TAG_member - 1341 .dwattr $C$DW$111, DW_AT_type(*$C$DW$T$11) - 1342 .dwattr $C$DW$111, DW_AT_name("rsvd16") - 1343 .dwattr $C$DW$111, DW_AT_TI_symbol_name("rsvd16") - 1344 .dwattr $C$DW$111, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x10) - 1345 .dwattr $C$DW$111, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1346 .dwattr $C$DW$111, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1347 .dwattr $C$DW$111, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1348 .dwattr $C$DW$111, DW_AT_decl_line(0x40) - 1349 .dwattr $C$DW$111, DW_AT_decl_column(0x0d) - 1350 .dwendtag $C$DW$T$37 - 1351 - 1352 .dwattr $C$DW$T$37, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1353 .dwattr $C$DW$T$37, DW_AT_decl_line(0x3e) - 1354 .dwattr $C$DW$T$37, DW_AT_decl_column(0x13) - 1355$C$DW$T$76 .dwtag DW_TAG_volatile_type - 1356 .dwattr $C$DW$T$76, DW_AT_type(*$C$DW$T$37) - 1357 - 1358$C$DW$T$38 .dwtag DW_TAG_structure_type - 1359 .dwattr $C$DW$T$38, DW_AT_byte_size(0x04) - 1360$C$DW$112 .dwtag DW_TAG_member - 1361 .dwattr $C$DW$112, DW_AT_type(*$C$DW$T$11) - 1362 .dwattr $C$DW$112, DW_AT_name("BITWISE_ENS") - 1363 .dwattr $C$DW$112, DW_AT_TI_symbol_name("BITWISE_ENS") - 1364 .dwattr $C$DW$112, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x20) - 1365 .dwattr $C$DW$112, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1366 .dwattr $C$DW$112, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1367 .dwattr $C$DW$112, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1368 .dwattr $C$DW$112, DW_AT_decl_line(0x4a) - 1369 .dwattr $C$DW$112, DW_AT_decl_column(0x0d) - 1370 .dwendtag $C$DW$T$38 - 1371 - 1372 .dwattr $C$DW$T$38, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1373 .dwattr $C$DW$T$38, DW_AT_decl_line(0x49) - 1374 .dwattr $C$DW$T$38, DW_AT_decl_column(0x13) - 1375$C$DW$T$78 .dwtag DW_TAG_volatile_type -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 26 - - 1376 .dwattr $C$DW$T$78, DW_AT_type(*$C$DW$T$38) - 1377 - 1378$C$DW$T$39 .dwtag DW_TAG_structure_type - 1379 .dwattr $C$DW$T$39, DW_AT_byte_size(0x04) - 1380$C$DW$113 .dwtag DW_TAG_member - 1381 .dwattr $C$DW$113, DW_AT_type(*$C$DW$T$11) - 1382 .dwattr $C$DW$113, DW_AT_name("CYCLECOUNT") - 1383 .dwattr $C$DW$113, DW_AT_TI_symbol_name("CYCLECOUNT") - 1384 .dwattr $C$DW$113, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x20) - 1385 .dwattr $C$DW$113, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1386 .dwattr $C$DW$113, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1387 .dwattr $C$DW$113, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1388 .dwattr $C$DW$113, DW_AT_decl_line(0x54) - 1389 .dwattr $C$DW$113, DW_AT_decl_column(0x0d) - 1390 .dwendtag $C$DW$T$39 - 1391 - 1392 .dwattr $C$DW$T$39, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1393 .dwattr $C$DW$T$39, DW_AT_decl_line(0x53) - 1394 .dwattr $C$DW$T$39, DW_AT_decl_column(0x13) - 1395$C$DW$T$80 .dwtag DW_TAG_volatile_type - 1396 .dwattr $C$DW$T$80, DW_AT_type(*$C$DW$T$39) - 1397 - 1398$C$DW$T$40 .dwtag DW_TAG_structure_type - 1399 .dwattr $C$DW$T$40, DW_AT_byte_size(0x04) - 1400$C$DW$114 .dwtag DW_TAG_member - 1401 .dwattr $C$DW$114, DW_AT_type(*$C$DW$T$11) - 1402 .dwattr $C$DW$114, DW_AT_name("STALLCOUNT") - 1403 .dwattr $C$DW$114, DW_AT_TI_symbol_name("STALLCOUNT") - 1404 .dwattr $C$DW$114, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x20) - 1405 .dwattr $C$DW$114, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1406 .dwattr $C$DW$114, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1407 .dwattr $C$DW$114, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1408 .dwattr $C$DW$114, DW_AT_decl_line(0x5e) - 1409 .dwattr $C$DW$114, DW_AT_decl_column(0x0d) - 1410 .dwendtag $C$DW$T$40 - 1411 - 1412 .dwattr $C$DW$T$40, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1413 .dwattr $C$DW$T$40, DW_AT_decl_line(0x5d) - 1414 .dwattr $C$DW$T$40, DW_AT_decl_column(0x14) - 1415$C$DW$T$82 .dwtag DW_TAG_volatile_type - 1416 .dwattr $C$DW$T$82, DW_AT_type(*$C$DW$T$40) - 1417 - 1418$C$DW$T$41 .dwtag DW_TAG_structure_type - 1419 .dwattr $C$DW$T$41, DW_AT_byte_size(0x04) - 1420$C$DW$115 .dwtag DW_TAG_member - 1421 .dwattr $C$DW$115, DW_AT_type(*$C$DW$T$11) - 1422 .dwattr $C$DW$115, DW_AT_name("C24_BLK_IDX") - 1423 .dwattr $C$DW$115, DW_AT_TI_symbol_name("C24_BLK_IDX") - 1424 .dwattr $C$DW$115, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x08) - 1425 .dwattr $C$DW$115, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1426 .dwattr $C$DW$115, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1427 .dwattr $C$DW$115, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1428 .dwattr $C$DW$115, DW_AT_decl_line(0x6b) - 1429 .dwattr $C$DW$115, DW_AT_decl_column(0x0d) - 1430$C$DW$116 .dwtag DW_TAG_member -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 27 - - 1431 .dwattr $C$DW$116, DW_AT_type(*$C$DW$T$11) - 1432 .dwattr $C$DW$116, DW_AT_name("rsvd8") - 1433 .dwattr $C$DW$116, DW_AT_TI_symbol_name("rsvd8") - 1434 .dwattr $C$DW$116, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x08) - 1435 .dwattr $C$DW$116, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1436 .dwattr $C$DW$116, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1437 .dwattr $C$DW$116, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1438 .dwattr $C$DW$116, DW_AT_decl_line(0x6c) - 1439 .dwattr $C$DW$116, DW_AT_decl_column(0x0d) - 1440$C$DW$117 .dwtag DW_TAG_member - 1441 .dwattr $C$DW$117, DW_AT_type(*$C$DW$T$11) - 1442 .dwattr $C$DW$117, DW_AT_name("C25_BLK_IDX") - 1443 .dwattr $C$DW$117, DW_AT_TI_symbol_name("C25_BLK_IDX") - 1444 .dwattr $C$DW$117, DW_AT_bit_offset(0x08), DW_AT_bit_size(0x08) - 1445 .dwattr $C$DW$117, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1446 .dwattr $C$DW$117, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1447 .dwattr $C$DW$117, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1448 .dwattr $C$DW$117, DW_AT_decl_line(0x6d) - 1449 .dwattr $C$DW$117, DW_AT_decl_column(0x0d) - 1450$C$DW$118 .dwtag DW_TAG_member - 1451 .dwattr $C$DW$118, DW_AT_type(*$C$DW$T$11) - 1452 .dwattr $C$DW$118, DW_AT_name("rsvd24") - 1453 .dwattr $C$DW$118, DW_AT_TI_symbol_name("rsvd24") - 1454 .dwattr $C$DW$118, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x08) - 1455 .dwattr $C$DW$118, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1456 .dwattr $C$DW$118, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1457 .dwattr $C$DW$118, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1458 .dwattr $C$DW$118, DW_AT_decl_line(0x6e) - 1459 .dwattr $C$DW$118, DW_AT_decl_column(0x0d) - 1460 .dwendtag $C$DW$T$41 - 1461 - 1462 .dwattr $C$DW$T$41, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1463 .dwattr $C$DW$T$41, DW_AT_decl_line(0x6a) - 1464 .dwattr $C$DW$T$41, DW_AT_decl_column(0x13) - 1465$C$DW$T$84 .dwtag DW_TAG_volatile_type - 1466 .dwattr $C$DW$T$84, DW_AT_type(*$C$DW$T$41) - 1467 - 1468$C$DW$T$42 .dwtag DW_TAG_structure_type - 1469 .dwattr $C$DW$T$42, DW_AT_byte_size(0x04) - 1470$C$DW$119 .dwtag DW_TAG_member - 1471 .dwattr $C$DW$119, DW_AT_type(*$C$DW$T$11) - 1472 .dwattr $C$DW$119, DW_AT_name("C26_BLK_IDX") - 1473 .dwattr $C$DW$119, DW_AT_TI_symbol_name("C26_BLK_IDX") - 1474 .dwattr $C$DW$119, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x08) - 1475 .dwattr $C$DW$119, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1476 .dwattr $C$DW$119, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1477 .dwattr $C$DW$119, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1478 .dwattr $C$DW$119, DW_AT_decl_line(0x78) - 1479 .dwattr $C$DW$119, DW_AT_decl_column(0x0d) - 1480$C$DW$120 .dwtag DW_TAG_member - 1481 .dwattr $C$DW$120, DW_AT_type(*$C$DW$T$11) - 1482 .dwattr $C$DW$120, DW_AT_name("rsvd8") - 1483 .dwattr $C$DW$120, DW_AT_TI_symbol_name("rsvd8") - 1484 .dwattr $C$DW$120, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x08) - 1485 .dwattr $C$DW$120, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 28 - - 1486 .dwattr $C$DW$120, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1487 .dwattr $C$DW$120, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1488 .dwattr $C$DW$120, DW_AT_decl_line(0x79) - 1489 .dwattr $C$DW$120, DW_AT_decl_column(0x0d) - 1490$C$DW$121 .dwtag DW_TAG_member - 1491 .dwattr $C$DW$121, DW_AT_type(*$C$DW$T$11) - 1492 .dwattr $C$DW$121, DW_AT_name("C27_BLK_IDX") - 1493 .dwattr $C$DW$121, DW_AT_TI_symbol_name("C27_BLK_IDX") - 1494 .dwattr $C$DW$121, DW_AT_bit_offset(0x08), DW_AT_bit_size(0x08) - 1495 .dwattr $C$DW$121, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1496 .dwattr $C$DW$121, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1497 .dwattr $C$DW$121, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1498 .dwattr $C$DW$121, DW_AT_decl_line(0x7a) - 1499 .dwattr $C$DW$121, DW_AT_decl_column(0x0d) - 1500$C$DW$122 .dwtag DW_TAG_member - 1501 .dwattr $C$DW$122, DW_AT_type(*$C$DW$T$11) - 1502 .dwattr $C$DW$122, DW_AT_name("rsvd24") - 1503 .dwattr $C$DW$122, DW_AT_TI_symbol_name("rsvd24") - 1504 .dwattr $C$DW$122, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x08) - 1505 .dwattr $C$DW$122, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1506 .dwattr $C$DW$122, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1507 .dwattr $C$DW$122, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1508 .dwattr $C$DW$122, DW_AT_decl_line(0x7b) - 1509 .dwattr $C$DW$122, DW_AT_decl_column(0x0d) - 1510 .dwendtag $C$DW$T$42 - 1511 - 1512 .dwattr $C$DW$T$42, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1513 .dwattr $C$DW$T$42, DW_AT_decl_line(0x77) - 1514 .dwattr $C$DW$T$42, DW_AT_decl_column(0x13) - 1515$C$DW$T$86 .dwtag DW_TAG_volatile_type - 1516 .dwattr $C$DW$T$86, DW_AT_type(*$C$DW$T$42) - 1517 - 1518$C$DW$T$43 .dwtag DW_TAG_structure_type - 1519 .dwattr $C$DW$T$43, DW_AT_byte_size(0x04) - 1520$C$DW$123 .dwtag DW_TAG_member - 1521 .dwattr $C$DW$123, DW_AT_type(*$C$DW$T$11) - 1522 .dwattr $C$DW$123, DW_AT_name("C28_BLK_POINTER") - 1523 .dwattr $C$DW$123, DW_AT_TI_symbol_name("C28_BLK_POINTER") - 1524 .dwattr $C$DW$123, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x10) - 1525 .dwattr $C$DW$123, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1526 .dwattr $C$DW$123, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1527 .dwattr $C$DW$123, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1528 .dwattr $C$DW$123, DW_AT_decl_line(0x85) - 1529 .dwattr $C$DW$123, DW_AT_decl_column(0x0d) - 1530$C$DW$124 .dwtag DW_TAG_member - 1531 .dwattr $C$DW$124, DW_AT_type(*$C$DW$T$11) - 1532 .dwattr $C$DW$124, DW_AT_name("C29_BLK_POINTER") - 1533 .dwattr $C$DW$124, DW_AT_TI_symbol_name("C29_BLK_POINTER") - 1534 .dwattr $C$DW$124, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x10) - 1535 .dwattr $C$DW$124, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1536 .dwattr $C$DW$124, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1537 .dwattr $C$DW$124, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1538 .dwattr $C$DW$124, DW_AT_decl_line(0x86) - 1539 .dwattr $C$DW$124, DW_AT_decl_column(0x0d) - 1540 .dwendtag $C$DW$T$43 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 29 - - 1541 - 1542 .dwattr $C$DW$T$43, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1543 .dwattr $C$DW$T$43, DW_AT_decl_line(0x84) - 1544 .dwattr $C$DW$T$43, DW_AT_decl_column(0x13) - 1545$C$DW$T$88 .dwtag DW_TAG_volatile_type - 1546 .dwattr $C$DW$T$88, DW_AT_type(*$C$DW$T$43) - 1547 - 1548$C$DW$T$44 .dwtag DW_TAG_structure_type - 1549 .dwattr $C$DW$T$44, DW_AT_byte_size(0x04) - 1550$C$DW$125 .dwtag DW_TAG_member - 1551 .dwattr $C$DW$125, DW_AT_type(*$C$DW$T$11) - 1552 .dwattr $C$DW$125, DW_AT_name("C30_BLK_POINTER") - 1553 .dwattr $C$DW$125, DW_AT_TI_symbol_name("C30_BLK_POINTER") - 1554 .dwattr $C$DW$125, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x10) - 1555 .dwattr $C$DW$125, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1556 .dwattr $C$DW$125, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1557 .dwattr $C$DW$125, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1558 .dwattr $C$DW$125, DW_AT_decl_line(0x90) - 1559 .dwattr $C$DW$125, DW_AT_decl_column(0x0d) - 1560$C$DW$126 .dwtag DW_TAG_member - 1561 .dwattr $C$DW$126, DW_AT_type(*$C$DW$T$11) - 1562 .dwattr $C$DW$126, DW_AT_name("C31_BLK_POINTER") - 1563 .dwattr $C$DW$126, DW_AT_TI_symbol_name("C31_BLK_POINTER") - 1564 .dwattr $C$DW$126, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x10) - 1565 .dwattr $C$DW$126, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1566 .dwattr $C$DW$126, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1567 .dwattr $C$DW$126, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1568 .dwattr $C$DW$126, DW_AT_decl_line(0x91) - 1569 .dwattr $C$DW$126, DW_AT_decl_column(0x0d) - 1570 .dwendtag $C$DW$T$44 - 1571 - 1572 .dwattr $C$DW$T$44, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1573 .dwattr $C$DW$T$44, DW_AT_decl_line(0x8f) - 1574 .dwattr $C$DW$T$44, DW_AT_decl_column(0x13) - 1575$C$DW$T$90 .dwtag DW_TAG_volatile_type - 1576 .dwattr $C$DW$T$90, DW_AT_type(*$C$DW$T$44) - 1577 - 1578$C$DW$T$46 .dwtag DW_TAG_structure_type - 1579 .dwattr $C$DW$T$46, DW_AT_byte_size(0x30) - 1580$C$DW$127 .dwtag DW_TAG_member - 1581 .dwattr $C$DW$127, DW_AT_type(*$C$DW$T$75) - 1582 .dwattr $C$DW$127, DW_AT_name("$P$T13") - 1583 .dwattr $C$DW$127, DW_AT_TI_symbol_name("$P$T13") - 1584 .dwattr $C$DW$127, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1585 .dwattr $C$DW$127, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1586 .dwattr $C$DW$127, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1587 .dwattr $C$DW$127, DW_AT_decl_line(0x29) - 1588 .dwattr $C$DW$127, DW_AT_decl_column(0x02) - 1589$C$DW$128 .dwtag DW_TAG_member - 1590 .dwattr $C$DW$128, DW_AT_type(*$C$DW$T$77) - 1591 .dwattr $C$DW$128, DW_AT_name("$P$T14") - 1592 .dwattr $C$DW$128, DW_AT_TI_symbol_name("$P$T14") - 1593 .dwattr $C$DW$128, DW_AT_data_member_location[DW_OP_plus_uconst 0x4] - 1594 .dwattr $C$DW$128, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1595 .dwattr $C$DW$128, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 30 - - 1596 .dwattr $C$DW$128, DW_AT_decl_line(0x3b) - 1597 .dwattr $C$DW$128, DW_AT_decl_column(0x02) - 1598$C$DW$129 .dwtag DW_TAG_member - 1599 .dwattr $C$DW$129, DW_AT_type(*$C$DW$T$79) - 1600 .dwattr $C$DW$129, DW_AT_name("$P$T15") - 1601 .dwattr $C$DW$129, DW_AT_TI_symbol_name("$P$T15") - 1602 .dwattr $C$DW$129, DW_AT_data_member_location[DW_OP_plus_uconst 0x8] - 1603 .dwattr $C$DW$129, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1604 .dwattr $C$DW$129, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1605 .dwattr $C$DW$129, DW_AT_decl_line(0x46) - 1606 .dwattr $C$DW$129, DW_AT_decl_column(0x02) - 1607$C$DW$130 .dwtag DW_TAG_member - 1608 .dwattr $C$DW$130, DW_AT_type(*$C$DW$T$81) - 1609 .dwattr $C$DW$130, DW_AT_name("$P$T16") - 1610 .dwattr $C$DW$130, DW_AT_TI_symbol_name("$P$T16") - 1611 .dwattr $C$DW$130, DW_AT_data_member_location[DW_OP_plus_uconst 0xc] - 1612 .dwattr $C$DW$130, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1613 .dwattr $C$DW$130, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1614 .dwattr $C$DW$130, DW_AT_decl_line(0x50) - 1615 .dwattr $C$DW$130, DW_AT_decl_column(0x02) - 1616$C$DW$131 .dwtag DW_TAG_member - 1617 .dwattr $C$DW$131, DW_AT_type(*$C$DW$T$83) - 1618 .dwattr $C$DW$131, DW_AT_name("$P$T17") - 1619 .dwattr $C$DW$131, DW_AT_TI_symbol_name("$P$T17") - 1620 .dwattr $C$DW$131, DW_AT_data_member_location[DW_OP_plus_uconst 0x10] - 1621 .dwattr $C$DW$131, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1622 .dwattr $C$DW$131, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1623 .dwattr $C$DW$131, DW_AT_decl_line(0x5a) - 1624 .dwattr $C$DW$131, DW_AT_decl_column(0x02) - 1625$C$DW$132 .dwtag DW_TAG_member - 1626 .dwattr $C$DW$132, DW_AT_type(*$C$DW$T$45) - 1627 .dwattr $C$DW$132, DW_AT_name("rsvd14") - 1628 .dwattr $C$DW$132, DW_AT_TI_symbol_name("rsvd14") - 1629 .dwattr $C$DW$132, DW_AT_data_member_location[DW_OP_plus_uconst 0x14] - 1630 .dwattr $C$DW$132, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1631 .dwattr $C$DW$132, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1632 .dwattr $C$DW$132, DW_AT_decl_line(0x63) - 1633 .dwattr $C$DW$132, DW_AT_decl_column(0x0b) - 1634$C$DW$133 .dwtag DW_TAG_member - 1635 .dwattr $C$DW$133, DW_AT_type(*$C$DW$T$85) - 1636 .dwattr $C$DW$133, DW_AT_name("$P$T18") - 1637 .dwattr $C$DW$133, DW_AT_TI_symbol_name("$P$T18") - 1638 .dwattr $C$DW$133, DW_AT_data_member_location[DW_OP_plus_uconst 0x20] - 1639 .dwattr $C$DW$133, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1640 .dwattr $C$DW$133, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1641 .dwattr $C$DW$133, DW_AT_decl_line(0x67) - 1642 .dwattr $C$DW$133, DW_AT_decl_column(0x02) - 1643$C$DW$134 .dwtag DW_TAG_member - 1644 .dwattr $C$DW$134, DW_AT_type(*$C$DW$T$87) - 1645 .dwattr $C$DW$134, DW_AT_name("$P$T19") - 1646 .dwattr $C$DW$134, DW_AT_TI_symbol_name("$P$T19") - 1647 .dwattr $C$DW$134, DW_AT_data_member_location[DW_OP_plus_uconst 0x24] - 1648 .dwattr $C$DW$134, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1649 .dwattr $C$DW$134, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1650 .dwattr $C$DW$134, DW_AT_decl_line(0x74) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 31 - - 1651 .dwattr $C$DW$134, DW_AT_decl_column(0x02) - 1652$C$DW$135 .dwtag DW_TAG_member - 1653 .dwattr $C$DW$135, DW_AT_type(*$C$DW$T$89) - 1654 .dwattr $C$DW$135, DW_AT_name("$P$T20") - 1655 .dwattr $C$DW$135, DW_AT_TI_symbol_name("$P$T20") - 1656 .dwattr $C$DW$135, DW_AT_data_member_location[DW_OP_plus_uconst 0x28] - 1657 .dwattr $C$DW$135, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1658 .dwattr $C$DW$135, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1659 .dwattr $C$DW$135, DW_AT_decl_line(0x81) - 1660 .dwattr $C$DW$135, DW_AT_decl_column(0x02) - 1661$C$DW$136 .dwtag DW_TAG_member - 1662 .dwattr $C$DW$136, DW_AT_type(*$C$DW$T$91) - 1663 .dwattr $C$DW$136, DW_AT_name("$P$T21") - 1664 .dwattr $C$DW$136, DW_AT_TI_symbol_name("$P$T21") - 1665 .dwattr $C$DW$136, DW_AT_data_member_location[DW_OP_plus_uconst 0x2c] - 1666 .dwattr $C$DW$136, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1667 .dwattr $C$DW$136, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1668 .dwattr $C$DW$136, DW_AT_decl_line(0x8c) - 1669 .dwattr $C$DW$136, DW_AT_decl_column(0x02) - 1670 .dwendtag $C$DW$T$46 - 1671 - 1672 .dwattr $C$DW$T$46, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1673 .dwattr $C$DW$T$46, DW_AT_decl_line(0x26) - 1674 .dwattr $C$DW$T$46, DW_AT_decl_column(0x10) - 1675$C$DW$T$102 .dwtag DW_TAG_typedef, DW_AT_name("pruCtrl") - 1676 .dwattr $C$DW$T$102, DW_AT_type(*$C$DW$T$46) - 1677 .dwattr $C$DW$T$102, DW_AT_language(DW_LANG_C) - 1678 .dwattr $C$DW$T$102, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/ - 1679 .dwattr $C$DW$T$102, DW_AT_decl_line(0x95) - 1680 .dwattr $C$DW$T$102, DW_AT_decl_column(0x03) - 1681 - 1682$C$DW$T$49 .dwtag DW_TAG_union_type - 1683 .dwattr $C$DW$T$49, DW_AT_byte_size(0x04) - 1684$C$DW$137 .dwtag DW_TAG_member - 1685 .dwattr $C$DW$137, DW_AT_type(*$C$DW$T$47) - 1686 .dwattr $C$DW$137, DW_AT_name("REVID") - 1687 .dwattr $C$DW$137, DW_AT_TI_symbol_name("REVID") - 1688 .dwattr $C$DW$137, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1689 .dwattr $C$DW$137, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1690 .dwattr $C$DW$137, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1691 .dwattr $C$DW$137, DW_AT_decl_line(0x2a) - 1692 .dwattr $C$DW$137, DW_AT_decl_column(0x15) - 1693$C$DW$138 .dwtag DW_TAG_member - 1694 .dwattr $C$DW$138, DW_AT_type(*$C$DW$T$48) - 1695 .dwattr $C$DW$138, DW_AT_name("REVID_bit") - 1696 .dwattr $C$DW$138, DW_AT_TI_symbol_name("REVID_bit") - 1697 .dwattr $C$DW$138, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1698 .dwattr $C$DW$138, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1699 .dwattr $C$DW$138, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1700 .dwattr $C$DW$138, DW_AT_decl_line(0x2e) - 1701 .dwattr $C$DW$138, DW_AT_decl_column(0x05) - 1702 .dwendtag $C$DW$T$49 - 1703 - 1704 .dwattr $C$DW$T$49, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1705 .dwattr $C$DW$T$49, DW_AT_decl_line(0x29) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 32 - - 1706 .dwattr $C$DW$T$49, DW_AT_decl_column(0x08) - 1707 - 1708$C$DW$T$51 .dwtag DW_TAG_union_type - 1709 .dwattr $C$DW$T$51, DW_AT_byte_size(0x04) - 1710$C$DW$139 .dwtag DW_TAG_member - 1711 .dwattr $C$DW$139, DW_AT_type(*$C$DW$T$47) - 1712 .dwattr $C$DW$139, DW_AT_name("SYSCFG") - 1713 .dwattr $C$DW$139, DW_AT_TI_symbol_name("SYSCFG") - 1714 .dwattr $C$DW$139, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1715 .dwattr $C$DW$139, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1716 .dwattr $C$DW$139, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1717 .dwattr $C$DW$139, DW_AT_decl_line(0x34) - 1718 .dwattr $C$DW$139, DW_AT_decl_column(0x15) - 1719$C$DW$140 .dwtag DW_TAG_member - 1720 .dwattr $C$DW$140, DW_AT_type(*$C$DW$T$50) - 1721 .dwattr $C$DW$140, DW_AT_name("SYSCFG_bit") - 1722 .dwattr $C$DW$140, DW_AT_TI_symbol_name("SYSCFG_bit") - 1723 .dwattr $C$DW$140, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1724 .dwattr $C$DW$140, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1725 .dwattr $C$DW$140, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1726 .dwattr $C$DW$140, DW_AT_decl_line(0x3c) - 1727 .dwattr $C$DW$140, DW_AT_decl_column(0x05) - 1728 .dwendtag $C$DW$T$51 - 1729 - 1730 .dwattr $C$DW$T$51, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1731 .dwattr $C$DW$T$51, DW_AT_decl_line(0x33) - 1732 .dwattr $C$DW$T$51, DW_AT_decl_column(0x08) - 1733 - 1734$C$DW$T$53 .dwtag DW_TAG_union_type - 1735 .dwattr $C$DW$T$53, DW_AT_byte_size(0x04) - 1736$C$DW$141 .dwtag DW_TAG_member - 1737 .dwattr $C$DW$141, DW_AT_type(*$C$DW$T$47) - 1738 .dwattr $C$DW$141, DW_AT_name("GPCFG0") - 1739 .dwattr $C$DW$141, DW_AT_TI_symbol_name("GPCFG0") - 1740 .dwattr $C$DW$141, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1741 .dwattr $C$DW$141, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1742 .dwattr $C$DW$141, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1743 .dwattr $C$DW$141, DW_AT_decl_line(0x42) - 1744 .dwattr $C$DW$141, DW_AT_decl_column(0x15) - 1745$C$DW$142 .dwtag DW_TAG_member - 1746 .dwattr $C$DW$142, DW_AT_type(*$C$DW$T$52) - 1747 .dwattr $C$DW$142, DW_AT_name("GPCFG0_bit") - 1748 .dwattr $C$DW$142, DW_AT_TI_symbol_name("GPCFG0_bit") - 1749 .dwattr $C$DW$142, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1750 .dwattr $C$DW$142, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1751 .dwattr $C$DW$142, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1752 .dwattr $C$DW$142, DW_AT_decl_line(0x4f) - 1753 .dwattr $C$DW$142, DW_AT_decl_column(0x05) - 1754 .dwendtag $C$DW$T$53 - 1755 - 1756 .dwattr $C$DW$T$53, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1757 .dwattr $C$DW$T$53, DW_AT_decl_line(0x41) - 1758 .dwattr $C$DW$T$53, DW_AT_decl_column(0x08) - 1759 - 1760$C$DW$T$55 .dwtag DW_TAG_union_type -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 33 - - 1761 .dwattr $C$DW$T$55, DW_AT_byte_size(0x04) - 1762$C$DW$143 .dwtag DW_TAG_member - 1763 .dwattr $C$DW$143, DW_AT_type(*$C$DW$T$47) - 1764 .dwattr $C$DW$143, DW_AT_name("GPCFG1") - 1765 .dwattr $C$DW$143, DW_AT_TI_symbol_name("GPCFG1") - 1766 .dwattr $C$DW$143, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1767 .dwattr $C$DW$143, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1768 .dwattr $C$DW$143, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1769 .dwattr $C$DW$143, DW_AT_decl_line(0x55) - 1770 .dwattr $C$DW$143, DW_AT_decl_column(0x15) - 1771$C$DW$144 .dwtag DW_TAG_member - 1772 .dwattr $C$DW$144, DW_AT_type(*$C$DW$T$54) - 1773 .dwattr $C$DW$144, DW_AT_name("GPCFG1_bit") - 1774 .dwattr $C$DW$144, DW_AT_TI_symbol_name("GPCFG1_bit") - 1775 .dwattr $C$DW$144, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1776 .dwattr $C$DW$144, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1777 .dwattr $C$DW$144, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1778 .dwattr $C$DW$144, DW_AT_decl_line(0x62) - 1779 .dwattr $C$DW$144, DW_AT_decl_column(0x05) - 1780 .dwendtag $C$DW$T$55 - 1781 - 1782 .dwattr $C$DW$T$55, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1783 .dwattr $C$DW$T$55, DW_AT_decl_line(0x54) - 1784 .dwattr $C$DW$T$55, DW_AT_decl_column(0x08) - 1785 - 1786$C$DW$T$57 .dwtag DW_TAG_union_type - 1787 .dwattr $C$DW$T$57, DW_AT_byte_size(0x04) - 1788$C$DW$145 .dwtag DW_TAG_member - 1789 .dwattr $C$DW$145, DW_AT_type(*$C$DW$T$47) - 1790 .dwattr $C$DW$145, DW_AT_name("CGR") - 1791 .dwattr $C$DW$145, DW_AT_TI_symbol_name("CGR") - 1792 .dwattr $C$DW$145, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1793 .dwattr $C$DW$145, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1794 .dwattr $C$DW$145, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1795 .dwattr $C$DW$145, DW_AT_decl_line(0x68) - 1796 .dwattr $C$DW$145, DW_AT_decl_column(0x15) - 1797$C$DW$146 .dwtag DW_TAG_member - 1798 .dwattr $C$DW$146, DW_AT_type(*$C$DW$T$56) - 1799 .dwattr $C$DW$146, DW_AT_name("CGR_bit") - 1800 .dwattr $C$DW$146, DW_AT_TI_symbol_name("CGR_bit") - 1801 .dwattr $C$DW$146, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1802 .dwattr $C$DW$146, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1803 .dwattr $C$DW$146, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1804 .dwattr $C$DW$146, DW_AT_decl_line(0x7e) - 1805 .dwattr $C$DW$146, DW_AT_decl_column(0x05) - 1806 .dwendtag $C$DW$T$57 - 1807 - 1808 .dwattr $C$DW$T$57, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1809 .dwattr $C$DW$T$57, DW_AT_decl_line(0x67) - 1810 .dwattr $C$DW$T$57, DW_AT_decl_column(0x08) - 1811 - 1812$C$DW$T$59 .dwtag DW_TAG_union_type - 1813 .dwattr $C$DW$T$59, DW_AT_byte_size(0x04) - 1814$C$DW$147 .dwtag DW_TAG_member - 1815 .dwattr $C$DW$147, DW_AT_type(*$C$DW$T$47) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 34 - - 1816 .dwattr $C$DW$147, DW_AT_name("ISRP") - 1817 .dwattr $C$DW$147, DW_AT_TI_symbol_name("ISRP") - 1818 .dwattr $C$DW$147, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1819 .dwattr $C$DW$147, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1820 .dwattr $C$DW$147, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1821 .dwattr $C$DW$147, DW_AT_decl_line(0x84) - 1822 .dwattr $C$DW$147, DW_AT_decl_column(0x15) - 1823$C$DW$148 .dwtag DW_TAG_member - 1824 .dwattr $C$DW$148, DW_AT_type(*$C$DW$T$58) - 1825 .dwattr $C$DW$148, DW_AT_name("ISRP_bit") - 1826 .dwattr $C$DW$148, DW_AT_TI_symbol_name("ISRP_bit") - 1827 .dwattr $C$DW$148, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1828 .dwattr $C$DW$148, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1829 .dwattr $C$DW$148, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1830 .dwattr $C$DW$148, DW_AT_decl_line(0x8d) - 1831 .dwattr $C$DW$148, DW_AT_decl_column(0x05) - 1832 .dwendtag $C$DW$T$59 - 1833 - 1834 .dwattr $C$DW$T$59, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1835 .dwattr $C$DW$T$59, DW_AT_decl_line(0x83) - 1836 .dwattr $C$DW$T$59, DW_AT_decl_column(0x08) - 1837 - 1838$C$DW$T$61 .dwtag DW_TAG_union_type - 1839 .dwattr $C$DW$T$61, DW_AT_byte_size(0x04) - 1840$C$DW$149 .dwtag DW_TAG_member - 1841 .dwattr $C$DW$149, DW_AT_type(*$C$DW$T$47) - 1842 .dwattr $C$DW$149, DW_AT_name("ISP") - 1843 .dwattr $C$DW$149, DW_AT_TI_symbol_name("ISP") - 1844 .dwattr $C$DW$149, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1845 .dwattr $C$DW$149, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1846 .dwattr $C$DW$149, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1847 .dwattr $C$DW$149, DW_AT_decl_line(0x93) - 1848 .dwattr $C$DW$149, DW_AT_decl_column(0x15) - 1849$C$DW$150 .dwtag DW_TAG_member - 1850 .dwattr $C$DW$150, DW_AT_type(*$C$DW$T$60) - 1851 .dwattr $C$DW$150, DW_AT_name("ISP_bit") - 1852 .dwattr $C$DW$150, DW_AT_TI_symbol_name("ISP_bit") - 1853 .dwattr $C$DW$150, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1854 .dwattr $C$DW$150, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1855 .dwattr $C$DW$150, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1856 .dwattr $C$DW$150, DW_AT_decl_line(0x9c) - 1857 .dwattr $C$DW$150, DW_AT_decl_column(0x05) - 1858 .dwendtag $C$DW$T$61 - 1859 - 1860 .dwattr $C$DW$T$61, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1861 .dwattr $C$DW$T$61, DW_AT_decl_line(0x92) - 1862 .dwattr $C$DW$T$61, DW_AT_decl_column(0x08) - 1863 - 1864$C$DW$T$63 .dwtag DW_TAG_union_type - 1865 .dwattr $C$DW$T$63, DW_AT_byte_size(0x04) - 1866$C$DW$151 .dwtag DW_TAG_member - 1867 .dwattr $C$DW$151, DW_AT_type(*$C$DW$T$47) - 1868 .dwattr $C$DW$151, DW_AT_name("IESP") - 1869 .dwattr $C$DW$151, DW_AT_TI_symbol_name("IESP") - 1870 .dwattr $C$DW$151, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 35 - - 1871 .dwattr $C$DW$151, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1872 .dwattr $C$DW$151, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1873 .dwattr $C$DW$151, DW_AT_decl_line(0xa1) - 1874 .dwattr $C$DW$151, DW_AT_decl_column(0x15) - 1875$C$DW$152 .dwtag DW_TAG_member - 1876 .dwattr $C$DW$152, DW_AT_type(*$C$DW$T$62) - 1877 .dwattr $C$DW$152, DW_AT_name("IESP_bit") - 1878 .dwattr $C$DW$152, DW_AT_TI_symbol_name("IESP_bit") - 1879 .dwattr $C$DW$152, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1880 .dwattr $C$DW$152, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1881 .dwattr $C$DW$152, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1882 .dwattr $C$DW$152, DW_AT_decl_line(0xaa) - 1883 .dwattr $C$DW$152, DW_AT_decl_column(0x05) - 1884 .dwendtag $C$DW$T$63 - 1885 - 1886 .dwattr $C$DW$T$63, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1887 .dwattr $C$DW$T$63, DW_AT_decl_line(0xa0) - 1888 .dwattr $C$DW$T$63, DW_AT_decl_column(0x08) - 1889 - 1890$C$DW$T$65 .dwtag DW_TAG_union_type - 1891 .dwattr $C$DW$T$65, DW_AT_byte_size(0x04) - 1892$C$DW$153 .dwtag DW_TAG_member - 1893 .dwattr $C$DW$153, DW_AT_type(*$C$DW$T$47) - 1894 .dwattr $C$DW$153, DW_AT_name("IECP") - 1895 .dwattr $C$DW$153, DW_AT_TI_symbol_name("IECP") - 1896 .dwattr $C$DW$153, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1897 .dwattr $C$DW$153, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1898 .dwattr $C$DW$153, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1899 .dwattr $C$DW$153, DW_AT_decl_line(0xb0) - 1900 .dwattr $C$DW$153, DW_AT_decl_column(0x15) - 1901$C$DW$154 .dwtag DW_TAG_member - 1902 .dwattr $C$DW$154, DW_AT_type(*$C$DW$T$64) - 1903 .dwattr $C$DW$154, DW_AT_name("IECP_bit") - 1904 .dwattr $C$DW$154, DW_AT_TI_symbol_name("IECP_bit") - 1905 .dwattr $C$DW$154, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1906 .dwattr $C$DW$154, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1907 .dwattr $C$DW$154, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1908 .dwattr $C$DW$154, DW_AT_decl_line(0xb8) - 1909 .dwattr $C$DW$154, DW_AT_decl_column(0x05) - 1910 .dwendtag $C$DW$T$65 - 1911 - 1912 .dwattr $C$DW$T$65, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1913 .dwattr $C$DW$T$65, DW_AT_decl_line(0xaf) - 1914 .dwattr $C$DW$T$65, DW_AT_decl_column(0x08) - 1915 - 1916$C$DW$T$67 .dwtag DW_TAG_union_type - 1917 .dwattr $C$DW$T$67, DW_AT_byte_size(0x04) - 1918$C$DW$155 .dwtag DW_TAG_member - 1919 .dwattr $C$DW$155, DW_AT_type(*$C$DW$T$47) - 1920 .dwattr $C$DW$155, DW_AT_name("PMAO") - 1921 .dwattr $C$DW$155, DW_AT_TI_symbol_name("PMAO") - 1922 .dwattr $C$DW$155, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1923 .dwattr $C$DW$155, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1924 .dwattr $C$DW$155, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1925 .dwattr $C$DW$155, DW_AT_decl_line(0xc1) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 36 - - 1926 .dwattr $C$DW$155, DW_AT_decl_column(0x15) - 1927$C$DW$156 .dwtag DW_TAG_member - 1928 .dwattr $C$DW$156, DW_AT_type(*$C$DW$T$66) - 1929 .dwattr $C$DW$156, DW_AT_name("PMAO_bit") - 1930 .dwattr $C$DW$156, DW_AT_TI_symbol_name("PMAO_bit") - 1931 .dwattr $C$DW$156, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1932 .dwattr $C$DW$156, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1933 .dwattr $C$DW$156, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1934 .dwattr $C$DW$156, DW_AT_decl_line(0xc7) - 1935 .dwattr $C$DW$156, DW_AT_decl_column(0x05) - 1936 .dwendtag $C$DW$T$67 - 1937 - 1938 .dwattr $C$DW$T$67, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1939 .dwattr $C$DW$T$67, DW_AT_decl_line(0xc0) - 1940 .dwattr $C$DW$T$67, DW_AT_decl_column(0x08) - 1941 - 1942$C$DW$T$69 .dwtag DW_TAG_union_type - 1943 .dwattr $C$DW$T$69, DW_AT_byte_size(0x04) - 1944$C$DW$157 .dwtag DW_TAG_member - 1945 .dwattr $C$DW$157, DW_AT_type(*$C$DW$T$47) - 1946 .dwattr $C$DW$157, DW_AT_name("IEPCLK") - 1947 .dwattr $C$DW$157, DW_AT_TI_symbol_name("IEPCLK") - 1948 .dwattr $C$DW$157, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1949 .dwattr $C$DW$157, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1950 .dwattr $C$DW$157, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1951 .dwattr $C$DW$157, DW_AT_decl_line(0xd0) - 1952 .dwattr $C$DW$157, DW_AT_decl_column(0x15) - 1953$C$DW$158 .dwtag DW_TAG_member - 1954 .dwattr $C$DW$158, DW_AT_type(*$C$DW$T$68) - 1955 .dwattr $C$DW$158, DW_AT_name("IEPCLK_bit") - 1956 .dwattr $C$DW$158, DW_AT_TI_symbol_name("IEPCLK_bit") - 1957 .dwattr $C$DW$158, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1958 .dwattr $C$DW$158, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1959 .dwattr $C$DW$158, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1960 .dwattr $C$DW$158, DW_AT_decl_line(0xd5) - 1961 .dwattr $C$DW$158, DW_AT_decl_column(0x05) - 1962 .dwendtag $C$DW$T$69 - 1963 - 1964 .dwattr $C$DW$T$69, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1965 .dwattr $C$DW$T$69, DW_AT_decl_line(0xcf) - 1966 .dwattr $C$DW$T$69, DW_AT_decl_column(0x08) - 1967 - 1968$C$DW$T$71 .dwtag DW_TAG_union_type - 1969 .dwattr $C$DW$T$71, DW_AT_byte_size(0x04) - 1970$C$DW$159 .dwtag DW_TAG_member - 1971 .dwattr $C$DW$159, DW_AT_type(*$C$DW$T$47) - 1972 .dwattr $C$DW$159, DW_AT_name("SPP") - 1973 .dwattr $C$DW$159, DW_AT_TI_symbol_name("SPP") - 1974 .dwattr $C$DW$159, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1975 .dwattr $C$DW$159, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1976 .dwattr $C$DW$159, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1977 .dwattr $C$DW$159, DW_AT_decl_line(0xdb) - 1978 .dwattr $C$DW$159, DW_AT_decl_column(0x15) - 1979$C$DW$160 .dwtag DW_TAG_member - 1980 .dwattr $C$DW$160, DW_AT_type(*$C$DW$T$70) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 37 - - 1981 .dwattr $C$DW$160, DW_AT_name("SPP_bit") - 1982 .dwattr $C$DW$160, DW_AT_TI_symbol_name("SPP_bit") - 1983 .dwattr $C$DW$160, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 1984 .dwattr $C$DW$160, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 1985 .dwattr $C$DW$160, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 1986 .dwattr $C$DW$160, DW_AT_decl_line(0xe1) - 1987 .dwattr $C$DW$160, DW_AT_decl_column(0x05) - 1988 .dwendtag $C$DW$T$71 - 1989 - 1990 .dwattr $C$DW$T$71, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 1991 .dwattr $C$DW$T$71, DW_AT_decl_line(0xda) - 1992 .dwattr $C$DW$T$71, DW_AT_decl_column(0x08) - 1993 - 1994$C$DW$T$73 .dwtag DW_TAG_union_type - 1995 .dwattr $C$DW$T$73, DW_AT_byte_size(0x04) - 1996$C$DW$161 .dwtag DW_TAG_member - 1997 .dwattr $C$DW$161, DW_AT_type(*$C$DW$T$47) - 1998 .dwattr $C$DW$161, DW_AT_name("PIN_MX") - 1999 .dwattr $C$DW$161, DW_AT_TI_symbol_name("PIN_MX") - 2000 .dwattr $C$DW$161, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2001 .dwattr $C$DW$161, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2002 .dwattr $C$DW$161, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2003 .dwattr $C$DW$161, DW_AT_decl_line(0xe9) - 2004 .dwattr $C$DW$161, DW_AT_decl_column(0x15) - 2005$C$DW$162 .dwtag DW_TAG_member - 2006 .dwattr $C$DW$162, DW_AT_type(*$C$DW$T$72) - 2007 .dwattr $C$DW$162, DW_AT_name("PIN_MX_bit") - 2008 .dwattr $C$DW$162, DW_AT_TI_symbol_name("PIN_MX_bit") - 2009 .dwattr $C$DW$162, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2010 .dwattr $C$DW$162, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2011 .dwattr $C$DW$162, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2012 .dwattr $C$DW$162, DW_AT_decl_line(0xee) - 2013 .dwattr $C$DW$162, DW_AT_decl_column(0x05) - 2014 .dwendtag $C$DW$T$73 - 2015 - 2016 .dwattr $C$DW$T$73, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2017 .dwattr $C$DW$T$73, DW_AT_decl_line(0xe8) - 2018 .dwattr $C$DW$T$73, DW_AT_decl_column(0x08) - 2019 - 2020$C$DW$T$75 .dwtag DW_TAG_union_type - 2021 .dwattr $C$DW$T$75, DW_AT_byte_size(0x04) - 2022$C$DW$163 .dwtag DW_TAG_member - 2023 .dwattr $C$DW$163, DW_AT_type(*$C$DW$T$47) - 2024 .dwattr $C$DW$163, DW_AT_name("CTRL") - 2025 .dwattr $C$DW$163, DW_AT_TI_symbol_name("CTRL") - 2026 .dwattr $C$DW$163, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2027 .dwattr $C$DW$163, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2028 .dwattr $C$DW$163, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2029 .dwattr $C$DW$163, DW_AT_decl_line(0x2a) - 2030 .dwattr $C$DW$163, DW_AT_decl_column(0x15) - 2031$C$DW$164 .dwtag DW_TAG_member - 2032 .dwattr $C$DW$164, DW_AT_type(*$C$DW$T$74) - 2033 .dwattr $C$DW$164, DW_AT_name("CTRL_bit") - 2034 .dwattr $C$DW$164, DW_AT_TI_symbol_name("CTRL_bit") - 2035 .dwattr $C$DW$164, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 38 - - 2036 .dwattr $C$DW$164, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2037 .dwattr $C$DW$164, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2038 .dwattr $C$DW$164, DW_AT_decl_line(0x36) - 2039 .dwattr $C$DW$164, DW_AT_decl_column(0x05) - 2040 .dwendtag $C$DW$T$75 - 2041 - 2042 .dwattr $C$DW$T$75, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2043 .dwattr $C$DW$T$75, DW_AT_decl_line(0x29) - 2044 .dwattr $C$DW$T$75, DW_AT_decl_column(0x08) - 2045 - 2046$C$DW$T$77 .dwtag DW_TAG_union_type - 2047 .dwattr $C$DW$T$77, DW_AT_byte_size(0x04) - 2048$C$DW$165 .dwtag DW_TAG_member - 2049 .dwattr $C$DW$165, DW_AT_type(*$C$DW$T$47) - 2050 .dwattr $C$DW$165, DW_AT_name("STS") - 2051 .dwattr $C$DW$165, DW_AT_TI_symbol_name("STS") - 2052 .dwattr $C$DW$165, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2053 .dwattr $C$DW$165, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2054 .dwattr $C$DW$165, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2055 .dwattr $C$DW$165, DW_AT_decl_line(0x3c) - 2056 .dwattr $C$DW$165, DW_AT_decl_column(0x15) - 2057$C$DW$166 .dwtag DW_TAG_member - 2058 .dwattr $C$DW$166, DW_AT_type(*$C$DW$T$76) - 2059 .dwattr $C$DW$166, DW_AT_name("STS_bit") - 2060 .dwattr $C$DW$166, DW_AT_TI_symbol_name("STS_bit") - 2061 .dwattr $C$DW$166, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2062 .dwattr $C$DW$166, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2063 .dwattr $C$DW$166, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2064 .dwattr $C$DW$166, DW_AT_decl_line(0x41) - 2065 .dwattr $C$DW$166, DW_AT_decl_column(0x05) - 2066 .dwendtag $C$DW$T$77 - 2067 - 2068 .dwattr $C$DW$T$77, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2069 .dwattr $C$DW$T$77, DW_AT_decl_line(0x3b) - 2070 .dwattr $C$DW$T$77, DW_AT_decl_column(0x08) - 2071 - 2072$C$DW$T$79 .dwtag DW_TAG_union_type - 2073 .dwattr $C$DW$T$79, DW_AT_byte_size(0x04) - 2074$C$DW$167 .dwtag DW_TAG_member - 2075 .dwattr $C$DW$167, DW_AT_type(*$C$DW$T$47) - 2076 .dwattr $C$DW$167, DW_AT_name("WAKEUP_EN") - 2077 .dwattr $C$DW$167, DW_AT_TI_symbol_name("WAKEUP_EN") - 2078 .dwattr $C$DW$167, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2079 .dwattr $C$DW$167, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2080 .dwattr $C$DW$167, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2081 .dwattr $C$DW$167, DW_AT_decl_line(0x47) - 2082 .dwattr $C$DW$167, DW_AT_decl_column(0x15) - 2083$C$DW$168 .dwtag DW_TAG_member - 2084 .dwattr $C$DW$168, DW_AT_type(*$C$DW$T$78) - 2085 .dwattr $C$DW$168, DW_AT_name("WAKEUP_EN_bit") - 2086 .dwattr $C$DW$168, DW_AT_TI_symbol_name("WAKEUP_EN_bit") - 2087 .dwattr $C$DW$168, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2088 .dwattr $C$DW$168, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2089 .dwattr $C$DW$168, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2090 .dwattr $C$DW$168, DW_AT_decl_line(0x4b) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 39 - - 2091 .dwattr $C$DW$168, DW_AT_decl_column(0x05) - 2092 .dwendtag $C$DW$T$79 - 2093 - 2094 .dwattr $C$DW$T$79, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2095 .dwattr $C$DW$T$79, DW_AT_decl_line(0x46) - 2096 .dwattr $C$DW$T$79, DW_AT_decl_column(0x08) - 2097 - 2098$C$DW$T$81 .dwtag DW_TAG_union_type - 2099 .dwattr $C$DW$T$81, DW_AT_byte_size(0x04) - 2100$C$DW$169 .dwtag DW_TAG_member - 2101 .dwattr $C$DW$169, DW_AT_type(*$C$DW$T$47) - 2102 .dwattr $C$DW$169, DW_AT_name("CYCLE") - 2103 .dwattr $C$DW$169, DW_AT_TI_symbol_name("CYCLE") - 2104 .dwattr $C$DW$169, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2105 .dwattr $C$DW$169, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2106 .dwattr $C$DW$169, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2107 .dwattr $C$DW$169, DW_AT_decl_line(0x51) - 2108 .dwattr $C$DW$169, DW_AT_decl_column(0x15) - 2109$C$DW$170 .dwtag DW_TAG_member - 2110 .dwattr $C$DW$170, DW_AT_type(*$C$DW$T$80) - 2111 .dwattr $C$DW$170, DW_AT_name("CYCLE_bit") - 2112 .dwattr $C$DW$170, DW_AT_TI_symbol_name("CYCLE_bit") - 2113 .dwattr $C$DW$170, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2114 .dwattr $C$DW$170, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2115 .dwattr $C$DW$170, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2116 .dwattr $C$DW$170, DW_AT_decl_line(0x55) - 2117 .dwattr $C$DW$170, DW_AT_decl_column(0x05) - 2118 .dwendtag $C$DW$T$81 - 2119 - 2120 .dwattr $C$DW$T$81, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2121 .dwattr $C$DW$T$81, DW_AT_decl_line(0x50) - 2122 .dwattr $C$DW$T$81, DW_AT_decl_column(0x08) - 2123 - 2124$C$DW$T$83 .dwtag DW_TAG_union_type - 2125 .dwattr $C$DW$T$83, DW_AT_byte_size(0x04) - 2126$C$DW$171 .dwtag DW_TAG_member - 2127 .dwattr $C$DW$171, DW_AT_type(*$C$DW$T$47) - 2128 .dwattr $C$DW$171, DW_AT_name("STALL") - 2129 .dwattr $C$DW$171, DW_AT_TI_symbol_name("STALL") - 2130 .dwattr $C$DW$171, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2131 .dwattr $C$DW$171, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2132 .dwattr $C$DW$171, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2133 .dwattr $C$DW$171, DW_AT_decl_line(0x5b) - 2134 .dwattr $C$DW$171, DW_AT_decl_column(0x15) - 2135$C$DW$172 .dwtag DW_TAG_member - 2136 .dwattr $C$DW$172, DW_AT_type(*$C$DW$T$82) - 2137 .dwattr $C$DW$172, DW_AT_name("STALL_bit") - 2138 .dwattr $C$DW$172, DW_AT_TI_symbol_name("STALL_bit") - 2139 .dwattr $C$DW$172, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2140 .dwattr $C$DW$172, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2141 .dwattr $C$DW$172, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2142 .dwattr $C$DW$172, DW_AT_decl_line(0x5f) - 2143 .dwattr $C$DW$172, DW_AT_decl_column(0x05) - 2144 .dwendtag $C$DW$T$83 - 2145 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 40 - - 2146 .dwattr $C$DW$T$83, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2147 .dwattr $C$DW$T$83, DW_AT_decl_line(0x5a) - 2148 .dwattr $C$DW$T$83, DW_AT_decl_column(0x08) - 2149 - 2150$C$DW$T$85 .dwtag DW_TAG_union_type - 2151 .dwattr $C$DW$T$85, DW_AT_byte_size(0x04) - 2152$C$DW$173 .dwtag DW_TAG_member - 2153 .dwattr $C$DW$173, DW_AT_type(*$C$DW$T$47) - 2154 .dwattr $C$DW$173, DW_AT_name("CTBIR0") - 2155 .dwattr $C$DW$173, DW_AT_TI_symbol_name("CTBIR0") - 2156 .dwattr $C$DW$173, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2157 .dwattr $C$DW$173, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2158 .dwattr $C$DW$173, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2159 .dwattr $C$DW$173, DW_AT_decl_line(0x68) - 2160 .dwattr $C$DW$173, DW_AT_decl_column(0x15) - 2161$C$DW$174 .dwtag DW_TAG_member - 2162 .dwattr $C$DW$174, DW_AT_type(*$C$DW$T$84) - 2163 .dwattr $C$DW$174, DW_AT_name("CTBIR0_bit") - 2164 .dwattr $C$DW$174, DW_AT_TI_symbol_name("CTBIR0_bit") - 2165 .dwattr $C$DW$174, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2166 .dwattr $C$DW$174, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2167 .dwattr $C$DW$174, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2168 .dwattr $C$DW$174, DW_AT_decl_line(0x6f) - 2169 .dwattr $C$DW$174, DW_AT_decl_column(0x05) - 2170 .dwendtag $C$DW$T$85 - 2171 - 2172 .dwattr $C$DW$T$85, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2173 .dwattr $C$DW$T$85, DW_AT_decl_line(0x67) - 2174 .dwattr $C$DW$T$85, DW_AT_decl_column(0x08) - 2175 - 2176$C$DW$T$87 .dwtag DW_TAG_union_type - 2177 .dwattr $C$DW$T$87, DW_AT_byte_size(0x04) - 2178$C$DW$175 .dwtag DW_TAG_member - 2179 .dwattr $C$DW$175, DW_AT_type(*$C$DW$T$47) - 2180 .dwattr $C$DW$175, DW_AT_name("CTBIR1") - 2181 .dwattr $C$DW$175, DW_AT_TI_symbol_name("CTBIR1") - 2182 .dwattr $C$DW$175, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2183 .dwattr $C$DW$175, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2184 .dwattr $C$DW$175, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2185 .dwattr $C$DW$175, DW_AT_decl_line(0x75) - 2186 .dwattr $C$DW$175, DW_AT_decl_column(0x15) - 2187$C$DW$176 .dwtag DW_TAG_member - 2188 .dwattr $C$DW$176, DW_AT_type(*$C$DW$T$86) - 2189 .dwattr $C$DW$176, DW_AT_name("CTBIR1_bit") - 2190 .dwattr $C$DW$176, DW_AT_TI_symbol_name("CTBIR1_bit") - 2191 .dwattr $C$DW$176, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2192 .dwattr $C$DW$176, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2193 .dwattr $C$DW$176, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2194 .dwattr $C$DW$176, DW_AT_decl_line(0x7c) - 2195 .dwattr $C$DW$176, DW_AT_decl_column(0x05) - 2196 .dwendtag $C$DW$T$87 - 2197 - 2198 .dwattr $C$DW$T$87, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2199 .dwattr $C$DW$T$87, DW_AT_decl_line(0x74) - 2200 .dwattr $C$DW$T$87, DW_AT_decl_column(0x08) -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 41 - - 2201 - 2202$C$DW$T$89 .dwtag DW_TAG_union_type - 2203 .dwattr $C$DW$T$89, DW_AT_byte_size(0x04) - 2204$C$DW$177 .dwtag DW_TAG_member - 2205 .dwattr $C$DW$177, DW_AT_type(*$C$DW$T$47) - 2206 .dwattr $C$DW$177, DW_AT_name("CTPPR0") - 2207 .dwattr $C$DW$177, DW_AT_TI_symbol_name("CTPPR0") - 2208 .dwattr $C$DW$177, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2209 .dwattr $C$DW$177, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2210 .dwattr $C$DW$177, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2211 .dwattr $C$DW$177, DW_AT_decl_line(0x82) - 2212 .dwattr $C$DW$177, DW_AT_decl_column(0x15) - 2213$C$DW$178 .dwtag DW_TAG_member - 2214 .dwattr $C$DW$178, DW_AT_type(*$C$DW$T$88) - 2215 .dwattr $C$DW$178, DW_AT_name("CTPPR0_bit") - 2216 .dwattr $C$DW$178, DW_AT_TI_symbol_name("CTPPR0_bit") - 2217 .dwattr $C$DW$178, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2218 .dwattr $C$DW$178, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2219 .dwattr $C$DW$178, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2220 .dwattr $C$DW$178, DW_AT_decl_line(0x87) - 2221 .dwattr $C$DW$178, DW_AT_decl_column(0x05) - 2222 .dwendtag $C$DW$T$89 - 2223 - 2224 .dwattr $C$DW$T$89, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2225 .dwattr $C$DW$T$89, DW_AT_decl_line(0x81) - 2226 .dwattr $C$DW$T$89, DW_AT_decl_column(0x08) - 2227 - 2228$C$DW$T$91 .dwtag DW_TAG_union_type - 2229 .dwattr $C$DW$T$91, DW_AT_byte_size(0x04) - 2230$C$DW$179 .dwtag DW_TAG_member - 2231 .dwattr $C$DW$179, DW_AT_type(*$C$DW$T$47) - 2232 .dwattr $C$DW$179, DW_AT_name("CTPPR1") - 2233 .dwattr $C$DW$179, DW_AT_TI_symbol_name("CTPPR1") - 2234 .dwattr $C$DW$179, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2235 .dwattr $C$DW$179, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2236 .dwattr $C$DW$179, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2237 .dwattr $C$DW$179, DW_AT_decl_line(0x8d) - 2238 .dwattr $C$DW$179, DW_AT_decl_column(0x15) - 2239$C$DW$180 .dwtag DW_TAG_member - 2240 .dwattr $C$DW$180, DW_AT_type(*$C$DW$T$90) - 2241 .dwattr $C$DW$180, DW_AT_name("CTPPR1_bit") - 2242 .dwattr $C$DW$180, DW_AT_TI_symbol_name("CTPPR1_bit") - 2243 .dwattr $C$DW$180, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2244 .dwattr $C$DW$180, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2245 .dwattr $C$DW$180, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/pr - 2246 .dwattr $C$DW$180, DW_AT_decl_line(0x92) - 2247 .dwattr $C$DW$180, DW_AT_decl_column(0x05) - 2248 .dwendtag $C$DW$T$91 - 2249 - 2250 .dwattr $C$DW$T$91, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/am335x/p - 2251 .dwattr $C$DW$T$91, DW_AT_decl_line(0x8c) - 2252 .dwattr $C$DW$T$91, DW_AT_decl_column(0x08) - 2253$C$DW$T$2 .dwtag DW_TAG_unspecified_type - 2254 .dwattr $C$DW$T$2, DW_AT_name("void") - 2255$C$DW$T$4 .dwtag DW_TAG_base_type -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 42 - - 2256 .dwattr $C$DW$T$4, DW_AT_encoding(DW_ATE_boolean) - 2257 .dwattr $C$DW$T$4, DW_AT_name("bool") - 2258 .dwattr $C$DW$T$4, DW_AT_byte_size(0x01) - 2259$C$DW$T$5 .dwtag DW_TAG_base_type - 2260 .dwattr $C$DW$T$5, DW_AT_encoding(DW_ATE_signed_char) - 2261 .dwattr $C$DW$T$5, DW_AT_name("signed char") - 2262 .dwattr $C$DW$T$5, DW_AT_byte_size(0x01) - 2263$C$DW$T$6 .dwtag DW_TAG_base_type - 2264 .dwattr $C$DW$T$6, DW_AT_encoding(DW_ATE_unsigned_char) - 2265 .dwattr $C$DW$T$6, DW_AT_name("unsigned char") - 2266 .dwattr $C$DW$T$6, DW_AT_byte_size(0x01) - 2267$C$DW$T$7 .dwtag DW_TAG_base_type - 2268 .dwattr $C$DW$T$7, DW_AT_encoding(DW_ATE_signed_char) - 2269 .dwattr $C$DW$T$7, DW_AT_name("wchar_t") - 2270 .dwattr $C$DW$T$7, DW_AT_byte_size(0x04) - 2271$C$DW$T$8 .dwtag DW_TAG_base_type - 2272 .dwattr $C$DW$T$8, DW_AT_encoding(DW_ATE_signed) - 2273 .dwattr $C$DW$T$8, DW_AT_name("short") - 2274 .dwattr $C$DW$T$8, DW_AT_byte_size(0x02) - 2275$C$DW$T$9 .dwtag DW_TAG_base_type - 2276 .dwattr $C$DW$T$9, DW_AT_encoding(DW_ATE_unsigned) - 2277 .dwattr $C$DW$T$9, DW_AT_name("unsigned short") - 2278 .dwattr $C$DW$T$9, DW_AT_byte_size(0x02) - 2279$C$DW$T$10 .dwtag DW_TAG_base_type - 2280 .dwattr $C$DW$T$10, DW_AT_encoding(DW_ATE_signed) - 2281 .dwattr $C$DW$T$10, DW_AT_name("int") - 2282 .dwattr $C$DW$T$10, DW_AT_byte_size(0x04) - 2283$C$DW$T$11 .dwtag DW_TAG_base_type - 2284 .dwattr $C$DW$T$11, DW_AT_encoding(DW_ATE_unsigned) - 2285 .dwattr $C$DW$T$11, DW_AT_name("unsigned int") - 2286 .dwattr $C$DW$T$11, DW_AT_byte_size(0x04) - 2287$C$DW$T$32 .dwtag DW_TAG_typedef, DW_AT_name("uint32_t") - 2288 .dwattr $C$DW$T$32, DW_AT_type(*$C$DW$T$11) - 2289 .dwattr $C$DW$T$32, DW_AT_language(DW_LANG_C) - 2290 .dwattr $C$DW$T$32, DW_AT_decl_file("/usr/share/ti/cgt-pru/include/stdint.h") - 2291 .dwattr $C$DW$T$32, DW_AT_decl_line(0x2f) - 2292 .dwattr $C$DW$T$32, DW_AT_decl_column(0x1c) - 2293 - 2294$C$DW$T$33 .dwtag DW_TAG_array_type - 2295 .dwattr $C$DW$T$33, DW_AT_type(*$C$DW$T$32) - 2296 .dwattr $C$DW$T$33, DW_AT_language(DW_LANG_C) - 2297 .dwattr $C$DW$T$33, DW_AT_byte_size(0x04) - 2298$C$DW$181 .dwtag DW_TAG_subrange_type - 2299 .dwattr $C$DW$181, DW_AT_upper_bound(0x00) - 2300 .dwendtag $C$DW$T$33 - 2301 - 2302 - 2303$C$DW$T$34 .dwtag DW_TAG_array_type - 2304 .dwattr $C$DW$T$34, DW_AT_type(*$C$DW$T$32) - 2305 .dwattr $C$DW$T$34, DW_AT_language(DW_LANG_C) - 2306 .dwattr $C$DW$T$34, DW_AT_byte_size(0x08) - 2307$C$DW$182 .dwtag DW_TAG_subrange_type - 2308 .dwattr $C$DW$182, DW_AT_upper_bound(0x01) - 2309 .dwendtag $C$DW$T$34 - 2310 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 43 - - 2311 - 2312$C$DW$T$45 .dwtag DW_TAG_array_type - 2313 .dwattr $C$DW$T$45, DW_AT_type(*$C$DW$T$32) - 2314 .dwattr $C$DW$T$45, DW_AT_language(DW_LANG_C) - 2315 .dwattr $C$DW$T$45, DW_AT_byte_size(0x0c) - 2316$C$DW$183 .dwtag DW_TAG_subrange_type - 2317 .dwattr $C$DW$183, DW_AT_upper_bound(0x02) - 2318 .dwendtag $C$DW$T$45 - 2319 - 2320$C$DW$T$47 .dwtag DW_TAG_volatile_type - 2321 .dwattr $C$DW$T$47, DW_AT_type(*$C$DW$T$32) - 2322$C$DW$T$12 .dwtag DW_TAG_base_type - 2323 .dwattr $C$DW$T$12, DW_AT_encoding(DW_ATE_signed) - 2324 .dwattr $C$DW$T$12, DW_AT_name("long") - 2325 .dwattr $C$DW$T$12, DW_AT_byte_size(0x04) - 2326$C$DW$T$13 .dwtag DW_TAG_base_type - 2327 .dwattr $C$DW$T$13, DW_AT_encoding(DW_ATE_unsigned) - 2328 .dwattr $C$DW$T$13, DW_AT_name("unsigned long") - 2329 .dwattr $C$DW$T$13, DW_AT_byte_size(0x04) - 2330$C$DW$T$14 .dwtag DW_TAG_base_type - 2331 .dwattr $C$DW$T$14, DW_AT_encoding(DW_ATE_signed) - 2332 .dwattr $C$DW$T$14, DW_AT_name("long long") - 2333 .dwattr $C$DW$T$14, DW_AT_byte_size(0x08) - 2334$C$DW$T$15 .dwtag DW_TAG_base_type - 2335 .dwattr $C$DW$T$15, DW_AT_encoding(DW_ATE_unsigned) - 2336 .dwattr $C$DW$T$15, DW_AT_name("unsigned long long") - 2337 .dwattr $C$DW$T$15, DW_AT_byte_size(0x08) - 2338$C$DW$T$16 .dwtag DW_TAG_base_type - 2339 .dwattr $C$DW$T$16, DW_AT_encoding(DW_ATE_float) - 2340 .dwattr $C$DW$T$16, DW_AT_name("float") - 2341 .dwattr $C$DW$T$16, DW_AT_byte_size(0x04) - 2342$C$DW$T$17 .dwtag DW_TAG_base_type - 2343 .dwattr $C$DW$T$17, DW_AT_encoding(DW_ATE_float) - 2344 .dwattr $C$DW$T$17, DW_AT_name("double") - 2345 .dwattr $C$DW$T$17, DW_AT_byte_size(0x08) - 2346$C$DW$T$18 .dwtag DW_TAG_base_type - 2347 .dwattr $C$DW$T$18, DW_AT_encoding(DW_ATE_float) - 2348 .dwattr $C$DW$T$18, DW_AT_name("long double") - 2349 .dwattr $C$DW$T$18, DW_AT_byte_size(0x08) - 2350 - 2351$C$DW$T$92 .dwtag DW_TAG_structure_type - 2352 .dwattr $C$DW$T$92, DW_AT_name("my_resource_table") - 2353 .dwattr $C$DW$T$92, DW_AT_byte_size(0x14) - 2354$C$DW$184 .dwtag DW_TAG_member - 2355 .dwattr $C$DW$184, DW_AT_type(*$C$DW$T$93) - 2356 .dwattr $C$DW$184, DW_AT_name("base") - 2357 .dwattr $C$DW$184, DW_AT_TI_symbol_name("base") - 2358 .dwattr $C$DW$184, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2359 .dwattr $C$DW$184, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2360 .dwattr $C$DW$184, DW_AT_decl_file("/var/lib/cloud9/common/resource_table_empty.h") - 2361 .dwattr $C$DW$184, DW_AT_decl_line(0x18) - 2362 .dwattr $C$DW$184, DW_AT_decl_column(0x18) - 2363$C$DW$185 .dwtag DW_TAG_member - 2364 .dwattr $C$DW$185, DW_AT_type(*$C$DW$T$33) - 2365 .dwattr $C$DW$185, DW_AT_name("offset") -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 44 - - 2366 .dwattr $C$DW$185, DW_AT_TI_symbol_name("offset") - 2367 .dwattr $C$DW$185, DW_AT_data_member_location[DW_OP_plus_uconst 0x10] - 2368 .dwattr $C$DW$185, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2369 .dwattr $C$DW$185, DW_AT_decl_file("/var/lib/cloud9/common/resource_table_empty.h") - 2370 .dwattr $C$DW$185, DW_AT_decl_line(0x1a) - 2371 .dwattr $C$DW$185, DW_AT_decl_column(0x0b) - 2372 .dwendtag $C$DW$T$92 - 2373 - 2374 .dwattr $C$DW$T$92, DW_AT_decl_file("/var/lib/cloud9/common/resource_table_empty.h") - 2375 .dwattr $C$DW$T$92, DW_AT_decl_line(0x17) - 2376 .dwattr $C$DW$T$92, DW_AT_decl_column(0x08) - 2377 - 2378$C$DW$T$93 .dwtag DW_TAG_structure_type - 2379 .dwattr $C$DW$T$93, DW_AT_name("resource_table") - 2380 .dwattr $C$DW$T$93, DW_AT_byte_size(0x10) - 2381$C$DW$186 .dwtag DW_TAG_member - 2382 .dwattr $C$DW$186, DW_AT_type(*$C$DW$T$32) - 2383 .dwattr $C$DW$186, DW_AT_name("ver") - 2384 .dwattr $C$DW$186, DW_AT_TI_symbol_name("ver") - 2385 .dwattr $C$DW$186, DW_AT_data_member_location[DW_OP_plus_uconst 0x0] - 2386 .dwattr $C$DW$186, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2387 .dwattr $C$DW$186, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/rsc_types - 2388 .dwattr $C$DW$186, DW_AT_decl_line(0x59) - 2389 .dwattr $C$DW$186, DW_AT_decl_column(0x0b) - 2390$C$DW$187 .dwtag DW_TAG_member - 2391 .dwattr $C$DW$187, DW_AT_type(*$C$DW$T$32) - 2392 .dwattr $C$DW$187, DW_AT_name("num") - 2393 .dwattr $C$DW$187, DW_AT_TI_symbol_name("num") - 2394 .dwattr $C$DW$187, DW_AT_data_member_location[DW_OP_plus_uconst 0x4] - 2395 .dwattr $C$DW$187, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2396 .dwattr $C$DW$187, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/rsc_types - 2397 .dwattr $C$DW$187, DW_AT_decl_line(0x5a) - 2398 .dwattr $C$DW$187, DW_AT_decl_column(0x0b) - 2399$C$DW$188 .dwtag DW_TAG_member - 2400 .dwattr $C$DW$188, DW_AT_type(*$C$DW$T$34) - 2401 .dwattr $C$DW$188, DW_AT_name("reserved") - 2402 .dwattr $C$DW$188, DW_AT_TI_symbol_name("reserved") - 2403 .dwattr $C$DW$188, DW_AT_data_member_location[DW_OP_plus_uconst 0x8] - 2404 .dwattr $C$DW$188, DW_AT_accessibility(DW_ACCESS_ai_64_lic) - 2405 .dwattr $C$DW$188, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/rsc_types - 2406 .dwattr $C$DW$188, DW_AT_decl_line(0x5b) - 2407 .dwattr $C$DW$188, DW_AT_decl_column(0x0b) - 2408 .dwendtag $C$DW$T$93 - 2409 - 2410 .dwattr $C$DW$T$93, DW_AT_decl_file("/usr/lib/ti/pru-software-support-package/include/rsc_type - 2411 .dwattr $C$DW$T$93, DW_AT_decl_line(0x58) - 2412 .dwattr $C$DW$T$93, DW_AT_decl_column(0x08) - 2413 .dwattr $C$DW$CU, DW_AT_language(DW_LANG_C) - 2414 - 2415;*************************************************************** - 2416;* DWARF CIE ENTRIES * - 2417;*************************************************************** - 2418 - 2419$C$DW$CIE .dwcie 14 - 2420 .dwcfi cfa_register, 8 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 45 - - 2421 .dwcfi cfa_offset, 0 - 2422 .dwcfi undefined, 0 - 2423 .dwcfi undefined, 1 - 2424 .dwcfi undefined, 2 - 2425 .dwcfi undefined, 3 - 2426 .dwcfi undefined, 4 - 2427 .dwcfi undefined, 5 - 2428 .dwcfi undefined, 6 - 2429 .dwcfi undefined, 7 - 2430 .dwcfi same_value, 8 - 2431 .dwcfi same_value, 9 - 2432 .dwcfi same_value, 10 - 2433 .dwcfi same_value, 11 - 2434 .dwcfi undefined, 12 - 2435 .dwcfi undefined, 13 - 2436 .dwcfi undefined, 14 - 2437 .dwcfi undefined, 15 - 2438 .dwcfi same_value, 16 - 2439 .dwcfi same_value, 17 - 2440 .dwcfi same_value, 18 - 2441 .dwcfi same_value, 19 - 2442 .dwcfi same_value, 20 - 2443 .dwcfi same_value, 21 - 2444 .dwcfi same_value, 22 - 2445 .dwcfi same_value, 23 - 2446 .dwcfi same_value, 24 - 2447 .dwcfi same_value, 25 - 2448 .dwcfi same_value, 26 - 2449 .dwcfi same_value, 27 - 2450 .dwcfi same_value, 28 - 2451 .dwcfi same_value, 29 - 2452 .dwcfi same_value, 30 - 2453 .dwcfi same_value, 31 - 2454 .dwcfi same_value, 32 - 2455 .dwcfi same_value, 33 - 2456 .dwcfi same_value, 34 - 2457 .dwcfi same_value, 35 - 2458 .dwcfi same_value, 36 - 2459 .dwcfi same_value, 37 - 2460 .dwcfi same_value, 38 - 2461 .dwcfi same_value, 39 - 2462 .dwcfi same_value, 40 - 2463 .dwcfi same_value, 41 - 2464 .dwcfi same_value, 42 - 2465 .dwcfi same_value, 43 - 2466 .dwcfi same_value, 44 - 2467 .dwcfi same_value, 45 - 2468 .dwcfi same_value, 46 - 2469 .dwcfi same_value, 47 - 2470 .dwcfi same_value, 48 - 2471 .dwcfi same_value, 49 - 2472 .dwcfi same_value, 50 - 2473 .dwcfi same_value, 51 - 2474 .dwcfi same_value, 52 - 2475 .dwcfi same_value, 53 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 46 - - 2476 .dwcfi same_value, 54 - 2477 .dwcfi same_value, 55 - 2478 .dwcfi undefined, 56 - 2479 .dwcfi undefined, 57 - 2480 .dwcfi undefined, 58 - 2481 .dwcfi undefined, 59 - 2482 .dwcfi undefined, 60 - 2483 .dwcfi undefined, 61 - 2484 .dwcfi undefined, 62 - 2485 .dwcfi undefined, 63 - 2486 .dwcfi undefined, 64 - 2487 .dwcfi undefined, 65 - 2488 .dwcfi undefined, 66 - 2489 .dwcfi undefined, 67 - 2490 .dwcfi undefined, 68 - 2491 .dwcfi undefined, 69 - 2492 .dwcfi undefined, 70 - 2493 .dwcfi undefined, 71 - 2494 .dwcfi undefined, 72 - 2495 .dwcfi undefined, 73 - 2496 .dwcfi undefined, 74 - 2497 .dwcfi undefined, 75 - 2498 .dwcfi undefined, 76 - 2499 .dwcfi undefined, 77 - 2500 .dwcfi undefined, 78 - 2501 .dwcfi undefined, 79 - 2502 .dwcfi undefined, 80 - 2503 .dwcfi undefined, 81 - 2504 .dwcfi undefined, 82 - 2505 .dwcfi undefined, 83 - 2506 .dwcfi undefined, 84 - 2507 .dwcfi undefined, 85 - 2508 .dwcfi undefined, 86 - 2509 .dwcfi undefined, 87 - 2510 .dwcfi undefined, 88 - 2511 .dwcfi undefined, 89 - 2512 .dwcfi undefined, 90 - 2513 .dwcfi undefined, 91 - 2514 .dwcfi undefined, 92 - 2515 .dwcfi undefined, 93 - 2516 .dwcfi undefined, 94 - 2517 .dwcfi undefined, 95 - 2518 .dwcfi undefined, 96 - 2519 .dwcfi undefined, 97 - 2520 .dwcfi undefined, 98 - 2521 .dwcfi undefined, 99 - 2522 .dwcfi undefined, 100 - 2523 .dwcfi undefined, 101 - 2524 .dwcfi undefined, 102 - 2525 .dwcfi undefined, 103 - 2526 .dwcfi undefined, 104 - 2527 .dwcfi undefined, 105 - 2528 .dwcfi undefined, 106 - 2529 .dwcfi undefined, 107 - 2530 .dwcfi undefined, 108 -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 47 - - 2531 .dwcfi undefined, 109 - 2532 .dwcfi undefined, 110 - 2533 .dwcfi undefined, 111 - 2534 .dwcfi undefined, 112 - 2535 .dwcfi undefined, 113 - 2536 .dwcfi undefined, 114 - 2537 .dwcfi undefined, 115 - 2538 .dwcfi undefined, 116 - 2539 .dwcfi undefined, 117 - 2540 .dwcfi undefined, 118 - 2541 .dwcfi undefined, 119 - 2542 .dwcfi undefined, 120 - 2543 .dwcfi undefined, 121 - 2544 .dwcfi undefined, 122 - 2545 .dwcfi undefined, 123 - 2546 .dwcfi undefined, 124 - 2547 .dwcfi undefined, 125 - 2548 .dwcfi undefined, 126 - 2549 .dwcfi undefined, 127 - 2550 .dwcfi undefined, 128 - 2551 .dwcfi undefined, 129 - 2552 .dwcfi undefined, 130 - 2553 .dwcfi undefined, 131 - 2554 .dwcfi undefined, 132 - 2555 .dwcfi undefined, 133 - 2556 .dwcfi undefined, 134 - 2557 .dwendentry - 2558 - 2559;*************************************************************** - 2560;* DWARF REGISTER MAP * - 2561;*************************************************************** - 2562 - 2563$C$DW$189 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R0_b0") - 2564 .dwattr $C$DW$189, DW_AT_location[DW_OP_reg0] - 2565$C$DW$190 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R0_b1") - 2566 .dwattr $C$DW$190, DW_AT_location[DW_OP_reg1] - 2567$C$DW$191 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R0_b2") - 2568 .dwattr $C$DW$191, DW_AT_location[DW_OP_reg2] - 2569$C$DW$192 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R0_b3") - 2570 .dwattr $C$DW$192, DW_AT_location[DW_OP_reg3] - 2571$C$DW$193 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R1_b0") - 2572 .dwattr $C$DW$193, DW_AT_location[DW_OP_reg4] - 2573$C$DW$194 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R1_b1") - 2574 .dwattr $C$DW$194, DW_AT_location[DW_OP_reg5] - 2575$C$DW$195 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R1_b2") - 2576 .dwattr $C$DW$195, DW_AT_location[DW_OP_reg6] - 2577$C$DW$196 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R1_b3") - 2578 .dwattr $C$DW$196, DW_AT_location[DW_OP_reg7] - 2579$C$DW$197 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R2_b0") - 2580 .dwattr $C$DW$197, DW_AT_location[DW_OP_reg8] - 2581$C$DW$198 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R2_b1") - 2582 .dwattr $C$DW$198, DW_AT_location[DW_OP_reg9] - 2583$C$DW$199 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R2_b2") - 2584 .dwattr $C$DW$199, DW_AT_location[DW_OP_reg10] - 2585$C$DW$200 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R2_b3") -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 48 - - 2586 .dwattr $C$DW$200, DW_AT_location[DW_OP_reg11] - 2587$C$DW$201 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R3_b0") - 2588 .dwattr $C$DW$201, DW_AT_location[DW_OP_reg12] - 2589$C$DW$202 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R3_b1") - 2590 .dwattr $C$DW$202, DW_AT_location[DW_OP_reg13] - 2591$C$DW$203 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R3_b2") - 2592 .dwattr $C$DW$203, DW_AT_location[DW_OP_reg14] - 2593$C$DW$204 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R3_b3") - 2594 .dwattr $C$DW$204, DW_AT_location[DW_OP_reg15] - 2595$C$DW$205 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R4_b0") - 2596 .dwattr $C$DW$205, DW_AT_location[DW_OP_reg16] - 2597$C$DW$206 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R4_b1") - 2598 .dwattr $C$DW$206, DW_AT_location[DW_OP_reg17] - 2599$C$DW$207 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R4_b2") - 2600 .dwattr $C$DW$207, DW_AT_location[DW_OP_reg18] - 2601$C$DW$208 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R4_b3") - 2602 .dwattr $C$DW$208, DW_AT_location[DW_OP_reg19] - 2603$C$DW$209 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R5_b0") - 2604 .dwattr $C$DW$209, DW_AT_location[DW_OP_reg20] - 2605$C$DW$210 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R5_b1") - 2606 .dwattr $C$DW$210, DW_AT_location[DW_OP_reg21] - 2607$C$DW$211 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R5_b2") - 2608 .dwattr $C$DW$211, DW_AT_location[DW_OP_reg22] - 2609$C$DW$212 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R5_b3") - 2610 .dwattr $C$DW$212, DW_AT_location[DW_OP_reg23] - 2611$C$DW$213 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R6_b0") - 2612 .dwattr $C$DW$213, DW_AT_location[DW_OP_reg24] - 2613$C$DW$214 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R6_b1") - 2614 .dwattr $C$DW$214, DW_AT_location[DW_OP_reg25] - 2615$C$DW$215 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R6_b2") - 2616 .dwattr $C$DW$215, DW_AT_location[DW_OP_reg26] - 2617$C$DW$216 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R6_b3") - 2618 .dwattr $C$DW$216, DW_AT_location[DW_OP_reg27] - 2619$C$DW$217 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R7_b0") - 2620 .dwattr $C$DW$217, DW_AT_location[DW_OP_reg28] - 2621$C$DW$218 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R7_b1") - 2622 .dwattr $C$DW$218, DW_AT_location[DW_OP_reg29] - 2623$C$DW$219 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R7_b2") - 2624 .dwattr $C$DW$219, DW_AT_location[DW_OP_reg30] - 2625$C$DW$220 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R7_b3") - 2626 .dwattr $C$DW$220, DW_AT_location[DW_OP_reg31] - 2627$C$DW$221 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R8_b0") - 2628 .dwattr $C$DW$221, DW_AT_location[DW_OP_regx 0x20] - 2629$C$DW$222 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R8_b1") - 2630 .dwattr $C$DW$222, DW_AT_location[DW_OP_regx 0x21] - 2631$C$DW$223 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R8_b2") - 2632 .dwattr $C$DW$223, DW_AT_location[DW_OP_regx 0x22] - 2633$C$DW$224 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R8_b3") - 2634 .dwattr $C$DW$224, DW_AT_location[DW_OP_regx 0x23] - 2635$C$DW$225 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R9_b0") - 2636 .dwattr $C$DW$225, DW_AT_location[DW_OP_regx 0x24] - 2637$C$DW$226 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R9_b1") - 2638 .dwattr $C$DW$226, DW_AT_location[DW_OP_regx 0x25] - 2639$C$DW$227 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R9_b2") - 2640 .dwattr $C$DW$227, DW_AT_location[DW_OP_regx 0x26] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 49 - - 2641$C$DW$228 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R9_b3") - 2642 .dwattr $C$DW$228, DW_AT_location[DW_OP_regx 0x27] - 2643$C$DW$229 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R10_b0") - 2644 .dwattr $C$DW$229, DW_AT_location[DW_OP_regx 0x28] - 2645$C$DW$230 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R10_b1") - 2646 .dwattr $C$DW$230, DW_AT_location[DW_OP_regx 0x29] - 2647$C$DW$231 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R10_b2") - 2648 .dwattr $C$DW$231, DW_AT_location[DW_OP_regx 0x2a] - 2649$C$DW$232 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R10_b3") - 2650 .dwattr $C$DW$232, DW_AT_location[DW_OP_regx 0x2b] - 2651$C$DW$233 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R11_b0") - 2652 .dwattr $C$DW$233, DW_AT_location[DW_OP_regx 0x2c] - 2653$C$DW$234 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R11_b1") - 2654 .dwattr $C$DW$234, DW_AT_location[DW_OP_regx 0x2d] - 2655$C$DW$235 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R11_b2") - 2656 .dwattr $C$DW$235, DW_AT_location[DW_OP_regx 0x2e] - 2657$C$DW$236 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R11_b3") - 2658 .dwattr $C$DW$236, DW_AT_location[DW_OP_regx 0x2f] - 2659$C$DW$237 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R12_b0") - 2660 .dwattr $C$DW$237, DW_AT_location[DW_OP_regx 0x30] - 2661$C$DW$238 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R12_b1") - 2662 .dwattr $C$DW$238, DW_AT_location[DW_OP_regx 0x31] - 2663$C$DW$239 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R12_b2") - 2664 .dwattr $C$DW$239, DW_AT_location[DW_OP_regx 0x32] - 2665$C$DW$240 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R12_b3") - 2666 .dwattr $C$DW$240, DW_AT_location[DW_OP_regx 0x33] - 2667$C$DW$241 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R13_b0") - 2668 .dwattr $C$DW$241, DW_AT_location[DW_OP_regx 0x34] - 2669$C$DW$242 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R13_b1") - 2670 .dwattr $C$DW$242, DW_AT_location[DW_OP_regx 0x35] - 2671$C$DW$243 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R13_b2") - 2672 .dwattr $C$DW$243, DW_AT_location[DW_OP_regx 0x36] - 2673$C$DW$244 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R13_b3") - 2674 .dwattr $C$DW$244, DW_AT_location[DW_OP_regx 0x37] - 2675$C$DW$245 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R14_b0") - 2676 .dwattr $C$DW$245, DW_AT_location[DW_OP_regx 0x38] - 2677$C$DW$246 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R14_b1") - 2678 .dwattr $C$DW$246, DW_AT_location[DW_OP_regx 0x39] - 2679$C$DW$247 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R14_b2") - 2680 .dwattr $C$DW$247, DW_AT_location[DW_OP_regx 0x3a] - 2681$C$DW$248 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R14_b3") - 2682 .dwattr $C$DW$248, DW_AT_location[DW_OP_regx 0x3b] - 2683$C$DW$249 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R15_b0") - 2684 .dwattr $C$DW$249, DW_AT_location[DW_OP_regx 0x3c] - 2685$C$DW$250 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R15_b1") - 2686 .dwattr $C$DW$250, DW_AT_location[DW_OP_regx 0x3d] - 2687$C$DW$251 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R15_b2") - 2688 .dwattr $C$DW$251, DW_AT_location[DW_OP_regx 0x3e] - 2689$C$DW$252 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R15_b3") - 2690 .dwattr $C$DW$252, DW_AT_location[DW_OP_regx 0x3f] - 2691$C$DW$253 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R16_b0") - 2692 .dwattr $C$DW$253, DW_AT_location[DW_OP_regx 0x40] - 2693$C$DW$254 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R16_b1") - 2694 .dwattr $C$DW$254, DW_AT_location[DW_OP_regx 0x41] - 2695$C$DW$255 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R16_b2") -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 50 - - 2696 .dwattr $C$DW$255, DW_AT_location[DW_OP_regx 0x42] - 2697$C$DW$256 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R16_b3") - 2698 .dwattr $C$DW$256, DW_AT_location[DW_OP_regx 0x43] - 2699$C$DW$257 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R17_b0") - 2700 .dwattr $C$DW$257, DW_AT_location[DW_OP_regx 0x44] - 2701$C$DW$258 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R17_b1") - 2702 .dwattr $C$DW$258, DW_AT_location[DW_OP_regx 0x45] - 2703$C$DW$259 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R17_b2") - 2704 .dwattr $C$DW$259, DW_AT_location[DW_OP_regx 0x46] - 2705$C$DW$260 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R17_b3") - 2706 .dwattr $C$DW$260, DW_AT_location[DW_OP_regx 0x47] - 2707$C$DW$261 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R18_b0") - 2708 .dwattr $C$DW$261, DW_AT_location[DW_OP_regx 0x48] - 2709$C$DW$262 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R18_b1") - 2710 .dwattr $C$DW$262, DW_AT_location[DW_OP_regx 0x49] - 2711$C$DW$263 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R18_b2") - 2712 .dwattr $C$DW$263, DW_AT_location[DW_OP_regx 0x4a] - 2713$C$DW$264 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R18_b3") - 2714 .dwattr $C$DW$264, DW_AT_location[DW_OP_regx 0x4b] - 2715$C$DW$265 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R19_b0") - 2716 .dwattr $C$DW$265, DW_AT_location[DW_OP_regx 0x4c] - 2717$C$DW$266 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R19_b1") - 2718 .dwattr $C$DW$266, DW_AT_location[DW_OP_regx 0x4d] - 2719$C$DW$267 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R19_b2") - 2720 .dwattr $C$DW$267, DW_AT_location[DW_OP_regx 0x4e] - 2721$C$DW$268 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R19_b3") - 2722 .dwattr $C$DW$268, DW_AT_location[DW_OP_regx 0x4f] - 2723$C$DW$269 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R20_b0") - 2724 .dwattr $C$DW$269, DW_AT_location[DW_OP_regx 0x50] - 2725$C$DW$270 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R20_b1") - 2726 .dwattr $C$DW$270, DW_AT_location[DW_OP_regx 0x51] - 2727$C$DW$271 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R20_b2") - 2728 .dwattr $C$DW$271, DW_AT_location[DW_OP_regx 0x52] - 2729$C$DW$272 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R20_b3") - 2730 .dwattr $C$DW$272, DW_AT_location[DW_OP_regx 0x53] - 2731$C$DW$273 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R21_b0") - 2732 .dwattr $C$DW$273, DW_AT_location[DW_OP_regx 0x54] - 2733$C$DW$274 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R21_b1") - 2734 .dwattr $C$DW$274, DW_AT_location[DW_OP_regx 0x55] - 2735$C$DW$275 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R21_b2") - 2736 .dwattr $C$DW$275, DW_AT_location[DW_OP_regx 0x56] - 2737$C$DW$276 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R21_b3") - 2738 .dwattr $C$DW$276, DW_AT_location[DW_OP_regx 0x57] - 2739$C$DW$277 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R22_b0") - 2740 .dwattr $C$DW$277, DW_AT_location[DW_OP_regx 0x58] - 2741$C$DW$278 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R22_b1") - 2742 .dwattr $C$DW$278, DW_AT_location[DW_OP_regx 0x59] - 2743$C$DW$279 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R22_b2") - 2744 .dwattr $C$DW$279, DW_AT_location[DW_OP_regx 0x5a] - 2745$C$DW$280 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R22_b3") - 2746 .dwattr $C$DW$280, DW_AT_location[DW_OP_regx 0x5b] - 2747$C$DW$281 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R23_b0") - 2748 .dwattr $C$DW$281, DW_AT_location[DW_OP_regx 0x5c] - 2749$C$DW$282 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R23_b1") - 2750 .dwattr $C$DW$282, DW_AT_location[DW_OP_regx 0x5d] -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 51 - - 2751$C$DW$283 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R23_b2") - 2752 .dwattr $C$DW$283, DW_AT_location[DW_OP_regx 0x5e] - 2753$C$DW$284 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R23_b3") - 2754 .dwattr $C$DW$284, DW_AT_location[DW_OP_regx 0x5f] - 2755$C$DW$285 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R24_b0") - 2756 .dwattr $C$DW$285, DW_AT_location[DW_OP_regx 0x60] - 2757$C$DW$286 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R24_b1") - 2758 .dwattr $C$DW$286, DW_AT_location[DW_OP_regx 0x61] - 2759$C$DW$287 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R24_b2") - 2760 .dwattr $C$DW$287, DW_AT_location[DW_OP_regx 0x62] - 2761$C$DW$288 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R24_b3") - 2762 .dwattr $C$DW$288, DW_AT_location[DW_OP_regx 0x63] - 2763$C$DW$289 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R25_b0") - 2764 .dwattr $C$DW$289, DW_AT_location[DW_OP_regx 0x64] - 2765$C$DW$290 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R25_b1") - 2766 .dwattr $C$DW$290, DW_AT_location[DW_OP_regx 0x65] - 2767$C$DW$291 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R25_b2") - 2768 .dwattr $C$DW$291, DW_AT_location[DW_OP_regx 0x66] - 2769$C$DW$292 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R25_b3") - 2770 .dwattr $C$DW$292, DW_AT_location[DW_OP_regx 0x67] - 2771$C$DW$293 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R26_b0") - 2772 .dwattr $C$DW$293, DW_AT_location[DW_OP_regx 0x68] - 2773$C$DW$294 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R26_b1") - 2774 .dwattr $C$DW$294, DW_AT_location[DW_OP_regx 0x69] - 2775$C$DW$295 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R26_b2") - 2776 .dwattr $C$DW$295, DW_AT_location[DW_OP_regx 0x6a] - 2777$C$DW$296 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R26_b3") - 2778 .dwattr $C$DW$296, DW_AT_location[DW_OP_regx 0x6b] - 2779$C$DW$297 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R27_b0") - 2780 .dwattr $C$DW$297, DW_AT_location[DW_OP_regx 0x6c] - 2781$C$DW$298 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R27_b1") - 2782 .dwattr $C$DW$298, DW_AT_location[DW_OP_regx 0x6d] - 2783$C$DW$299 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R27_b2") - 2784 .dwattr $C$DW$299, DW_AT_location[DW_OP_regx 0x6e] - 2785$C$DW$300 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R27_b3") - 2786 .dwattr $C$DW$300, DW_AT_location[DW_OP_regx 0x6f] - 2787$C$DW$301 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R28_b0") - 2788 .dwattr $C$DW$301, DW_AT_location[DW_OP_regx 0x70] - 2789$C$DW$302 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R28_b1") - 2790 .dwattr $C$DW$302, DW_AT_location[DW_OP_regx 0x71] - 2791$C$DW$303 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R28_b2") - 2792 .dwattr $C$DW$303, DW_AT_location[DW_OP_regx 0x72] - 2793$C$DW$304 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R28_b3") - 2794 .dwattr $C$DW$304, DW_AT_location[DW_OP_regx 0x73] - 2795$C$DW$305 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R29_b0") - 2796 .dwattr $C$DW$305, DW_AT_location[DW_OP_regx 0x74] - 2797$C$DW$306 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R29_b1") - 2798 .dwattr $C$DW$306, DW_AT_location[DW_OP_regx 0x75] - 2799$C$DW$307 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R29_b2") - 2800 .dwattr $C$DW$307, DW_AT_location[DW_OP_regx 0x76] - 2801$C$DW$308 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R29_b3") - 2802 .dwattr $C$DW$308, DW_AT_location[DW_OP_regx 0x77] - 2803$C$DW$309 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R30_b0") - 2804 .dwattr $C$DW$309, DW_AT_location[DW_OP_regx 0x78] - 2805$C$DW$310 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R30_b1") -PRU Assembler Unix v2.1.5 Fri Jun 5 14:14:07 2020 - -Tools Copyright (c) 2012-2017 Texas Instruments Incorporated -/tmp/cloud9-examples/cycle.pru0.asm PAGE 52 - - 2806 .dwattr $C$DW$310, DW_AT_location[DW_OP_regx 0x79] - 2807$C$DW$311 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R30_b2") - 2808 .dwattr $C$DW$311, DW_AT_location[DW_OP_regx 0x7a] - 2809$C$DW$312 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R30_b3") - 2810 .dwattr $C$DW$312, DW_AT_location[DW_OP_regx 0x7b] - 2811$C$DW$313 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R31_b0") - 2812 .dwattr $C$DW$313, DW_AT_location[DW_OP_regx 0x7c] - 2813$C$DW$314 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R31_b1") - 2814 .dwattr $C$DW$314, DW_AT_location[DW_OP_regx 0x7d] - 2815$C$DW$315 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R31_b2") - 2816 .dwattr $C$DW$315, DW_AT_location[DW_OP_regx 0x7e] - 2817$C$DW$316 .dwtag DW_TAG_TI_assign_register, DW_AT_name("R31_b3") - 2818 .dwattr $C$DW$316, DW_AT_location[DW_OP_regx 0x7f] - 2819 .dwendtag $C$DW$CU - 2820 - -No Assembly Errors, No Assembly Warnings diff --git a/books/pru-cookbook/07more/code/delay-test.pru0.c b/books/pru-cookbook/07more/code/delay-test.pru0.c deleted file mode 100644 index 9061e2562e2620260e90062a4494009a96a405f4..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/delay-test.pru0.c +++ /dev/null @@ -1,28 +0,0 @@ -// Shows how to call an assembly routine with one parameter -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -// The function is defined in delay.asm in same dir -// We just need to add a declaration here, the definition can be -// separately linked -extern void my_delay_cycles(uint32_t); - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t gpio = P9_31; // Select which pin to toggle.; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - while(1) { - __R30 |= gpio; // Set the GPIO pin to 1 - my_delay_cycles(1); - __R30 &= ~gpio; // Clear the GPIO pin - my_delay_cycles(1); - } -} diff --git a/books/pru-cookbook/07more/code/delay-test2.pru0.c b/books/pru-cookbook/07more/code/delay-test2.pru0.c deleted file mode 100644 index 7830ab9a06ec8d18d1dea25ddecea7eec4e198fb..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/delay-test2.pru0.c +++ /dev/null @@ -1,32 +0,0 @@ -// Shows how to call an assembly routine with a return value -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define TEST 100 - -// The function is defined in delay.asm in same dir -// We just need to add a declaration here, the definition can be -// separately linked -extern uint32_t my_delay_cycles(uint32_t); - -uint32_t ret; - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t gpio = P9_31; // Select which pin to toggle.; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - while(1) { - __R30 |= gpio; // Set the GPIO pin to 1 - ret = my_delay_cycles(1); - __R30 &= ~gpio; // Clear the GPIO pin - ret = my_delay_cycles(1); - } -} diff --git a/books/pru-cookbook/07more/code/delay.pru0.asm b/books/pru-cookbook/07more/code/delay.pru0.asm deleted file mode 100644 index 1c1cce7d1d986e55bc3bc3f8bf3cc3e3d783fc21..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/delay.pru0.asm +++ /dev/null @@ -1,9 +0,0 @@ -; This is an example of how to call an assembly routine from C. -; Mark A. Yoder, 9-July-2018 - .global my_delay_cycles -my_delay_cycles: -delay: - sub r14, r14, 1 ; The first argument is passed in r14 - qbne delay, r14, 0 - - jmp r3.w2 ; r3 contains the return address \ No newline at end of file diff --git a/books/pru-cookbook/07more/code/delay2.pru0.asm b/books/pru-cookbook/07more/code/delay2.pru0.asm deleted file mode 100644 index a66aa74de8e479f839736b0420b1bfeed1957597..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/delay2.pru0.asm +++ /dev/null @@ -1,15 +0,0 @@ -; This is an example of how to call an assembly routine from C with a return value. -; Mark A. Yoder, 9-July-2018 - - .cdecls "delay-test2.pru0.c" - - .global my_delay_cycles -my_delay_cycles: -delay: - sub r14, r14, 1 ; The first argument is passed in r14 - qbne delay, r14, 0 - - ldi r14, TEST ; TEST is defined in delay-test2.c - ; r14 is the return register - - jmp r3.w2 ; r3 contains the return address \ No newline at end of file diff --git a/books/pru-cookbook/07more/code/logic.c b/books/pru-cookbook/07more/code/logic.c deleted file mode 100644 index f774708d22f3ef26ede77fe45a8057d7f1e905f2..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/logic.c +++ /dev/null @@ -1,34 +0,0 @@ -// Access the CYCLE and STALL registers -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - // Copy lower 8 bits to r16 - struct { - uint8_t b0; - uint8_t b1; - uint8_t b2; - uint8_t b3; - } r17; - - // Clear SYSCFG[STANDBY_INIT] to enable OCP master port - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - -// r16.b0 = __R31.b0; - __asm(" mov r17.b0, r31.b0"); - __delay_cycles(1); - r17.b1 = (uint32_t) __R31; - __delay_cycles(1); - r17.b2 = (uint32_t) __R31; - __delay_cycles(1); - r17.b3 = (uint32_t) __R31; - - __xout(10, 16, 0, r17); - - __halt(); -} diff --git a/books/pru-cookbook/07more/code/logic_setup.sh b/books/pru-cookbook/07more/code/logic_setup.sh deleted file mode 100644 index 2253459cf1f8efde2e61281525f26872a3940a42..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/logic_setup.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# -export PRUN=0 -export TARGET=logic -echo PRUN=$PRUN -echo TARGET=$TARGET - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_31 P9_29 P9_30 P9_28 P9_92 P9_27 P9_91 P9_25 " -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P1_36 P1_33 P2_32 P2_30 P1_31 P2_34 P2_28 P1_29" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruin - config-pin -q $pin -done diff --git a/books/pru-cookbook/07more/code/resource_table_pru0.h b/books/pru-cookbook/07more/code/resource_table_pru0.h deleted file mode 100644 index 06c148006b7a892d30f16d69891c6165e3525161..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/resource_table_pru0.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Texas Instruments Incorporated nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * ======== rsc_table_pru.h ======== - * - * Define the resource table entries for PRU0. This will be - * incorporated into corresponding base images, and used by the remoteproc - * on the host-side to allocated/reserve resources. Note the remoteproc - * driver requires that all PRU firmware be built with a resource table. - * - * - */ - -#ifndef _RSC_TABLE_PRU_H_ -#define _RSC_TABLE_PRU_H_ - -#include <stddef.h> -#include <rsc_types.h> -#include "pru_virtio_ids.h" - -/* - * Sizes of the virtqueues (expressed in number of buffers supported, - * and must be power of 2) - */ -#define PRU_RPMSG_VQ0_SIZE 2 -#define PRU_RPMSG_VQ1_SIZE 2 - -/* flip up bits whose indices represent features we support */ -#define RPMSG_PRU_C0_FEATURES 1 - -/* Definition for unused interrupts */ -#define HOST_UNUSED 255 - -/* Mapping sysevts to a channel. Each pair contains a sysevt, channel */ -struct ch_map pru_intc_map[] = { {17, 1}, {18, 0}, {19, 2}, {20, 3}, {21, 0}, - {22, 1}, {24, 4}, {25, 5}, {26, 6}, {27, 7}, -}; - -struct my_resource_table { - struct resource_table base; - - uint32_t offset[1]; /* Should match 'num' in actual definition */ - - /* intc definition */ - struct fw_rsc_custom pru_ints; -}; - -#pragma DATA_SECTION(am335x_pru_remoteproc_ResourceTable, ".resource_table") -#pragma RETAIN(am335x_pru_remoteproc_ResourceTable) -struct my_resource_table am335x_pru_remoteproc_ResourceTable = { - 1, /* we're the first version that implements this */ - 1, /* number of entries in the table */ - 0, 0, /* reserved, must be zero */ - /* offsets to entries */ - { - offsetof(struct my_resource_table, pru_ints), - }, - - { - TYPE_CUSTOM, TYPE_PRU_INTS, - sizeof(struct fw_rsc_custom_ints), - { /* PRU_INTS version */ - 0x0000, - /* Channel-to-host mapping, 255 for unused */ - 0, 1, 2, 3, 0, 6, 1, 7, HOST_UNUSED, HOST_UNUSED, - /* Number of evts being mapped to channels */ - (sizeof(pru_intc_map) / sizeof(struct ch_map)), - /* Pointer to the structure containing mapped events */ - pru_intc_map, - }, - }, -}; - -#endif /* _RSC_TABLE_PRU_H_ */ diff --git a/books/pru-cookbook/07more/code/setup.sh b/books/pru-cookbook/07more/code/setup.sh deleted file mode 100644 index f1d0d9db334b125b68171dd18ce04abec94ace08..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/setup.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# -export TARGET=delay-test.pru0 -export TARGETasm=delay.pru0 -echo TARGET=$TARGET -echo TARGETasm=$TARGETasm - -# Configure the PRU pins based on which Beagle is running -machine=$(awk '{print $NF}' /proc/device-tree/model) -echo -n $machine -if [ $machine = "Black" ]; then - echo " Found" - pins="P9_31" -elif [ $machine = "Blue" ]; then - echo " Found" - pins="" -elif [ $machine = "PocketBeagle" ]; then - echo " Found" - pins="P1_33" -else - echo " Not Found" - pins="" -fi - -for pin in $pins -do - echo $pin - config-pin $pin pruout - config-pin -q $pin -done diff --git a/books/pru-cookbook/07more/code/xin.pru1.c b/books/pru-cookbook/07more/code/xin.pru1.c deleted file mode 100644 index 56d4a68209d974c51e50559cc6d90ff9046f3a68..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/xin.pru1.c +++ /dev/null @@ -1,34 +0,0 @@ -// From: http://git.ti.com/pru-software-support-package/pru-software-support-package/trees/master/examples/am335x/PRU_Direct_Connect1 -#include <stdint.h> -#include "resource_table_empty.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -typedef struct { - uint32_t reg5; - uint32_t reg6; - uint32_t reg7; - uint32_t reg8; - uint32_t reg9; - uint32_t reg10; -} bufferData; - -bufferData dmemBuf; - -/* PRU-to-ARM interrupt */ -#define PRU1_PRU0_INTERRUPT (18) -#define PRU1_ARM_INTERRUPT (20+16) - -void main(void) -{ - /* Let PRU0 know that I am awake */ - __R31 = PRU1_PRU0_INTERRUPT+16; - - /* XFR registers R5-R10 from PRU0 to PRU1 */ - /* 14 is the device_id that signifies a PRU to PRU transfer */ - __xin(14, 5, 0, dmemBuf); - - /* Halt the PRU core */ - __halt(); -} diff --git a/books/pru-cookbook/07more/code/xout-cycle.pru0.c b/books/pru-cookbook/07more/code/xout-cycle.pru0.c deleted file mode 100644 index 339fedfc38eed9d9372a0b55ee74dfc031be70c2..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/xout-cycle.pru0.c +++ /dev/null @@ -1,62 +0,0 @@ -// Version of xout.c with code to use CYCLE to count cycle times. -#include <stdint.h> -#include <pru_intc.h> -#include <pru_ctrl.h> -#include "resource_table_pru0.h" - -#define PRU0 - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -typedef struct { - uint32_t reg5; - uint32_t reg6; - uint32_t reg7; - uint32_t reg8; - uint32_t reg9; - uint32_t reg10; -} bufferData; - -bufferData dmemBuf; - -/* PRU-to-ARM interrupt */ -#define PRU1_PRU0_INTERRUPT (18) -#define PRU0_ARM_INTERRUPT (19+16) - -void main(void) -{ - uint32_t cycleXX; // Use a name that's easy to search - /* Clear the status of all interrupts */ - CT_INTC.SECR0 = 0xFFFFFFFF; - CT_INTC.SECR1 = 0xFFFFFFFF; - - /* Load the buffer with default values to transfer */ - dmemBuf.reg5 = 0xDEADBEEF; - dmemBuf.reg6 = 0xAAAAAAAA; - dmemBuf.reg7 = 0x12345678; - dmemBuf.reg8 = 0xBBBBBBBB; - dmemBuf.reg9 = 0x87654321; - dmemBuf.reg10 = 0xCCCCCCCC; - - /* Poll until R31.30 (PRU0 interrupt) is set - * This signals PRU1 is initialized */ - while ((__R31 & (1<<30)) == 0) { - } - - /* XFR registers R5-R10 from PRU0 to PRU1 */ - /* 14 is the device_id that signifies a PRU to PRU transfer */ - PRU0_CTRL.CTRL_bit.CTR_EN = 1; // Enable cycle counter - - __xout(14, 5, 0, dmemBuf); - - cycleXX = PRU0_CTRL.CYCLE; // Read cycle and store in a register - - /* Clear the status of the interrupt */ - CT_INTC.SICR = PRU1_PRU0_INTERRUPT; - - dmemBuf.reg5 = cycleXX; - - /* Halt the PRU core */ - __halt(); -} diff --git a/books/pru-cookbook/07more/code/xout.pru0.c b/books/pru-cookbook/07more/code/xout.pru0.c deleted file mode 100644 index bfcdbf5f927700c2d250abc0f28850bb4884392f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/xout.pru0.c +++ /dev/null @@ -1,52 +0,0 @@ -// From: http://git.ti.com/pru-software-support-package/pru-software-support-package/trees/master/examples/am335x/PRU_Direct_Connect0 -#include <stdint.h> -#include <pru_intc.h> -#include "resource_table_pru0.h" - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -typedef struct { - uint32_t reg5; - uint32_t reg6; - uint32_t reg7; - uint32_t reg8; - uint32_t reg9; - uint32_t reg10; -} bufferData; - -bufferData dmemBuf; - -/* PRU-to-ARM interrupt */ -#define PRU1_PRU0_INTERRUPT (18) -#define PRU0_ARM_INTERRUPT (19+16) - -void main(void) -{ - /* Clear the status of all interrupts */ - CT_INTC.SECR0 = 0xFFFFFFFF; - CT_INTC.SECR1 = 0xFFFFFFFF; - - /* Load the buffer with default values to transfer */ - dmemBuf.reg5 = 0xDEADBEEF; - dmemBuf.reg6 = 0xAAAAAAAA; - dmemBuf.reg7 = 0x12345678; - dmemBuf.reg8 = 0xBBBBBBBB; - dmemBuf.reg9 = 0x87654321; - dmemBuf.reg10 = 0xCCCCCCCC; - - /* Poll until R31.30 (PRU0 interrupt) is set - * This signals PRU1 is initialized */ - while ((__R31 & (1<<30)) == 0) { - } - - /* XFR registers R5-R10 from PRU0 to PRU1 */ - /* 14 is the device_id that signifies a PRU to PRU transfer */ - __xout(14, 5, 0, dmemBuf); - - /* Clear the status of the interrupt */ - CT_INTC.SICR = PRU1_PRU0_INTERRUPT; - - /* Halt the PRU core */ - __halt(); -} diff --git a/books/pru-cookbook/07more/code/xout_run.sh b/books/pru-cookbook/07more/code/xout_run.sh deleted file mode 100755 index 158cf472beddca5d3781df4026dbeea4de3338b7..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/07more/code/xout_run.sh +++ /dev/null @@ -1,3 +0,0 @@ -# Be sure to start PRU 0 before PRU 1. PRU 0 will wait for PRU 1 to signal it. -make TARGET=xout.pru0 -make TARGET=xin.pru1 diff --git a/books/pru-cookbook/07more/more.rst b/books/pru-cookbook/07more/more.rst index 5965b10ddae227012653438913f6ec413e7d0c30..5f24de08ca5beb8ad03dd1bc389e382bbb646360 100644 --- a/books/pru-cookbook/07more/more.rst +++ b/books/pru-cookbook/07more/more.rst @@ -43,37 +43,37 @@ constant. Our new ``delay_cycles`` can take a runtime delay value. .. _more_delay-test: -.. literalinclude:: code/delay-test.pru0.c +.. literalinclude:: ../code/07more/delay-test.pru0.c :caption: delay-test.pru0.c :linenos: -:download:`delay-test.pru0.c <code/delay-test.pru0.c>` +:download:`delay-test.pru0.c <../code/07more/delay-test.pru0.c>` :ref:`more_delay` is the assembly code. .. _more_delay: -.. literalinclude:: code/delay.pru0.asm +.. literalinclude:: ../code/07more/delay.pru0.asm :caption: delay.pru0.asm :linenos: -:download:`delay.pru0.asm <code/delay.pru0.asm>` +:download:`delay.pru0.asm <../code/07more/delay.pru0.asm>` The ``Makefile`` has one addition that needs to be made to compile both :ref:`more_delay-test` and :ref:`more_delay`. If you look in the local ``Makefile`` you'll see: .. _more_makefile: -.. literalinclude:: code/Makefile +.. literalinclude:: ../code/07more/Makefile :caption: Makefile :linenos: -:download:`Makefile <code/Makefile>` +:download:`Makefile <../code/07more/Makefile>` This Makefle includes a common Makefile at ``/var/lib/cloud9/common/Makefile``, this the Makefile you need to edit. Edit ``/var/lib/cloud9/common/Makefile`` and go to line 195. -.. code-block:: bash +.. code-block:: shell-session $(GEN_DIR)/%.out: $(GEN_DIR)/%.o *$(GEN_DIR)/$(TARGETasm).o* @mkdir -p $(GEN_DIR) @@ -87,10 +87,10 @@ this addition once you are done with this example since it will break the other The following will compile and run everything. -.. code-block:: bash +.. code-block:: shell-session - bone$ *config-pin P9_31 pruout* - bone$ *make TARGET=delay-test.pru0 TARGETasm=delay.pru0* + bone$ config-pin P9_31 pruout + bone$ make TARGET=delay-test.pru0 TARGETasm=delay.pru0 /var/lib/cloud9/common/Makefile:29: MODEL=TI_AM335x_BeagleBone_Black,TARGET=delay-test.pru0 - Stopping PRU 0 - copying firmware file /tmp/cloud9-examples/delay-test.pru0.out to /lib/firmware/am335x-pru0-fw @@ -166,21 +166,21 @@ Solution .. _more_test2: -.. literalinclude:: code/delay-test2.pru0.c +.. literalinclude:: ../code/07more/delay-test2.pru0.c :caption: delay-test2.pru0.c :linenos: -:download:`delay-test2.pru0.c <code/delay-test2.pru0.c>` +:download:`delay-test2.pru0.c <../code/07more/delay-test2.pru0.c>` :ref:`more_delay2` is the assembly code. .. _more_delay2: -.. literalinclude:: code/delay2.pru0.asm +.. literalinclude:: ../code/07more/delay2.pru0.asm :caption: delay2.pru0.asm :linenos: -:download:`delay2.pru0.asm <code/delay2.pru0.asm>` +:download:`delay2.pru0.asm <../code/07more/delay2.pru0.asm>` An additional feature is shown in line 4 of :ref:`more_delay2`. The ``.cdecls "delay-test2.pru0.c"`` says to include any defines from ``delay-test2.pru0.c`` @@ -206,11 +206,11 @@ many times the PRU stalled fetching an instruction. .. _more_cycle: -.. literalinclude:: code/cycle.pru0.c +.. literalinclude:: ../code/07more/cycle.pru0.c :caption: cycle.pru0.c - Code to count cycles. :linenos: -:download:`cycle.pru0.c <code/cycle.pru0.c>` +:download:`cycle.pru0.c <../code/07more/cycle.pru0.c>` Discission ------------ @@ -244,26 +244,26 @@ You can see where ``cycle`` and ``stall`` are stored by looking into :ref:`more_ .. _more_cycle_list0: -.. literalinclude:: code/cycle.pru0.lst +.. literalinclude:: ../code/07more/cycle.pru0.lst :caption: /tmp/cloud9-examples/cycle.pru0.lst Lines 113..119 :lines: 113-119 :lineno-start: 113 :linenos: -:download:`cycle.pru0.lst <code/cycle.pru0.lst>` +:download:`cycle.pru0.lst <../code/07more/cycle.pru0.lst>` Here the ``LDI32`` instruction loads the address ``0x22000`` into ``r0``. This is the offset to the ``CTRL`` registers. Later in the file we see :ref:`more_cycle_list1`. .. _more_cycle_list1: -.. literalinclude:: code/cycle.pru0.lst +.. literalinclude:: ../code/07more/cycle.pru0.lst :caption: /tmp/cloud9-examples/cycle.pru0.lst Lines 146..152 :lines: 146-152 :lineno-start: 146 :linenos: -:download:`cycle.pru0.lst <code/cycle.pru0.lst>` +:download:`cycle.pru0.lst <../code/07more/cycle.pru0.lst>` The first ``LBBO`` takes the contents of ``r0`` and adds the offset 12 to it and copies 4 bytes @@ -274,10 +274,10 @@ thus ``STALL`` is now in ``r0``. Now fire up **prudebug** and look at those registers. -.. code-block:: bash +.. code-block:: shell-session - bone$ *sudo prudebug* - PRU0> *r* + bone$ sudo prudebug + PRU0> r r r Register info for PRU0 @@ -319,28 +319,28 @@ The ``pass:[__]xout()`` and ``pass:[__]xin()`` intrinsics are able to transfer u .. _more_xout: -.. literalinclude:: code/xout.pru0.c +.. literalinclude:: ../code/07more/xout.pru0.c :caption: xout.pru0.c :linenos: -:download:`xout.pru0.c <code/xout.pru0.c>` +:download:`xout.pru0.c <../code/07more/xout.pru0.c>` PRU 1 waits at line 41 until PRU 0 signals it. :ref:`more_xin` sends an interrupt to PRU 0 and waits for it to send the data. .. _more_xin: -.. literalinclude:: code/xin.pru1.c +.. literalinclude:: ../code/07more/xin.pru1.c :caption: xin.pru1.c :linenos: -:download:`xin.pru1.c <code/xin.pru1.c>` +:download:`xin.pru1.c <../code/07more/xin.pru1.c>` Use ``prudebug`` to see registers R5-R10 are transferred from PRU 0 to PRU 1. -.. code-block:: bash +.. code-block:: shell-session - PRU0> *r* + PRU0> r Register info for PRU0 Control register: 0x00000001 Reset PC:0x0000 STOPPED, FREE_RUN, COUNTER_DISABLED, NOT_SLEEPING, PROC_DISABLED @@ -441,8 +441,8 @@ If you really need speed, considering using ``pass:[__]xout()`` and ``pass:[__]x Copyright ========== -.. literalinclude:: code/copyright.c +.. literalinclude:: ../code/07more/copyright.c :caption: copyright.c :linenos: -:download:`copyright.c <code/copyright.c>` +:download:`copyright.c <../code/07more/copyright.c>` diff --git a/books/pru-cookbook/08ai/ai.rst b/books/pru-cookbook/08ai/ai.rst index d2e055c07bbeb80cc9334210f4db78e3503c589e..fdf9655e46364eecd68fb0819d2d9993375edd0e 100644 --- a/books/pru-cookbook/08ai/ai.rst +++ b/books/pru-cookbook/08ai/ai.rst @@ -155,7 +155,7 @@ Solution The ``show-pins.pl`` command does what you want, but you have to set it up first. -.. code-block:: bash +.. code-block:: shell-session bone$ cd ~/bin bone$ ln -s /opt/scripts/device/bone/show-pins.pl . @@ -164,7 +164,7 @@ This creates a symbolic link to the ``show-pins.pl`` command that is rather hidd away. The link is put in the ``bin`` directory which is in the default command ``$PATH``. Now you can run ``show-pins.pl`` from anywhere. -.. code-block:: bash +.. code-block:: shell-session bone$ *show-pins.pl* P9.19a 16 R6 7 fast rx up i2c4_scl @@ -180,7 +180,7 @@ which direction they are set by using ``gpioinfo`` and the chip number. Unfortunately you subtract one from the port number to get the chip number. So ``P8.35b`` is on chip number 2. -.. code-block:: bash +.. code-block:: shell-session bone$ *gpioinfo 2* line 0: unnamed unused *input* active-high @@ -194,7 +194,7 @@ Here we see both (lines 0 and 1) are set to input. Adding ``-v`` gives more details. -.. code-block:: bash +.. code-block:: shell-session bone$ *show-pins.pl -v* ... @@ -210,7 +210,7 @@ Adding ``-v`` gives more details. The best way to use ``show-pins.pl`` is with ``grep``. To see all the pru pins try: -.. code-block:: bash +.. code-block:: shell-session bone$ *show-pins.pl | grep -i pru | sort* P8.13 100 D3 c fast rx pr1_pru1_gpi7 @@ -236,7 +236,7 @@ Problem I want to configure another pin for the PRU, but I get an error. -.. code-block:: bash +.. code-block:: shell-session bone$ *config-pin P9_31 pruout* ERROR: open() for /sys/devices/platform/ocp/ocp:P9_31_pinmux/state failed, No such file or directory @@ -271,14 +271,14 @@ We see that when ``P9_31a`` is set to ``MODE13`` it will be a PRU **out** pin. Next, find which kernel you are running. -.. code-block:: bash +.. code-block:: shell-session bone$ uname -a Linux ai 4.14.108-ti-r131 #1buster SMP PREEMPT Tue Mar 24 19:18:36 UTC 2020 armv7l GNU/Linux I'm running the 4.14 version. Now look in ``/opt/source`` for your kernel. -.. code-block:: bash +.. code-block:: shell-session bone$ cd /opt/source/ bone$ ls @@ -288,9 +288,9 @@ I'm running the 4.14 version. Now look in ``/opt/source`` for your kernel. *dtb-4.14-ti* pyctrl dtb-4.19-ti py-uio -``am5729-beagleboneai.dts`` is the file we need to edit. Search for ``P9_31``. You'l see: +``am5729-beagleboneai.dts`` is the file we need to edit. Search for ``P9_31``. You'll see: -.. code-block:: bash +.. code-block:: shell-session :linenos: DRA7XX_CORE_IOPAD(0x36DC, MUX_MODE14) // B13: P9.30: mcasp1_axr10.off // @@ -301,7 +301,7 @@ Change the ``MUX_MODE14`` to ``MUX_MODE13`` for output, or ``MUX_MODE12`` for in Compile and install. The first time will take a while since it recompiles all the dts files. -.. code-block:: bash +.. code-block:: shell-session :linenos: bone$ make @@ -358,11 +358,11 @@ the adapted code. .. _ai_pwm1: -.. literalinclude:: code/pwm1.pru2_1.c +.. literalinclude:: ../code/08ai/pwm1.pru2_1.c :caption: pwm1.pru2_1.c :linenos: -:download:`pwm1.pru2_1.c <code/pwm1.pru2_1.c>` +:download:`pwm1.pru2_1.c <../code/08ai/pwm1.pru2_1.c>` One line 6 ``P9_31`` is defined as ``(0x1:ref:`10)``, which means shift ``1`` over by 10 bits. diff --git a/books/pru-cookbook/08ai/code/Makefile b/books/pru-cookbook/08ai/code/Makefile deleted file mode 100644 index a7557fdaa22988d89cec879477ded78522d7116f..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/08ai/code/Makefile +++ /dev/null @@ -1 +0,0 @@ -include /var/lib/cloud9/common/Makefile diff --git a/books/pru-cookbook/08ai/code/pwm1.pru2_1.c b/books/pru-cookbook/08ai/code/pwm1.pru2_1.c deleted file mode 100644 index d35f2185cffd779cb1f18e252fe5252b803cd26e..0000000000000000000000000000000000000000 --- a/books/pru-cookbook/08ai/code/pwm1.pru2_1.c +++ /dev/null @@ -1,24 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include "resource_table_empty.h" -#include "prugpio.h" - -#define P9_31 (0x1<<10) - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - -void main(void) -{ - uint32_t gpio = P9_31; // Select which pin to toggle.; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - while(1) { - __R30 |= gpio; // Set the GPIO pin to 1 - __delay_cycles(100000000); - __R30 &= ~gpio; // Clear the GPIO pin - __delay_cycles(100000000); - } -} diff --git a/books/pru-cookbook/code b/books/pru-cookbook/code new file mode 160000 index 0000000000000000000000000000000000000000..21a8ba352d2e6dd793d3029126e6a8c9481eeaf2 --- /dev/null +++ b/books/pru-cookbook/code @@ -0,0 +1 @@ +Subproject commit 21a8ba352d2e6dd793d3029126e6a8c9481eeaf2 diff --git a/books/pru-cookbook/projects.rst b/books/pru-cookbook/projects.rst index 60a2482b22bcb7942b2a6a9cf66657b4077436c1..3fbc73fcca3292607a2550b8e7d63dfa3cf2d864 100644 --- a/books/pru-cookbook/projects.rst +++ b/books/pru-cookbook/projects.rst @@ -45,8 +45,8 @@ documentation visit the PRU-ICSS wiki. **Type:** Project Tutorial Code Library **References:** - * http://beagleboard.org/CapeContest/entries/BeagleBone+DMX+Cape/ - * http://blog.boxysean.com/2012/08/12/first-steps-with-the-beaglebone-pru/ + * https://beagleboard.org/CapeContest/entries/BeagleBone+DMX+Cape/ + * https://web.archive.org/web/20130921033304/blog.boxysean.com/2012/08/12/first-steps-with-the-beaglebone-pru/ * https://github.com/boxysean/beaglebone-DMX .. dropdown:: **Interacto** @@ -60,8 +60,8 @@ documentation visit the PRU-ICSS wiki. **Type:** Project 1 Project 2 Code Library **References:** - * http://beagleboard.org/CapeContest/entries/Interacto/ - * http://www.hitchhikeree.org/beaglebone_capes/interacto/ + * https://beagleboard.org/CapeContest/entries/Interacto/ + * https://web.archive.org/web/20130507141634/http://www.hitchhikeree.org:80/beaglebone_capes/interacto/ * https://github.com/cclark2/interacto_bbone_cape .. dropdown:: **Replicape: 3D Printer** @@ -100,7 +100,10 @@ documentation visit the PRU-ICSS wiki. **References:** * http://beagleboard.org/CapeContest/entries/Geiger+Cape/ * http://elinux.org/BeagleBone/GeigerCapePrototype - * https://github.com/mranostay/beaglebone-telemetry-presentation + +.. note:: + + #TODO#: the git repo was taken down .. dropdown:: **Servo Controller Foosball Table** :open: @@ -143,10 +146,13 @@ documentation visit the PRU-ICSS wiki. **References:** * http://www.youtube.com/watch?v=dEes9k7-DYY - * https://github.com/cagdasc/Chubby1_v1 * http://www.youtube.com/watch?v=JXyewd98e9Q * http://www.ti.com/lit/wp/spry235/spry235.pdf +.. note:: + + #TODO#: The Chubby1_v1 repo on github.com for user cagdasc was taken down. + .. dropdown:: **Software UART** :open: diff --git a/intro/contribution/git-usage.rst b/intro/contribution/git-usage.rst index 0607ed22f5e2cbfc9c2ff3ee51938dea4124bfe2..10062fb01f89d6b47fbf78524c42feff7e0d7bf1 100644 --- a/intro/contribution/git-usage.rst +++ b/intro/contribution/git-usage.rst @@ -581,7 +581,7 @@ There are a lot of different nice guides to using Git on the web: - `Understanding Git Conceptually <https://www.sbf5.com/~cduan/technical/git/>`_ - `git ready: git tips <http://gitready.com/>`_ -- <http://http://cheat.errtheblog.com/s/git> +- https://web.archive.org/web/20121115132047/http://cheat.errtheblog.com/s/git - https://docs.scipy.org/doc/numpy-1.15.1/dev/gitwash/development_workflow.html Numpy is also evaluating git - https://github.github.com/training-kit/downloads/github-git-cheat-sheet diff --git a/intro/contribution/rst-cheat-sheet.rst b/intro/contribution/rst-cheat-sheet.rst index 1adb70a9cb5c089fd4989922b916ac59acab1a38..4f4722700f322833c06679a9dfe3cf5dd2f563fa 100644 --- a/intro/contribution/rst-cheat-sheet.rst +++ b/intro/contribution/rst-cheat-sheet.rst @@ -3,7 +3,33 @@ ReStructuredText Cheat Sheet ############################ -BeagleBoard docs is mostly written with ReStructuredText (r) +BeagleBoard.org docs site uses ReStructuredText (rst) which is a file format [#]_ for textual data used primarily +in the Python programming language community for technical documentation. It is part of the Docutils +project of the Python Doc-SIG, aimed at creating a set of tools for Python similar to Javadoc for Java +or Plain Old Documentation for Perl. If you are new with rst you may go through this rst cheat sheet [#]_ [#]_ [#]_ +chapter to gain enough skills to edit and update any page on the BeagleBoard.org docs site. some things +you should keep in mind while working with rst, + + +1. like Python, RST syntax is sensitive to indentation ! +2. RST requires blank lines between paragraphs + +Text formatting +**************** + +With asterisk you can fomat the text as italic & bold, + +1. Sinlge asterisk (``*``) like ``*emphasis*`` gives you *italic text* +2. Double asterisk (``**``) like ``**strong emphasis**`` gives you **blod text** + +With backquote character (`) you can format the text as link & inline literal. + +1. See `Links`_ section on how single backquote can be used to create a link linke `this <www.beagleboard.org>`_. +2. With double back quotes before and after text you can easily create ``inline lierals``. + +.. note:: + backquote can be found below escape key on most keyboards. + Headings ********* @@ -40,4 +66,184 @@ more) the at least of the heading text, for example: <2> Shows the correct way of setting the document title (H1) with ``#``. + +Code +***** + +For adding a code snippet you can use tab indentation to start. For more refined code snippet display +we have the ``code-block`` and ``literalinclude`` directives as shown below. + + +Indentation +============ + +This the simplest way of adding code snippet in ReStructuredText. + +.. callout:: + + .. code-block:: ReStructuredText + + This is python code:: <1> + <2> + import numpy as np <3> + import math + .. annotations:: + + <1> Provide title of your code snippet and add ``::`` after the text. + + <2> Empty line after the title is required for this to work. + + <3> Start adding your code. + + +Output +------ + +This is python code:: + + import numpy as np + import math + +Code block +=========== + +Simple indentation only supports python program highlighting but, with code block you can +specify which language is your code written in. ``code-block`` also provides better readability +and line numbers support you can useas shown below. + +.. callout:: + + .. code-block:: ReStructuredText + + .. code-block:: python <1> + :linenos: <2> + + import numpy as np <3> + import math + + + .. annotations:: + + <1> Start with adding ``.. code-block::`` and then add language of code like python, bash, javascript, etc. + + <2> Optionally, you can enable line numbers for your code. + + <3> Start adding your code. + +Output +------ + +.. code-block:: python + :linenos: + + import numpy as np + import math + + +Literal include +================ + +To include the entire code or a code snippet from a program file you can use this directive. + +.. callout:: + + .. code-block:: ReStructuredText + + .. literalinclude:: filename.cpp <1> + :caption: <2> + :linenos: <3> + :language: C++ <4> + :lines: 2, 4-7 <5> + :start-after: 4 <6> + :end-before: 7 <7> + :lineno-start: 113 <8> + + .. annotations:: + + <1> Provide the code file destination. + + <2> Provide caption for the code. + + <3> Enable line numbers. + + <4> Set programming language. + + <5> Cherry pick some lines from a big program file. + + <6> Display the code snippet from a specific line number. + + <7> Set a specific line number as end of code snippet. + + <8> Instead of starting line number from 1 start it with some other number. It's useful when you use :lines:, :start-after:, and :end-before:. + +Links +****** + +We have three types of links to use in sphinx, + +1. External links (http(s) links). +2. Implicit links to title (within same rst file). +3. Explicit links (labels that can be used anywhere in the project). + +External links +*************** + +For a simple link to a site the format is + +.. code-block:: rst + + `<www.beagleboard.org>`_ + +this will be rendered as `<www.beagleboard.org>`_. + +You can also include a label to the link as shown below. + +.. code-block:: rst + + `BeagleBoard.org <www.beagleboard.org>`_ + +this will be rendered as `BeagleBoard.org <www.beagleboard.org>`_. + +Implicit Links +*************** + +These are basically the headings inside the rst page which can +be used as a link to that section within document. + +.. code-block:: rst + + `Links`_ + +when rendered it becomes `Links`_ + +Explicit link +************* + +These are special links you can assign to a specific part of the document and reference anywhere +in the project unlike implicit links which can be used only within the document they are defined. +On top of each page you'll see some text like ``.. _rst-cheat-sheet:`` is used to create a +label for this chapter. These are called the explicit links amd you can reference these using two methods. + +.. code-block:: rst + :linenos: + + rst-cheat-sheet_ + +.. code-block:: rst + :linenos: + :lineno-start: 2 + + :ref:`<rst-cheat-sheet>`_ + +Both can be used inside/outside of the document and the rendered link will take you directly to that specific segment. + +.. rubric:: footnotes + +.. [#] `reStructuredText wiki page <https://en.wikipedia.org/wiki/ReStructuredText>`_ + +.. [#] `Sphinx and RST syntax guide (0.9.3) <https://thomas-cokelaer.info/tutorials/sphinx/rest_syntax.html#internal-and-external-links>`_ + +.. [#] `Quick reStructuredText (sourceforge) <https://docutils.sourceforge.io/docs/user/rst/quickref.html#hyperlink-targets>`_ + +.. [#] `A two-page cheatsheet for restructured text <https://github.com/ralsina/rst-cheatsheet>`_ \ No newline at end of file diff --git a/intro/support/getting-started.rst b/intro/support/getting-started.rst index 7428e3dc2e740cce76c47e2df9ebfcfcb574a88f..dd2c78dee207143b08185c554cf5e5d8e595352f 100644 --- a/intro/support/getting-started.rst +++ b/intro/support/getting-started.rst @@ -191,7 +191,7 @@ an older operating system or need additional drivers for serial access to older 1. Windows Driver Certification warning may pop up two or three times. Click "Ignore", "Install" or "Run". 2. To check if you're running 32 or 64-bit Windows see `this <https://support.microsoft.com/en-us/topic/determine-whether-your-computer-is-running-a-32-bit-version-or-64-bit-version-of-the-windows-operating-system-1b03ca69-ac5e-4b04-827b-c0c47145944b>`_. - 3. On systems without the latest service release, you may get an error (0xc000007b). In that case, please install the following and retry: https://www.microsoft.com/en-us/download/confirmation.aspx?id=13523 + 3. On systems without the latest service release, you may get an error (0xc000007b). In that case, please perform the following and retry: https://answers.microsoft.com/en-us/windows/forum/all/windows-10-error-code-0xc000007b/02b74e7d-ce19-4ba4-90f0-e16e8d911866 4. You may need to reboot Windows. 5. These drivers have been tested to work up to Windows 10 diff --git a/projects/simppru/examples/read_counter.rst b/projects/simppru/examples/read_counter.rst index 94411118b5b9866a682a66e447d1a3f597ab4564..8177a350631821b71cf89629443bce3ec8979bdf 100644 --- a/projects/simppru/examples/read_counter.rst +++ b/projects/simppru/examples/read_counter.rst @@ -18,7 +18,7 @@ Code Explanation ------------ -Since, PRU's hardware counter works at 200 MHz, it counts upto 2 x 108 +Since, PRU's hardware counter works at 200 MHz, it counts up to 2 x 108 cycles in 1 second. So, this can be reliably used to count time without using ``delay``, as we can find exactly how much time 1 cycle takes.