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.