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/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 8d751b3e65e06a8dd4e47c9ef6f28f370d60ca24..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 defination can be -// seperately 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 ab61e79eaafed3a7198532358d9ae3415559048f..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 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 8cb8146f74c88ee890a5a251108c19642cdb0c75..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 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 d268d33b637cb9d51a9928589a69ce158101a4e2..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 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 15df54495ecf681b3707a42dfaa6dfae65990559..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 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..d2188dad281e1ea673a93e4c686c0c4424dce9a9 100644 --- a/books/pru-cookbook/02start/start.rst +++ b/books/pru-cookbook/02start/start.rst @@ -278,29 +278,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. @@ -331,10 +331,10 @@ is some code that blinks the ``USR3`` LED ten times using the PRU. 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 +347,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 +366,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/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 c566573f6f681f7642e61d5c159c8558d3895d33..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 interupts so the PRUs can be syncronized. -// 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 cf5c241c99addc0d8b958724554e078f9a53412c..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 interupts so the PRUs can be syncronized. -// 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/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 73055d9f0662483f6e9cc03ef266b670f571e1f0..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 witten 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 f2e131765eaf0e5bd13c719287eeb04b82b8d2cd..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 witten 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 337ecbb23cb0920a687b30b3e50dcdbf5ae86f86..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 defination can be -// seperately 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 763b3a7d7b0452139cb817b0d56bf5e13688e0f6..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 defination can be -// seperately 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 e1f1da03d37ece54ca7c577b4244bd8abbbc921f..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 retun 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/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..155c7a92ca8352a75c97beb7d54ce022220d4f03 --- /dev/null +++ b/books/pru-cookbook/code @@ -0,0 +1 @@ +Subproject commit 155c7a92ca8352a75c97beb7d54ce022220d4f03