summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Reeder2017-12-20 17:04:02 -0600
committerJason Reeder2017-12-20 17:04:02 -0600
commit30b3981dbcbde2759a3da6fb624a867868eefd2d (patch)
treebe85b955821cca121f6fa1c73cd1fee7b0ff1402
downloadtida01555-30b3981dbcbde2759a3da6fb624a867868eefd2d.tar.gz
tida01555-30b3981dbcbde2759a3da6fb624a867868eefd2d.tar.xz
tida01555-30b3981dbcbde2759a3da6fb624a867868eefd2d.zip
Initial commit
Signed-off-by: Jason Reeder <jreeder@ti.com>
-rw-r--r--ARM_User_Space_App/Makefile66
-rw-r--r--ARM_User_Space_App/arm_user_space_app.c306
-rwxr-xr-xARM_User_Space_App/gen/ARM_User_Space_App.outbin0 -> 19340 bytes
-rw-r--r--Makefile14
-rw-r--r--PRUMulti-channelADCInterfaceReferen_manifest.html300
-rw-r--r--PRU_ADS8688_Controller/AM335x_PRU.cmd121
-rw-r--r--PRU_ADS8688_Controller/Makefile125
-rw-r--r--PRU_ADS8688_Controller/PRU_ADS8688_Controller.c391
-rw-r--r--PRU_ADS8688_Controller/gen/PRU_ADS8688_Controller.asm3844
-rw-r--r--PRU_ADS8688_Controller/gen/PRU_ADS8688_Controller.map293
-rw-r--r--PRU_ADS8688_Controller/gen/PRU_ADS8688_Controller.objectbin0 -> 35948 bytes
-rw-r--r--PRU_ADS8688_Controller/gen/PRU_ADS8688_Controller.outbin0 -> 47692 bytes
-rw-r--r--PRU_ADS8688_Controller/gen/PRU_ADS8688_Controller.pp8
-rw-r--r--PRU_ADS8688_Controller/resource_table_empty.h72
-rw-r--r--PRU_ADS8688_Interface/.PRU_ADS8688_Interface.asm.swpbin0 -> 28672 bytes
-rw-r--r--PRU_ADS8688_Interface/AM335x_PRU.cmd117
-rw-r--r--PRU_ADS8688_Interface/Makefile125
-rw-r--r--PRU_ADS8688_Interface/PRU_ADS8688_Interface.asm342
-rw-r--r--PRU_ADS8688_Interface/gen/PRU_ADS8688_Interface.map248
-rw-r--r--PRU_ADS8688_Interface/gen/PRU_ADS8688_Interface.objectbin0 -> 21532 bytes
-rw-r--r--PRU_ADS8688_Interface/gen/PRU_ADS8688_Interface.outbin0 -> 39764 bytes
-rwxr-xr-xdts/am335x-boneblack-pruadc.dts78
-rwxr-xr-xrun.sh13
23 files changed, 6463 insertions, 0 deletions
diff --git a/ARM_User_Space_App/Makefile b/ARM_User_Space_App/Makefile
new file mode 100644
index 0000000..1ad4b2e
--- /dev/null
+++ b/ARM_User_Space_App/Makefile
@@ -0,0 +1,66 @@
1# ARM_CCT environment variable must point to the ARM cross-compile toolchain. E.g.:
2#(Desktop Linux) export ARM_CCT=$(HOME)/ti-processor-sdk-linux-rt-amxxx-evm-ww.xx.yy.zz/
3#linux-devkit/sysroots/x86_64-arago-linux/usr/bin
4
5ifndef ARM_CCT
6define ERROR_BODY
7
8*******************************************************************************
9ARM_CCT environment variable is not set. Examples given:
10(Desktop Linux) export ARM_CCT=$(HOME)/ti-processor-sdk-linux-rt-amxxx-evm-ww.xx.yy.zz/
11linux-devkit/sysroots/x86_64-arago-linux/usr/bin
12*******************************************************************************
13
14endef
15$(error $(ERROR_BODY))
16endif
17
18MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
19CURRENT_DIR := $(notdir $(patsubst %/,%,$(dir $(MKFILE_PATH))))
20PROJ_NAME=$(CURRENT_DIR)
21GEN_DIR=gen
22
23#Math library for square root function
24CFLAGS=-lm
25
26TARGET=$(GEN_DIR)/$(PROJ_NAME).out
27SOURCES=$(wildcard *.c)
28
29all: printStart $(TARGET) printEnd
30
31printStart:
32 @echo ''
33 @echo '************************************************************'
34 @echo 'Building project: $(PROJ_NAME)'
35
36printEnd:
37 @echo ''
38 @echo 'Output files can be found in the "$(GEN_DIR)" directory'
39 @echo ''
40 @echo 'Finished building project: $(PROJ_NAME)'
41 @echo '************************************************************'
42 @echo ''
43
44# Invokes the ARM x86 Cross Compiler to make the .out file
45$(TARGET):
46 @mkdir -p $(GEN_DIR)
47 @echo ''
48 @echo 'Building target: $@'
49 @echo 'Invoking: ARM x86 Cross Compiler'
50 $(ARM_CCT)/arm-linux-gnueabihf-gcc -Wall $(SOURCES) $(CFLAGS) -o $(TARGET) -lncurses -lpthread
51 @echo 'Finished building target: $@'
52
53.PHONY: all clean
54
55# Remove the $(GEN_DIR) directory
56clean:
57 @echo ''
58 @echo '************************************************************'
59 @echo 'Cleaning project: $(PROJ_NAME)'
60 @echo ''
61 @echo 'Removing files in the "$(GEN_DIR)" directory'
62 @rm -rf $(GEN_DIR)
63 @echo ''
64 @echo 'Finished cleaning project: $(PROJ_NAME)'
65 @echo '************************************************************'
66 @echo ''
diff --git a/ARM_User_Space_App/arm_user_space_app.c b/ARM_User_Space_App/arm_user_space_app.c
new file mode 100644
index 0000000..68a87db
--- /dev/null
+++ b/ARM_User_Space_App/arm_user_space_app.c
@@ -0,0 +1,306 @@
1/*
2 * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the
15 * distribution.
16 *
17 * * Neither the name of Texas Instruments Incorporated nor the names of
18 * its contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#include <sys/types.h>
35#include <unistd.h>
36#include <sys/stat.h>
37#include <sys/mman.h>
38#include <fcntl.h>
39#include <stdio.h>
40#include <stdlib.h>
41#include <unistd.h>
42#include <stdint.h>
43#include <math.h>
44#include <time.h>
45#include <string.h>
46#include <sched.h>
47#include <pthread.h>
48#include <limits.h>
49#include <ncurses.h>
50
51#define PING_ADDR 0x9FFC0000
52#define PONG_ADDR 0x9FFE0000
53#define PING 0
54#define PONG 1
55#define DATA_READY 0x0000FFFF
56#define IN_PROGRESS 0x00000000
57#define NUM_CHANNELS 48
58#define NUM_DEVICES 6
59#define NUM_SAMPLES_PER_CYCLE 640
60#define MAX_CSV_SAMPLES 65536
61
62volatile float min[NUM_CHANNELS];
63volatile float max[NUM_CHANNELS];
64volatile float result[NUM_CHANNELS];
65volatile uint16_t compensation, delay;
66volatile int16_t csv_samples[MAX_CSV_SAMPLES];
67volatile uint16_t csv_channel = 0;
68volatile uint32_t csv_sample_num = 0;
69volatile uint32_t csv_counter = 0;
70
71struct buffer {
72 uint32_t flags;
73 uint32_t comp_delay;
74 uint32_t samples[NUM_CHANNELS*NUM_SAMPLES_PER_CYCLE];
75};
76
77void *capture_func(void *data)
78{
79 int i, j;
80 struct buffer *ping_ptr, *pong_ptr;
81 uint32_t samples[NUM_CHANNELS*NUM_SAMPLES_PER_CYCLE];
82 uint64_t cur_square_sum = 0;
83 int16_t cur_min = INT16_MAX;
84 int16_t cur_max = INT16_MIN;
85 int16_t signed_val;
86 struct timespec sleep;
87 uint8_t curr_buff = PING;
88
89 /* Open the /dev/mem device to access the shared buffers */
90 int fd = open("/dev/mem",O_RDWR|O_SYNC);
91 if(fd < 0)
92 {
93 printf("Can't open /dev/mem\n");
94 return NULL;
95 }
96 /* mmap 128kB ping and pong buffers */
97 ping_ptr = (struct buffer *) mmap(0, getpagesize()*32, PROT_READ|PROT_WRITE, MAP_SHARED, fd, PING_ADDR);
98 pong_ptr = (struct buffer *) mmap(0, getpagesize()*32, PROT_READ|PROT_WRITE, MAP_SHARED, fd, PONG_ADDR);
99 if(ping_ptr == NULL || pong_ptr == NULL)
100 {
101 printf("Can't mmap\n");
102 return NULL;
103 }
104
105 /* put sine wave in memory */
106 /*
107 for(i = 0; i < NUM_SAMPLES_PER_CYCLE; i++) {
108 for(j = 0; j < NUM_CHANNELS; j++) {
109 ping_ptr->samples[i*NUM_CHANNELS+j] = sine_wave[i];
110 pong_ptr->samples[i*NUM_CHANNELS+j] = sine_wave[i];
111 }
112 }
113 */
114
115 /* Configure the sleep delay to 250us */
116 sleep.tv_sec = 0;
117 sleep.tv_nsec = 250000L;
118
119 /* Wait until PING buffer is in progress before beginning */
120 while (ping_ptr->flags != IN_PROGRESS)
121 nanosleep(&sleep, NULL);
122
123 while(1) {
124 /* Wait for the buffers to be ready and then memcpy the sample
125 * data to local memory. If the buffer is not ready yet, go to
126 * sleep for 250us before checking again. This thread is
127 * running at the highest priority so it needs to sleep when
128 * not in use or it will starve all other threads.
129 */
130 if (curr_buff == PING) {
131 while (ping_ptr->flags != DATA_READY)
132 nanosleep(&sleep, NULL);
133 compensation = ping_ptr->comp_delay >> 16;
134 delay = ping_ptr->comp_delay & 0xFFFF;
135 memcpy(samples, ping_ptr->samples, sizeof(samples));
136 curr_buff = PONG;
137 }
138 else {
139 while (pong_ptr->flags != DATA_READY)
140 nanosleep(&sleep, NULL);
141 compensation = pong_ptr->comp_delay >> 16;
142 delay = pong_ptr->comp_delay & 0xFFFF;
143 memcpy(samples, pong_ptr->samples, sizeof(samples));
144 curr_buff = PING;
145 }
146
147 /* Iterate through a full cycle for each channel */
148 for (j = 0; j < NUM_CHANNELS; j++) {
149 for(i = 0; i < NUM_SAMPLES_PER_CYCLE; i++) {
150 /* Convert the ADC code to it's signed equivalent */
151 signed_val = (uint16_t)samples[i*NUM_CHANNELS+j] - 0x8000;
152 if (j == csv_channel && csv_counter < csv_sample_num)
153 csv_samples[csv_counter++] = signed_val;
154 /* Check for min and max values throughout the cycle */
155 if(signed_val < cur_min)
156 cur_min = signed_val;
157 if(signed_val > cur_max)
158 cur_max = signed_val;
159 /* Accumulate the squares to be used in the RMS calc */
160 cur_square_sum += signed_val * signed_val;
161 }
162 /* Convert the min and max from ADC codes to voltages and store them */
163 min[j] = (float)cur_min * 0.0003125;
164 max[j] = (float)cur_max * 0.0003125;
165 /* Complete the Root Mean Square (RMS) calculation for this channel and store it */
166 result[j] = (sqrt(cur_square_sum / 640.0)) * 0.0003125;
167 /* Reset the current variables to defaults for the next channel iteration */
168 cur_min = INT16_MAX;
169 cur_max = INT16_MIN;
170 cur_square_sum = 0;
171 }
172 }
173
174 return NULL;
175}
176
177void *print_func(void *data)
178{
179 int i;
180 float frequency;
181
182 /* Initialize the screen */
183 initscr();
184 /* Set the timeout to 250ms for waiting for user input */
185 timeout(250);
186 curs_set(0);
187
188 /* Print each channel's min, max, and RMS values to the screen */
189 while (1) {
190 for(i = 0; i < NUM_CHANNELS/2; i++) {
191 mvprintw(i, 0, "Ch%02d Vpp:[%.3f,%.3f]", i, min[i], max[i]);
192 mvprintw(i, 28, "RMS:%.3f", result[i]);
193 mvprintw(i, 39, "| Ch%02d Vpp:[%.3f,%.3f]", i+NUM_CHANNELS/2, min[i+NUM_CHANNELS/2], max[i+NUM_CHANNELS/2]);
194 mvprintw(i, 69, "RMS:%.3f", result[i+NUM_CHANNELS/2]);
195 }
196
197 frequency = (1.0 / ((delay * NUM_CHANNELS / NUM_DEVICES + compensation) * 0.000000005)) / NUM_SAMPLES_PER_CYCLE;
198
199 mvprintw(NUM_CHANNELS/2 + 1, 0, "Delay:%d, Compensation:%d", delay, compensation);
200 mvprintw(NUM_CHANNELS/2 + 2, 0, "Estimated Frequency:%.3f Hz", frequency);
201 mvprintw(NUM_CHANNELS/2 + 4, 0, "Press any key to exit");
202 /* Refresh the screen with the latest data */
203 refresh();
204 /* If a character is received then exit the while(1) loop */
205 if(getch() != -1)
206 break;
207 }
208
209 /* Close the window */
210 endwin();
211
212 return NULL;
213}
214
215int main(int argc, char* argv[])
216{
217 struct sched_param param;
218 pthread_attr_t attr;
219 pthread_t capture_thread, print_thread;
220 int ret;
221 uint32_t i;
222 FILE *fp;
223
224 /* Check for command line arguments requesting to create a CSV file
225 * argv[1] - CSV file name
226 * argv[2] - Channel number to store results from
227 * argv[3] - Number of samples to store (max of 32000)
228 * example given:
229 * ./ARM_User_Space_App.out chan3_2048samples.csv 3 2048
230 */
231 if(argc == 4) {
232 csv_sample_num = atoi(argv[3]);
233 if (csv_sample_num > MAX_CSV_SAMPLES)
234 csv_sample_num = MAX_CSV_SAMPLES;
235 csv_channel = atoi(argv[2]);
236 if (csv_channel > NUM_CHANNELS)
237 csv_channel = 0;
238 }
239
240
241 /* Lock memory */
242 if(mlockall(MCL_CURRENT|MCL_FUTURE) == -1) {
243 printf("mlockall failed: %m\n");
244 exit(-2);
245 }
246 /* Initialize pthread attributes (default values) */
247 ret = pthread_attr_init(&attr);
248 if (ret) {
249 printf("init pthread attributes failed\n");
250 goto out;
251 }
252 /* Set the stack size, need at least 0x1E000 for the samples array */
253 ret = pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN + 0x20000);
254 if (ret) {
255 printf("pthread setstacksize failed\n");
256 goto out;
257 }
258 /* Set scheduler policy and priority of pthread */
259 ret = pthread_attr_setschedpolicy(&attr, SCHED_FIFO);
260 if (ret) {
261 printf("pthread setschedpolicy failed\n");
262 goto out;
263 }
264 param.sched_priority = 99;
265 ret = pthread_attr_setschedparam(&attr, &param);
266 if (ret) {
267 printf("pthread setschedparam failed\n");
268 goto out;
269 }
270 /* Use scheduling parameters of attr */
271 ret = pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
272 if (ret) {
273 printf("pthread setinheritsched failed\n");
274 goto out;
275 }
276 /* Create a pthread with specified attributes (priority 99) */
277 ret = pthread_create(&capture_thread, &attr, capture_func, NULL);
278 if (ret) {
279 printf("create capture_thread failed\n");
280 goto out;
281 }
282 /* Create a pthread with lower priority to print the results */
283 ret = pthread_create(&print_thread, NULL, print_func, NULL);
284 if (ret) {
285 printf("create capture_thread failed\n");
286 goto out;
287 }
288 /* Join the print thread and wait until it is done (key press) */
289 ret = pthread_join(print_thread, NULL);
290 if (ret)
291 printf("join capture_thread failed: %m\n");
292
293 /* Write the samples to a csv file if requested */
294 if(argc == 4) {
295 fp = fopen(argv[1], "w+");
296 for (i = 0; i < csv_sample_num; i++) {
297 fprintf(fp, "%d\n", csv_samples[i]);
298 }
299 fclose(fp);
300
301 printf("\n%s file created with %d sample(s) from channel %d\n\n", argv[1], csv_sample_num, csv_channel);
302 }
303
304out:
305 return ret;
306}
diff --git a/ARM_User_Space_App/gen/ARM_User_Space_App.out b/ARM_User_Space_App/gen/ARM_User_Space_App.out
new file mode 100755
index 0000000..6540f44
--- /dev/null
+++ b/ARM_User_Space_App/gen/ARM_User_Space_App.out
Binary files differ
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..ef00f66
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,14 @@
1SUBDIRS=PRU_ADS8688_Controller PRU_ADS8688_Interface ARM_User_Space_App
2
3all: $(SUBDIRS)
4
5$(SUBDIRS):
6 @$(MAKE) -C $@
7
8clean:
9 @for d in $(SUBDIRS); do (cd $$d; $(MAKE) clean ); done
10
11.PHONY: all clean $(SUBDIRS)
12
13
14
diff --git a/PRUMulti-channelADCInterfaceReferen_manifest.html b/PRUMulti-channelADCInterfaceReferen_manifest.html
new file mode 100644
index 0000000..5281ac4
--- /dev/null
+++ b/PRUMulti-channelADCInterfaceReferen_manifest.html
@@ -0,0 +1,300 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <meta http-equiv="Content-Style-Type" content="text/css" />
6 <meta name="generator" content="pandoc" />
7 <title>Manifest File</title>
8 <style type="text/css">code{white-space: pre;}</style>
9 <link href="data:text/css;charset=utf-8,%0A%0A%0A%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Open%20Sans%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28%27data%3Afont%2Fwoff2%3Bbase64%2Cd09GMgABAAAAADzUABIAAAAAhjgAADxwAAEZmgAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbDBx0BmAAgUwIgSIJjzQREAqBpESBjUIBNgIkA4ZsE70QC4M8AAQgBYIyB4QoDIIJG8J3CQg7WxX5j0PthLRbJVvedpUoKlTzFUWwcUCG52fZ%2F%2F%2F%2F%2F3lJxxAlWAMiaNd12%2F9PqJmJKW5iyEExieloQ9KxVuZAQ07T1g7vfgVloomBA%2FUEiuEMCGVsPBsLc9rD3dPKhTisOejgNULCLyjxoeYlBGuZsjRKads6GS6b8QRDIttvKSa68bAbLrwP31TZsuGVyrv7lPcTS4bG9tKpUh76wlIon84X%2FsDUs5lHxlTP%2Fif%2BNs2eosU%2Fnf%2FBfw%2FriGqqb%2BffLOvzVA9JiiYPkV3xr7qrZ%2Fbum4pAxULkIPkZgBBQJu%2F2AG2zs1GxcgYq2FMQpj1RETESsbAKmzJyopiJzNnDKkTX5pwurDm2%2Fl%2BkLvK%2F%2Bx%2FAP6A2ZgrZRvjS1KSQBer9XuGyk3Iw3zfX%2B1eWZFmG4CQDj7CYnr8CXBV4ueyfuup7tsiSJbYtuxH%2FjmfaSz7qPupZoCCZ%2BkF0QXRpQIvhcQTov6omea3KKY0pFP4oK73IomFDl%2BISgLSDg2T3m9LqWHnZhsdUX6Zbs2x9S8bARE7Ay%2By7Qf%2FnllVniRftubDauc4suapKNQPzE8citiadRhUeQAB2Or6gcE01zLrqvv3azJyYfdvFLJRBRNN%2BrORtiKb4r90jEQolkS9CXdeapUUtovJYdjvKac7KcpzMaA1l%2FuGrT4aVVrGvMVAuLrBgPpJTtAv0AsQv4mpVYhTdrISsR3HVOUDRuJh4nIdPy752XK3pgwsJHaOiCfRBCMYnBZa2NQIs0MJBCLKQcLAUFiLHsSb1NBwDuVM%2B%2BS0pbMpCb4wnNT80UzMTE9QxNEqUXUj%2BXtWyBRikfCGFLhWNnelMh67A%2Bx%2BBHyAogRS0C1I6L0lJt9RGUJGUzgZAjQekU04ENxHSBYHaRMdLMVd257vKTeW69pbnoi9NTzZ4puUyQp2QCOOWBcHlBVHZINQPsqpeQjArJqPxaQKweFrTR1P%2Fk%2BXq%2B%2FE66DKZ2KGI2ZjJZNOIfxEploB4nMfYbCEuPnLbpwkSihwCCsbniQTAguiPVErkU4mUNL%2BUgcJFiymBc06kZQAgwjK%2Bx5hwzplJMQDIJhWEDSTOGJKlWpoIMEUadBm6RwiOj8PFkZ74BMmB3NPHvuQZdmtwhPKxaCIC1O5pSECsQvXqWxLjy0SwLDAMtWW45JcEf9qVQU4AAOvKcpvthncBrrn3f6P2TFH5pL6ErAoIPAgbyH0bD2BVQtHJQvXeU9iytiHI6oIFw3FX7KYd%2Fws48OV6eVger6oIUYdoQXQh%2BhBbCAZCg0ws5P%2F%2F30%2BhOw99btm1DAYcrQBRhWi8jM0FaH419ud9hVS%2F0ut62vSv6Q%2FT11%2BiySYajVNbtUV%2Fb5%2FexPSeyXTDklT41IpZiv4R2m3Dfcp9KWoG9CMAOmZLgoOTwv9t%2FXjG7O9no%2FSNV51dlkUn2AXcpNQTLI0adKlSGjJgNWg3YlhoCCEQH%2BDv5%2Bvj7eXp4Y5zw7piXJyd0I6nHeztbG2srSxPIeDmZidNDQ30YVA9XR1tprpw1uhWsieLKhwIhGlDCFAphITMFTNSlJXCvFS7BnGYV1RMYWUSk86rwpJKpWQBZbBSCbm2Z1laCiZ6RfcBbuU87snz7Dx7R5L4WZIjvKrod%2BrtYCMx9O8mwhLRGcX3ibFESNJCqbD2cGBXU%2FncuJtPLlOhOxfmmcPUG5mPZuIouu1w9CKPimlUnXUEk4VEgpJLUlkHBxWtYuH7JsyXkXXj7AS4sDsaU8uIxeWw2Z6h9iA3uWnrBnnWSoOFDnWyWxohn666Da3a54egEGCM4tGe%2Fq6VLupikmKFCY7LkmodtkTc48IxKTyS9g%2BEon9%2FU0Gfmor%2F91YEWgYeaf9eEUU9e7fPaySLVll%2FZPSApEe2n04%2F31YHDfx09bMcma9lC2vvLpFPB%2FysabdbsZqgVGlqkCjKQZaCw9RL5J8Wfq78fbpRRBgkAAxoN%2B77EOTWB8wGH4agD%2FWBsmqI94A%2BFBiQym357qjcbDkjVNVS8mFxqGkbhEW5Q0rbxes%2B9DWsbK1TFiIP2X%2Fhky3m5JlDhoxIiRi5oUREAgQUJuwkwnKXsPYD82bP2nAFm5nLbZFniAVCw4pU%2Bqg9HOyqPE6GeWwEVpAL1OD4ReXMWGnlZg8RK1l6TAzjjnw3zNBtlCkyLGpSVg1rGp%2BrMhHlAiC6HaUwo4ZUViqrXkR1biihit4A5P8VJcWHBXYcMDHm%2BVEtaISkshedHnqp6MBKe1ILH2yAviHdNTbXS94mvwv%2FXjJusom6TmqUVBr6dCPYTMTqM4WFYrEPaeGMiEBczEg9JsYNFvESiiy%2BaBSdP6UREzNPxAMb5yCrnRydl5oLRghNYHpYqm5Mgj6bGcLtSEgUSpzEqZvZQFUoCd%2F491qYH9vIUigQkxnUr0rZ1DjE2gzGWOAk0qO4y%2BJrS01dMjSQ4BtaLQQN1jAHBNY3Z6by%2BicjUAwNoFPEHxGQX4a1QACbwPpnIaq0UdSymS9t3E1qlrFMKJ%2FBEWWA%2FWb4dE4kRd6bmY5kiLfD64zt8%2BWeHB%2BcZTDDLXesW9PnCSGUaC%2FE0%2Fg8RZElPKlHYd4R7O5c%2FqbimL%2BpNfRGnjFI1Yl%2BT0jLaWSclz9Gb1iMoXN8hCL0wWchLqS69sXHGrHBDM6USOEEjrLDEcJdS7xNCJA%2Fn3BSiMbMyQ2EY0xIu4G4X%2BP7uAO45rs8N8kzl2cvL4xlqOUwSd5HLl85EA942MMMthyFVM0aP%2BLaJViU0jrK0n3ILadidX5Df0hDFXwCIWJ0r4T58QM6uleTuOxYSd5zM7DK9LQcKM%2BQeJzGwd2LDM6BRtSKpoM5txsh5UZ5vkuBS74pKpYGVnlVvQ5o%2BQbwNE%2B9qX3yYO35Jmz%2Bn5HIpUfJ2vyfcGnkNDFvIWM3%2Bl0SAJ48tws8taOvAL%2BPojsDoRsZILghY5rGbIwyhURLrWp55YC9KERyteUrrJvBxgK83RyXPcVHMCoV1zkeyAymKLA4qBuCE17rUFLPeFWiZKX9NFIPkWfjuZHm4voKGHuz5gt7xXpTvCZPhpARHTMjea8%2FwnPKhOSEpZhhrY3kuKgm88Euz4ZRsxiLqrUUXDCM2Sh%2FKjJmOI83BylGUktaOGk4F61UfJ35fCC5yHDGsBjkhYxBFaw8KhGxVNLhVakk7yq4dSzlWFZijCc1zkeTkYwYnyJoLlobOWOUa2uxks1KRCtDLiVjk7zikMsiyxS%2FO%2BRxwCZCqTBKXOZTycx5EuMsI%2Fy25wHe4lzgXyOx2rgm%2FVNMKc6TRgCgiHfgRiM%2FFYcSvBA7nUJ2UqhAvL6znIECFAsKRIF0WBJkLQgKX9nAKe6KytVSyscM%2FYoBzpAcZ0LQDwAHwYTaxCTnK7Eg7dJpjEys%2BmX%2BymSpJybTABwIUK3FISB%2BvfEPpaYfX6dhYCS%2FArvbXpMxAOujddHcKCy9oAuosBwO%2Fd66aodBZ6D7bZbgOVjxhKzQcG9DNEl3hATNHPFDklxcc4NylfRkG88t2VfSoUwj1nL97IcKprRrU0xLaftUQLvKqBE0YCLFJ3XjQTVlx5kKoTYQIvTnMDpYqQumFfIquUaT3%2BTlFnBAUcDaS6Ykgm4D6mHZ3T5LS7ASqCHVNII69RkiqGYX8m%2BKFuRyLBfKpASn%2BovFuh8NjOEFNgt3km%2FK1AYKDnTQbKHVKfxpUg74CJVZ%2FQzVmPSrAGHPRrKIU8EQJywFPBHiZyoRp9ZiqatfCUYZAy10RUjDNhY0ApFk%2FRCyRru7v1GbH2EdpTUYrJNxdP9Ib3%2BKy%2BLdDlcvu7brITIlW20bGBWyvH0bbUTBXw42%2BLKEajBc93Xyvzg460i8KDqQpbI8P3hvRfdjuH3yYpVuP7ea3AJpxwwZtyHxnXa%2FnKVrKjEQL0ouoeIxVpsuMrmtKoWLpgAemjUmg13xepWbjuhaStVsQCvFIriQZRKfAWu5xpjxjqLR%2B92hNWoQUpec70wOSdjJSPAalndek2pgvd9VjXFyCq44wwNIpqzRTtwaEINuYuVywyQb9DmkDnaB%2BQq%2FKBrBntgVwLySNWNI3LTiTgU3U4wpJTHRMn%2BLtfsYleDP1XfFrU2cbdHOGW1GMxq7WE17UZzrbpJsXeX1zvkSyQmmvmRPyMTrQqFtbSYuvTlGSycJKvDElm2kcqatiRtM%2BXAOliz6XR6Ql9bpw5unABUyOZmgUjozRPHLFnqBm%2FwT1OcWK8qbpMEwmn6fkxQEFdGYoZxDwFdZbaHVC%2FztMekCVCMn9lawhkKL7TRk45pkUC%2B5tZSrFzs5CgqwTej3T7yWhaE5gLHwn%2B0h%2B1rVeqVTATVL7Tx7iWvUzv%2FJv4Af1N%2B6fX3rQ6vzx0zd7AM9pZGZ08pB7ixFyHMPMxRekmvk8%2B3fknvFVjbKAAscRdHPQn3bUdqk4DItx4uAP4uJoEdaEbR9%2BhVL1jrs8QEmOsah78uflhUlTGTIDO74%2BgLrewWOW3kkDAFWPFFoTSDBczNkV%2BTIpFW0FdcpU7qk8OkJ36V4143X8%2FRiB6b0k02n%2BPhuQfsjDBbaNp6O24mTETI5ypKMLGM%2BSlrrls1SDdfGMEMfrBVHTthLvtRiagZGJqAA2xWj%2FLQSS0wDnrjYqKDWY%2FRsARcIH4dVTFwMoU%2Bztku1jDMPKPHUi0CfPBUERXHmkBwha9YGGWoT4OvQAnlRhh0FcT9RN9eB9p2k9lUBEL4Kdj9SqUBb3XloMCJaYYQk4unEKTGtoGNjJ0UjPt%2BF0WKcKYdukt4QMO73z5xqVuff5E9rtA%2FfYyz%2FMnjX2wNnKQ6l27H9CWD%2BRO1%2B1pn9i7z%2FJfyrHBDGtR4e3FSyagyypIf%2BrO7UH43VZHiezC5WmiLqWU%2BxfgZqHdvoYE0uUczILmJXnvYQMuvrM9eFXgB8GyglGRDci42j%2F97nBN%2Fc2w9KTWDMBTid2ylcc0NoRoKMCdY%2B9XNfyvR1x19xfBrMibf6RUaTKowUrS5N7Dy3sl8q6yweBdOJHvfOYiQnu8iCUlX75Ez%2ByPPLUvSO5cXrlTFVGP2yqazi%2BDhaRUHVMTJzYyZcq0nRnU9ws8xROWtlaAxirS8Tbqt4mbE2nUu2ExdSdJ1Dt2%2FjOykL4PKLdSEIpa8QNypx84hVFSRca1604waGkUD0TyhAH%2FRT2vxpWMp0yEZk9toonGknwSgn97RBT1ampeL6tJ%2FCfGT4kdwVLcjyqvbqO67OKxmgbJzJWVBM5mqTNsYBERk3uj8adjIxDI%2BZHZM8eh835zUILIO2%2BSXKwJp9UIGbuKzbWJZ2NadauiyPJhjjgDOiMrQMWYVi8Vc2bUH2U%2BrnIASPySLy%2B6FkoLOAyxMMvE85z04IXu4pv%2BjPSofeKtXzYo3loMlVucEoR1aBZtgFt7Uk1A8CTZfhJlFQSN9GQQcIfRJ%2F0WFcWY1XK0BA4YkZuXRbkev7njNeq0XSet7ub29Cdc6t6TT5P6n%2FDEquLSQhlN6OtJJXVa7taVdntCPWBuVy2kThB89AhmQoY9JUclVtB3yZE%2F5EKRI%2FWR31zf0nq3wnRUu1XfBKJSb%2B87VxAAI%2FX7ErAZUgZgPNnfDmXeiVlaqbMzzlt6XPsvZ0nbW6A6D3zUKXbqGHxqvKtoc5crxS7qLwGAbJaLPtkpjrRpyNdM8fjceFhJSYMO9r6iLFvEKJGYZlsTIJ4YkyUMEx91H8UGDAEN59eGv0JettWx37%2BNmLtlctzWeP1eNg4%2B4jgYG%2BnMlx36HAQPeh7bEXxQc1sI6fag097394Tlss8Fq3N2tXtZetrm6FQcFnPOKL8d6J0UGhGVHi3LgvPV3c4QwXYohJghOdXYX9k1GzOZ8QGGkfo0ey6Vgbnh64wGlPreR2h3dUFDlzlGNHXDSrWo11Xy3N0knfiB38owN%2FfZ1biv5wcfbt5smBxuWm298%2Ft27VXO5rGe3a0JCEi7E3mof7ai61bn%2F%2B%2FvdtpXF5oGWq646GkbKicU19htpCodYv1%2FGIaVIvaTrii2uulsZCRYZxDdzwQKW7pnusdoxdw56oNYw4fq0WFwNCkYvUk9AIMFEOf5%2F1gSXXSXKxx9jYojEuTk6uNkjn06onF3i6SjzO5v9mKzjvPyn4SP959KOYUnxM%2Fv7xZyniS4Zju%2B4Qp03fzq4NyhlqhxjeHJBniFExDgfjwWSGcR0UttJ4hjE9m9lp1Yin11cVEwfs4nyCs7aGP955tz9Xe1bmcMfRGvTZ5PTLyLru2UZN0LTS6HzLns5vkrRl3TCTnkize%2FDoAiOJgabGlvHNjorUlrzi6FFkmis%2BMxT73o9x%2BGHVBdvv98Cv12%2Bz2STuyQz%2FQe7rRvF5kHlUz41qe92Dojegl5svIAL%2F%2FSr16XM13bFImFk9f84iJ6pHg2BpOc7vcofyKMq2tKxpnzEcGS3f6KUa9%2BEXVNIGnD7%2BceP58a2XfwjffSEe%2BH6zoXtutLn5fHNYu3tIKTbJd7YlCaMJe6Wp2XWbCUtAaEOZN2%2B8uzCUxpxtwc0Gtl8s4P17%2F8n7v29d%2FhtRW%2B2dw83qfX9ZjBaWy2F2tp%2BvzY8527GCbXNkshUGk4rqc%2BLD6WU9Tg122dXhCU3Z3s54bBiL5qLQ6KuW%2BPm7oYQF2DJgIYiy%2BuLN7sv%2FxHbbn7JyoB%2FMG88uDjU1DrUSWe7BJViS%2F2xLgpP51lyqzC6ofLfu9CHFj5U5JdVs7V11nZu%2B2stxYmfls3b479R2wimJUcOqB6ptdbpO6xknVcG%2FYCn09kLAeMFzlCAtlnS3jhh8JQVLDUhkZBT4tkOj4bYVl2PvXDu4NO6un%2BEZW5QeT0CTo3RmDX3DSy6bVMaDhuAPvaXJQfQkCT%2BQQVBbTGLHyK2ZWx%2F%2BW8aMq2KUVA%2BV55hE8r2JhVYZ2ZbZZ%2B5Lk0G%2FI5zczPd%2FJzCv4b%2BnNjUkCh%2B21z4F%2BD5cnhe6P%2Fy%2FtR05aylhNwUCo2XeNXph12N%2BdwIKu9yo9%2BMymzS6DiHoFipFGVLG123A7bxzekKTlxlNIzWqEl7WsHXQo4%2F%2FSQxiVLnnsioKptOW%2F8rUQ8zOVbVU8UouuSMXkF%2BU0SraYOs%2Fu9Ys2zutn7lEVpKej%2BBPL95%2FPY53az7vrU9gvEupKia3AyK8ZUJe3nyIlpbOiV9NO3CEseEf5jkbNe9k8iM7ItWZttSxj5eTSmRnpAVq9b8vm1ToJ1iPF7km%2FiUvKJj75v0Wwal9A78oaeKgbghBqLKadFfdbP0%2FA2MzgjMVGxjLEMwYQ0qeiQxrxip4xyXmkDOY2eDI1Wu7mu9uKK6zKh1IZh123N3yzDfeKnLRYLK1%2FbRFZEFSXXcHzqFTAhrfeSBNFO%2B%2FxqYGpK6AtF2lLfCfgVXE95sgGT7XkeBcXkbcvQ5Sl4JqufWaEZ8%2FiYpttneJrElOiKrC2MU04vaijf6x%2BPLtF8LY4Cf867dvDUNsOfip2Uf1Ccf63Qqg3192Pd9q7m%2B%2BUr91FVX5wa72O%2FW2E5H0S8M9hkcGRYmKvrquNksBt3d0YQl1TVsxUfDmd9zhhsbmsZIrT3BoHeaKCv%2BzcK3zUCjswCR5bPwM1cs%2BusG%2FGXkTN7XZP%2Frv5t5Dni%2Bqles5XtlJTfKyii73q4K%2F8p%2B4hKplu0vT3unEde5A%2Fdt5c3%2Bd1ASBINr%2FTI1dXNxcW72wub60BENv8BYhP3gjkA0eV0lozmZAp0uv36ZPPdwPGJGnHiiikRtCSmXm3XIvbo%2BoEnhcaWql%2BRWlLnUeako2Lo8rhyw1Z0NW5etRN6XjmFxox0oVo5HBffX3%2BoXLKc7pzgvr83r2D5kPl7TKSqwmzLWolRchjsdMeDnrc9e1s8dOLZMMly1A9K%2Bteh1A5JkORPI8T%2FdUKKZEEhYLSam%2B6KUEBK5%2FQo8dp3nAZlHfer9Vtem36ynrkUNAH2SgkbPXipVuamPIXK5CAOQsyD9xAJc%2FuDR81kte5oIIpjQjP796Am9R7GeyjIhZvzy5fPSFdnZmtCvuvOiG6FQaNSwtws34Zdj9j%2FrS0p%2BN76XO%2BNj5g3XrcgBRRU5%2BiVg8iDp4s2asffXNm67rY13tT%2Ffute9hEhQ%2BCkPBCiCTH77ndK5b1CWUalj4jG0P8PuqG21b0631bfpaxSmcV%2FyPMBmZTyb3nmX3S4n6CHld5bD8H6EyJnuMtXRH7x37%2BlgL%2B%2FnOftehc7HCN1UDMXFhq8d3Pkk%2FJX0TXl7aHJmdcG8LhnVDxNdelXePS3U6nKvl2Bm92FTZ5Gyue67ZObTFBNN0jcujtDCRoYU1bio2Loo40rbKnEmWW%2F%2Bja8uIYZIV4aS7cdjq3NX2Rp7eVVX%2B296W%2BJJmqlqLte8pe8dQjFGgbspwGpe%2Fej0Io6D1AwhtJ9bt3ShMDU3HsDbJRakig%2FbUUjrt29Gvn%2FSiooyejYq8MsZkz6V7Dkr8e3L4hBwJuA83jLZ14%2BruTWQQB8eZN7ShGRu2W1t3GBpn6xl%2FiBqpxCi4%2BOACg%2F%2FhfMZIukVsPJni4RPBsTHZG5f2H9K2GCKFqeyhzdghGysximUQ9%2FmUY%2F2ArbJMRvbZ1tkL8Zy3vzinu%2BnioSMHV6neDjLzHQtNEfC5AIITLsTlXFy6un8T28Dhid4L9zD0Fn6LIeTrm%2FkXIgKrCwNLmX5sfVFdIDAJljT%2B%2BFoagUKI7A8%2FGhwceXiwN3L%2F%2FOD5Q8NJBRdIS0YFrTXBBVWp3A5yDB31zXh4ZCRlI8XSL16MtF8Q2IZZREMNfa%2B2b%2Fc9dPTO5nTOCu%2FDXp%2FdGjWppx3W%2FcKau8dGklKfTt77PXdUXKW9jM8dnnMYL%2BEqReFgjDHh7meVu1ykUczL%2FH4vDq5afhtknzJONbZCmHS9OH%2FnYR6G7WPAPRnIqA0goDPC%2BhxY1mcCT6d6VjxgX50dcbOtGHKpyM5xdzK9HWdVj1rFVjVaytFM%2FcHZJRPJssanfevO%2BXVjXN9F%2F3e69DQzLoKEUlzHbQJzQM%2BlQ%2FQB1Sot4s1wCbQb16%2Fs3Ub1qQvj5j5U%2B76QcgEN0bxums8lLlVV8xsMY%2BQuyGBKM%2FLOmWV5Lm6K1J0xLeYBGoFzFW%2FQuGs0q3EFGgip23710YT8d5zpIrxQ%2BQpkUHvwEsfr1tAEv2xx6dSly7oAFDf3KcvnUD4StBrw81XBnCbtN9eli%2BwqL3dZZipmHHfN%2Fiw0%2FQQZFheEKH1TCn2BjTB5KJlII2YJ1F0R2BllmycXheTWlwpQidEWZ%2FnjvNpXIisG%2FKf64Hbmm2q9VqwHQML1yuKn15syWHkuUru0P9llEUMPKxWozy8KSTbvujV2RaAuw%2FU8TzSipOdkKZj63zhV7EzojEtrwmSdCIE5nYhRN7cscQzpSEhvwBVB3LQ9tENVoA%2FHB%2F8%2BnVxlnr0d9r011xk3G6Sro4n9zOfkUy0iN5h3trWXZf%2F6p9ZhonLIQ7AeIgqvLbdIn%2Bjff3C3Z3u4vt72tPH5raujePvyLq%2FGgsKCOgNOCedJPLryZeJrO1uk%2FpbZ92fXS67bzz27hVvcz3dPqaiNIFaUJ%2BEYJQm4qvJIIrPaPSu7zD2RUUEkVpUnYEsq4nAV5URieaV7ypmCrO5eGu1cD5nS20%2BhdQ9C3J7m35tSFxIULXEYc5gTgofA9iX2Y3mA2rzgXBBHt2lQ%2Fbd68XooaN4oiFDlDXU3wGcQ8u7UbET2aETroxgx%2BhXqXjSqLdo%2BH99lecGlvSM1zL%2FO3ZDl11L3jnX3YQm6zRu6YhpQUefpZvZnqg3FuB7JDHUiN8d4lyVz7AWrfDPxLZlL1i7ygXEuCgQyyhumn46yiNaHoQsRaz4YBbvhaVnd1SuqmGSPFPeXBRWaFn6LP4Fd3fl8f%2B%2Fxj2tn6HY29FQLy2bcjc2IiK3tGxGbWxHbGyuhETu7OxF3VkOTNyYnTU0nJqaMJqcMZ6YmjQynZvb%2BkxWr46KjgidG10VlxCYmdiUPidCEDJht8UkWxlFkKyajKjlvffpSfNYWFxEjlCmUaG3lr0%2FoyMZAIiCR2VhCR416cAcNoxWhFUnDBncYObeqyFQzrWtO7P%2BZ5hcdgPYkoCNSZiv9AvO9NI9rRu7EVMa2FYhw2KXOcnabee5EoBMVwSVgObHvrQzuAoOxwC0L9G9oxgcyuPMURgCN7O9HyXrelrOyAvAUsk6de3jyh1chBP9oiKclxhfjiIqBYRBOwYwMVnlLaZZfSEdL9eTQkp4B6o2ff6KL8rTZwJnFhhEW1aqgxaXgYKD5DT01JynWB%2BPg6%2BLinGlMwYQe1Z6KrOrOtlFt%2B%2FpvxrQ2elvJBD155VumAqFQ9L%2Fxnst3e4f5qtRaJDI4rzqCiRLi%2BD50P%2BjAOYUVEKYAojOHuScqci%2Fw%2Fvaffws%2F%2BPftSYPOfWcHjHViHnS%2BtqnMQ2JYpA7kjZRNO18%2FA0sTH1SabPBshiVlXh%2BqBOM1pjFdiCKhhPCKSOcoiMnLzKExXkfLyIX%2BwWFuJ2toQaA%2FPywvmUTMyy8g0klJ0jBbBrhxZmG1IrUiaJjgphJKl7WeuJi49zgy36M1Gp9LsvdQ9bKOL8vK92uHxZjbVqxHXb%2FKvzCG1U12DAnxj4wPRlMjtOeNK%2FPsHDDOaCes1WNacQJlf5pEsizwcU%2Fw%2Be6MyXneVieGr9mhqY7xWNm%2FupDtY4oGDoQbZlazO9idc%2F4F2Vwi2uaNcEFHwc%2BrscEgqiJhu86Kio2KiYhaXUwkMTI%2BdjUhKi4%2BOlYtvez90PqrqC7HJ7VrdiM9PfS41x0RXZHjS2q9tjWfIpveZSzEpfjPpIqODs3GovFdRgfTJNzIkBEHnwlya5V9YXasvZR%2B3qjHAL6a0h14rPLI862GofYr1du3LJ3avlY2UIJdrZx1IKNYa2%2BL2siE7oS%2BlbH5yykY9uuzZjg%2BzzMgJd212D8qP9ARQ8KiPKwdQ0%2F5VQaWKD7jcubmHl18eue3bjYKJSLM%2Bn%2FN%2FSu2mEzdIKn5OU0DeGSxu%2BF1VCxjKMgwEhU8FpWx%2FEbiaeoVsRpbYrcuXr%2BNAGuDJOgUvvUrXidVDC6NTnZEpYSENA%2BPsOPOiV4QG0yz27fIqzkvcU6su2Q4pj6QX%2FlYXaSa8MlfT5XBz1%2BLijx%2BHpdLtT68dVWajUt9W050iIBjaGdxCR7H1Z4pd7I7G4bqh1Va50e7%2FZOHp3gD0303PO75ZzOprmalxl%2FFfsIS1WNrM41E3fleyMgEoCY7E4Onkb0jGGc6gTTAI5vqic%2BmeUaXF3ei4H%2BOoxJ2mR4oSirg0HEwZBG3y8BakAcIkmec56NSGdcpZNQnhf%2FJRBL82fTe07w%2BMELMy%2FEmBwABnH2USKib%2BkjnosANo7N88xl%2B6%2B5pidTov65yRhYAdBXC3aKrUpKJTHRiqLJ0pzffoMNA3dtu%2FdyfANzACLD4lRUEoQdp4kOjFWGF7x2ou9nVzyThIHERkw9lt7IdyDaZ13KLt45Bz0kPxKo8Ivt0g%2FTbgvU7tb2%2F2hx0PhweZN3de8K%2Be57Txsdk3S9pGpQ8B%2BkpGyTIrn8urkwoSeaEppUXlqrkBFuWMyqZAUiqqsXhXGx%2BdmJCDi02NpcSn1CQnRph7WSPRM5lYW192QaFttdCYB6Z%2BEN9THFQXQuTx7HgXEoV0YwA9TZ1g0IQfx3HgXOzqqD%2B91nhLDm59fRlgCUniF9ZUAqNkbTKLXD6F%2FpTXoHAezU5Xy%2FfVUObL%2F99DCuvrO7liRVoUmwh4GijW74i9RcDg0OVsChxq7witTgnJDhcHTL4IS%2BrKI1ELSjIoZxJSSUzFPrxT1PXkNwyFKgb%2FuBZ03mN%2BRWmgFg45ejT8l8pWBWtsVN6DTq%2FvT7WzXLqaEaPH0PAJwFOKUvNVMCXVTqkL6ynd7w1FI2tOU8gP6T%2BKiUTF8Wi7ebtloRO51pkkfRahYiHZ%2Fbjx33DP%2BxHofEc2GOLtY8LsAxkAWVt0gCjPcD0EgZ2ShnA2vI7sNHdqjld1AQcfV%2FvSa0%2Bq%2FTR%2FgH0fc%2FYUenZog9aOt65r0ZAOB0zfJle%2BCrh%2FUisKEeusFHKQEjlFcFoZUPv%2FsWgod2Rwpf733uTyMvwUP5WP%2BJTneUhnB4S4cu44avYe5McylYe7FiE0%2B0w7EXYm4Ql21n5EbTLuoHzrTgLoW8QsvxhyOqzIaSvO1b%2Birpy1BnYqJtH26MUQj84ZPmvDtJ89Eo9PmXm7zyc3iHhy7PhvUmzxahfVL6F%2Ff4f4vyuCKEfbV82h6z%2B0kFawR%2F8Ic6vIIR%2BYcjy4h2k1aJE2BYHIdUzNZCJ7ARbgP%2B2NVMOYB1yRZ6XlFzCWrGEK4V7Fp7fh1rnw8qM%2BaO1dE2rD7IXBwyXtd1nTypsUPk%2B7MYlhv0SGJFdZbJpZdWx%2BL9vP%2Fw058WPYbhNLhAYD4pjIUsmkOvlGk9Ae6vxmAHaJ6pAHTCs1rbQ19IWHakImgdhbqKKZoq5027aAtS%2FbeYAH8yh7TKaK%2BpH7SrmAN60J8xFWm0OwKGVvJqoyK%2Bh3h50qLs9kQ8wnYk6U6y1GY6hpLxNaSpoB%2F0hIE6mI0YBZXOlz4M%2Bij6KrEJnBpB7%2Bka2cqyLteJNIMgQaJvSAkAEOSSiwALKzo6zPyLdR2qzPwsXC7H6izblK01ArjhoLwILdg%2FvBF5ub68UiQDi1pEq5siO2vsmdSbSLab049%2FvbP01kQZhA9pT2yXN1Pl4d3txEfcg0g9JUkONP5BVivDf%2Beg89HXrfNK7rnO3c9aATViSx2BsTnb%2FOP0N9jEuj%2FdsOipxwZ2UPhldJM%2BhqMYThuMeJzjimpC4o%2BIGDSKqRT2bZ%2B%2Ftq%2FKdUaKuwDr7qdaU7r2W%2FLASNVbDJAYkFFt37nzft%2B3Dn%2Bu6o4NIOIUDkwi8ASkf%2Bxyv%2Bk4nAVs26jy%2Fb916HDF%2BWShyA9AQx8nbdq1o%2Bwai9%2Fqg3zA%2BHEfF6C3xUNCHMaQisLUik74%2FxR%2FqulPCJyJId6%2B6TjNeW7BErLvRYnGzE7eWnjqkro7qweX2jt7WzbphgcF%2F3Uo6M0WVBS6c%2Fi6jU6hgTJeH483x0VJvmnHFnz7r5Eu6YLaP9C1pUbNBh8Os9TP%2BihmG%2F45Q81rRxt43MpiZWf5XlUWDoaL%2F6EbY11IZskC6vjxFZedYU3Eu%2BcnQ9ZnlKc5LEBGyf1x30PsBC2qh1pZNYuqA819OQlH9QLq9DmBx1drYkv0ETKKE7QE%2B3qVmfm7gWYFWOtInTlBABRTsFrgoFJDN%2BQe8ghZKvWLvUkCUOUyNhGN914OMiMeal6%2FhjPvtQ42Gyo4tacDkQIlKFTcjj3SALhlsfY%2BBogaDOmEzBJ3IaWjFayxLDm%2FA41m1xPrtEAJj4HWh6PMexarqvCZGsV5PXrNmYlybaAIaVPhsqv535p7wEIoxWHkuEjKRN3Bjk0cssmwm54t1LuNcGHQssiIifD6EenIAdCnl%2FMlLSusXaK2GGhfTDFw%2BnwPQEW3WMu8u3nKcuh0q4muKBmX9o5xRlvfOz%2BpxvoQoAlvi8BVEseIFQLzIKZpN8R0ac85xLAzdbqnbz2raa%2FZ7CfVkhWxguR8FGDgV%2B8FRWA%2FdQggAy6pt9STWF1qHXVGjPVhqFdKWfgbfH6%2FPybWUVqCKOrxHW4virYMPdNXNRDV134XcvmewdVqU6iQMJVF4BGhbi6%2FrsVQQ4En0JzjB6TVJgs33LaD1lj4nEQqoGhpZyead99yzOcBI46cdwMquJu9ZVVa8xGKlLPZN1Mubp%2FqHrBgC7At9Qy4v9fPn%2BMeZyx9%2BxHF6QpujH%2F0y35%2B6wMOjCyFPdUmkYBiLyWB0%2BEROuk6UIROcO%2FczqMD518X0AY%2BFOTZaiHVys8jMoeq8wpgO3fEV2kPcjxWQ9fOGcUV6xzXvaw8v8TiPdVcIQw0R1NXYIZgCUZ8hSLpFkln38GYKKjIJEklt0T9BKYWgn0gR6fJjTHyfuL9iCkg4EedSyTaNjGbinSqKrEnT7izD52MYvgSA1Dq%2BRGLd78dIQj1Lj3hCSCIKbTXxJ7JMc2RSsEmHjDGLX6jlKXW9M%2BTpgwVbIbSLHp%2BMhpJ5RYKXc7O%2FOZmOAByNgMfLeBY1HGZEY%2Bm6FtuuTMSIaDHuELcIfcTYy6R5nN48lr6HYfQ5sj4xmVgzoTFMUy8pTH16ZUGJhQxQ5%2FMIcyHwZ4SIZtMrGIodYeuHQmFiRQWAOd84IWXt%2BBKFbTYCYajnb8i0b%2BtUE6H6yPKczYOskSs0fEapwCxfFqESFJmb%2FeKdezIJElAHgh82coKqyha%2BvMLI21YBusHRhkSJObmx7GLYyoQwC%2BUulk2Ekc3eZUga4jiVdUDVUhKpJTGEmVruJjPYn6nZiOGg1Fr94AQiNwlGwiRbZGOqJSNajU9egUDxozGwBjX2DCVjFcBJWCfIEjaYkOSiEl9OEKWeZnS9BSgJCMk1cKSnWoxqfOavNZnaD9QR6DdMDntCmPEfxUUCtqQBErC1Ldd91kgonepcgrXZL7Lk%2BAthG%2Fxjs5hukeWXk6bxGXrYJGm5vOfMX7CU5kppyeAKqaDskrmPhZ5rEaMx9QJJvp4rqIt3wlGItBT99uIKWAf40K5eYvH9wsEgXjg6RKoo9rTgK1ch0Gs1phF0N1I3m%2FvSABKq7C7kAG5ReCNRxUZLLGoRc8SjQOfDmF%2BJEWjciXt5bQpYLHLJCinnNDVWXioBT00BpKbvCczwAS9SDP0Y1vHOQ7wzj2PzfC2nPyZ3IQkkfbkYTdeN%2BNnbyDypqleyH94jFtnBZLHeejik9%2Fz07s57wM5WN2o1bI7Qpt9J3bbO9%2F2xJ9aPtEzJsfIq1ppPHtuStwLAFzh3Zw%2FAax5FxCqqjYkGp9hHVNqTIuX%2FnPY9%2BCHPW0rHQWVfUF0kg1bLIFeFAdlflFgtcikpiiYZvQRYm2VsZUGm55B2HT03O9Y3YIYERKIBgoWw7rkpnfMZxx33S7Raj6qy9A1WRwcpmjY2GI5JJbnT%2FE%2FsfF%2B33VeMZAgFIAU7XpWSDzam7KtkIHJyAyiDnRpRmfjTLbJuZRh4%2F5iyybFZuvKZXyxxjr5frhjLTTqDkSvZzt5P0Dk7aE5qxxUaDBrbVB0MoxlPJpUKgcUBwSp4n5U1c%2BsFFPecw%2Bhz05AXkwTsh%2Fv%2Bu0w09dG7k0BdT7cUecveW3vjNbFFwXOfED5EEWy4R19MwxoWZB8%2B%2BEc4gHgJURKYrHkWZSVVG7LC6Lu%2Fyj1Jf%2BfDrwD3TDnJtalTH2x6ugD%2B3Lh8OJ7ESiuWJunkuUFagviyrgvk%2BRYjEaRfm35SSmXBSX9EVQt4jVihTdBqwwyK7adx0dqbUx8owyxySevNjnjNYJBHAGM7hKzwxSR8hzTOM%2FHuPkgpsyifAVj3c%2BSVREw%2BbWA81vpI0OW03FJEbZir1rOQOTRefgB5QyOuLVHYjmDrv7R%2FOUK1wRQLu%2FcDAKq%2FbbwDFi285lWmmLNgsDjj83FD0lmo8DBFiskRvrN%2Fls51y%2BYXxb4OXLVT5dJ8DWQylXVTv4M3TYBg3xBqIF%2B%2B3pi%2Fx3HRc6mNYKGhe95Py3LNYOu6dnQ7t3avWSmDJB6c606XLNZCd9bHySOYSxOmITVzjZPJQuXBu6CfTvos%2F4NI6UV%2Fzkxp5EG73IUraubALTXq5tzoTxDoYfK8aSaS4o7%2B5FyiHz4dPaJzPt%2FeMy%2B53Q%2FhoFzlOLcHmvutTuDrxqCFw%2Fbr0c4N24jMNp0W3OzJs%2BdUYjLySqaYrE8xNXl4XIZuiC2Y%2FT2okht7i9JIhyKhtR%2F%2FM6%2FnIyGmpgI0oJTbNIVz9%2F%2BH9fi%2BVR9izUG0o5%2FPUtylRen6qomwdW0nf9WUhKKp%2FISkIcw64Za66sA5j3kLdlbxOkX67Lm0FkDP2mfB%2BKlPYbYh9aHm1hIkV%2BVuFLNevIxedIV57pw3sOIPK2Ly4YO%2F69LBYiEmSTcD9tpr7TQms7lSS7w4akMUPE0EvV%2F7B%2BdXTvrGSfJ5GNIQssF8qrKbLyCRhzQsQ3%2FNlzmci%2FxKzJ0ai4nIaYAQiqyoIy1NMVRpuI5xH2c77%2Fn1dtiYEEAKDy7LlHuln%2FvKWhnPQaaAquw%2FQLAdA0W%2B6XQO6N9K7oN2LkMDtH8%2FmRX2J9ZTMOc6ytcULn0b5sv%2FwqO3JZ2Awh1ZB%2BlY%2BEf4ywOMD2TOJYAtZI9uwTiVmh9rOtVwfvLk98UqKPtfvSAvdVZMlsnIjJYF3h9gnEi%2BGLvNZvaejXX5S9yyR%2Fj07%2F8fWvOmPhZLNnB88rHUonwssp9qer%2BvPbmsvcCixgRSpYGQhRQ80PASi0YRSkVE%2Fagksk6JHoyzW7TIMRMOWlWPT%2B4GPoYKoUap%2FIPhTyW5CeXl4soyww0ImMqhKSiLd8XBsP%2FYb2L%2FsmfWpPfZTNyHV3Akyxidu5tWs6nsPw0M1NKo4Lx8U4Y7HXxz3yTmTE61JRzb%2F5puraZxgud11xMFgDdQK%2FdQTeaNmr%2FE%2BIwIDwrz2LCfolHhV%2Fybj%2F3ME57jGPwYgQV5qGIzNgJPqY%2Fhr9wuqeKqcQSKNSp81%2BGgV%2FGS44SVY9wq6fzz6v2BjJcQpcSFO5C7k%2FeHm5vNlRs4lGkUnzyVeAaIfZh0bZx8o8q7MlDnnw5WgWf95XqAlbvdpl%2Bs%2BLav6%2BltDvr3j4ePto%2BuNHf47p7nq63DuLvdVk8ynd5TaAuJPU5cuRlJy0aM%2Bm3i0McychfySsX2GxJ4N%2FAxiFYNRap3nMrHDfyXWeZUno8A6qbSLljKn3Z8eiVHq2u00R3nvC8SdD8oRVF9Rh%2F7Z%2F8GP8YkAnmggovybRkiC7ytcQkrIQacCg0I8kNIWGs0qwdH%2BB74lLZz%2FYDczXf%2BRNNRUYhRe9u9uR5o0fz6Kq%2F%2BvqtyXMyDsXTofuk6p66pYkaHhbWOutXSgxvKiiO%2FvMIrFDkxTzitx4HgK%2FAKjztUlSmPAPe9pmYOY1DjmJLrufFdJ21QSj%2Bi5mj2hj77FA%2FhmSTzOM0054UPvW3TTIe1WrdlOVpn%2BLfuuMt3D3QYYTyXKenK2xviclsvyOIKkLW9Eb9ffrzgjnQXiWEwuyWS3Ve7QXIB50Oqp7KP1%2FiCbrbYTcIN%2BrpxQCqW0vKkZv%2F7KzTs%2FMGnFdHXJKyvTf4SJDnklRZ02taSdrWev8WwJUzNZXCQcX0FTYraWryRyugVGdii5W9n9jXA%2FtfUR%2BGb2XxVqjbny2E85uCTJ19eG%2BFeP2F3lvcZB44hJlPCtj38aWQECQjatV%2B1IHMt3ABj55%2FGcVpVgzw1O60cFqdIt7s81vEdWU3Gk%2FFVPZ2YyXTSThDnw6QKw2IBb1iw8JLaZwgNTNLRbq30q2jGMcE7odKxOL70RUFyY9aLYabhrBOi3u%2BmRVoUSNsVmo2h7Q9pLd%2BmJ8fYeSDcopo%2FQo%2BmLpHGP7Wp8g2dy7WtAAQAYrl7ur8Qd39v7P8AiX9fXfbNrRC16qx%2BXFn5mz09nBuYxALMfZNNtQBMbpmOAOYe%2BqdtVmD9zXxHfZS3rYzmkoCSN7sGVj2F2Uwgs1XZ0CG58ZFjA7NECljkHDJFkN49OX5yLK0Ciw5W%2BUyxShKJvkzH05G0Cc2U6WU6WUqxHdThCDFHLbJmOjEi5DVZQNvEVgMraoehJDUnOkQfUG9OUPR6dL7rTQNto037AFpjpyj3BPW1IOOlZDp5ey8Xcw0wnuFE9gDl1YC8I35tACdWoiK8IzMIonb0f6QnqpMqMt%2BYqTuoiz2oWVRQeDQzlkG4Dc0UUQNFtDcnshidGclmdIk8tBVn7JWKcSV79dMOaFNzQykIGLajkggGCSJYnxNQQRwyOT4qEVdvnnMoyNUccUIXiNpmJXXEQj1xahgRXw5h618C7IFzVD1VAv%2F%2FxelKtE2IXNKpR%2F53M80Bmed07IHpcl4VAHZ37fUbEM%2BcNiPqnEtIvktRZvi%2Fvwkw%2F0YaaZvMObcEamqkEO8mgTH2G1v5lxmOS1Hb8ARThSIcUET7Q8UoyDzWHeUGMueWQO0JKcS7SQBw84DCzeYUq2isRs7LAeaKZJIOlIDDJ%2FnBEU4Nte3kbWporw5OgoYGLFbJFLCY6BcSsytzqQ0nL9PEKcomxZFOs62lOxQ7W0TM9015QkAAVr7ZpS21LADMD9cRAe3kxUtcS0as2Vw7incZj6nrw%2BQXuCFrEpKldNJlCtlypBAJEwWBiIH2QlaiyoGrCFU1dY2aVAvaOrp6%2BgaGRo46jqsTOHX25wYA3AAAAAAAAAAAAAAAAH%2FrgH3t1NJ7bPjslz%2BXQ742%2FGfH4OBq0ZwEMoVKs9mWc9uwY7c9H%2Bf6v2ucKYgCAIAFAAAAAAAAAPDZeoZMxu57fJ%2Fv1%2BlX0R%2FEma%2FdVA5sLGdbGouxcizGgjYW7dm6Tvf0TPq3axrD7HuLcTlr1%2B6II6cuV5EbkUoUCYKIgfasMrw%2BS7bXzz788sciiUyh0mxu7DFeRERERERERET829HX5puaxiSz73U%2BNuRAUAIRAxkOz0KqPRERERERfc6eCYex3lf6DL%2F8wT2bGNkFx3VZs0hKBoVKs9mWc9uwY7c9Hz9ioR%2Bzc8MwMzMzMzMzM%2FPn1vT%2Fhdn7Fnu9jvU3xlaiRCBiIMPtWShRi4iIiIiIDGwhIl2t6ffVTGF229ThHhn3PX6fpV%2F%2BxJmvxxYPz2eVnwSEbgJbshSVLmRkywWrgJDXMCnim4srQmgCEgUGWkSSJFOoNJuVbCvHXoVU1dQ1alrVgraOrp6%2BgaGRo45r1gmcOuscXaMb9FDLHimDlWfh62ka3%2Bx96whBCUQMZNj%2B38Ju09gwu0177G8K4x1hLMZiLPI45AO%2FQCFDCUiWQulCRrYcKiASJioJRAy0aJUEMoVKs1kpQGWoqKqpa2hqaevo6ukbGBo56jhYJ3DqzHU36NKbjL5timPYAAAAAAAAABQJ9UmSqvNLklRdLj1f%2BjyOa4sF8JEHG%2Fkkv0Ahw6bOHIvFscXieFNY%2FNacQyRYVBKIGGjRKglkCpVms1KYylBRVVPX0NTS1tHV0zcwNHK0STbwC6%2FdiAw8SzYdwBgzLJLIFCrN5rnupe%2Bf3zNHMEY%2FZquz4772CMOK%2BOYMztOLdfvy%2FOOTMEY%2FZgF%2FAAAAAHDeNw9j9DEKwzfoaxt7AsTY7WOHjx0ydjZERERExNidOuEdx%2BnqXNclShwQERFRdmNmZmbmL79vBz%2BzvsvrwXz8AoWsShVlSElZRVVNXUNTS1tHV0%2FfwNDIkZv06J6J8u1IXl4%2BVA8olORBob4n5BxKzkI%2BQila2AGGYRiGYbgiQyKFG5FSbxERERER6R8dHo%2FH4%2FF4fP%2B78SGXjKy877HPO%2FlEVBEEQVRVVRVRJBoeRc1QMxRFUTMzM0MNZUeSJEmSJEmSJNu2bdu2bdu2AQAAAACACgAAAAAAAAAAAACghQl%2Fi4GZIZm%2BSZJMr52nlqUVq611VGvjvsW%2FnLVrd8SRU5eryI1IJYoEQcRAe1YZXp8lk8KQSCIiIiIiAwMLIZHJZFVVVVXVgYGFkikUipmZmZnZwMDCKHhUKhUAAAAYGFiASqPRSJIkyYGBBWnOWlVVVVVVVVVV9XwfHzDeEdw9PL28ffrZ%2Fvlj42yMMcYYY4wfkyRJkmTbtm37uCztTrrJDwAAAAAAAAAAAEDAnyMU8SLee%2B%2B9VFBKaV3rtDHGWGutc8557z0QyT0AAEg3kiRJkgcAAAAAQEREREQkIiIiImJmZmZmFhERERFRVVVVVT3vsTRGP2bzZ2ZmZmZ9EwYz58595ty6COacc8455%2FzuLl363aV3nSTxM1MHBAA%2BU0N5YrdpQbLMhQNiYX%2F8umRyFLY6Q84RIA841ARJH7I4Vog9iF3YfKwIVeHHipJFuyClBSrnK0uCDBB4MTJQBUiQhC5NDAonVHEHJF7mKCBO5iUcNAjnA0KCPh4EAnwpBVmvoiLJtEshmGl5R%2F5AS0ZbHpnFlrk%2FJ2cmRlZO4gwkoZTLRJGEwTSkWGiqG5U5L%2B5cuPKBl5NPsmAG%2FgtSy3uiKpkNfQaIX2VaSJgIUWJAxEmQ%2FNb%2BO540GbLkyFOgSIkyFarUqDtBgyYt2iB06NIDBaPPgCEjxkycZMYcHIIFJJRTLFmxZsOWHXsOTnOE5sSZCwxXWG6%2FFnqd8%2BDJizcfvvz4C4AXiCBIsBChwhCFixApSrQYEwaVY7qiw1sVGtQ6Z9RQCKkJYROyO4yvvqnXqcqap77oMeaH734aMGnLpimx4jSJd1OCG7a9k%2BjArj3TknzW7J67DiX74Fi1FCSp0qXJ0CcTWVYTX3%2FpaLLleC9XvjwFihRa0q9EsTNKHfnoIr4Zs%2B574oE583gWreNasKHSuKuuuRwiPoVojDGJuV9fOJ%2BY2nHLbXcy49K0NDH6eSQ43AkjnnlZAoUal0lJEHa9lJJ50zDWGY5QZ2EBTjyfTqHSsxIopEzKmYzEIlCCiaehu1xnXwgBIqB1lDZOaM4NLQGZlXfRmp4IeR%2Bgr%2B3lidT2xMK09VGyBBgSSlBT%2BF%2FbhKMtCuU%2BuyO13fUOCkh5gohAPSqRjpTQTtRd6nQV2mdvNe0Pfq63hS5BA3mCoIxUIshZftSiyPu0RWQOWURwlUV2zh6LLNLXH0ogBNL5dz5QYtonwhO1KOM37OCTOOCf7qQWBMkoZo4SJA6awEeImlzJlQaij6aA0Ghqh%2FhuXr69gfO%2BBPM1DWufSXB7NW9%2Bn6uyyNy7FwSr9%2B4%2FCLLe%2B8GnLABej%2B9aBQA%3D%27%29%20format%28%27woff2%27%29%3B%0Aunicode%2Drange%3A%20U%2B0000%2D00FF%2C%20U%2B0131%2C%20U%2B0152%2D0153%2C%20U%2B02C6%2C%20U%2B02DA%2C%20U%2B02DC%2C%20U%2B2000%2D206F%2C%20U%2B2074%2C%20U%2B20AC%2C%20U%2B2212%2C%20U%2B2215%3B%0A%7D%0A%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Open%20Sans%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20600%3B%0Asrc%3A%20url%28%27data%3Afont%2Fwoff2%3Bbase64%2Cd09GMgABAAAAAD8kABIAAAAAiowAAD7AAAEZmgAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbDBx0BmAAgUwIgSYJjzQRDAqBrFiBlGQBNgIkA4ZsE70QC4M8AAQgBYJoB4QoDIIYG6l7Z9BbO0QSerOUWMD9%2F1cTRZXq2KKIMQ6wzSjJ%2Fv%2F%2F%2F7TkRIYSYiG1VafTff%2BDiA2TMhx6R6GCiKKipNXRGIIlEUHG3ELP2MRhdzx4LfCiOw5RpfZw4irWRaVroe2CMIx3WUxkQNxk6z461hFuVKenMJLHnEzY2FGtGIcST7Sp1cxTYd8E50vso%2FyPErfe33BNR2HDauKu3AktsDKFzxgVf7HfsTCZGph8ip%2F4Uwt9iS3xxX%2Fjfik50%2BuSSvluohaoxGhW%2BQffZ0VxQ%2FGM8sOOfD3skKRo8vC8f%2F27ju6d9yKpcgWhygSeSCgqcvLLdBLvHsBtzrwRdYwKMEHBAIxCG6PBxMBITIzIX70341Y99elDvde3%2F30frfnvzA4t8N0FHiQ%2FnyhlhYpTFKZKttIVlLGFqAtdnOXCPfh%2Fppp%2F5s%2FMptmdsGE2YZeAAAIiCELEKsEJcKJwJ%2FKynfnO1bVyn4tOV3TO9YVUOtHOcq59RemitP%2BpqmCq3alMuiDl8%2F5IMr1QhE46pskVkHI%2B0pVKL2OFsw0Pdt%2ByZtn6Fo%2BZb26vHjKL5K9xJojdAa1M3xoi2sTMDYexavi4tFLAtdy6hn5NhRHIvdLOsRxnVwW7mrbd%2FdLaMceF1hxqKaWqy1M0wnGOUpUjcZlXCIOSPyiwgRYekEwk0wQSeYETiachON3GSksRmej5eOx5AgFckz8qFxU4sFuBDwh2aNMare3AjGQ4P3L7FXIFJNjEd3EIjsBrNet%2Fjg%2FqRyg6IBQYDvgdMlk3NkNNgB%2BqwG7TqarbF%2FI8LPB7hDBogrwqc%2B2nJJCrmTE6e%2FO3AQw9WXmJicB2G0w%2BCQKLMusyiTVt%2B7VeBVQSlulYqexUqapgXzGwx058eVSam5Ez%2F%2BqsWpG8bIipC1c0vuzbiq7kJ8HXR3gQZsaCScAk2ZMEttfCnh1JcHeCS9i7uQq5uxgQkxCzfoeYlIwvhVCl0IVcNN12t9cdPdngmZbLCHVCIoxbFgSXF0Rlg1A%2FyKp6CYHaWA%2Bi8bm1dBjU8NCvvWp%2Bi8tPihQN4Xy4MWSPrDmG2TSlyfUr8c9%2BGtZUM29n7LsMByrIY8kQ1PSvN5MwN7xjeYm%2BZ6Fjs63IOyxLAcXRh0WHA3Sqhv%2FAGHf0OMAboONkkhqh6SqMber2rJnbwoSAyHiIyrZsPBhdDfcIJb1nz97ZXbZD3r3ZFlX9JDujMWp3NHVAWo4OtbwMm74D8lx9V0Y15%2FoRyh%2B3InYAAFhd436DrdGmAGD5%2BNuJDlyQOSrMzssDFPcaaerubRRgeZJJFtd9djWV1yY2p3ObD5ylFJt2%2FadoQueV%2FDg%2FXT4TExATEQOJSYnpiZmJRYvdAHH8%2Fy%2BjtWSl2ZY9ZgB1bSrGJybUT%2FcDGJ8qjlexgDmei4II%2Ff%2FX39P%2FTz7C0c2jG0c9R51H5Uf5R14frfzfuZJeMY2qWxgvm6qGecX0LG078j3V3XHJBsQFAKcMC4MEe%2F7%2FyuP9kBhfhu4hm%2F7KaGIj0k6NG9SmfP41vG3Zrkm1SRWSNuu%2Fe%2Faao7dacorBO2u0EiaE6x12ujLc4K%2FPVqeL%2BfFsemsy7svMaJWUFIM3FSaHwOESCaBWCCiq1AtWXDTiiFS1TONIcT2HKAj3o0GLG41VDRcQOcGCtdgk52DWC7r180lc4Pl0QVx4gd6WCT%2BHaQMvW%2FrMvV1qCH3fTjJoJZ5UIggyI4IgoVpSWH1R2pWcPCfPJeJLXJvrm4iEiydOtD%2BeimF%2B5HD4kheX0rA65wh6RJWAyj1SxSz2W1qlMghMHDWRluntJCyhuxbhJUQk6uLtGl6EG%2F9mC7ysmM7DgVmeLW5rBOxijW1gxT4%2FOLkQI5yW%2FObPgeqSOYxzqjBW4pJspA5LVt3PxUNI%2BUz2D1Dz1r8%2FAZsLS%2F%2BdSkBLwEMdfCVknc3u7fMqU91qa2%2F4psvks3WTyec7tZBhX%2Befc8PvvTSw%2BvUC2bz05k2zneojGQqtjgapOpXFH7C442UOzsig8vzVuvWICkgAMIC5UhBAoCx6LLoXq2AO9IITTeQS8OHQgPTdvu9TSuN9JpJXzjmAxWZUWyeomrOsmF26aMN0IYo7XNkd%2B0j%2FywvbfIXOHjbZKBEUpnQJIQsgUMCQOo2gNUva6kX4jXdyX9qbSmUPnWUUMFmtWOU%2F8ouymnsMxRHWQylQjjU4PaS4EFZWuenDmRNFvkx2U05uhSl%2BhCIngoU45VV3VKcnecajWAPomTiDKaVTeVJWHwS16yrjlt6EOf8jaZBcnhMnwKQpF6Jc0whYyp7PzqOTy1mIfJ60DMAGaBvWc0bmFrHf6R8y%2BGJGTXYwprNRzlptfQYLfBOierCgUijOYy3tEVKIqh7S2xrbTSrq%2F0pQ%2FSBzcmGbRUT1rKkPNroDpXZicoG01xAZAQ7hXE1qLs0Cr40IwceagKo1ShLC79OButaQgQm%2B5DjaNhGpUpCZ9iSLVeM2FwBTuQeEAv2GbBSqEt%2BcNM%2Bx4ZLAtzRdEBrEYAIEYjcRU%2FXYlR6oMBkw8IhfQiAfhtVQApvE2nUkrrX%2BqG%2BjkGxUZqMWschJoQCpJkB%2Bc3ymIn8LXmsOZ7RA%2FRmKctblKy1ZKs8hmCKbs1aO6gsZgS2R38s3086QF5m3NZbEkSNInPQ%2BHzg%2B3B219WZWCPF4rJcIaSlPjBu8X6Q3hRB8x0swhhdeAUuhI5E3WmzkJgswT1jwF4rzVxsIn33RIIKffNmksyqRWdBdfzDOGT1Bf9Rn0JfkAK52V%2FpC3MO9PEApajj8TZdihx6CiDFYTmIKG64AG7k11kPjxlg%2B9ZghNsRaTqpVnbT1chLyoC2oREi%2BEnHkPgCnF2km0ayUFLwzpdWmpSlQdkj9TPKA8pIAHQCLZuGkE5dzCRIyuee97L%2FsDXORLLDs5VUbh5ZuAbdtxjo6YB9i73dps1tCohcGpb3N%2Fo2lChSykdkIjUYjvG9OTk8f6PeAeeZl4RsBoOwLyHOz%2FE0A5RAStnLRutoJ1uwgiYXLr%2BE0HccEPK%2FCdjBLBFKtnFrhVBQxFIHMI0VgGb0ci4Z3ZZbMgg9AZQaF9dd6qiT1BRASK6uXNStArgxCupzRTBgjKtNNyxe1MAojJoOOa6Kkt6kTKaP2VfKjQzFXSlVy5E3XjHlt%2Bip6X4dQBZNhk4sS%2BXzgfAY6h3jmZ3nMIfSZ77GwTWveLWWz3fuSCs6xVGy6lrA75Hw83W35lLf4yOfNDUanh7xnPst5ddz7IZonglh3LlIy9zwee55J3vPavK7JvI%2BDu6%2FissBTOysy5%2BmULZZbAVsOD9ilPSn%2FQWZz%2Fr8P7Ttkj9mdcGtYwrZodSLJQ%2B6QwW7EqQrd1qYCeIoNvJiJBj%2BHUloE21dP0OZOArKgmfeqoENgiIYReCWDTpT3sjOR42oe2bZzNvekQiDdTIY3kYWQzzZk2y20TNXjMTKEmU3WNYvOQe5npVEGnBXPzeRCNNRrmWtXTDiJ88ey%2BfTQkOtB3lcYBvue6kmMQ4aBJt%2B36ZyanpCTqW7MmpnJNc5EgRIBPME5l%2BLH0xqsAgYEiMWH66keclCIIam%2F%2FSlPGhZigOzVcLRjPnRSL1G9ypYipsukjrlHnZRQYQ%2F1l%2BnjnCxKkrKsdUYHsv5BhLzFBAtlZmmEeKFj0Mll2z0B%2BekC3QSnu183K1BOP4rN5ytSUDSVUl3jTyPDYKaLA4SqRMwyq0H8nLLp%2BgGD4ox9qVaOSYG%2Bzjm7njrpFQUJ%2B1SV0oMszjTQ8aQY%2F5N8fzYDLlAVQFoyilNy7kI2Wqb%2BlNg2s7D9sWSAdYnbu5Nl0Lo%2F9IDx8VOdA0hzsrzyuCbBM8yrFPJ548FJ5PEePHVGyIDEOssj1SnSiX7r2XDD%2FMqVq0%2BWU7QiW518PVzmZGrFAUh5cSzHbuepYnJUzfVe8vUXBJ0XGSUDJPQo2vZM%2Biz3MTpUq9oasCSV9WKB51W2UnR4SP%2BLPDnkaUDV1hS4xVK5iJaKlRJNiHSbJDYpy53lq%2FKmczRL4rQkS2MVqBGwD3NZZLSejKXO8HJsWS6lfDLy8oBVIgjXlM4zrUqIalKrbIJnWX7gxPZPoMZAU%2B56EbNGQMA5VPDU9ApfLcGKKov0G0MhorJE%2FbCv%2BDhndWCyI7k7jtgtazSSe8pCs9TCNmXeXxnj9WTbvB0ue9Nd0eJTUzdGVYzG7kHcuM5Xl%2FnaqlhZE8u2preKWGqL%2BgYmvy7HDm4F8EzYDNtKWM5Exps5DwBXl7Mqq9kQ7mXC%2B3ugpiQPEueMNhYXt3YjM9kucrbbT1q1vUaJlpLcXUBRpSOyfb%2FYss49aSU3Nhj43W0xAoqiwLaKx2l0uhuryEPut4BaROoDlOFSDDjXRmkjQrB8BEeRpRyMrBsDwoL8lZzd2K6QykvH%2BeSp0XwamLEbvLa1LkVft6S40qV1LFXOis34riXFSJmcOE6T7ZOXtrN2GrO2b9K1z4L5Fb4oE%2BVLSLHVl5YeJzWNaQKVjtwu8zyRiRpCAyQw%2BoFkpUUWDFbBlnWNHkqmL2VhxHShTTlPC922JexLPaXgzXpFJv5eCp14MTrbvUH%2BWI9gica0DOFbhQxEEMO4o21dAx87XIWKzBgCAbwYEcVYWqlY8z5XGhNt2uQVRdOkVn0qTGJPbuR%2Fp8XLm2LTW%2F7KJ0A1gxMNAFRuno%2BLh4l34i2hZ6DH%2FkAyplaVVm30WOpw60ZGug0V5yDJJfjtiFcQQosvxpncSRafyoaFXT5o1l01obLuYI3uMcZsQeGYfBIM4GhoUsbpJuoQs853zYBh6HTjaJ9TxoIB6aZQU7oCGxYrDRkpjM2O0UYx7CKjpM9JJTWgm6Q2wSgZiLNrtEy5IQIJWTBvwxmtkqURTNaCVU4cg5oirAdlYdnCdoMICCI9xaug%2Fh7myP0D%2Bd8Og5yRteexX3IbNBKgHWp1zHoa8p4Lu%2FPA5P0TpFPDDmCZ1V%2BnlYzBmrgTlgQNkJLp1lxS8wtycW6XtlgwGrw2%2FejN5HICJzHBUdH19Tx0A6vb9mMEyxBSFM%2BzGsR11sUN%2FkuOKndSCrsd9OyB8XJ01p4zD%2Bm%2FeLsjFuN9Av52cimX1Bgq71KNL7WnKRlazHD057DpoZFGEydpIXfh3A%2Bqvxi0oaq%2Bl31YMubDz6WeIxmqmhb12Hm9tGgWpnfCPkzjTplElR457RnWkMKJ1QJP0da7wnxblLCrHCkho1J3mX96gA6ITIfWkGIOSPM6BZY4bGuhJGbTjm69Txi2c2WDG4MNnQH0Doni%2Fpa%2BeVjXCYjsj4RYg4hvMQJjON4RJm3cyBjWEQJIoOxDO836oQNqX2gbM9LCZEiUlCIYyiDPBkAZdX7ANZzMv92vn3b0jTZFbY1kvrV0RsV5Kv2ktHK19mfBLbd09PIflDaaRshdSal4TSIvmLGT6QKCRa%2Bz1dBisAY2CVimm%2FGQ7deOsxOK%2B%2BbpXJFBzIQy0OR3JJFFI7wClRCkxAJ4w1b%2BZ9fDyCMlugBY0ogh5xqhXIFZsFcMuYek9fyILz3Nxgb1JM7eH0J7Jzazqp67Msis1by9KNuIHsf2KSgK0SEdCvBLQHiLuQn4pdbI6DJmJkJktySDcJJxbsWarFGROOsYd3ewtXnG%2BX3APWoJ0NQ8BQQknCSI4Kb6qUx%2FcXNw61pZI2BQuC0UikBZQG1sZXkejMqwVibDbxuKGt7DagmydCvbtgzhrlr0w1t%2BdQvqCNJ1S9p2DAf3h%2FZH67r%2Fy186PptJJlHL5HtTq9yHWfd%2BUDVC7znIHuu4ArE2kTajyv400sNbYxzdWR0btCNWsNF6w1rGULjQDIzccp6hZ2flAQIPCBy80rWAu0to2zKiLQPYo4EKXbJJprR0psn5sVgoPWk%2Faanu%2FPB8HdzQfSHqK1WhV2aSISuZYaJXvFB%2B0nHcVN118WIdUtt7zlF2XW1kdHH9ZeokpJEINomYjQS7hpsbO1rDbN3t6O3px9KCU%2BKDTG1jET4kQvpWBnGx09Mj3KwaVX0wMHZrvZeMy55ocHextgvW3PliLlgzpABSLi%2FxR56gCk5oDu0Z9FXLhVShr90m39wmTZXdvbwsW88d3yztqVkW1VK5VrtM7trMmyxdvfxWtkea3i7tr9kRlaPlkklODRE8CBA611oJ7kCWI7eCT7T8hUAHcSEyyYLv44uGiqqHq4uHiiuHFeoeKk8QJW6aMV8%2FPRWBzq9RrnFnJlnCrWESdhbCmm8YDI7kUzkeBdGMPgdxjwqZlj5Jvoz6c%2Fk7OSrjMvz3t9%2FEL1HyhP85OUlU0lJJtOf%2FbQgUMkzngz3XfAJMdGdrY8pvIu9c130xFE%2Fo7A0tUk2G%2BcZGBdnXG2LtUmoTsMcO6Vvf7g%2F7Wtwqne5t%2FvuNYVQVIoHNbxkvFaUb4B7oJ9%2BTfcP5tdNm311xV9Wrtys5M2YibJU4l%2BbxxSPBPw5doxRoimtbK2N49mPG1GIfvAw%2BBtePyC6tHI8v90bcoU%2BiEzTWxwSzwiTayM8ozjbeSdCyfMu3eWCnuK%2Fq2tRRmEdro5zHoR9oqL1%2BtS8rFiTpx6qHCXedCoez3YFz%2B52f%2F6bnZlKy63HGrz77un8ChM8bTiuTxP5%2BS0ivI6cQihMRRIhlpH5h9bwZICFxfLX7tV38G5ukRNb63ufZ5pfMmX0OJTMxI%2FSHrz%2FQbE4Rchfr4Fm2Ubcimn5OU%2FvZBJJxyWlFsVhkRlaWzlaGLp7Edg%2Fsl%2BDjoCGPRJv4KsVp%2BETbOBB8tE3xFoNuPR5ZTcvOfK4fzv5jZ9Jz6bSNXHz2%2Bd4xkDyvP61KxqglIa2xJDm%2BKDGupdDTxaw2cTfn42hjVTncsh3Cq7UyBe9PeD8T9Ob%2BJDVTtmeG7P0J1eHbpadOT5WkaH3Bt5duG6gWDy0NKXq23OSnTksPwMOPUb%2BUwBQk3Jbsax2LMQuA2Ue4BHm2aCIk0QMbkW%2FvHM%2F1wOWjnYNC7d1hRp5IxQujqjIY3AZWx9ccFAq3Mw559brY5aI1I8QWj%2BaEMqlYF1u7tk3u3975AbyMGBeA8nLv8TUH2rpvNvblU1Lkdz3QG%2BiwOABpaoOefXRp33f4gWso8qd5UVnw6Pch6vYkAmLscja2wC7B%2BOEIllrUg0CQK5SLKv6ANKep1047vrmFpxp9VQIEdXJGkra9%2BhweUmIamE3N6EnkZqgRKuktXeZ4%2Fo2N5avrSWWeBy6g3K1113H3X2U1LglXF9ZkqXb5b%2BdcnIL5FecjzE0JjNB2H%2BSxsVNm8JtOB%2F2RB0czGIcVS1C7hpSjz1mwcripAdroHUxG3G935vNdyV42mT%2F6f2z1NxBF0mvSmwjD%2FvdzTje6%2FvwYSOuo4vkFnmfIfREvRATkYr0rivyOt5zQK7eQQ%2B9YJf%2FLlzwn0RlCCcp69mLAJ1rLPubr7KNjq%2BMn9WtVPsZ862guoztXQMv7VLtJO7p%2FIYrcA%2FKNigKceKo2k95xXuGku2wpCx2zmgsTh7OQbVFdgcxlOjbWD6uHf7RIfr98WgGJfNS5%2B5N7YQwYDTrB6CUjZxVAUuGykI4awjxRe%2FXvJw6kcD%2BHlodRDPnviRpG7Zm%2FXz4U7pMbHOyXAbfwzTNfwLIc8jx8cMDJzvyQ%2B8Gjx9wysLI%2Fx%2FJfuavxaNvBwfbi4Iw43kfMTalJbOvM%2F8POsBGyYImJN%2BGESpfSVl%2BQiqWzqyKRkNQS0tbYDivrv4sGQdZ7D9kF8fXZbBioGWShcIn%2F2dVVA%2BKVr9KRpndRdogbKjFqwXrVrm23dIxq%2F8ndXTf44iKyJjrOD62rbBcGLdJrNqnAm5M1Jj%2Be9W%2FDt%2Fsl0SOjQ62kL7TpY2yKon%2F6PzWMdPX1o3zrJCGSo1diNKN%2FRI9Hv3NyFvJCNLeimOCaq6xyXl4ANWtG4JXyQ8smhc2XrOJ%2B1NNP5g4vmTntVba46hns5ffZISyvHd%2BzmrqCYqUuWIp0njJTob5AvnOGOUQ6AG%2B%2BLc8xIGXmJ4JybUlT8rWgSy21CJ6o%2FUlZBJ1DreDM06nEZbq9%2FaFbycz4SifS9BEgfj0aBNzWAMuxmGbvs6Ra6e%2FEgw8ePXs%2FEBXiETTtShBBdy26j6iNSGurguNy4tjlJQ7N1O%2Fe%2BcnNLmmePjLEz%2BmuVENn69cCI7aNDrT0%2Fb1JdW2WRj%2FYJzDQoU4Veh3e5aL0QMXz3sOx5TOaptTaojSvQpoOmkofrJWTnaXifezuiTwr25nS3l18JZtc%2BiDQcZ3jZK%2B1cDNEtNfPFSV1UiyxbRCHycmpy1MJEH%2FO39QSHLxs8pQD%2BRCL6XJdb9HkyaJJUkO%2B9fabIlEpIc7dU1TcO%2B3jqGYmtljzsovZ%2FyjjMiWMke21M%2BSMVorR6%2Fs5A%2BSkrLXJ8bR5CImTEqRAx8qsefHkL%2F0Z8SV1c9uNCp9uCS%2B5OQeZgev0S2uR2YVMOd8pcokFUEX1Zpbmi%2BbR8BEo7M7Y9ExSnIzhLUdBWzuYjy%2BMRd%2FsDSptGlR63V%2B373xpV7MLrgSWspD0XBibqSub1tyUfPW%2BqRybSsILvDZwVjUydzCTdZAI7owcfrV8VxnLVCni9w%2BRi0yanwpzg2ENCob8Yz1o0dDA4Ai%2FrcehftEB2EA8LuaiOxWbHFlOGtyTPGdSx%2FmejCGsyra9TrjSCvWyc9T5lQTYzBRiVDcBG5iZGUF%2BtbS0zoPN%2BSZN2aGVvffOX%2FcNDVAH%2BD53Y0qCZnZY%2B7JOPz6I5fJ5kxqUeIa46OwH4329sio%2B9DyIi16iZxI2N2VwR%2FocNS5WwqRo0%2B8Q9B%2FVbCrIW274leHV7f3zXqJXEjYvpfeWBZarK%2FIGdrP2UtVmzCGyqEIVeleelVv5qu59PpHmJjOn4u9PvBpqSFqiIB8xUaA8c0nmgFMJFBbmfJHlakuNZlP4opnCup4qSDPWd8psGZMFqW3D4srQS0LG6sRk%2BiwY01We2ntTcjvzdnlKxupU4uLU9qkCC8u5ym5gOwLiRMdfsoTE9cUDhWvesswB7RDFciz0kOexoFZh%2F1iZCWGfyyKLTFo%2Bg3hxnc%2F6rec3nj7LMtlcdOk%2BzJD7EabvLTlrmV0WW%2FSmfnnppg18cMiSMBms4QVtNcrVSHTSx2mY9jg6CNzyIvCY2HjZVwW2ONiekb%2FrD%2BnbOdjbGQ43uq0KYtgpen15dfPe%2B15iQEoE5zqSvkCptAuYoa6O0nVbGH3p6KAGM9dzwl8CfigZ9SIqfqSpHL0u8%2FXIUgpqTj%2FUpwIx5XXOYlp6mMz0hy5zylbzI4V1bToWgtbTIrELzkyUUYMGTojpd%2FrfdAa8ULYGA1sDawODOgo4wqllscXQZSvXH9f%2BEy4%2FTnVWtLFkm4Sb9ZrdkQlQz4eSQV%2BZmYe520E%2F1XW0RCYZ5nLSXTHa9Qelh6NR1FgUSnb1jRTTG%2FF1eZQ%2FGkcxdkKxUd1nLlzJNgz0n4e5djjrV8iPKcY8gCDGnTYhKIPAxfRGalUW5YoKox59sVjdL%2BqXgk6eS0y19ze3vK1G0N%2Ba8wmpMonhd5JI13LRSDKsmQ0MJxsniaBBKVqQ%2Bcx%2BKvWrYF%2FRsbKytnLvzyqW5nA0DIawkzEc%2FBCrR6JerF%2FbEVnl%2FfVvTXhbtLextYo63cB8iqwXWJo%2Fs7BYfIsEzxZ2lLCSl1xfHEbCR1osCNtPLgtvFI66GRNtFS53WZa8hTEZkePTN6aBZ1%2Fdc5i4GwYOyMyMj01P9TXC470hmenx0emZRr74OCPv1NTY2MxUHwNcirNBekrs88lgny68T06mh3dxPguR443JzdGTyBCGVF8W%2FXhdxV%2FLX8N%2F%2BfJSsEawVrDqKO%2FHdzeQvkEFhqeGhYYl6Dil7RDpMDkyqjrtMXnCreO6j6xpC141jt9wMUwrzCZHrd%2B0oj7sFsmZZFtcdN6%2Bdz%2FL4jZCek4NeZ4hX%2BGr6SVZoJXmbhA95qWobB5qmq8dCgmAJ2IbNTzNXK05HOKMTLRUNN9ra%2F5fqpjo5updqv5qaxkbqSefdSLa9xki4pqLykIaErWThe834tTilw8%2BPX%2F45PsdUo45pChIS7tFeW0Vg1nfWMOsrmM2lhdcMLt7u5idRRfCcm83SLyru1e8t1Osp7tbQqLr9VEX6%2BgTtwCpswh5PYzRhEZFBgYHdoV30QRTwcyg5q5x2pq4YvNCUl5S8hyFvgVFKFjV2cvNDYmS10Wq%2BA50Yfinxq3Ly7d%2Fgd9vFRUAon%2Bw%2BvXLmrIDQwmiQ%2FviSkuU5lZwc2MYTMfWtDqpr9rwouDenIur60wObX9Ljgm7PqY9x0CwXEztTOy099NyZhbzSTNzpPy56VznakenqmpnC%2F8AKyt%2FLBQR4A%2BDBQSIvq%2Fq35xbNVz1jVhIMbQ%2FpN1hic85PoqOgATpa3xTx4Q4YeJJsb25lRk4tFtlbgoptVBaxv413M7DRgrD5RFmTZzIu1meYNhQYpN8Oyd5FZ8VNJ6mYaato%2BslnYmO2ibr%2BWTXE3R52g%2F5dczj%2BxTYuQ125i00OEs7%2FjwuzbMNXYxdL2VWRhWhAwtsXKjlaW9JQEyhzbk%2BNIo6D%2BiIc%2BufW576vv3Bxs%2Ff1Id%2F35opZt711D87eHuYn6uahOdhzLWOFB2G%2BNAd1TJOtlwuHoqclpNAxlK7UpzHODtF8O11gRQu%2Fdr7ZxoqB2bbegYnaqoHpj92RFiHOTvLRkRZh%2B5dhUqacPBi%2B7u8BNwEMF0Y7MAiv%2F%2FV2fxu%2FP%2BR%2FAck6a%2FRkzLBwcgKf9tEb0NvuE0IJsS1SwspiRx6Era1ezrbYykb5RAQ5YKBG3rZKn4Aa3gCRvd1mAz0YSqAfOXVVMV3Of9R5Q39Iq41rk19BLmmMS3R%2F%2BHhO7w6CySnEsgRpWulxFm3jPjfbtRXdJfLY%2Bpr6p3NHFC6qAHD2l1z86QUqDmsGxBglmZQQhLM3PSTShLyNZs%2BKLPD5BZgvIunlhI8RZertUiX1EI3n%2FzFlb8RL21zJNpQXvr5XqOt5kv2U%2Bt0idsoN7380FGwQdyEzpKT7rX4V%2B5u1eUX%2FMevy0ysL47eZU31JRcQ6wg32i2g94%2BtEJnGai5mLkIii1keYDdDRw%2F5CGjHg76t2VDIanmLiul8laGZU7xlLCwg0R5sGmihYaUFtleHZdlFELNCggrPyQvAXz%2B%2BpOoypqV3DC4GN77cuLo2RYNYXC%2FsQFp2OCntqfh%2B9qmNq32185XpDXGN3lZ8vM82YPmA9l4PLzgINQnDJM1jyB2Tt7%2FW1nUmFZcQvbJpammKvfRM2CPTSXSkw%2FToMvwSrL8YoHe1eTnUf58Lsx6f0jA9fegYjjecbq%2F7WeGUuRnroGcnhybnG8XYneQ5pU5FVuU3Jn7kIVZWZFRltTXWlLXklWeN2IGe8IzXlF%2BhACqIkQXEEAwFg00tdQ1MLP5cixoeQNOSIB14aLYLMrqwlt4PcFcSZWTmm%2BNmHZJdpYYEciTQ2UqjTuHAttRGE8SQ6TJ2jny2xC4cv%2FqCgUOrTfDOqSIz21ul7Sfh5SzXoDRu6%2BeAD5z30%2BbJ8QkUpbYNSfoIhf%2FSZgmTxgye0XMGnqhBYGN%2FzjCIa25woFMWGI%2Fh0duAFAmuCW5CIBKaew%2B4mZnv8e6loUGALeLocsTFT1rIWGC64NWkZ2OX%2B5aw6W3smb5w9ey%2Ft8RXDG3lPbXYHglPuTm0dD8IXgqeSV8oLUyfnZ7PmCUXp84Yl2yFZ5MYSJ%2Bzk4sjNPwOCbDAYCw2AdHIP7tsFEhtFDY%2Fzy%2BjPjKNTU8JDSUmYf1TksICsxMz%2FdXGlZTH1YJDlEblVDIP5exA1nKWIBBSEEdgJKWTsfLIXxzMyVYAl8yYlVaphlyZdZ9l3w7HzAPnH5kSvTDCifLn14zqBf%2BvL3l5zEePNfYIzL1mYiL3eEdrflrBjEcaG0mcvWbSIltnN7kL3HgG4tVsTp8OcJ%2B7u2HGcv34FJT9UOtBPN0NYyrxz28HeFDh6FdZNv2clFFMSMgs0XjzcrLK4uOzSjhHD%2B6RAvRXDeXu4QF8GB4TM698Mt9GN8kandf8xaiA6uW%2Fwoe7hHvWah8JPeCprskBaysUVxhuphv0fzaa4t%2B3PcvlkqSAXFZbKflL9fHL2t1O6MkaeJR87jn%2F%2FZ%2FJD84P5hLzTabVkw2HvGl8NwrQLDsw6teCtbCAlB1R7swPsJrd3AmwKsJXKHqvFff%2FxywD%2FgzvO%2BefVFrZFX%2F4fin7bZZonTwL5FVJiG%2FaJt4k1FXoRG%2FolH7oHIoXjlkonRf3PmYadmtA7%2FTMgigj7RsLyFhtEDqNn%2BeOUYsqmXxDPtX7byMOoZMkHTo1GTpH%2F7ljm6K2gFUboRMfwqz5OHesWtRn%2BZyZaZ0rtrkd8AMmOw6YfjVgzmcDxr%2Bf8uK8MXONTk1%2BMaig5QEaMDl0wBQbJ8Zm6rjfgLQUOgm10Okwce54WIzZFeVdwYes2%2BaZqwGT4wZM5x4wJ04ZL%2BhzOmObJ6A2dfmCddMV6JTxaj63%2FpOLxi8BGEyDh%2ByQT1333%2Fnc1cBA%2FK7abqD%2Fzv4%2BmokH2rCS50s8gNVyKcx6F2HRp6o0k7L%2BnH%2B%2Fnv5Yh%2FIWsNlpACwtZKucxwDQbdBGKQG6bZ1HO3tEW0ePpW3f4xGABYyc6J0%2BcPFu27QAKP9xKoDXKNEuTFUS4qLdowqIj51tZNijXwFQ7kR9ljjXx1CpuxXo9PaH%2BB0m3wU7cNFwxQKgupzypGkXMQVI99NV9YB8gRDw3AOfE7qvlNINqBNpyBWTU8wdHwOGNsITVt4AUEBDagVkwHKxOKBe3onCf8bp%2FQn%2Bw4PdGi3iFyB91OPdBuTb4%2BQYoU%2FAQ9H4xN7IH3f3MiNx5Hyw4AZw3awHY8l2awYznN%2FZWyEyOTc0IcVRsb%2FEKeyWUO7sdv2g08yQVTyG2fcUvDojgu%2BGZxuJj8rD79ucZYGRMkyVJI5LmhWjzmO6ZwSOrORcVxFesHZYhuXR2GfsHkh8Bq2r3MRtA%2B5SDGXCbohCu92u12bYcny4R9uizqGMGeu2HZoPbTYGFPHR2snMjWYngrFcYG6A%2B1Hx9RkXu71mD67bJ%2FEUT06Em0mR%2F4DiXZs5127bdLBeGhjMUK6HsWAzratL%2FWyZGcNBrkCLtzEP09XJ8rTu8xkPoYe6n52civVZ%2B%2BM5mc9X%2BK2b%2FL9vu5T3Kzy1nmXlJO3fJGEHafb6N5itdVEejsDnh3h8urT5fCHG0CzzZrzgd4dZsjphp3Oclqhedae2Cx7r2B156Q6fMK9EA4ZJiaXndz4CImHHMdgEtq3DRkVOFA0icArejq8FGXOPuMixh2%2BfI9WQSWj%2FUTs1tO4nAN%2FdVAluu3YFxpgSeio5oMO%2FiTUlDmjFgCLCJLvN5qiBkHij7%2FOl%2FIeiphD%2FdYC5LCAkOfgN4Qq8BaZZSQAgzdFfgoZHaPmZZAR0DoSJ3ITdTi1b2xakKhzLIL8i8Kh1CiumGbJ0oQPzgRFzYsOgeABesW35qMndh15WU1rXho1aE14xHr0j5O4F0q1fGgvb0vrcwdep1wCwlf1ELOboytK9SFmG02l3xdQLe1tCIvKwLdc7Q35XnYBgTcaTcwZaU8Inp6Ct%2BPMlavaWWovKlMgUBrWa8RlYHDY0DPM%2F9UzhXY7%2BVrJuBOYKAN0V1QsUQuTfCAJ0tXdUNWYShgAy8HgWZklyepHjh3ul1P5AvbW8IiMfzfbGFIACTsgbHJD%2BDkV6QyUHkaBf1%2BVYbM65GY%2BXywjg%2BYuApbuoEaGPDSJByvbHqyZSwoMFMXF%2BLNWm%2BhdRira8uiL30P8h6EpIk2yjHFvDwSXZyyRatfgVr6yuI%2BmhKhstloF28aZiIQ0trU8%2Fbf369%2Fr3DSpwOQFkmh0a4Xf4ZD2l%2FxEjsAB8FlhmK%2BYBcfAsf2MEoW0UuZIX55PJMN0dBlDq3y%2Fbl0K4E0X3IuufYTFuG%2FAWSJaWLebMOQ3wXOvwMc2m3ctMU0CYtaKG5QewbeCT2Se84n5y6wyStVicic%2F%2BfvSNMZvy4UMWpXf9Bo%2BXsB6UThiKgF2VhZUvx10qeAYjRsfmc7OhFb0JaLwAT8nJ3OtVDqxg9a4y1kW6rhXzqfGziV9pXWFvpxXA4RKgdlfCq28Fi2e%2FSFShbVhXKVxKmdQb%2BQ%2BB69fLjlkAhm64vOHI5YZZIzElZ6AxIhi43ygaboRA5%2BSGIsYbYlsSgaEUANmQYsrHqbGJVB3O3BHHC6To%2BZY2WUlTn%2Fq7mIkUNNkWQFLql0RMdoS%2BmmnrPeDAZywBEQRy8XTj%2BxKV0M1a1pSR9Co1JLOakgJGS%2BCZnsa2IhmJI4lQogqc5CqcfL2VPEta1nbst1MRBEyRgJb9ZmxL22HaKKllhcB5EdVQaJdTG6AmI6j6aZbwqgWTA%2FUk6RowmnkPi0Xpe4DoPYlI4yKZf71sKSYIOFRBfknAqN1gyulcoCBho8CWRQzqtxeZTi%2B9xOOTATq4tOWMdAc6BNboJrYRV5fETIysCJzIBgZtnnUnz56SyuZMZym4T21Pc%2BYKG0BXrwHIa2SlL7OkSjYks8Pg6l3sIwmPllsH7OVMjjDPJeXhOcNA20zYdjBBE%2BYipeBxesh0w5BAy65t%2FBSGJpH3uFgToFR1qxo%2B9s5GGgCFkQPVEgiYaDoms5Z99AWBQxj0PONNG0vJvWx5N9K8xPA%2Bk4iRc2ZyRH6gBGoJhGhKzMkt1MfkS3Y0RFUscmP0q%2BEQ6g2YxYlRDCBoJKRZbFfk4HkHjo1TNBYR%2FHiOziN6%2FY509ibuuqnCQBEheEVpzTUGf%2FtNlykCEfopFysImA4eeGCejzOhWqUBqBNNCzDq2Z5tmKr5ALljdFCMkSI7%2FdDHFOU%2FgGv9zIuaj1aSc99MfX9tcDGnfC%2BPnkdK2UPu9AGnedt1vPAuY0bKawMPNwtKg%2FEpO0uJLke%2BEZAhbZBdAF00bRXFYaJrh9ijsrNjJD%2FRFSJKKWvQuWrvzLJdoV2AOddHTGq4KDAg8m0Tdfr%2BaSVRtlOFJXYNKQ4ctWV0IMvVhGosSxC6HUqYkfxYKbSgRvOLZiVpnGUedQS%2Bsi8wjwh9hggEV3LgZQq%2BG1qM3q8RrW2bx9OSzj7DtzPZb9LTCvhS9TPxxTPx%2Fa%2Bfx%2Fd3i%2Fa%2BUl9doNTVYvHZx9cWekmfs1TFuuuKhjITF4eO5hYAeyonGBBoJYQIcV%2BocEn5hVRHgHGD3bBT2YhNBPODK0NgQBw67r21R%2F%2BpJ%2FWD%2BpG9ZR%2Fb%2F2zIrmExuvMyqp4NC3vUT8OwEJndVcVe071e6xf11%2FWn%2Bkf67%2FqFpk%2Bo%2BwqqFoEGyFQsh0PGLdUZRZWaCd0nYrEoXSXemKNL4JoSW8tYfrSiwjwv7ICoyFCgsGqbFACbbo%2FxHmfTLA5HpB6m8hE3eKxwRgtq8TDIS2R4h0tgflEFIqx5DPM8BqMjBR6KbezYG%2BDBzoXquDLUqPousQgehNLh29rJeGY8wQhq1RWaMOghdg%2BNIlt2Zposk8OQ96C6Auu6CtVRTcZ141RfSGu9C1ZLiCopw%2FXb0ryQooJO001cnCZS73jj0GG32W2tkDYK4d6AGIXPBcD7HrKsekSm0f%2BpMWYdSC5TcglPfqFxMFfE6vu2UrV5QCkFI5A3MJghtbEneGAeMSaL%2FNUvcspnoGDjyQ%2FWh9hmPczUIl5AvUtG6WfmmsDWBF4P%2BCw9KkbgUst8q%2FdtGHCo%2B5b3HcR79LegYTgVfOeGn%2FIOxjH0PRaHMQGKWtJa3k2UGJtP25vbMAuZDwjAofEuZ1nuQ8uDJ%2F7mwYbdYD9RJwPieIi4n3yK%2B%2BlFzD9Ynai0NLEtb2nZYjcylDb6dz2lt%2BiX9HcSRPFQRaETgQNDQweX3pptsuVHFEmYAHr4BOnfRo1lLvEMgO%2FxqJdNo%2BofhE%2Frt%2Bpf1n%2Bvaes6ZTjTf6TBCLPrWuG%2BSAQNE70ChjY0oCH2ObB5XnEWO%2FEkmUJJgIZ2AujyRq%2B4p%2B2ajEZHNDRAGZciwyuzyLaX0ORk53Pf24FtllN3nA27TnMzpHxMUk2jNyup2eC7Z9cb%2BNnvzLqhj4ymvRjXfpT2KqVBT10p%2Bi4qq%2FJFfHUkER0rCyCl3tkWZdULbOkf6VyFybAbS7VdM0laACch1xIL6vD2IpAHLeX%2BnM%2BUdzawMhqw74E3G17eTlmA1zFKuZjjzL3SCZvalwBqS4%2Fh%2FtCSyjxMWv2Tp1rGTchXAGROCDIkeOyqkY5UhDl44pm1e4AiaLxN39PtfHjXHTdnYPimeoBAkvZVM%2FY%2F%2BQn8bpFtTkTn%2B%2B1nPjlN29rZA%2FPxJzj7ue1lOQVMqEqFWwDXscMPXxfVtZ%2B7QK2u5w8fAExtqbWNUPksf5Qx52dDw5a30sFK7evxM9iG7CJyGbvG84bD%2F1GmVRQtIwLAnVGuCzM6%2FOf6Zowx072rLBSxOKUQuCjXlsUjXEVhqtdz6wQITJGZ%2FrZmhHvmlpshzEULFiRthq7NWXdcCG2fRtGJB%2FcVwIzV6A01pvYb90ZONjU7mVBkRpyu7od%2FAIJBXZu9kooYFO4qHRTYvOoblrL0RVyD3NAnGVrGkZL2hVz%2FH%2Bn8LPzZnSVMTmkeBStdkJxpnpMjIE5vtcDcVeZAC9C0dCheTDFN%2B4z8bJ1lQT3uk%2BDSpKpf4A9C0dvncAhJyMUPyPOi8OvKRInuVbAVTUKdYsQVlunHgXi%2FHQIsIImGJtz7KpV%2BlcDVTBjJZeLoYZCCiGOKaOnWUzICSKbFSvX9lfy0VTV3XwIeZBnf0jqwnmUTzMkCPmHBqZF81yS4idq0IBVU0acAdaS0BWKpvk66MaOAHZC5GLQ2j5hF4izrpM35nfeQjhJ29%2B69S%2FU%2B%2Fx4ldt35vm0n0Hhp2kzw9oI5B41uaET3a8xs1r%2FMbJyn5sSbNR3jeTvv0Yofw%2FLePtD6yvz7SF8k9B4epzzHf4v9WqSpMWFS0QOLAOZueZ6F8U0Yona8pDURMoNUpJcIxPpCBA8oyUCCf02hC1oJSaeRPLInpJxHyeXPcd%2FEMP2iYMC6srrKhac31vM4hHFJgLx7dQPrMXv9jD%2F89Wx0vA9M40cg%2BD8U7jVCYsET2MkVXh8O4Li%2BHplbkFHhup5lbQZtCOJjkxdT1xU9G1fK%2BpyplMtYwCx0HIqbjtwjE73sPdI0nN%2FHOwD8rzLvEXso2jcG4vCKQtoXLzPsIfSAZgpBrXBlby9WI52w24FO%2BjbG0P9PZwbiXCWnK0jWfsXv3a1m5nyVny8uOAfjDpjBoKnns%2Bo9escAxu8DQ2ptADz1awOO%2Fre931%2FGqmCru0WxupfPAeJWr%2Fj2oRpPY%2FbheRh7Ht8tnuPu3Wlszg%2FEHgG7j3VXPmJ6%2B0A3LWA3LEOqquWwiOxe5Xa57D06w4nfxxe4%2BT9d%2Bh6J70YmKW2YLh5x7n4g2xYmArSnJb%2B9KCqTaO6UWhm%2By%2FMjgoD2GcEXj4Ll%2BO%2FZTu3MZEwDillsyajV7wOTeEee%2F92e7MNChwyIOxu1XnxM43TcOLMmZMT4HRoYhnI9rO0WG6vmdW3WQvZIU0xvJcHjxQM1joctFUUYI90%2BNTYTIlj%2BrsO%2B7IWcec1U61q8rtfmAQ7QDRZVDOtg1K9W0H%2FH%2FUMdOr6%2F9wJaF5MY2pKOSgE6Rmx8pOzLZRlTMjxDEb7gC%2BKykqTYdB3amioZqUWznp1i%2BnyVZdOztPO8pZ6yzXlMOX7IDshVu6IaVysWtrcDnLPC%2BEobanCPAGbovGy5gcHkGXXOVC7R9E9obwa%2Bg8ziJFMtLvwnANdN%2FWwTrHTrSphCwMGpbzdp4RysAwwrLmpcdzAOvk09f%2FFdoYEn%2BN7%2Bv9%2FTlKY%2F9OFa%2F%2FWa%2FCnWejOwp3%2BAIAwI1w3lVnayF4iZBA98PhFPtAJRZW%2Bsm%2Fr9Pq2BHKqq5BTf%2B9W9GIQkFe5KVBfPK%2Bs%2BayVPRsfGzK1GOlVQ%2FXu8AFe%2FFZPHET88c1gH17Ogbb2utFIA5APOpo3C8z7SOJ%2Fh78xmw8sREdXxiZenCML15uCUSkQAx6GXReGktYLOHehj5FHoZvLRvkv0ftdjw8NRNqOpt5iLUTd6CVSnvlt3v%2BxYQCcXlK58CYl7kqFz6WQCVyZemvSsafXJLg4HlcFfy%2BZLTnSvl5h8MlX%2F7kCeSps8IJiMh4CqoovVXDQMUjd4%2BCTxhjZAyQcMgzmtCMfCh4%2B4mOAoJvw4OC0W3qU0x6lHvhdAAACPxahdZ7c292Q1%2BEZH%2F4OS%2BRPiXTLN9RYR%2F9v%2B7ywDL51m4gcw81NTjRKjq%2F%2BvA2aX%2BRMcEs1%2FOvOat%2Bu2hZG6MCB3V20iqyS7bvKUK1lEd8y%2BXfBKX2TlPKiRYlh9WIUbeWVx4FwGltUjW0SxrVNn8tR6XD2OHmlPjMdDtIoJjtxc1gVOBxCwrsPSjK1XFtGsAG1bC41DQnsRiRrXcSabtV0JHaWbZL%2Fwa8KLqqNg73NyZ7YeIaFeAIXdYPnVHMLtk%2BH6C9BfjwnNqeuzgHoHk9yutlQA9%2BoVQbhExJ86nYJrO9f6R3f5DjsKF1ffMp8Sr3i8jUt31lcb%2BcipZX64u%2B8EQ8n6mit08xMFn6o%2B5lMkSeNQGysM0F2Oqwbir1aA8iqzwkuxBqbDfOWghkRz4GlnJ8L0Ejji2UrppLK0kl03v%2FyFbhkMxQeaw%2FXnqUD8KmHC5FPqnaBYR0kT1t0MRemcTZOAkGJfmGxOil3XzqDzKFFtzZm23uUo1%2B8Y%2F54DpL%2Be1rRDypqbIlfJMhzU3UAI9Le0jL1ujcuZYM%2BPTI16AL3pFHnqIW06rU9gNTcFfD2x17GqRspXK8DzAxx63pRKCX0%2FV73pdW1MXqS6qIDdR90lKR%2F%2FZlkSuChCUAbJF8q61IWy8qAOeTB2p6fhRvk1nGsGmAAaj%2FQRAwOCbXc7OcqPf3Si139duThdJdsiBxG7cxQkZF%2Fifll%2B%2FN5%2F46LRf%2FHIQiAvHUtMzFlCrNk8ew7iSsyTBDKFSiuZswyVzVzOyCsoKlWmKlBVU9fQ1NLW0atfVgMYGv1ZhIo2AAAAAAAAAAAAAADA3xqjh84Oz8Pw2idf7iB0h8EbYRib1uI5hFR6i5bJrWBt01bi3P33NIigCABgAAAAAAAAfC5nEUWu7%2FPA6%2Fs26ZPvCxrE7yjSGFvKuZbGYqyVYzEWY9GW666d0DvSv40HGB69pxh3EHdHUeMmoaa%2BGcK1CLEhlLVltRd9J9tdn3v45IvGhVR6iy09yyVJkiRJkuTfHm%2F90PMgssij97gbm3NAhAll7RPeCaV6ERERERH5vM7CHa57vtZr%2BOSLwRua0cgY32mcxgtIpbdomdwK1jZtJX6UYneOzZ4ZVVVVVVVVVVX9fB4M33h0n4ZXdKzcGLsWESaUtU97J7SizczMzMzMBl2YWf%2Br6ffvofdoX1Nn8IT7POi19cmXBvFrbtB44awIQqKvKcychbJ6NvYc2XIhIBokbp68ZSUSKRkphkpLRz7LLyAoJFKGW7b0ciSvoKhUmVUFqmrqGppa2jp69StrAEOjxmiOFmhTZVvqoMo742t5D3xeJEokkSlUWgfu%2F8%2BBw3sYPve5PT8vGK8Yi7EYi9CEcCCQ0ZFMYM6CrJ6NPQdyITFPkiVTqLR0Vj7wCwgKiTT0zNCC7biez89CKiCB5Obg7tl6wNPL2Rt9FX1%2FSmNcAQAAAAAAALKi%2B5EEAKH3AwAAhD4XP%2FjCRx6c%2F%2FULRPwQGka4RSCjIzt0xsPF4nD94vAFi9%2FkTUjMlmTJFCotnZUP%2FAKCQiJl8pSFnLyCopKyiqqauoamlraO3g6yEfEXdW1hOuCdbdcDLMsadD5%2BAUEhkTPvHL5%2FvtsoPNmfU3fIPS4IQG6evBHj9n7Tvjz%2FkDWe7M8pUo6IiIiIzvsS4cl%2BjBj4hv1y8wcBc%2B73ucfnHpl7GzMzMzNz7k9NfmNMO2TbtkjRQERERGqaqqqqqn75v01%2F2n23Fw3gCGQ0K4vPRjKycvIKikrKKqpq6hqaWto6ehbti3sn5HwdcXJyBuoAAoM8jB89geTA4CxKBIZoKQEEiUCQwLY%2FUAiAQBsAgroBAAAAAAAAdcXpdDodj06n63s%2FPngF197nw%2Bvd%2B4QQQgghhBBCCCGEUX6EEEIIIYQQQgghhBBCGGOMMcYYY4wxxhhjjDEhhBBCCCGEEEIIIYQQQimllFJKKaWUUkoppZQyxhhjjDHGGGOMMcYYY%2F3c469l1mo5tZq0pmmaptVE%2ByXUb%2BuPv%2F3rqf6N%2B3Tcwe6OVuMmoaa%2BGcK1CLEhlLVltRd9J5vn4ZxzzjnnnPNB2YJzIYQQQgghhBCDsoUQUkoppZRSSikHZQsplVJKKaWUUkoNyhZKAdfr9QAAAMCgbAG9hYUFSZIkSZIWZ%2FmAR%2BMVEGFCWXvun1OgZEmSJMm2bdu2iSciIiIiosNVlvZLOvZ%2BAAAAAAAAAAAAAAAAAAAAAAD0GKFhaBiqajRhmqZltUKWbdu24ziO67qu53kecx7cMzMzc5EmhBBCCCGklFJKKaVUSimllFJKa6211lprhwQAAAAAICIiIiISEREREZ3jYV18zi%2FLMTMzM3PZYxARERGp2VRVVVXVzMzMzDoHSdCxaDdS4H0kPJzQyOanzB2Qis8u%2F5ru7T%2Ffos5IVgbM5GzeGcb1xc7UrDV%2BfbO41Os7K6re03ntaZKtSP7CiUHzFg4%2Fd%2FIXJoiPCKH8oK7kADEmTMYxnjFfPvWzCo4YRbzcErIYk6kY5GVVKi1zTB%2FFCxKRmFGlFOSl%2BOkLVpQDRbdXR9Kj7ItTlHiL7KhvhPovKRFwArAsVFC5HrwTnjIES6bM2UDbiYrUKFG5MNxwYM2yzar3Aelia89QNZ3eyIxZv8HxjTev%2BcyPHQdOXLjx4MWHnwBBQoSJECXmOhBxEiRJkSZDlhx5ipQoU6FKjToNmrRo06FLjz4DhoyAQRgzYcqMOQvQiwB%2FzlmBQ7Bmw5YdJBQ0ew4cOXHmwpUbdxgePHnxdkObTFlmVHorW5F8DXq0JypXJGr7cd8wvviqUJVcS577rFGvby591%2Bqmdav6%2BfBVws8mf2s2nMG6Z8%2B%2BAQE%2BIXvovgcCnXsvT7AgIcKECtcsQpTIZ%2F3zN0a0WHHeiUeQIFGyJONaEKVIlebCB5MeGXTLgWcODblt1Jg7ho1YlqPPrDnTicaPiTb1aZRmfktlgaxt15ZtOzV8Ehp6LebYIBUVYzP6iFP8cXjfCJw%2FtfkEF7FptYWJiqqbQ40Je1wMDh8T6Y8LisBdiepw1qB8b2%2B8sf9FXw5HXzoi3Zf6QzcfHVHdrnvrhC9etP0LV01%2FdVH3x3f1l2bTQ1%2Bl%2F8%2BMRVCxg9vjtn980fTpYL%2FEEb%2FE5qJlj0ThDt9C%2BgvzhDlnlpqmWL%2Bw%2FSN09twFkYfJl9qh%2BVIx5F8yRH1JD7Hy7%2B%2BpzxZKffweCkWYEMK4N2fhHop78QW%2Foiq8vOztRA8%2F3ePRMMw2In4zxPY7wEdHjdp13Goj%2FDgkOGl3tEN8v%2Fjw9gaL%2BzPMjmqI%2FSbD9Z%2B22f2uLBLz9GkYTj199ixsgIk%2BhT0PdCtVpwAA%27%29%20format%28%27woff2%27%29%3B%0Aunicode%2Drange%3A%20U%2B0000%2D00FF%2C%20U%2B0131%2C%20U%2B0152%2D0153%2C%20U%2B02C6%2C%20U%2B02DA%2C%20U%2B02DC%2C%20U%2B2000%2D206F%2C%20U%2B2074%2C%20U%2B20AC%2C%20U%2B2212%2C%20U%2B2215%3B%0A%7D%0A%0Ahtml%2C%20body%2C%20div%2C%20span%2C%20applet%2C%20object%2C%20iframe%2C%20h1%2C%20h2%2C%20h3%2C%20h4%2C%20h5%2C%20h6%2C%20p%2C%20blockquote%2C%20pre%2C%20a%2C%20abbr%2C%20acronym%2C%20address%2C%20big%2C%20cite%2C%20code%2C%20del%2C%20dfn%2C%20em%2C%20img%2C%20ins%2C%20kbd%2C%20q%2C%20s%2C%20samp%2C%20small%2C%20strike%2C%20strong%2C%20sub%2C%20sup%2C%20tt%2C%20var%2C%20b%2C%20u%2C%20i%2C%20center%2C%20dl%2C%20dt%2C%20dd%2C%20ol%2C%20ul%2C%20li%2C%20fieldset%2C%20form%2C%20label%2C%20legend%2C%20table%2C%20caption%2C%20tbody%2C%20tfoot%2C%20thead%2C%20tr%2C%20th%2C%20td%2C%20article%2C%20aside%2C%20canvas%2C%20details%2C%20embed%2C%20figure%2C%20figcaption%2C%20footer%2C%20header%2C%20hgroup%2C%20menu%2C%20nav%2C%20output%2C%20ruby%2C%20section%2C%20summary%2C%20time%2C%20mark%2C%20audio%2C%20video%20%7B%0Amargin%3A%200%3B%0Apadding%3A%200%3B%0Aborder%3A%200%3B%0A%7D%0A%0A%23tiHeader%20ul%20%7B%0Alist%2Dstyle%2Dtype%3A%20none%3B%0A%7D%0A%23tiHeader%20%2Enav%20%7B%0Abackground%3A%20%23c00%3B%0Aheight%3A%2041%2E375px%3B%0A%7D%0A%23tiHeader%20%23top%5Flogo%20%7B%0Aheight%3A%2036px%3B%0A%7D%0A%23content%20%7B%0Apadding%3A%201em%3B%0Amax%2Dwidth%3A%201200px%3B%0Aoverflow%3A%20auto%3B%0Amargin%3A%200%20auto%3B%0A%7D%0A%23tiFooter%20%7B%0Aclear%3A%20both%3B%0Acolor%3A%20%23b0b0b0%3B%0Afont%2Dsize%3A%20%2E9em%3B%0Apadding%3A%201em%202em%3B%0Apadding%3A%201em%202rem%3B%0Aborder%2Dtop%3A%201px%20solid%20%23e0e0e0%3B%0Abackground%3A%20%23fff%3B%0A%7D%0A%23tiFooter%20p%20%7B%0Amax%2Dwidth%3A%2060em%3B%0A%7D%0A%23tiFooter%20a%20%7B%0Acolor%3A%20%23b0b0b0%3B%0A%7D%0A%23tiFooter%20a%3Ahover%20%7B%0Acolor%3A%20%23c00%3B%0A%7D%0A%0Abody%20%7B%0Afont%2Dfamily%3A%20%27Open%20Sans%27%2C%20sans%2Dserif%3B%0Afont%2Dsize%3A%2014px%3B%0Aline%2Dheight%3A%201%2E6%3B%0Acolor%3A%20%23555%3B%0Abackground%2Dcolor%3A%20%23fff%3B%0Amargin%3A%200%20auto%3B%0A%7D%0Abody%3E%2A%3Afirst%2Dchild%20%7B%0Amargin%2Dtop%3A%200%20%21important%3B%0A%7D%0Abody%3E%2A%3Alast%2Dchild%20%7B%0Amargin%2Dbottom%3A%200%20%21important%3B%0A%7D%0A%0Ap%2C%20blockquote%2C%20ul%2C%20ol%2C%20dl%2C%20table%2C%20pre%20%7B%0Amargin%3A%2015px%200%3B%0A%7D%0A%0Ah1%2C%20h2%2C%20h3%2C%20h4%2C%20h5%2C%20h6%20%7B%0Amargin%3A%200%200%20%2E5em%200%3B%0Apadding%3A%200%3B%0Afont%2Dweight%3A%20600%3B%0Acolor%3A%20%23333%3B%0A%2Dwebkit%2Dfont%2Dsmoothing%3A%20antialiased%3B%0A%7D%0Ah1%20tt%2C%20h1%20code%2C%20h2%20tt%2C%20h2%20code%2C%20h3%20tt%2C%20h3%20code%2C%20h4%20tt%2C%20h4%20code%2C%20h5%20tt%2C%20h5%20code%2C%20h6%20tt%2C%20h6%20code%20%7B%0Afont%2Dsize%3A%20inherit%3B%0A%7D%0Ah1%20%7B%0Afont%2Dsize%3A%202em%3B%0A%7D%0Ah2%20%7B%0Afont%2Dsize%3A%201%2E6em%3B%0Aborder%2Dbottom%3A%201px%20solid%20%23ccc%3B%0A%7D%0Ah3%20%7B%0Afont%2Dsize%3A%201%2E4em%3B%0A%7D%0Ah4%20%7B%0Afont%2Dsize%3A%201%2E2em%3B%0A%7D%0Ah5%20%7B%0Afont%2Dsize%3A%201em%3B%0A%7D%0Ah6%20%7B%0Afont%2Dsize%3A%201em%3B%0A%7D%0Abody%3Eh2%3Afirst%2Dchild%2C%20body%3Eh1%3Afirst%2Dchild%2C%20body%3Eh1%3Afirst%2Dchild%2Bh2%2C%20body%3Eh3%3Afirst%2Dchild%2C%20body%3Eh4%3Afirst%2Dchild%2C%20body%3Eh5%3Afirst%2Dchild%2C%20body%3Eh6%3Afirst%2Dchild%20%7B%0Amargin%2Dtop%3A%200%3B%0Apadding%2Dtop%3A%200%3B%0A%7D%0Aa%3Afirst%2Dchild%20h1%2C%20a%3Afirst%2Dchild%20h2%2C%20a%3Afirst%2Dchild%20h3%2C%20a%3Afirst%2Dchild%20h4%2C%20a%3Afirst%2Dchild%20h5%2C%20a%3Afirst%2Dchild%20h6%20%7B%0Amargin%2Dtop%3A%200%3B%0Apadding%2Dtop%3A%200%3B%0A%7D%0Ah1%2Bp%2C%20h2%2Bp%2C%20h3%2Bp%2C%20h4%2Bp%2C%20h5%2Bp%2C%20h6%2Bp%20%7B%0Amargin%2Dtop%3A%2010px%3B%0A%7D%0A%0Aa%20%7B%0Acolor%3A%20%23189%3B%0Atext%2Ddecoration%3A%20none%3B%0A%7D%0Aa%3Ahover%20%7B%0Atext%2Ddecoration%3A%20underline%3B%0A%7D%0A%0Aul%2C%20ol%20%7B%0Apadding%2Dleft%3A%2030px%3B%0A%7D%0Aul%20li%20%3E%20%3Afirst%2Dchild%2C%0Aol%20li%20%3E%20%3Afirst%2Dchild%2C%0Aul%20li%20ul%3Afirst%2Dof%2Dtype%2C%0Aol%20li%20ol%3Afirst%2Dof%2Dtype%2C%0Aul%20li%20ol%3Afirst%2Dof%2Dtype%2C%0Aol%20li%20ul%3Afirst%2Dof%2Dtype%20%7B%0Amargin%2Dtop%3A%200px%3B%0A%7D%0Aul%20ul%2C%20ul%20ol%2C%20ol%20ol%2C%20ol%20ul%20%7B%0Amargin%2Dbottom%3A%200%3B%0A%7D%0Adl%20%7B%0Apadding%3A%200%3B%0A%7D%0Adl%20dt%20%7B%0Afont%2Dsize%3A%2014px%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dstyle%3A%20italic%3B%0Apadding%3A%200%3B%0Amargin%3A%2015px%200%205px%3B%0A%7D%0Adl%20dt%3Afirst%2Dchild%20%7B%0Apadding%3A%200%3B%0A%7D%0Adl%20dt%3E%3Afirst%2Dchild%20%7B%0Amargin%2Dtop%3A%200px%3B%0A%7D%0Adl%20dt%3E%3Alast%2Dchild%20%7B%0Amargin%2Dbottom%3A%200px%3B%0A%7D%0Adl%20dd%20%7B%0Amargin%3A%200%200%2015px%3B%0Apadding%3A%200%2015px%3B%0A%7D%0Adl%20dd%3E%3Afirst%2Dchild%20%7B%0Amargin%2Dtop%3A%200px%3B%0A%7D%0Adl%20dd%3E%3Alast%2Dchild%20%7B%0Amargin%2Dbottom%3A%200px%3B%0A%7D%0A%0Apre%2C%20code%2C%20tt%20%7B%0Afont%2Dsize%3A%2012px%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Courier%2C%20monospace%3B%0A%7D%0Acode%2C%20tt%20%7B%0Amargin%3A%200%200px%3B%0Apadding%3A%200px%200px%3B%0Awhite%2Dspace%3A%20nowrap%3B%0Aborder%3A%201px%20solid%20%23eaeaea%3B%0Abackground%2Dcolor%3A%20%23f8f8f8%3B%0Aborder%2Dradius%3A%203px%3B%0A%7D%0Apre%3Ecode%20%7B%0Amargin%3A%200%3B%0Apadding%3A%200%3B%0Awhite%2Dspace%3A%20pre%3B%0Aborder%3A%20none%3B%0Abackground%3A%20transparent%3B%0A%7D%0Apre%20%7B%0Abackground%2Dcolor%3A%20%23f8f8f8%3B%0Aborder%3A%201px%20solid%20%23ccc%3B%0Afont%2Dsize%3A%2013px%3B%0Aline%2Dheight%3A%2019px%3B%0Aoverflow%3A%20auto%3B%0Apadding%3A%206px%2010px%3B%0Aborder%2Dradius%3A%203px%3B%0A%7D%0Apre%20code%2C%20pre%20tt%20%7B%0Abackground%2Dcolor%3A%20transparent%3B%0Aborder%3A%20none%3B%0A%7D%0Akbd%20%7B%0A%2Dmoz%2Dborder%2Dbottom%2Dcolors%3A%20none%3B%0A%2Dmoz%2Dborder%2Dleft%2Dcolors%3A%20none%3B%0A%2Dmoz%2Dborder%2Dright%2Dcolors%3A%20none%3B%0A%2Dmoz%2Dborder%2Dtop%2Dcolors%3A%20none%3B%0Abackground%2Dcolor%3A%20%23DDDDDD%3B%0Abackground%2Dimage%3A%20linear%2Dgradient%28%23F1F1F1%2C%20%23DDDDDD%29%3B%0Abackground%2Drepeat%3A%20repeat%2Dx%3B%0Aborder%2Dcolor%3A%20%23DDDDDD%20%23CCCCCC%20%23CCCCCC%20%23DDDDDD%3B%0Aborder%2Dimage%3A%20none%3B%0Aborder%2Dradius%3A%202px%202px%202px%202px%3B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%2Dwidth%3A%201px%3B%0Afont%2Dfamily%3A%20%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3B%0Aline%2Dheight%3A%2010px%3B%0Apadding%3A%201px%204px%3B%0A%7D%0A%0Ablockquote%20%7B%0Aborder%2Dleft%3A%204px%20solid%20%23DDD%3B%0Apadding%3A%200%2015px%3B%0Acolor%3A%20%23777%3B%0Afont%2Dsize%3A%201em%3B%0A%7D%0Ablockquote%3E%3Afirst%2Dchild%20%7B%0Amargin%2Dtop%3A%200px%3B%0A%7D%0Ablockquote%3E%3Alast%2Dchild%20%7B%0Amargin%2Dbottom%3A%200px%3B%0A%7D%0A%0Ahr%20%7B%0Aclear%3A%20both%3B%0Amargin%3A%2015px%200%3B%0Aheight%3A%200px%3B%0Aoverflow%3A%20hidden%3B%0Aborder%3A%20none%3B%0Abackground%3A%20transparent%3B%0Aborder%2Dbottom%3A%201px%20dotted%20silver%3B%0Apadding%3A%200%3B%0A%7D%0A%0Atable%20%7B%0Aborder%2Dcollapse%3A%20collapse%3B%0Afont%2Dsize%3A%201em%3B%0A%7D%0Atable%20th%20%7B%0Abackground%3A%20%23F0F0F0%3B%0Acolor%3A%20%23555%3B%0Atext%2Dalign%3A%20left%3B%0Avertical%2Dalign%3A%20middle%3B%0A%7D%0Atable%20th%2C%20table%20td%20%7B%0Aborder%3A%201px%20solid%20%23ccc%3B%0Apadding%3A%206px%2013px%3B%0A%7D%0Atable%20tr%20%7B%0Aborder%2Dtop%3A%201px%20solid%20%23ccc%3B%0Abackground%2Dcolor%3A%20%23fff%3B%0A%7D%0Atable%20tr%3Anth%2Dchild%282n%29%20%7B%0Abackground%2Dcolor%3A%20%23f8f8f8%3B%0A%7D%0A%0Aimg%20%7B%0Amax%2Dwidth%3A%20100%25%0A%7D%0A%2Eplatform%20%7B%0Abackground%3A%20%23cc0000%3B%0Atext%2Dalign%3A%20right%3B%0A%7D%0A" rel="stylesheet" type="text/css" />
10 <meta name="viewport" content="width=device-width, initial-scale=1.0">
11
12</head><body>
13<header id="tiHeader">
14 <div class="top">
15 <ul>
16 <li id="top_logo">
17 <a href="http://www.ti.com">
18 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAAkCAMAAABln9XcAAAAYFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAAAAAAAADMAADMAAAAAAAAAAAAAADMAADMAADMAADMAADMAADMAADMAADMAADMAADMAADMAAAAAADMAAC6smRcAAAAHnRSTlMAv0CAEO/fMGCfz0Agj4C/cK9Q32MQnzCPIK/PUO9FOfcdAAAFOElEQVRo3u2Z3XqbMAyGBf53IAHSJu3asfu/y9n6wVCcbd1O+jzjOyAUVFl+LUtOC4d+r8sP0gUOHWA+Deb7AagK5jV9nuHQDsx7+nyHQzswp/P5/AqHNmDeTie4n9LlRHqGtbTaqoV/kGtR8LWFYFBXuKbEeeafTrCWn7ca4R/kTfJgevjaKmC+ZSYvpyqYcf4gDX+lglnBF1cBc85Mns41MHpWmUSbJoQLPVkPfyv289V30grMKTO5f6uB6aZlQooetP8LmLdUbjOTVIBvBUzRBoyZFwWgTwMw0GeSXlWhKeanIfodGEe/D+ywAfBoq+wE01w0tnIXm0HLth4AyMM40rgkhS9hLurpmZOB5yHMRRNAF0x20497MHyuu1LTJjBPvwCj7SwyoIPUHEVvGVGHt30huMsYR3GTQ6shFNt+U89cuTeOyLQARGbkMRh8jszqdYQW0LERMgMuQxnKLT8CnlhEVwLzDoC1d0F1fQwGR4oZhVMpIB2RfA6m5+hkSaFLhhlBmE1lKzU4I+Kn8iyjSy9DmouNk9boxPXJN+ZN2yqcJ6YTkOKsOA9s6Z4NuY4a0NvEBtgv0sDTHBxmkdZTNDnYQUM3mDwH4BJb9JpgcZ7wk9vzYzAqj47yA6280dBjKGhmIkeqGBA446pgMlO0U9mWS5nxOAu26gPIuD0+aguYhsFIDjULmBKhZ4OoCUzyB+JDRy+GuunxW5FoV3vLg9+AKRq4EvDcwxzyk5YMR6LV6RqYiEnOYIpt10EBAw7KuHUwjaGA3GyaAmY9XkRgCKaTEKitpAC4EeCLpx2YV6y910+BcXilhTKcG6DN7DRuX0ntfmIqOzBKIRkEM6CtEtsCBhgMVRddA6OoqIVZfQDTNjSejhSRuCw+cJsFj4taI/Odz71/CsY0TRPnZmHBgSAMi1MwelWmm7YOBgImeQajTbGtgnE9FusaGFoInegIGImQwVCNVRUwvRRpVSdzoXPvn4JhNVC8RyDFnDoTl9UUKMtXwVC2xR4nXmx3YFjWQxUM8k14AxQwJAFDZPwOjExGJiAFeHfu/dRWGhhMZ2Z5BY56txFqbhjxrdF1MJjkhn7ZKbbdg7GNTc8VPADT5fFtsv+wlRSDkW1dAQPah1jWg9pz0TvW3pfPgQEnSYKuW27log5YXcC3VTCgmSrLjWK73Uo0s1AHU/qRgCkRChjwFTAFjikx3Da1Nx9t4H6+fAqMJKPROVMtpUpssrAeNA5I8TEY2f5RbG0dDE1+KpPCwQYG0/KSV7sS24cKGBWkGhQwVFCu5+v6PMc5c305wZ+A0bEFh+EOtJ5+Nsv0LARTTqSuCqb4DWaS2c5dFUxL57SOENCDFsHIeBUwOjoBA2EDhm+CLmBWKXMDeMbvAqwLYnmCovrJ17ZZg7W584zSs32Kry/1eJpSfJPG7RG3fryA4SRX4Itt86BdYxpSy/GJ3WSRBYJBHxswcYlwAaOXxPWrdm0HB92AW190vrxI6tyBlDv3HksBbjuAzs6LlEuDDfLWjAv3IRu70k9KwuiRzqEtXlG5XXfFthMHoxaQtpMi33c6lq9O5K7FlNFiioaiAUK+CJl2CWHiMiXy9a/Y385ZaSe93aEu36CSr5UmvHqAvhH5lXEY+pgxKA0isXR4FeYKYPS9zbaD3owGbrmDbqSc8di9bOjEneNqwabNStpLUIgWwawD7X3DvvZaH1/enuHQOmVEdzjEKsfg4x9uO10FzPF/pQdVBg5tdTvAPNAbgTl60k7yR/BDH3W6XX9c/mswPwGgceILR4q+4gAAAABJRU5ErkJggg==" />
19 </a>
20 </li>
21 </ul>
22 </div>
23 <div class="nav">
24 </div>
25</header><div id="content">
26<h2 id="ProductName">
27<!-- @Start Product -->
28PRU Multi-channel ADC Interface Reference Design Demo Manifest
29<!-- @End Product -->
30</h2>
31
32<h4 id="ReleaseDate">
33<!-- @Start Date -->
3411-06-2017
35<!-- @End Date -->
36</h4>
37
38
39<h4 id="SRASID">
40<!-- @Start Date -->
41Manifest ID - SRAS00004475
42<!-- @End Date -->
43</h4>
44</div><div id="content">
45<h4>Legend</h4>
46<p>(explanation of the fields in the Manifest Table below)</p>
47<table>
48<tbody>
49<tr>
50<td>
51<b>Software Name </b>
52</td>
53<td>
54The name of the application or file
55</td>
56</tr>
57<tr>
58<td>
59<b>Version</b>
60</td>
61<td>
62Version of the application or file
63</td>
64</tr>
65<tr>
66<td>
67<b>License Type</b>
68</td>
69<td>
70Type of license(s) under which TI will be providing
71software to the licensee (e.g. BSD-3-Clause, GPL-2.0, TI Text File License, TI
72Commercial License). The license could be under Commercial terms or Open Source. See Open Source Reference License Disclaimer in
73the Disclaimers Section. Whenever possible, TI will use an <a href="http://spdx.org/licenses/"> SPDX Short Identifier </a> for an Open Source
74License. TI Commercial license terms are not usually included in the manifest and are conveyed through a variety
75of means such as a clickwrap license upon install,
76a signed license agreement and so forth.
77</td>
78</tr>
79<tr>
80<td>
81<b>Location</b>
82</td>
83<td>
84The directory name and path on the media or a specific file where the Software is located. Typically fully qualified path names
85are not used and instead the relevant top level directory of the application is given.
86A notation often used in the manifests is [as installed]/directory/*. Note that the asterisk implies that all
87files under that directory are licensed as the License Type field denotes. Any exceptions to this will
88generally be denoted as [as installed]/directory/* except as noted below which means as shown in subsequent rows of
89the manifest.
90</td>
91</tr>
92<tr>
93<td>
94<b>Delivered As</b>
95</td>
96<td>
97This field will either be &#8220;Source&#8221;, &#8220;Binary&#8221; or &#8220;Source
98and Binary&#8221; and is the primary form the content of the Software is delivered
99in. If the Software is delivered in an archive format, this field
100applies to the contents of the archive. If the word Limited is used
101with Source, as in &#8220;Limited Source&#8221; or &#8220;Limited Source and Binary&#8221; then
102only portions of the Source for the application are provided.
103</td>
104</tr>
105<tr>
106<td>
107<b>Modified by TI</b>
108</td>
109<td>
110This field will either be &#8220;Yes&#8221; or &#8220;No&#8221;. A &#8220;Yes&#8221; means
111TI has made changes to the Software. A &#8220;No&#8221; means TI has not made any
112changes. Note: This field is not applicable for Software &#8220;Obtained
113from&#8221; TI.
114</td>
115</tr>
116<tr>
117<td>
118<b>Obtained from</b>
119</td>
120<td>
121This field specifies from where or from whom TI obtained
122the Software. It may be a URL to an Open Source site, a 3<sup>rd</sup>
123party licensor, or TI. See Links Disclaimer in the Disclaimers
124Section.
125</td>
126</tr>
127</tbody>
128</table>
129</div><div id="content">
130<h3>Disclaimers</h3>
131<h4>Export Control Classification Number (ECCN)</h4>
132<p>Any use of ECCNs listed in the Manifest is at the user&#8217;s risk
133and without recourse to TI. Your
134company, as the exporter of record, is responsible for determining the
135correct classification of any item at
136the time of export. Any export classification by TI of Software is for
137TI&#8217;s internal use only and shall not be construed as a representation
138or warranty
139regarding the proper export classification for such Software or whether
140an export
141license or other documentation is required for exporting such Software</p>
142<h3>Links in the Manifest</h3>
143<p>Any
144links appearing on this Manifest
145(for example in the &#8220;Obtained from&#8221; field) were verified at the time
146the Manifest was created. TI makes no guarantee that any listed links
147will
148remain active in the future.</p>
149<h3>Open Source License References</h3>
150<p>Your company is responsible for confirming the
151applicable license terms for any open source Software
152listed in this Manifest that was not &#8220;Obtained from&#8221; TI. Any open
153source license
154specified in this Manifest for Software that was
155not &#8220;Obtained from&#8221; TI is for TI&#8217;s internal use only and shall not be
156construed as a representation or warranty regarding the proper open
157source license terms
158for such Software.</p>
159</div><div id="content">
160<h4>Export Information</h4>
161<p>ECCN for Software included in this release:</p>
162Publicly Available
163</div><div id="content">
164<!-- h3>Manifest Table</h3 -->
165
166 <table>
167 <tbody>
168
169 <h2>
170 PRU Multi-channel ADC Interface Reference Design Demo Manifest Table
171 </h2>
172
173
174 <p>
175
176 See the Legend above for a description of these columns.
177
178 </p>
179
180 <table id="targetpackages" name="targetpackages">
181 <thead>
182 <tr>
183 <td><b>Software Name</b></td>
184 <td><b>Version</b></td>
185 <td><b>License Type</b></td>
186 <td><b>Delivered As</b></td>
187 <td><b>Modified by TI</b></td>
188 <td></td>
189 <td></td>
190 </tr>
191 </thead>
192
193
194 <tbody>
195 <tr>
196 <td id="name" name="name" rowspan="2">
197 PRU_ADS8688_Interface
198 </td>
199 <td id="version" name="version" rowspan="2">
200 1.0.0
201 </td>
202 <td id="license" name="license" rowspan="2">
203 BSD-3-Clause
204 </td>
205 <td id="delivered" name="delivered" rowspan="2">
206 Source
207 </td>
208 <td id="modified" name="modified" rowspan="2">
209 Yes
210 </td>
211 <td><b>Location</b></td>
212 <td id="location" name="location">
213 tida01555/PRU_ADS8688_Interface/
214 </td>
215 </tr>
216 <tr>
217 <td><b>Obtained from</b></td>
218 <td id="obtained" name="obtained">
219 TI
220 </td>
221 </tr>
222
223 <tbody>
224 <tr>
225 <td id="name" name="name" rowspan="2">
226 PRU_ADS8688_Controller
227 </td>
228 <td id="version" name="version" rowspan="2">
229 1.0.0
230 </td>
231 <td id="license" name="license" rowspan="2">
232 BSD-3-Clause
233 </td>
234 <td id="delivered" name="delivered" rowspan="2">
235 Source
236 </td>
237 <td id="modified" name="modified" rowspan="2">
238 Yes
239 </td>
240 <td><b>Location</b></td>
241 <td id="location" name="location">
242 tida01555/PRU_ADS8688_Controller/
243 </td>
244 </tr>
245 <tr>
246 <td><b>Obtained from</b></td>
247 <td id="obtained" name="obtained">
248 TI
249 </td>
250 </tr>
251
252 <tbody>
253 <tr>
254 <td id="name" name="name" rowspan="2">
255 ARM_User_Space_App
256 </td>
257 <td id="version" name="version" rowspan="2">
258 1.0.0
259 </td>
260 <td id="license" name="license" rowspan="2">
261 BSD-3-Clause
262 </td>
263 <td id="delivered" name="delivered" rowspan="2">
264 Source
265 </td>
266 <td id="modified" name="modified" rowspan="2">
267 Yes
268 </td>
269 <td><b>Location</b></td>
270 <td id="location" name="location">
271 tida01555/ARM_User_Space_App/
272 </td>
273 </tr>
274 <tr>
275 <td><b>Obtained from</b></td>
276 <td id="obtained" name="obtained">
277 TI
278 </td>
279 </tr>
280
281 </tbody>
282 </table>
283
284 </p>
285 </p>
286 <p>
287
288</div><div id="content">
289<h4>Credits</h4>
290<BR> <BR><BR><BR><BR>
291</div><div id="content">
292<h4>Licenses</h4>
293<BR><h3><b> PRU Multi-channel ADC Interface Reference Design Demo Licenses </b></h3><BR> <BR><BR> Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/<BR> <BR> <BR> Redistribution and use in source and binary forms, with or without<BR> modification, are permitted provided that the following conditions<BR> are met:<BR> <BR> * Redistributions of source code must retain the above copyright<BR> notice, this list of conditions and the following disclaimer.<BR> <BR> * Redistributions in binary form must reproduce the above copyright<BR> notice, this list of conditions and the following disclaimer in the<BR> documentation and/or other materials provided with the<BR> distribution.<BR> <BR> * Neither the name of Texas Instruments Incorporated nor the names of<BR> its contributors may be used to endorse or promote products derived<BR> from this software without specific prior written permission.<BR> <BR> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS<BR> "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<BR> LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR<BR> A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT<BR> OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,<BR> SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT<BR> LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,<BR> DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY<BR> THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT<BR> (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE<BR> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<BR> <BR>
294</div>
295<footer id="tiFooter">
296 <p>TI is a global semiconductor design and manufacturing company. Innovate
297 with 100,000+ analog ICs and embedded processors, along with software, tools
298 and the industry's largest sales/support staff.</p>
299</footer>
300</body></html> \ No newline at end of file
diff --git a/PRU_ADS8688_Controller/AM335x_PRU.cmd b/PRU_ADS8688_Controller/AM335x_PRU.cmd
new file mode 100644
index 0000000..8803377
--- /dev/null
+++ b/PRU_ADS8688_Controller/AM335x_PRU.cmd
@@ -0,0 +1,121 @@
1/*
2 * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the
15 * distribution.
16 *
17 * * Neither the name of Texas Instruments Incorporated nor the names of
18 * its contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 *
33 *
34 * AM335x_PRU.cmd
35 * Description: This file is a linker command file that can be used for
36 * linking PRU programs built with the C compiler and the
37 * resulting .out file on an AM335x device.
38 */
39
40/* Link using C conventions */
41-cr
42
43/* Specify the System Memory Map */
44MEMORY
45{
46 PAGE 0:
47 PRU_IMEM : org = 0x00000000 len = 0x00002000 /* 8kB PRU0 Instruction RAM */
48
49 PAGE 1:
50
51 /* RAM */
52
53 PRU_DMEM_0_1 : org = 0x00000000 len = 0x00002000 CREGISTER=24 /* 8kB PRU Data RAM 0_1 */
54 PRU_DMEM_1_0 : org = 0x00002000 len = 0x00002000 CREGISTER=25 /* 8kB PRU Data RAM 1_0 */
55
56 PAGE 2:
57 PRU_SHAREDMEM : org = 0x00010000 len = 0x00003000 CREGISTER=28 /* 12kB Shared RAM */
58
59 DDR : org = 0x80000000 len = 0x1F800000 CREGISTER=31
60 PRUADC_DDR_CARVEOUT : org = 0x9F800000 len = 0x00800000
61 L3OCMC : org = 0x40000000 len = 0x00010000 CREGISTER=30
62
63
64 /* Peripherals */
65
66 PRU_CFG : org = 0x00026000 len = 0x00000044 CREGISTER=4
67 PRU_ECAP : org = 0x00030000 len = 0x00000060 CREGISTER=3
68 PRU_IEP : org = 0x0002E000 len = 0x0000031C CREGISTER=26
69 PRU_INTC : org = 0x00020000 len = 0x00001504 CREGISTER=0
70 PRU_UART : org = 0x00028000 len = 0x00000038 CREGISTER=7
71
72 DCAN0 : org = 0x481CC000 len = 0x000001E8 CREGISTER=14
73 DCAN1 : org = 0x481D0000 len = 0x000001E8 CREGISTER=15
74 DMTIMER2 : org = 0x48040000 len = 0x0000005C CREGISTER=1
75 PWMSS0 : org = 0x48300000 len = 0x000002C4 CREGISTER=18
76 PWMSS1 : org = 0x48302000 len = 0x000002C4 CREGISTER=19
77 PWMSS2 : org = 0x48304000 len = 0x000002C4 CREGISTER=20
78 GEMAC : org = 0x4A100000 len = 0x0000128C CREGISTER=9
79 I2C1 : org = 0x4802A000 len = 0x000000D8 CREGISTER=2
80 I2C2 : org = 0x4819C000 len = 0x000000D8 CREGISTER=17
81 MBX0 : org = 0x480C8000 len = 0x00000140 CREGISTER=22
82 MCASP0_DMA : org = 0x46000000 len = 0x00000100 CREGISTER=8
83 MCSPI0 : org = 0x48030000 len = 0x000001A4 CREGISTER=6
84 MCSPI1 : org = 0x481A0000 len = 0x000001A4 CREGISTER=16
85 MMCHS0 : org = 0x48060000 len = 0x00000300 CREGISTER=5
86 SPINLOCK : org = 0x480CA000 len = 0x00000880 CREGISTER=23
87 TPCC : org = 0x49000000 len = 0x00001098 CREGISTER=29
88 UART1 : org = 0x48022000 len = 0x00000088 CREGISTER=11
89 UART2 : org = 0x48024000 len = 0x00000088 CREGISTER=12
90
91 RSVD10 : org = 0x48318000 len = 0x00000100 CREGISTER=10
92 RSVD13 : org = 0x48310000 len = 0x00000100 CREGISTER=13
93 RSVD21 : org = 0x00032400 len = 0x00000100 CREGISTER=21
94 RSVD27 : org = 0x00032000 len = 0x00000100 CREGISTER=27
95
96}
97
98/* Specify the sections allocation into memory */
99SECTIONS {
100 /* Forces _c_int00 to the start of PRU IRAM. Not necessary when loading
101 an ELF file, but useful when loading a binary */
102 .text:_c_int00* > 0x0, PAGE 0
103
104 .text > PRU_IMEM, PAGE 0
105 .stack > PRU_DMEM_0_1, PAGE 1
106 .bss > PRU_DMEM_0_1, PAGE 1
107 .cio > PRU_DMEM_0_1, PAGE 1
108 .data > PRU_DMEM_0_1, PAGE 1
109 .switch > PRU_DMEM_0_1, PAGE 1
110 .sysmem > PRU_DMEM_0_1, PAGE 1
111 .cinit > PRU_DMEM_0_1, PAGE 1
112 .rodata > PRU_DMEM_0_1, PAGE 1
113 .rofardata > PRU_DMEM_0_1, PAGE 1
114 .farbss > PRU_DMEM_0_1, PAGE 1
115 .fardata > PRU_DMEM_0_1, PAGE 1
116
117 .shared_mem > PRU_SHAREDMEM, PAGE 2
118 .pru1_mem > PRU_DMEM_1_0, PAGE 1
119 .pruadc_ddr_carveout > PRUADC_DDR_CARVEOUT, PAGE 2
120 .resource_table > PRU_DMEM_0_1, PAGE 1
121}
diff --git a/PRU_ADS8688_Controller/Makefile b/PRU_ADS8688_Controller/Makefile
new file mode 100644
index 0000000..f2b8cc3
--- /dev/null
+++ b/PRU_ADS8688_Controller/Makefile
@@ -0,0 +1,125 @@
1# PRU_CGT environment variable must point to the TI PRU code gen tools directory. E.g.:
2#(Desktop Linux) export PRU_CGT=/path/to/pru/code/gen/tools/ti-cgt-pru_2.x.y
3#(Windows) set PRU_CGT=C:/path/to/pru/code/gen/tools/ti-cgt-pru_2.x.y
4#(ARM Linux*) export PRU_CGT=/usr/share/ti/cgt-pru
5#
6# *ARM Linux also needs to create a symbolic link to the /usr/bin/ directory in
7# order to use the same Makefile
8#(ARM Linux) ln -s /usr/bin/ /usr/share/ti/cgt-pru/bin
9
10ifndef PRU_CGT
11define ERROR_BODY
12
13*******************************************************************************
14PRU_CGT environment variable is not set. Examples given:
15(Desktop Linux) export PRU_CGT=/path/to/pru/code/gen/tools/ti-cgt-pru_2.1.2
16(Windows) set PRU_CGT=C:/path/to/pru/code/gen/tools/ti-cgt-pru_2.1.2
17(ARM Linux*) export PRU_CGT=/usr/share/ti/cgt-pru
18
19*ARM Linux also needs to create a symbolic link to the /usr/bin/ directory in
20order to use the same Makefile
21(ARM Linux) ln -s /usr/bin/ /usr/share/ti/cgt-pru/bin
22*******************************************************************************
23
24endef
25$(error $(ERROR_BODY))
26endif
27
28# PRU_SSP environment variable must point to the PRU Software Support Package. E.g.:
29#(Desktop Linux) export PRU_SSP=/path/to/pru_software_support_package
30#(Windows) set PRU_SSP=C:/path/to/pru_software_support_package
31#(ARM Linux*) export PRU_SSP=/path/to/pru_software_support_package
32
33ifndef PRU_SSP
34define ERROR_BODY
35
36*******************************************************************************
37PRU_SSP environment variable must point to the PRU Software Support Package. E.g.:
38(Desktop Linux) export PRU_SSP=/path/to/pru_software_support_package
39(Windows) set PRU_SSP=C:/path/to/pru_software_support_package
40(ARM Linux*) export PRU_SSP=/path/to/pru_software_support_package
41PRU_CGT environment variable is not set. Examples given:
42*******************************************************************************
43
44endef
45$(error $(ERROR_BODY))
46endif
47
48MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
49CURRENT_DIR := $(notdir $(patsubst %/,%,$(dir $(MKFILE_PATH))))
50PROJ_NAME=$(CURRENT_DIR)
51LINKER_COMMAND_FILE=./AM335x_PRU.cmd
52LIBS=--library=$(PRU_SSP)/lib/rpmsg_lib.lib
53INCLUDE=--include_path=$(PRU_SSP)/include --include_path=$(PRU_SSP)/include/am335x
54STACK_SIZE=0x100
55HEAP_SIZE=0x100
56GEN_DIR=gen
57
58#Common compiler and linker flags (Defined in 'PRU Optimizing C/C++ Compiler User's Guide)
59CFLAGS=-v3 -o2 --display_error_number --endian=little --hardware_mac=on --asm_directory=$(GEN_DIR) --obj_directory=$(GEN_DIR) --pp_directory=$(GEN_DIR) -ppd -ppa
60#Linker flags (Defined in 'PRU Optimizing C/C++ Compiler User's Guide)
61LFLAGS=--reread_libs --warn_sections --stack_size=$(STACK_SIZE) --heap_size=$(HEAP_SIZE)
62
63TARGET=$(GEN_DIR)/$(PROJ_NAME).out
64MAP=$(GEN_DIR)/$(PROJ_NAME).map
65OBJECTS=$(patsubst %.asm,$(GEN_DIR)/%.object,$(wildcard *.asm))
66OBJECTS+=$(patsubst %.c,$(GEN_DIR)/%.object,$(wildcard *.c))
67
68
69all: printStart $(TARGET) printEnd
70
71printStart:
72 @echo ''
73 @echo '************************************************************'
74 @echo 'Building project: $(PROJ_NAME)'
75
76printEnd:
77 @echo ''
78 @echo 'Output files can be found in the "$(GEN_DIR)" directory'
79 @echo ''
80 @echo 'Finished building project: $(PROJ_NAME)'
81 @echo '************************************************************'
82 @echo ''
83
84# Invokes the linker (-z flag) to make the .out file
85$(TARGET): $(OBJECTS) $(LINKER_COMMAND_FILE)
86 @echo ''
87 @echo 'Building target: $@'
88 @echo 'Invoking: PRU Linker'
89 $(PRU_CGT)/bin/clpru $(CFLAGS) -z -i$(PRU_CGT)/lib -i$(PRU_CGT)/include $(LFLAGS) -o $(TARGET) $(OBJECTS) -m$(MAP) $(LINKER_COMMAND_FILE) --library=libc.a $(LIBS)
90 @echo 'Finished building target: $@'
91
92# Invokes the compiler on all assembly files in the directory to create the object files
93$(GEN_DIR)/%.object: %.asm
94 @mkdir -p $(GEN_DIR)
95 @echo ''
96 @echo 'Building file: $<'
97 @echo 'Invoking: PRU Compiler'
98 $(PRU_CGT)/bin/clpru --include_path=$(PRU_CGT)/include $(INCLUDE) $(CFLAGS) -fe $@ $<
99
100# Invokes the compiler on all c files in the directory to create the object files
101$(GEN_DIR)/%.object: %.c
102 @mkdir -p $(GEN_DIR)
103 @echo ''
104 @echo 'Building file: $<'
105 @echo 'Invoking: PRU Compiler'
106 $(PRU_CGT)/bin/clpru -k --include_path=$(PRU_CGT)/include $(INCLUDE) $(CFLAGS) -fe $@ $<
107
108.PHONY: all clean
109
110# Remove the $(GEN_DIR) directory
111clean:
112 @echo ''
113 @echo '************************************************************'
114 @echo 'Cleaning project: $(PROJ_NAME)'
115 @echo ''
116 @echo 'Removing files in the "$(GEN_DIR)" directory'
117 @rm -rf $(GEN_DIR)
118 @echo ''
119 @echo 'Finished cleaning project: $(PROJ_NAME)'
120 @echo '************************************************************'
121 @echo ''
122
123# Includes the dependencies that the compiler creates (-ppd and -ppa flags)
124-include $(OBJECTS:%.object=%.pp)
125
diff --git a/PRU_ADS8688_Controller/PRU_ADS8688_Controller.c b/PRU_ADS8688_Controller/PRU_ADS8688_Controller.c
new file mode 100644
index 0000000..6e51031
--- /dev/null
+++ b/PRU_ADS8688_Controller/PRU_ADS8688_Controller.c
@@ -0,0 +1,391 @@
1/*
2 * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the
15 * distribution.
16 *
17 * * Neither the name of Texas Instruments Incorporated nor the names of
18 * its contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#include <stdint.h>
35#include <pru_cfg.h>
36#include <pru_ctrl.h>
37#include "resource_table_empty.h"
38
39volatile register uint32_t __R30;
40volatile register uint32_t __R31;
41
42/* Scratchpad constants */
43#define SCRATCHPAD_0 10
44#define SCRATCHPAD_1 11
45#define SCRATCHPAD_2 12
46
47/* Specific register numbers shared through the Scratchpads */
48#define CONFIG_REG 15
49#define DELAY_REG 21
50#define RESULT_REG 22
51#define STATUS_REG 28
52#define REQUEST_REG 29
53
54/* Request register bit mapping */
55#define START_BIT (1 << 0)
56#define CONTINUOUS_BIT (1 << 1)
57#define RECV_READY_BIT (1 << 2)
58#define RECV_ACK_BIT (1 << 3)
59
60/* Response register bit mapping */
61#define SEND_READY_BIT (1 << 0)
62#define SEND_ACK_BIT (1 << 1)
63#define SEND_DONE_BIT (1 << 2)
64
65/* Sample/config mode */
66#define ONE_SHOT 0
67#define CONTINUOUS 1
68
69/* ADS8688 configuration definitions */
70/* Command Register formatting */
71#define CMD_REG(x) (x << 8)
72#define NOOP 0x00
73#define STDBY 0x82
74#define PWR_DN 0x83
75#define AUTO_RST 0xA0
76#define RST 0x85
77#define MAN_CH(chan) (0xC0 | (4 * chan))
78#define MAN_AUX 0xE0
79/* Program Register formatting */
80#define PROG_REG(reg, rw, data) ((reg << 9) | (rw << 8) | data)
81#define AUTO_SEQ_EN (0x01)
82#define CHAN_PWR_DN (0x02)
83#define CHAN_INPUT_RANGE(chan) (0x05 + chan)
84#define COMM_READ_BACK (0x3F)
85/* Read or write for the program register formatting */
86#define WRITE 1
87#define READ 0
88/* Channel input range constants */
89#define PLUSMINUS25VREF 0
90#define PLUSMINUS125VREF 1
91#define PLUSMINUS0625VREF 2
92#define PLUS25VREF 5
93#define PLUS125VREF 6
94
95/* Oversampling constants (must be a power of 2 to achieve timings in the PRU) */
96#define OVERSAMPLE 1
97
98/* Frequency estimation constants */
99#define FREQ_EST_DEVICE 0
100#define FREQ_EST_CHANNEL 5
101#define FREQ_EST_CYCLES 5
102#define MIN_DELAY 710 //55Hz
103#define DEFAULT_DELAY 781 //50Hz
104#define DEFAULT_COMP 2 //50Hz
105#define MAX_DELAY 868 //45Hz
106
107/* Information about devices and channels connected */
108#define CHANS_PER_DEVICE 8
109#define DEVICES 6
110#define NUM_CHANS CHANS_PER_DEVICE * DEVICES
111#define SAMPLES_PER_CYCLE 640
112
113/* Ping and Pong buffer information */
114#define PING_ADDR 0x9FFC0000
115#define PONG_ADDR 0x9FFE0000
116#define PING 0
117#define PONG 1
118#define DATA_READY 0x0000FFFF
119#define IN_PROGRESS 0x00000000
120
121
122uint32_t data_buf[DEVICES];
123uint32_t config_buf[DEVICES];
124
125/* Send cycle delay between samples value */
126send_delay(uint32_t delay_val) {
127 /* Send the cycle delay to the other PRU through Scratchpad 0 */
128 __xout(SCRATCHPAD_0, DELAY_REG, 0, delay_val);
129}
130
131/* Send configurations or commands */
132send_command(uint16_t continuous) {
133 uint32_t request, status = 0;
134 uint32_t temp;
135
136 /* Check to make sure the SPI coprocessor is ready */
137 while (!(status & SEND_READY_BIT)) {
138 __xin(SCRATCHPAD_1, STATUS_REG, 0, temp);
139 status = temp;
140 }
141 /* Push the configuration values for each ADC */
142 __xout(SCRATCHPAD_0, CONFIG_REG, 0, config_buf);
143
144 /* Send the start command to kick off the transfer */
145 request = START_BIT;
146 if (continuous)
147 request |= CONTINUOUS_BIT;
148 __xout(SCRATCHPAD_1, REQUEST_REG, 0, request);
149
150 /* Wait for SPI coprocessor to acknowledge the command */
151 while (!(status & SEND_ACK_BIT)) {
152 __xin(SCRATCHPAD_1, STATUS_REG, 0, status);
153 }
154
155 /* Clear the start bit */
156 request &= ~START_BIT;
157 __xout(SCRATCHPAD_1, REQUEST_REG, 0, request);
158}
159
160/* Receive response */
161receive_data() {
162 uint32_t request, status = 0;
163 uint32_t temp;
164
165 /* Read the current request to get start and continuous */
166 __xin(SCRATCHPAD_1, REQUEST_REG, 0, request);
167
168 /* Set the ready bit, clear the ack bit */
169 request |= RECV_READY_BIT;
170 request &= ~RECV_ACK_BIT;
171 __xout(SCRATCHPAD_1, REQUEST_REG, 0, request);
172
173 /* Clear the ready bit, set the ack bit in the temp variable
174 * Wait until after done signal is received to send
175 */
176 request &= ~RECV_READY_BIT;
177 request |= RECV_ACK_BIT;
178
179 /* Wait for the done signal */
180 while (!(status & SEND_DONE_BIT)) {
181 __xin(SCRATCHPAD_1, STATUS_REG, 0, temp);
182 status = temp;
183 }
184
185 /* Send ack bit one cycle before pulling data to save time */
186 __xout(SCRATCHPAD_1, REQUEST_REG, 0, request);
187
188 /* Pull the data into data_buf */
189 __xin(SCRATCHPAD_2, RESULT_REG, 0, data_buf);
190}
191
192/* Send intial ADC configurations */
193adc_init() {
194 uint32_t status = 0;
195 uint32_t temp;
196
197 /* Check to make sure the SPI coprocessor is ready */
198 while (!(status & SEND_READY_BIT)) {
199 __xin(SCRATCHPAD_1, STATUS_REG, 0, temp);
200 status = temp;
201 }
202
203 /* Send reset command to all devices in parallel */
204 config_buf[0] = CMD_REG(RST);
205 config_buf[1] = CMD_REG(RST);
206 config_buf[2] = CMD_REG(RST);
207 config_buf[3] = CMD_REG(RST);
208 config_buf[4] = CMD_REG(RST);
209 config_buf[5] = CMD_REG(RST);
210 send_command(ONE_SHOT);
211 receive_data();
212
213 /* Set device 0 channel 0's input range to 0-2.5vRef */
214 /*
215 config_buf[0] = PROG_REG(CHAN_INPUT_RANGE(0), WRITE, PLUS125VREF);
216 send_command(ONE_SHOT);
217 receive_data();
218 */
219
220 /* Only enable channel 6 on all devices */
221 config_buf[0] = PROG_REG(AUTO_SEQ_EN, WRITE, 0xFF);
222 config_buf[1] = PROG_REG(AUTO_SEQ_EN, WRITE, 0xFF);
223 config_buf[2] = PROG_REG(AUTO_SEQ_EN, WRITE, 0xFF);
224 config_buf[3] = PROG_REG(AUTO_SEQ_EN, WRITE, 0xFF);
225 config_buf[4] = PROG_REG(AUTO_SEQ_EN, WRITE, 0xFF);
226 config_buf[5] = PROG_REG(AUTO_SEQ_EN, WRITE, 0xFF);
227 send_command(ONE_SHOT);
228 receive_data();
229
230 __delay_cycles(200);
231
232 /* Put devices into auto reset mode in parallel */
233 config_buf[0] = CMD_REG(AUTO_RST);
234 config_buf[1] = CMD_REG(AUTO_RST);
235 config_buf[2] = CMD_REG(AUTO_RST);
236 config_buf[3] = CMD_REG(AUTO_RST);
237 config_buf[4] = CMD_REG(AUTO_RST);
238 config_buf[5] = CMD_REG(AUTO_RST);
239 send_command(ONE_SHOT);
240 receive_data();
241
242 /* Initial delay set for 50Hz */
243 send_delay(DEFAULT_DELAY);
244
245 /* Send the NOOP command to kick off the sampling */
246 config_buf[0] = CMD_REG(NOOP);
247 config_buf[1] = CMD_REG(NOOP);
248 config_buf[2] = CMD_REG(NOOP);
249 config_buf[3] = CMD_REG(NOOP);
250 config_buf[4] = CMD_REG(NOOP);
251 config_buf[5] = CMD_REG(NOOP);
252 send_command(CONTINUOUS);
253
254 /* Enable the cycle counter */
255 PRU0_CTRL.CTRL_bit.CTR_EN = 1;
256 PRU0_CTRL.CYCLE = 0;
257
258}
259
260typedef struct {
261 int32_t chan_data[CHANS_PER_DEVICE];
262} adc_device;
263
264#pragma DATA_SECTION(debug, ".shared_mem")
265volatile far int32_t debug[10];
266
267uint32_t chan_data_temp[NUM_CHANS];
268
269void main(void)
270{
271 uint32_t i, j, idx;
272 uint32_t oversample = 1;
273 int32_t last_pol = 1;
274 uint32_t zero_crossings = 0;
275 uint32_t start, stop, elapsed, delay, compensation = 0;
276 uint32_t zero = 0;
277 uint32_t curr_addr;
278 uint8_t curr_buff;
279 uint32_t num_captured = 0;
280
281 delay = DEFAULT_DELAY;
282 compensation = DEFAULT_COMP;
283
284 /* Select the ping buffer first */
285 curr_addr = PING_ADDR + 8;
286 curr_buff = PING;
287
288 /* This PRU comes up first, zero out the status registers */
289 __xout(SCRATCHPAD_1, STATUS_REG, 0, zero);
290 __xout(SCRATCHPAD_1, REQUEST_REG, 0, zero);
291
292 /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */
293 CT_CFG.SYSCFG_bit.STANDBY_INIT = 0;
294
295 /* ADC init */
296 adc_init();
297
298 while (1) {
299 for (i = 0; i < CHANS_PER_DEVICE; i++) {
300 /* receive parallel data from the ADCs */
301 if (i < compensation)
302 send_delay(delay + 1);
303 else
304 send_delay(delay);
305 receive_data();
306 for (j = 0; j < DEVICES; j++) {
307 idx = j*CHANS_PER_DEVICE+i;
308
309 /* Clear the accumulated value if first sample */
310 if (oversample == 1)
311 chan_data_temp[idx] = 0;
312
313 /* Accumulate samples until oversample value is reached */
314 chan_data_temp[idx] += (uint16_t)data_buf[j];
315
316 /* Perform oversampling */
317 if (oversample == OVERSAMPLE) {
318 chan_data_temp[idx] = (uint16_t)((chan_data_temp[idx] + (OVERSAMPLE/2)) / OVERSAMPLE);
319 /* Frequency estimation using zero crossings */
320 if (j == FREQ_EST_DEVICE && i == FREQ_EST_CHANNEL) {
321 if (((last_pol > 0) && ((int16_t)(chan_data_temp[idx] - 0x8000) < 0)) ||
322 ((last_pol < 0) && ((int16_t)(chan_data_temp[idx] - 0x8000) > 0))) {
323 zero_crossings++;
324 last_pol = ~last_pol;
325
326 /* First crossing, get the start timestamp */
327 if (zero_crossings == 1) {
328 start = PRU0_CTRL.CYCLE;
329 }
330 /* Last crossing, get the stop timestamp */
331 else if (zero_crossings == ((FREQ_EST_CYCLES * 2) + 1)) {
332 stop = PRU0_CTRL.CYCLE;
333 elapsed = stop - start;
334 delay = elapsed/(SAMPLES_PER_CYCLE * FREQ_EST_CYCLES);
335 compensation = delay % CHANS_PER_DEVICE;
336 delay = delay / CHANS_PER_DEVICE;
337 if (delay < MIN_DELAY) {
338 delay = MIN_DELAY;
339 compensation = 0;
340 }
341 else if (delay > MAX_DELAY) {
342 delay = MAX_DELAY;
343 compensation = CHANS_PER_DEVICE - 1;
344 }
345 PRU0_CTRL.CYCLE = 0;
346 zero_crossings = 0;
347 }
348 }
349 }
350 }
351 }
352 }
353 if (oversample++ == OVERSAMPLE) {
354 oversample = 1;
355 /* Copy the oversampled data from each channel to the current buffer */
356 memcpy((void *)curr_addr, chan_data_temp, CHANS_PER_DEVICE * DEVICES * 4);
357 /* Increment the address for the next set of channel data */
358 curr_addr += CHANS_PER_DEVICE * DEVICES * 4;
359
360 /* A full sample has been captured, switch buffers */
361 if (++num_captured == SAMPLES_PER_CYCLE) {
362 if (curr_buff == PING) {
363 /* Mark the first 4 bytes of the ping buffer with the ready flag */
364 *(volatile uint32_t *)PING_ADDR = DATA_READY;
365 /* Mark the next 4 bytes of the ping buffer with delay and comp values */
366 *(volatile uint32_t *)(PING_ADDR + 4) = ((uint16_t)compensation) << 16 | ((uint16_t) delay);
367 /* Mark the first 4 bytes of the pong buffer with the in progress flag */
368 *(volatile uint32_t *)PONG_ADDR = IN_PROGRESS;
369 /* Set the current address for samples to the address after the flag */
370 curr_addr = PONG_ADDR + 8;
371 /* Update the current buffer */
372 curr_buff = PONG;
373 }
374 else {
375 /* Mark the first 4 bytes of the pong buffer with the ready flag */
376 *(volatile uint32_t *)PONG_ADDR = DATA_READY;
377 /* Mark the next 4 bytes of the pong buffer with delay and comp values */
378 *(volatile uint32_t *)(PONG_ADDR + 4) = ((uint16_t)compensation) << 16 | ((uint16_t) delay);
379 /* Mark the first 4 bytes of the ping buffer with the in progress flag */
380 *(volatile uint32_t *)PING_ADDR = IN_PROGRESS;
381 /* Set the current address for samples to the address after the flag */
382 curr_addr = PING_ADDR + 8;
383 /* Update the current buffer */
384 curr_buff = PING;
385 }
386 num_captured = 0;
387 }
388 }
389 }
390}
391
diff --git a/PRU_ADS8688_Controller/gen/PRU_ADS8688_Controller.asm b/PRU_ADS8688_Controller/gen/PRU_ADS8688_Controller.asm
new file mode 100644
index 0000000..34ba3e4
--- /dev/null
+++ b/PRU_ADS8688_Controller/gen/PRU_ADS8688_Controller.asm
@@ -0,0 +1,3844 @@
1;******************************************************************************
2;* PRU C/C++ Codegen Unix v2.1.4 *
3;* Date/Time created: Wed Nov 22 12:19:17 2017 *
4;******************************************************************************
5 .compiler_opts --abi=eabi --endian=little --hll_source=on --object_format=elf --silicon_version=3 --symdebug:dwarf --symdebug:dwarf_version=3
6
7$C$DW$CU .dwtag DW_TAG_compile_unit
8 .dwattr $C$DW$CU, DW_AT_name("PRU_ADS8688_Controller.c")
9 .dwattr $C$DW$CU, DW_AT_producer("TI PRU C/C++ Codegen Unix v2.1.4 Copyright (c) 2012-2015 Texas Instruments Incorporated")
10 .dwattr $C$DW$CU, DW_AT_TI_version(0x01)
11 .dwattr $C$DW$CU, DW_AT_comp_dir("/home/a0273976local/git/tida01555/PRU_ADS8688_Controller")
12 .global __PRU_CREG_PRU_CFG
13
14$C$DW$1 .dwtag DW_TAG_subprogram, DW_AT_name("memcpy")
15 .dwattr $C$DW$1, DW_AT_TI_symbol_name("memcpy")
16 .dwattr $C$DW$1, DW_AT_type(*$C$DW$T$3)
17 .dwattr $C$DW$1, DW_AT_declaration
18 .dwattr $C$DW$1, DW_AT_external
19$C$DW$2 .dwtag DW_TAG_formal_parameter
20 .dwattr $C$DW$2, DW_AT_type(*$C$DW$T$3)
21$C$DW$3 .dwtag DW_TAG_formal_parameter
22 .dwattr $C$DW$3, DW_AT_type(*$C$DW$T$107)
23$C$DW$4 .dwtag DW_TAG_formal_parameter
24 .dwattr $C$DW$4, DW_AT_type(*$C$DW$T$11)
25 .dwendtag $C$DW$1
26
27
28$C$DW$5 .dwtag DW_TAG_subprogram, DW_AT_name("__xin")
29 .dwattr $C$DW$5, DW_AT_TI_symbol_name("__xin")
30 .dwattr $C$DW$5, DW_AT_declaration
31 .dwattr $C$DW$5, DW_AT_external
32$C$DW$6 .dwtag DW_TAG_formal_parameter
33 .dwattr $C$DW$6, DW_AT_type(*$C$DW$T$11)
34$C$DW$7 .dwtag DW_TAG_formal_parameter
35 .dwattr $C$DW$7, DW_AT_type(*$C$DW$T$11)
36$C$DW$8 .dwtag DW_TAG_formal_parameter
37 .dwattr $C$DW$8, DW_AT_type(*$C$DW$T$11)
38$C$DW$9 .dwtag DW_TAG_formal_parameter
39 .dwattr $C$DW$9, DW_AT_type(*$C$DW$T$105)
40 .dwendtag $C$DW$5
41
42
43$C$DW$10 .dwtag DW_TAG_subprogram, DW_AT_name("__xout")
44 .dwattr $C$DW$10, DW_AT_TI_symbol_name("__xout")
45 .dwattr $C$DW$10, DW_AT_declaration
46 .dwattr $C$DW$10, DW_AT_external
47$C$DW$11 .dwtag DW_TAG_formal_parameter
48 .dwattr $C$DW$11, DW_AT_type(*$C$DW$T$11)
49$C$DW$12 .dwtag DW_TAG_formal_parameter
50 .dwattr $C$DW$12, DW_AT_type(*$C$DW$T$11)
51$C$DW$13 .dwtag DW_TAG_formal_parameter
52 .dwattr $C$DW$13, DW_AT_type(*$C$DW$T$11)
53$C$DW$14 .dwtag DW_TAG_formal_parameter
54 .dwattr $C$DW$14, DW_AT_type(*$C$DW$T$105)
55 .dwendtag $C$DW$10
56
57
58$C$DW$15 .dwtag DW_TAG_subprogram, DW_AT_name("__delay_cycles")
59 .dwattr $C$DW$15, DW_AT_TI_symbol_name("__delay_cycles")
60 .dwattr $C$DW$15, DW_AT_declaration
61 .dwattr $C$DW$15, DW_AT_external
62$C$DW$16 .dwtag DW_TAG_formal_parameter
63 .dwattr $C$DW$16, DW_AT_type(*$C$DW$T$11)
64 .dwendtag $C$DW$15
65
66 .weak ||CT_CFG||
67||CT_CFG||: .usect ".creg.PRU_CFG.noload.near",68,1
68$C$DW$17 .dwtag DW_TAG_variable, DW_AT_name("CT_CFG")
69 .dwattr $C$DW$17, DW_AT_TI_symbol_name("CT_CFG")
70 .dwattr $C$DW$17, DW_AT_location[DW_OP_addr ||CT_CFG||]
71 .dwattr $C$DW$17, DW_AT_type(*$C$DW$T$99)
72 .dwattr $C$DW$17, DW_AT_external
73 .dwattr $C$DW$17, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
74 .dwattr $C$DW$17, DW_AT_decl_line(0xf2)
75 .dwattr $C$DW$17, DW_AT_decl_column(0x17)
76 .global ||pru_remoteproc_ResourceTable||
77 .sect ".resource_table:retain", RW
78 .retain
79 .align 1
80 .elfsym ||pru_remoteproc_ResourceTable||,SYM_SIZE(20)
81||pru_remoteproc_ResourceTable||:
82 .bits 1,32 ; pru_remoteproc_ResourceTable.base.ver @ 0
83 .bits 0,32 ; pru_remoteproc_ResourceTable.base.num @ 32
84 .bits 0,32 ; pru_remoteproc_ResourceTable.base.reserved[0] @ 64
85 .bits 0,32 ; pru_remoteproc_ResourceTable.base.reserved[1] @ 96
86 .bits 0,32 ; pru_remoteproc_ResourceTable.offset[0] @ 128
87
88$C$DW$18 .dwtag DW_TAG_variable, DW_AT_name("pru_remoteproc_ResourceTable")
89 .dwattr $C$DW$18, DW_AT_TI_symbol_name("pru_remoteproc_ResourceTable")
90 .dwattr $C$DW$18, DW_AT_location[DW_OP_addr ||pru_remoteproc_ResourceTable||]
91 .dwattr $C$DW$18, DW_AT_type(*$C$DW$T$93)
92 .dwattr $C$DW$18, DW_AT_external
93 .dwattr $C$DW$18, DW_AT_decl_file("resource_table_empty.h")
94 .dwattr $C$DW$18, DW_AT_decl_line(0x40)
95 .dwattr $C$DW$18, DW_AT_decl_column(0x1a)
96 .global ||data_buf||
97 .common ||data_buf||,24,1
98$C$DW$19 .dwtag DW_TAG_variable, DW_AT_name("data_buf")
99 .dwattr $C$DW$19, DW_AT_TI_symbol_name("data_buf")
100 .dwattr $C$DW$19, DW_AT_location[DW_OP_addr ||data_buf||]
101 .dwattr $C$DW$19, DW_AT_type(*$C$DW$T$132)
102 .dwattr $C$DW$19, DW_AT_external
103 .dwattr $C$DW$19, DW_AT_decl_file("PRU_ADS8688_Controller.c")
104 .dwattr $C$DW$19, DW_AT_decl_line(0x7a)
105 .dwattr $C$DW$19, DW_AT_decl_column(0x0a)
106 .global ||config_buf||
107 .common ||config_buf||,24,1
108$C$DW$20 .dwtag DW_TAG_variable, DW_AT_name("config_buf")
109 .dwattr $C$DW$20, DW_AT_TI_symbol_name("config_buf")
110 .dwattr $C$DW$20, DW_AT_location[DW_OP_addr ||config_buf||]
111 .dwattr $C$DW$20, DW_AT_type(*$C$DW$T$132)
112 .dwattr $C$DW$20, DW_AT_external
113 .dwattr $C$DW$20, DW_AT_decl_file("PRU_ADS8688_Controller.c")
114 .dwattr $C$DW$20, DW_AT_decl_line(0x7b)
115 .dwattr $C$DW$20, DW_AT_decl_column(0x0a)
116 .global ||debug||
117||debug||: .usect ".shared_mem",40,1
118$C$DW$21 .dwtag DW_TAG_variable, DW_AT_name("debug")
119 .dwattr $C$DW$21, DW_AT_TI_symbol_name("debug")
120 .dwattr $C$DW$21, DW_AT_location[DW_OP_addr ||debug||]
121 .dwattr $C$DW$21, DW_AT_type(*$C$DW$T$125)
122 .dwattr $C$DW$21, DW_AT_external
123 .dwattr $C$DW$21, DW_AT_decl_file("PRU_ADS8688_Controller.c")
124 .dwattr $C$DW$21, DW_AT_decl_line(0x109)
125 .dwattr $C$DW$21, DW_AT_decl_column(0x16)
126 .global ||chan_data_temp||
127 .common ||chan_data_temp||,192,1
128$C$DW$22 .dwtag DW_TAG_variable, DW_AT_name("chan_data_temp")
129 .dwattr $C$DW$22, DW_AT_TI_symbol_name("chan_data_temp")
130 .dwattr $C$DW$22, DW_AT_location[DW_OP_addr ||chan_data_temp||]
131 .dwattr $C$DW$22, DW_AT_type(*$C$DW$T$133)
132 .dwattr $C$DW$22, DW_AT_external
133 .dwattr $C$DW$22, DW_AT_decl_file("PRU_ADS8688_Controller.c")
134 .dwattr $C$DW$22, DW_AT_decl_line(0x10b)
135 .dwattr $C$DW$22, DW_AT_decl_column(0x0a)
136; /home/a0273976local/ti-cgt-pru_2.1.4/bin/optpru /tmp/16837JLdgNL /tmp/168373AbKQP
137; /home/a0273976local/ti-cgt-pru_2.1.4/bin/acpiapru -@/tmp/168375urK45
138 .sect ".text:send_delay"
139 .clink
140 .global ||send_delay||
141
142$C$DW$23 .dwtag DW_TAG_subprogram, DW_AT_name("send_delay")
143 .dwattr $C$DW$23, DW_AT_low_pc(||send_delay||)
144 .dwattr $C$DW$23, DW_AT_high_pc(0x00)
145 .dwattr $C$DW$23, DW_AT_TI_symbol_name("send_delay")
146 .dwattr $C$DW$23, DW_AT_external
147 .dwattr $C$DW$23, DW_AT_type(*$C$DW$T$10)
148 .dwattr $C$DW$23, DW_AT_TI_begin_file("PRU_ADS8688_Controller.c")
149 .dwattr $C$DW$23, DW_AT_TI_begin_line(0x7e)
150 .dwattr $C$DW$23, DW_AT_TI_begin_column(0x01)
151 .dwattr $C$DW$23, DW_AT_decl_file("PRU_ADS8688_Controller.c")
152 .dwattr $C$DW$23, DW_AT_decl_line(0x7e)
153 .dwattr $C$DW$23, DW_AT_decl_column(0x01)
154 .dwattr $C$DW$23, DW_AT_TI_max_frame_size(0x00)
155 .dwpsn file "PRU_ADS8688_Controller.c",line 126,column 32,is_stmt,address ||send_delay||,isa 0
156
157 .dwfde $C$DW$CIE, ||send_delay||
158$C$DW$24 .dwtag DW_TAG_formal_parameter, DW_AT_name("delay_val")
159 .dwattr $C$DW$24, DW_AT_TI_symbol_name("delay_val")
160 .dwattr $C$DW$24, DW_AT_type(*$C$DW$T$33)
161 .dwattr $C$DW$24, DW_AT_location[DW_OP_regx 0x38]
162
163;***************************************************************
164;* FNAME: send_delay FR SIZE: 0 *
165;* *
166;* FUNCTION ENVIRONMENT *
167;* *
168;* FUNCTION PROPERTIES *
169;* 0 Auto, 0 SOE *
170;***************************************************************
171
172||send_delay||:
173;* --------------------------------------------------------------------------*
174;* r14_0 assigned to delay_val
175$C$DW$25 .dwtag DW_TAG_variable, DW_AT_name("delay_val")
176 .dwattr $C$DW$25, DW_AT_TI_symbol_name("delay_val")
177 .dwattr $C$DW$25, DW_AT_type(*$C$DW$T$33)
178 .dwattr $C$DW$25, DW_AT_location[DW_OP_regx 0x38]
179 .dwcfi cfa_offset, 0
180 .dwpsn file "PRU_ADS8688_Controller.c",line 128,column 2,is_stmt,isa 0
181 MOV r21, r14 ; [ALU_PRU] |128| delay_val
182 XOUT 0x0a, &r21.b0, 0x04 ; [ALU_PRU] |128|
183$C$DW$26 .dwtag DW_TAG_TI_branch
184 .dwattr $C$DW$26, DW_AT_low_pc(0x00)
185 .dwattr $C$DW$26, DW_AT_TI_return
186 JMP r3.w2 ; [ALU_PRU]
187 .dwattr $C$DW$23, DW_AT_TI_end_file("PRU_ADS8688_Controller.c")
188 .dwattr $C$DW$23, DW_AT_TI_end_line(0x81)
189 .dwattr $C$DW$23, DW_AT_TI_end_column(0x01)
190 .dwendentry
191 .dwendtag $C$DW$23
192
193 .sect ".text:send_command"
194 .clink
195 .global ||send_command||
196
197$C$DW$27 .dwtag DW_TAG_subprogram, DW_AT_name("send_command")
198 .dwattr $C$DW$27, DW_AT_low_pc(||send_command||)
199 .dwattr $C$DW$27, DW_AT_high_pc(0x00)
200 .dwattr $C$DW$27, DW_AT_TI_symbol_name("send_command")
201 .dwattr $C$DW$27, DW_AT_external
202 .dwattr $C$DW$27, DW_AT_type(*$C$DW$T$10)
203 .dwattr $C$DW$27, DW_AT_TI_begin_file("PRU_ADS8688_Controller.c")
204 .dwattr $C$DW$27, DW_AT_TI_begin_line(0x84)
205 .dwattr $C$DW$27, DW_AT_TI_begin_column(0x01)
206 .dwattr $C$DW$27, DW_AT_decl_file("PRU_ADS8688_Controller.c")
207 .dwattr $C$DW$27, DW_AT_decl_line(0x84)
208 .dwattr $C$DW$27, DW_AT_decl_column(0x01)
209 .dwattr $C$DW$27, DW_AT_TI_max_frame_size(0x00)
210 .dwpsn file "PRU_ADS8688_Controller.c",line 132,column 35,is_stmt,address ||send_command||,isa 0
211
212 .dwfde $C$DW$CIE, ||send_command||
213$C$DW$28 .dwtag DW_TAG_formal_parameter, DW_AT_name("continuous")
214 .dwattr $C$DW$28, DW_AT_TI_symbol_name("continuous")
215 .dwattr $C$DW$28, DW_AT_type(*$C$DW$T$115)
216 .dwattr $C$DW$28, DW_AT_location[DW_OP_regx 0x38]
217
218;***************************************************************
219;* FNAME: send_command FR SIZE: 0 *
220;* *
221;* FUNCTION ENVIRONMENT *
222;* *
223;* FUNCTION PROPERTIES *
224;* 0 Auto, 0 SOE *
225;***************************************************************
226
227||send_command||:
228;* --------------------------------------------------------------------------*
229;* r28_0 assigned to status
230$C$DW$29 .dwtag DW_TAG_variable, DW_AT_name("status")
231 .dwattr $C$DW$29, DW_AT_TI_symbol_name("status")
232 .dwattr $C$DW$29, DW_AT_type(*$C$DW$T$33)
233 .dwattr $C$DW$29, DW_AT_location[DW_OP_regx 0x70]
234;* r29_0 assigned to request
235$C$DW$30 .dwtag DW_TAG_variable, DW_AT_name("request")
236 .dwattr $C$DW$30, DW_AT_TI_symbol_name("request")
237 .dwattr $C$DW$30, DW_AT_type(*$C$DW$T$33)
238 .dwattr $C$DW$30, DW_AT_location[DW_OP_regx 0x74]
239;* r14_0 assigned to continuous
240$C$DW$31 .dwtag DW_TAG_variable, DW_AT_name("continuous")
241 .dwattr $C$DW$31, DW_AT_TI_symbol_name("continuous")
242 .dwattr $C$DW$31, DW_AT_type(*$C$DW$T$116)
243 .dwattr $C$DW$31, DW_AT_location[DW_OP_regx 0x38]
244 .dwcfi cfa_offset, 0
245 .dwpsn file "PRU_ADS8688_Controller.c",line 133,column 27,is_stmt,isa 0
246 ZERO &r28, 4 ; [ALU_PRU] |133| status
247 .dwpsn file "PRU_ADS8688_Controller.c",line 137,column 2,is_stmt,isa 0
248 JMP ||$C$L2|| ; [ALU_PRU] |137|
249;* --------------------------------------------------------------------------*
250||$C$L1||:
251 .dwpsn file "PRU_ADS8688_Controller.c",line 138,column 3,is_stmt,isa 0
252 XIN 0x0b, &r28.b0, 0x04 ; [ALU_PRU] |138|
253;* --------------------------------------------------------------------------*
254;* BEGIN LOOP ||$C$L2||
255;* --------------------------------------------------------------------------*
256||$C$L2||:
257 .dwpsn file "PRU_ADS8688_Controller.c",line 137,column 9,is_stmt,isa 0
258 QBBC ||$C$L1||, r28, 0x00 ; [ALU_PRU] |137| status
259;* --------------------------------------------------------------------------*
260 .dwpsn file "PRU_ADS8688_Controller.c",line 142,column 2,is_stmt,isa 0
261 LDI r0, ||config_buf|| ; [ALU_PRU] |142| config_buf
262 LBBO &r15.b0, r0, 0, 24 ; [ALU_PRU] |142|
263 XOUT 0x0a, &r15.b0, 0x18 ; [ALU_PRU] |142|
264 .dwpsn file "PRU_ADS8688_Controller.c",line 147,column 3,is_stmt,isa 0
265 QBEQ ||$C$L3||, r14.w0, 0x00 ; [ALU_PRU] |147| continuous
266;* --------------------------------------------------------------------------*
267 LDI r29, 0x0003 ; [ALU_PRU] |147| request
268 JMP ||$C$L4|| ; [ALU_PRU] |147|
269;* --------------------------------------------------------------------------*
270||$C$L3||:
271 LDI r29, 0x0001 ; [ALU_PRU] |147| request
272;* --------------------------------------------------------------------------*
273||$C$L4||:
274 .dwpsn file "PRU_ADS8688_Controller.c",line 148,column 2,is_stmt,isa 0
275 XOUT 0x0b, &r29.b0, 0x04 ; [ALU_PRU] |148|
276 .dwpsn file "PRU_ADS8688_Controller.c",line 151,column 2,is_stmt,isa 0
277 JMP ||$C$L6|| ; [ALU_PRU] |151|
278;* --------------------------------------------------------------------------*
279||$C$L5||:
280 .dwpsn file "PRU_ADS8688_Controller.c",line 152,column 3,is_stmt,isa 0
281 XIN 0x0b, &r28.b0, 0x04 ; [ALU_PRU] |152|
282;* --------------------------------------------------------------------------*
283;* BEGIN LOOP ||$C$L6||
284;* --------------------------------------------------------------------------*
285||$C$L6||:
286 .dwpsn file "PRU_ADS8688_Controller.c",line 151,column 9,is_stmt,isa 0
287 QBBC ||$C$L5||, r28, 0x01 ; [ALU_PRU] |151| status
288;* --------------------------------------------------------------------------*
289 .dwpsn file "PRU_ADS8688_Controller.c",line 156,column 2,is_stmt,isa 0
290 CLR r29, r29, 0x00000000 ; [ALU_PRU] |156| request,request
291 .dwpsn file "PRU_ADS8688_Controller.c",line 157,column 2,is_stmt,isa 0
292 XOUT 0x0b, &r29.b0, 0x04 ; [ALU_PRU] |157|
293$C$DW$32 .dwtag DW_TAG_TI_branch
294 .dwattr $C$DW$32, DW_AT_low_pc(0x00)
295 .dwattr $C$DW$32, DW_AT_TI_return
296 JMP r3.w2 ; [ALU_PRU]
297 .dwattr $C$DW$27, DW_AT_TI_end_file("PRU_ADS8688_Controller.c")
298 .dwattr $C$DW$27, DW_AT_TI_end_line(0x9e)
299 .dwattr $C$DW$27, DW_AT_TI_end_column(0x01)
300 .dwendentry
301 .dwendtag $C$DW$27
302
303 .sect ".text:receive_data"
304 .clink
305 .global ||receive_data||
306
307$C$DW$33 .dwtag DW_TAG_subprogram, DW_AT_name("receive_data")
308 .dwattr $C$DW$33, DW_AT_low_pc(||receive_data||)
309 .dwattr $C$DW$33, DW_AT_high_pc(0x00)
310 .dwattr $C$DW$33, DW_AT_TI_symbol_name("receive_data")
311 .dwattr $C$DW$33, DW_AT_external
312 .dwattr $C$DW$33, DW_AT_type(*$C$DW$T$10)
313 .dwattr $C$DW$33, DW_AT_TI_begin_file("PRU_ADS8688_Controller.c")
314 .dwattr $C$DW$33, DW_AT_TI_begin_line(0xa1)
315 .dwattr $C$DW$33, DW_AT_TI_begin_column(0x01)
316 .dwattr $C$DW$33, DW_AT_decl_file("PRU_ADS8688_Controller.c")
317 .dwattr $C$DW$33, DW_AT_decl_line(0xa1)
318 .dwattr $C$DW$33, DW_AT_decl_column(0x01)
319 .dwattr $C$DW$33, DW_AT_TI_max_frame_size(0x00)
320 .dwpsn file "PRU_ADS8688_Controller.c",line 161,column 16,is_stmt,address ||receive_data||,isa 0
321
322 .dwfde $C$DW$CIE, ||receive_data||
323
324;***************************************************************
325;* FNAME: receive_data FR SIZE: 0 *
326;* *
327;* FUNCTION ENVIRONMENT *
328;* *
329;* FUNCTION PROPERTIES *
330;* 0 Auto, 0 SOE *
331;***************************************************************
332
333||receive_data||:
334;* --------------------------------------------------------------------------*
335;* r28_0 assigned to status
336$C$DW$34 .dwtag DW_TAG_variable, DW_AT_name("status")
337 .dwattr $C$DW$34, DW_AT_TI_symbol_name("status")
338 .dwattr $C$DW$34, DW_AT_type(*$C$DW$T$33)
339 .dwattr $C$DW$34, DW_AT_location[DW_OP_regx 0x70]
340;* r29_0 assigned to request
341$C$DW$35 .dwtag DW_TAG_variable, DW_AT_name("request")
342 .dwattr $C$DW$35, DW_AT_TI_symbol_name("request")
343 .dwattr $C$DW$35, DW_AT_type(*$C$DW$T$33)
344 .dwattr $C$DW$35, DW_AT_location[DW_OP_regx 0x74]
345 .dwcfi cfa_offset, 0
346 .dwpsn file "PRU_ADS8688_Controller.c",line 166,column 2,is_stmt,isa 0
347 XIN 0x0b, &r29.b0, 0x04 ; [ALU_PRU] |166|
348 .dwpsn file "PRU_ADS8688_Controller.c",line 169,column 2,is_stmt,isa 0
349 SET r29, r29, 0x00000002 ; [ALU_PRU] |169| request,request
350 .dwpsn file "PRU_ADS8688_Controller.c",line 170,column 2,is_stmt,isa 0
351 CLR r29, r29, 0x00000003 ; [ALU_PRU] |170| request,request
352 .dwpsn file "PRU_ADS8688_Controller.c",line 171,column 2,is_stmt,isa 0
353 XOUT 0x0b, &r29.b0, 0x04 ; [ALU_PRU] |171|
354 .dwpsn file "PRU_ADS8688_Controller.c",line 162,column 27,is_stmt,isa 0
355 ZERO &r28, 4 ; [ALU_PRU] |162| status
356 .dwpsn file "PRU_ADS8688_Controller.c",line 176,column 2,is_stmt,isa 0
357 CLR r29, r29, 0x00000002 ; [ALU_PRU] |176| request,request
358 .dwpsn file "PRU_ADS8688_Controller.c",line 177,column 2,is_stmt,isa 0
359 SET r29, r29, 0x00000003 ; [ALU_PRU] |177| request,request
360 .dwpsn file "PRU_ADS8688_Controller.c",line 180,column 2,is_stmt,isa 0
361 JMP ||$C$L8|| ; [ALU_PRU] |180|
362;* --------------------------------------------------------------------------*
363||$C$L7||:
364 .dwpsn file "PRU_ADS8688_Controller.c",line 181,column 3,is_stmt,isa 0
365 XIN 0x0b, &r28.b0, 0x04 ; [ALU_PRU] |181|
366;* --------------------------------------------------------------------------*
367;* BEGIN LOOP ||$C$L8||
368;* --------------------------------------------------------------------------*
369||$C$L8||:
370 .dwpsn file "PRU_ADS8688_Controller.c",line 180,column 9,is_stmt,isa 0
371 QBBC ||$C$L7||, r28, 0x02 ; [ALU_PRU] |180| status
372;* --------------------------------------------------------------------------*
373 .dwpsn file "PRU_ADS8688_Controller.c",line 186,column 2,is_stmt,isa 0
374 XOUT 0x0b, &r29.b0, 0x04 ; [ALU_PRU] |186|
375 .dwpsn file "PRU_ADS8688_Controller.c",line 189,column 2,is_stmt,isa 0
376 XIN 0x0c, &r22.b0, 0x18 ; [ALU_PRU] |189|
377 LDI r0, ||data_buf|| ; [ALU_PRU] |189| data_buf
378 SBBO &r22.b0, r0, 0, 24 ; [ALU_PRU] |189|
379$C$DW$36 .dwtag DW_TAG_TI_branch
380 .dwattr $C$DW$36, DW_AT_low_pc(0x00)
381 .dwattr $C$DW$36, DW_AT_TI_return
382 JMP r3.w2 ; [ALU_PRU]
383 .dwattr $C$DW$33, DW_AT_TI_end_file("PRU_ADS8688_Controller.c")
384 .dwattr $C$DW$33, DW_AT_TI_end_line(0xbe)
385 .dwattr $C$DW$33, DW_AT_TI_end_column(0x01)
386 .dwendentry
387 .dwendtag $C$DW$33
388
389 .sect ".text:adc_init"
390 .clink
391 .global ||adc_init||
392
393$C$DW$37 .dwtag DW_TAG_subprogram, DW_AT_name("adc_init")
394 .dwattr $C$DW$37, DW_AT_low_pc(||adc_init||)
395 .dwattr $C$DW$37, DW_AT_high_pc(0x00)
396 .dwattr $C$DW$37, DW_AT_TI_symbol_name("adc_init")
397 .dwattr $C$DW$37, DW_AT_external
398 .dwattr $C$DW$37, DW_AT_type(*$C$DW$T$10)
399 .dwattr $C$DW$37, DW_AT_TI_begin_file("PRU_ADS8688_Controller.c")
400 .dwattr $C$DW$37, DW_AT_TI_begin_line(0xc1)
401 .dwattr $C$DW$37, DW_AT_TI_begin_column(0x01)
402 .dwattr $C$DW$37, DW_AT_decl_file("PRU_ADS8688_Controller.c")
403 .dwattr $C$DW$37, DW_AT_decl_line(0xc1)
404 .dwattr $C$DW$37, DW_AT_decl_column(0x01)
405 .dwattr $C$DW$37, DW_AT_TI_max_frame_size(0x16)
406 .dwpsn file "PRU_ADS8688_Controller.c",line 193,column 12,is_stmt,address ||adc_init||,isa 0
407
408 .dwfde $C$DW$CIE, ||adc_init||
409
410;***************************************************************
411;* FNAME: adc_init FR SIZE: 22 *
412;* *
413;* FUNCTION ENVIRONMENT *
414;* *
415;* FUNCTION PROPERTIES *
416;* 0 Auto, 22 SOE *
417;***************************************************************
418
419||adc_init||:
420;* --------------------------------------------------------------------------*
421;* r0_0 assigned to $O$C1
422;* r21_0 assigned to $O$C2
423;* r8_0 assigned to $O$C3
424;* r7_0 assigned to $O$C4
425;* r6_0 assigned to $O$C5
426;* r5_0 assigned to $O$C6
427;* r4_0 assigned to $O$C7
428;* r1_0 assigned to $O$C8
429;* r0_0 assigned to $O$C9
430;* r0_0 assigned to $O$C10
431;* r0_0 assigned to $O$C11
432;* r28_0 assigned to status
433$C$DW$38 .dwtag DW_TAG_variable, DW_AT_name("status")
434 .dwattr $C$DW$38, DW_AT_TI_symbol_name("status")
435 .dwattr $C$DW$38, DW_AT_type(*$C$DW$T$33)
436 .dwattr $C$DW$38, DW_AT_location[DW_OP_regx 0x70]
437 .dwcfi cfa_offset, 0
438 SUB r2, r2, 0x16 ; [ALU_PRU]
439 .dwcfi cfa_offset, 22
440 .dwpsn file "PRU_ADS8688_Controller.c",line 194,column 18,is_stmt,isa 0
441 ZERO &r28, 4 ; [ALU_PRU] |194| status
442 SBBO &r3.b2, r2, 0, 22 ; [ALU_PRU]
443 .dwcfi save_reg_to_mem, 14, -22
444 .dwcfi save_reg_to_mem, 15, -21
445 .dwcfi save_reg_to_mem, 16, -20
446 .dwcfi save_reg_to_mem, 17, -19
447 .dwcfi save_reg_to_mem, 18, -18
448 .dwcfi save_reg_to_mem, 19, -17
449 .dwcfi save_reg_to_mem, 20, -16
450 .dwcfi save_reg_to_mem, 21, -15
451 .dwcfi save_reg_to_mem, 22, -14
452 .dwcfi save_reg_to_mem, 23, -13
453 .dwcfi save_reg_to_mem, 24, -12
454 .dwcfi save_reg_to_mem, 25, -11
455 .dwcfi save_reg_to_mem, 26, -10
456 .dwcfi save_reg_to_mem, 27, -9
457 .dwcfi save_reg_to_mem, 28, -8
458 .dwcfi save_reg_to_mem, 29, -7
459 .dwcfi save_reg_to_mem, 30, -6
460 .dwcfi save_reg_to_mem, 31, -5
461 .dwcfi save_reg_to_mem, 32, -4
462 .dwcfi save_reg_to_mem, 33, -3
463 .dwcfi save_reg_to_mem, 34, -2
464 .dwcfi save_reg_to_mem, 35, -1
465 .dwpsn file "PRU_ADS8688_Controller.c",line 198,column 2,is_stmt,isa 0
466 JMP ||$C$L10|| ; [ALU_PRU] |198|
467;* --------------------------------------------------------------------------*
468||$C$L9||:
469 .dwpsn file "PRU_ADS8688_Controller.c",line 199,column 3,is_stmt,isa 0
470 XIN 0x0b, &r28.b0, 0x04 ; [ALU_PRU] |199|
471;* --------------------------------------------------------------------------*
472;* BEGIN LOOP ||$C$L10||
473;* --------------------------------------------------------------------------*
474||$C$L10||:
475 .dwpsn file "PRU_ADS8688_Controller.c",line 198,column 9,is_stmt,isa 0
476 QBBC ||$C$L9||, r28, 0x00 ; [ALU_PRU] |198| status
477;* --------------------------------------------------------------------------*
478 .dwpsn file "PRU_ADS8688_Controller.c",line 204,column 2,is_stmt,isa 0
479 LDI r1, ||config_buf|| ; [ALU_PRU] |204| $O$C8,config_buf
480 LDI r0, 0x8500 ; [ALU_PRU] |204| $O$C11
481 .dwpsn file "PRU_ADS8688_Controller.c",line 205,column 2,is_stmt,isa 0
482 ADD r4, r1, 0x04 ; [ALU_PRU] |205| $O$C7,$O$C8
483 .dwpsn file "PRU_ADS8688_Controller.c",line 210,column 2,is_stmt,isa 0
484 LDI r14.w0, 0x0000 ; [ALU_PRU] |210|
485 .dwpsn file "PRU_ADS8688_Controller.c",line 204,column 2,is_stmt,isa 0
486 SBBO &r0, r1, 0, 4 ; [ALU_PRU] |204| $O$C8,$O$C11
487 .dwpsn file "PRU_ADS8688_Controller.c",line 206,column 2,is_stmt,isa 0
488 ADD r5, r1, 0x08 ; [ALU_PRU] |206| $O$C6,$O$C8
489 .dwpsn file "PRU_ADS8688_Controller.c",line 207,column 2,is_stmt,isa 0
490 ADD r6, r1, 0x0c ; [ALU_PRU] |207| $O$C5,$O$C8
491 .dwpsn file "PRU_ADS8688_Controller.c",line 205,column 2,is_stmt,isa 0
492 SBBO &r0, r4, 0, 4 ; [ALU_PRU] |205| $O$C7,$O$C11
493 .dwpsn file "PRU_ADS8688_Controller.c",line 208,column 2,is_stmt,isa 0
494 ADD r7, r1, 0x10 ; [ALU_PRU] |208| $O$C4,$O$C8
495 .dwpsn file "PRU_ADS8688_Controller.c",line 209,column 2,is_stmt,isa 0
496 ADD r8, r1, 0x14 ; [ALU_PRU] |209| $O$C3,$O$C8
497 .dwpsn file "PRU_ADS8688_Controller.c",line 206,column 2,is_stmt,isa 0
498 SBBO &r0, r5, 0, 4 ; [ALU_PRU] |206| $O$C6,$O$C11
499 .dwpsn file "PRU_ADS8688_Controller.c",line 207,column 2,is_stmt,isa 0
500 SBBO &r0, r6, 0, 4 ; [ALU_PRU] |207| $O$C5,$O$C11
501 .dwpsn file "PRU_ADS8688_Controller.c",line 208,column 2,is_stmt,isa 0
502 SBBO &r0, r7, 0, 4 ; [ALU_PRU] |208| $O$C4,$O$C11
503 .dwpsn file "PRU_ADS8688_Controller.c",line 209,column 2,is_stmt,isa 0
504 SBBO &r0, r8, 0, 4 ; [ALU_PRU] |209| $O$C3,$O$C11
505 .dwpsn file "PRU_ADS8688_Controller.c",line 210,column 2,is_stmt,isa 0
506$C$DW$39 .dwtag DW_TAG_TI_branch
507 .dwattr $C$DW$39, DW_AT_low_pc(0x00)
508 .dwattr $C$DW$39, DW_AT_name("send_command")
509 .dwattr $C$DW$39, DW_AT_TI_call
510 JAL r3.w2, ||send_command|| ; [ALU_PRU] |210| send_command
511 .dwpsn file "PRU_ADS8688_Controller.c",line 211,column 2,is_stmt,isa 0
512$C$DW$40 .dwtag DW_TAG_TI_branch
513 .dwattr $C$DW$40, DW_AT_low_pc(0x00)
514 .dwattr $C$DW$40, DW_AT_name("receive_data")
515 .dwattr $C$DW$40, DW_AT_TI_call
516 JAL r3.w2, ||receive_data|| ; [ALU_PRU] |211| receive_data
517 .dwpsn file "PRU_ADS8688_Controller.c",line 221,column 2,is_stmt,isa 0
518 LDI r0, 0x03ff ; [ALU_PRU] |221| $O$C10
519 SBBO &r0, r1, 0, 4 ; [ALU_PRU] |221| $O$C8,$O$C10
520 .dwpsn file "PRU_ADS8688_Controller.c",line 222,column 2,is_stmt,isa 0
521 SBBO &r0, r4, 0, 4 ; [ALU_PRU] |222| $O$C7,$O$C10
522 .dwpsn file "PRU_ADS8688_Controller.c",line 223,column 2,is_stmt,isa 0
523 SBBO &r0, r5, 0, 4 ; [ALU_PRU] |223| $O$C6,$O$C10
524 .dwpsn file "PRU_ADS8688_Controller.c",line 224,column 2,is_stmt,isa 0
525 SBBO &r0, r6, 0, 4 ; [ALU_PRU] |224| $O$C5,$O$C10
526 .dwpsn file "PRU_ADS8688_Controller.c",line 225,column 2,is_stmt,isa 0
527 SBBO &r0, r7, 0, 4 ; [ALU_PRU] |225| $O$C4,$O$C10
528 .dwpsn file "PRU_ADS8688_Controller.c",line 226,column 2,is_stmt,isa 0
529 SBBO &r0, r8, 0, 4 ; [ALU_PRU] |226| $O$C3,$O$C10
530 .dwpsn file "PRU_ADS8688_Controller.c",line 227,column 2,is_stmt,isa 0
531$C$DW$41 .dwtag DW_TAG_TI_branch
532 .dwattr $C$DW$41, DW_AT_low_pc(0x00)
533 .dwattr $C$DW$41, DW_AT_name("send_command")
534 .dwattr $C$DW$41, DW_AT_TI_call
535 JAL r3.w2, ||send_command|| ; [ALU_PRU] |227| send_command
536 .dwpsn file "PRU_ADS8688_Controller.c",line 228,column 2,is_stmt,isa 0
537$C$DW$42 .dwtag DW_TAG_TI_branch
538 .dwattr $C$DW$42, DW_AT_low_pc(0x00)
539 .dwattr $C$DW$42, DW_AT_name("receive_data")
540 .dwattr $C$DW$42, DW_AT_TI_call
541 JAL r3.w2, ||receive_data|| ; [ALU_PRU] |228| receive_data
542 .dwpsn file "PRU_ADS8688_Controller.c",line 230,column 2,is_stmt,isa 0
543 .newblock
544 LDI32 r21, 99
545$1: SUB r21, r21, 1
546 QBNE $1, r21, 0 ; [ALU_PRU] |230|
547 .dwpsn file "PRU_ADS8688_Controller.c",line 233,column 2,is_stmt,isa 0
548 LDI r0, 0xa000 ; [ALU_PRU] |233| $O$C9
549 SBBO &r0, r1, 0, 4 ; [ALU_PRU] |233| $O$C8,$O$C9
550 .dwpsn file "PRU_ADS8688_Controller.c",line 234,column 2,is_stmt,isa 0
551 SBBO &r0, r4, 0, 4 ; [ALU_PRU] |234| $O$C7,$O$C9
552 .dwpsn file "PRU_ADS8688_Controller.c",line 235,column 2,is_stmt,isa 0
553 SBBO &r0, r5, 0, 4 ; [ALU_PRU] |235| $O$C6,$O$C9
554 .dwpsn file "PRU_ADS8688_Controller.c",line 236,column 2,is_stmt,isa 0
555 SBBO &r0, r6, 0, 4 ; [ALU_PRU] |236| $O$C5,$O$C9
556 .dwpsn file "PRU_ADS8688_Controller.c",line 237,column 2,is_stmt,isa 0
557 SBBO &r0, r7, 0, 4 ; [ALU_PRU] |237| $O$C4,$O$C9
558 .dwpsn file "PRU_ADS8688_Controller.c",line 238,column 2,is_stmt,isa 0
559 SBBO &r0, r8, 0, 4 ; [ALU_PRU] |238| $O$C3,$O$C9
560 .dwpsn file "PRU_ADS8688_Controller.c",line 239,column 2,is_stmt,isa 0
561$C$DW$43 .dwtag DW_TAG_TI_branch
562 .dwattr $C$DW$43, DW_AT_low_pc(0x00)
563 .dwattr $C$DW$43, DW_AT_name("send_command")
564 .dwattr $C$DW$43, DW_AT_TI_call
565 JAL r3.w2, ||send_command|| ; [ALU_PRU] |239| send_command
566 .dwpsn file "PRU_ADS8688_Controller.c",line 240,column 2,is_stmt,isa 0
567$C$DW$44 .dwtag DW_TAG_TI_branch
568 .dwattr $C$DW$44, DW_AT_low_pc(0x00)
569 .dwattr $C$DW$44, DW_AT_name("receive_data")
570 .dwattr $C$DW$44, DW_AT_TI_call
571 JAL r3.w2, ||receive_data|| ; [ALU_PRU] |240| receive_data
572 .dwpsn file "PRU_ADS8688_Controller.c",line 243,column 2,is_stmt,isa 0
573 LDI r14, 0x030d ; [ALU_PRU] |243|
574$C$DW$45 .dwtag DW_TAG_TI_branch
575 .dwattr $C$DW$45, DW_AT_low_pc(0x00)
576 .dwattr $C$DW$45, DW_AT_name("send_delay")
577 .dwattr $C$DW$45, DW_AT_TI_call
578 JAL r3.w2, ||send_delay|| ; [ALU_PRU] |243| send_delay
579 .dwpsn file "PRU_ADS8688_Controller.c",line 246,column 2,is_stmt,isa 0
580 ZERO &r21, 4 ; [ALU_PRU] |246| $O$C2
581 .dwpsn file "PRU_ADS8688_Controller.c",line 252,column 2,is_stmt,isa 0
582 LDI r14.w0, 0x0001 ; [ALU_PRU] |252|
583 .dwpsn file "PRU_ADS8688_Controller.c",line 246,column 2,is_stmt,isa 0
584 SBBO &r21, r1, 0, 4 ; [ALU_PRU] |246| $O$C8,$O$C2
585 .dwpsn file "PRU_ADS8688_Controller.c",line 247,column 2,is_stmt,isa 0
586 SBBO &r21, r4, 0, 4 ; [ALU_PRU] |247| $O$C7,$O$C2
587 .dwpsn file "PRU_ADS8688_Controller.c",line 248,column 2,is_stmt,isa 0
588 SBBO &r21, r5, 0, 4 ; [ALU_PRU] |248| $O$C6,$O$C2
589 .dwpsn file "PRU_ADS8688_Controller.c",line 249,column 2,is_stmt,isa 0
590 SBBO &r21, r6, 0, 4 ; [ALU_PRU] |249| $O$C5,$O$C2
591 .dwpsn file "PRU_ADS8688_Controller.c",line 250,column 2,is_stmt,isa 0
592 SBBO &r21, r7, 0, 4 ; [ALU_PRU] |250| $O$C4,$O$C2
593 .dwpsn file "PRU_ADS8688_Controller.c",line 251,column 2,is_stmt,isa 0
594 SBBO &r21, r8, 0, 4 ; [ALU_PRU] |251| $O$C3,$O$C2
595 .dwpsn file "PRU_ADS8688_Controller.c",line 252,column 2,is_stmt,isa 0
596$C$DW$46 .dwtag DW_TAG_TI_branch
597 .dwattr $C$DW$46, DW_AT_low_pc(0x00)
598 .dwattr $C$DW$46, DW_AT_name("send_command")
599 .dwattr $C$DW$46, DW_AT_TI_call
600 JAL r3.w2, ||send_command|| ; [ALU_PRU] |252| send_command
601 .dwpsn file "PRU_ADS8688_Controller.c",line 255,column 2,is_stmt,isa 0
602 LDI32 r0, 0x00022000 ; [ALU_PRU] |255| $O$C1
603 LBBO &r1, r0, 0, 4 ; [ALU_PRU] |255|
604 SET r1, r1, 0x00000003 ; [ALU_PRU] |255|
605 SBBO &r1, r0, 0, 4 ; [ALU_PRU] |255|
606 .dwpsn file "PRU_ADS8688_Controller.c",line 256,column 2,is_stmt,isa 0
607 SBBO &r21, r0, 12, 4 ; [ALU_PRU] |256| $O$C1,$O$C2
608 LBBO &r3.b2, r2, 0, 22 ; [ALU_PRU]
609 .dwcfi restore_reg, 14
610 .dwcfi restore_reg, 15
611 .dwcfi restore_reg, 16
612 .dwcfi restore_reg, 17
613 .dwcfi restore_reg, 18
614 .dwcfi restore_reg, 19
615 .dwcfi restore_reg, 20
616 .dwcfi restore_reg, 21
617 .dwcfi restore_reg, 22
618 .dwcfi restore_reg, 23
619 .dwcfi restore_reg, 24
620 .dwcfi restore_reg, 25
621 .dwcfi restore_reg, 26
622 .dwcfi restore_reg, 27
623 .dwcfi restore_reg, 28
624 .dwcfi restore_reg, 29
625 .dwcfi restore_reg, 30
626 .dwcfi restore_reg, 31
627 .dwcfi restore_reg, 32
628 .dwcfi restore_reg, 33
629 .dwcfi restore_reg, 34
630 .dwcfi restore_reg, 35
631 ADD r2, r2, 0x16 ; [ALU_PRU]
632 .dwcfi cfa_offset, 0
633$C$DW$47 .dwtag DW_TAG_TI_branch
634 .dwattr $C$DW$47, DW_AT_low_pc(0x00)
635 .dwattr $C$DW$47, DW_AT_TI_return
636 JMP r3.w2 ; [ALU_PRU]
637 .dwattr $C$DW$37, DW_AT_TI_end_file("PRU_ADS8688_Controller.c")
638 .dwattr $C$DW$37, DW_AT_TI_end_line(0x102)
639 .dwattr $C$DW$37, DW_AT_TI_end_column(0x01)
640 .dwendentry
641 .dwendtag $C$DW$37
642
643 .sect ".text:main"
644 .clink
645 .global ||main||
646
647$C$DW$48 .dwtag DW_TAG_subprogram, DW_AT_name("main")
648 .dwattr $C$DW$48, DW_AT_low_pc(||main||)
649 .dwattr $C$DW$48, DW_AT_high_pc(0x00)
650 .dwattr $C$DW$48, DW_AT_TI_symbol_name("main")
651 .dwattr $C$DW$48, DW_AT_external
652 .dwattr $C$DW$48, DW_AT_TI_begin_file("PRU_ADS8688_Controller.c")
653 .dwattr $C$DW$48, DW_AT_TI_begin_line(0x10d)
654 .dwattr $C$DW$48, DW_AT_TI_begin_column(0x06)
655 .dwattr $C$DW$48, DW_AT_decl_file("PRU_ADS8688_Controller.c")
656 .dwattr $C$DW$48, DW_AT_decl_line(0x10d)
657 .dwattr $C$DW$48, DW_AT_decl_column(0x06)
658 .dwattr $C$DW$48, DW_AT_TI_max_frame_size(0x4b)
659 .dwpsn file "PRU_ADS8688_Controller.c",line 270,column 1,is_stmt,address ||main||,isa 0
660
661 .dwfde $C$DW$CIE, ||main||
662
663;***************************************************************
664;* FNAME: main FR SIZE: 75 *
665;* *
666;* FUNCTION ENVIRONMENT *
667;* *
668;* FUNCTION PROPERTIES *
669;* 33 Auto, 42 SOE *
670;***************************************************************
671
672||main||:
673;* --------------------------------------------------------------------------*
674;* r15_0 assigned to $O$C1
675;* r0_0 assigned to $O$C2
676;* r5_0 assigned to i
677$C$DW$49 .dwtag DW_TAG_variable, DW_AT_name("i")
678 .dwattr $C$DW$49, DW_AT_TI_symbol_name("i")
679 .dwattr $C$DW$49, DW_AT_type(*$C$DW$T$33)
680 .dwattr $C$DW$49, DW_AT_location[DW_OP_reg20]
681;* r12_0 assigned to j
682$C$DW$50 .dwtag DW_TAG_variable, DW_AT_name("j")
683 .dwattr $C$DW$50, DW_AT_TI_symbol_name("j")
684 .dwattr $C$DW$50, DW_AT_type(*$C$DW$T$33)
685 .dwattr $C$DW$50, DW_AT_location[DW_OP_regx 0x30]
686;* r0_0 assigned to idx
687$C$DW$51 .dwtag DW_TAG_variable, DW_AT_name("idx")
688 .dwattr $C$DW$51, DW_AT_TI_symbol_name("idx")
689 .dwattr $C$DW$51, DW_AT_type(*$C$DW$T$33)
690 .dwattr $C$DW$51, DW_AT_location[DW_OP_reg0]
691;* r6_0 assigned to oversample
692$C$DW$52 .dwtag DW_TAG_variable, DW_AT_name("oversample")
693 .dwattr $C$DW$52, DW_AT_TI_symbol_name("oversample")
694 .dwattr $C$DW$52, DW_AT_type(*$C$DW$T$33)
695 .dwattr $C$DW$52, DW_AT_location[DW_OP_reg24]
696$C$DW$53 .dwtag DW_TAG_variable, DW_AT_name("last_pol")
697 .dwattr $C$DW$53, DW_AT_TI_symbol_name("last_pol")
698 .dwattr $C$DW$53, DW_AT_type(*$C$DW$T$123)
699 .dwattr $C$DW$53, DW_AT_location[DW_OP_breg8 9]
700;* r7_0 assigned to zero_crossings
701$C$DW$54 .dwtag DW_TAG_variable, DW_AT_name("zero_crossings")
702 .dwattr $C$DW$54, DW_AT_TI_symbol_name("zero_crossings")
703 .dwattr $C$DW$54, DW_AT_type(*$C$DW$T$33)
704 .dwattr $C$DW$54, DW_AT_location[DW_OP_reg28]
705$C$DW$55 .dwtag DW_TAG_variable, DW_AT_name("start")
706 .dwattr $C$DW$55, DW_AT_TI_symbol_name("start")
707 .dwattr $C$DW$55, DW_AT_type(*$C$DW$T$33)
708 .dwattr $C$DW$55, DW_AT_location[DW_OP_breg8 13]
709;* r1_0 assigned to stop
710$C$DW$56 .dwtag DW_TAG_variable, DW_AT_name("stop")
711 .dwattr $C$DW$56, DW_AT_TI_symbol_name("stop")
712 .dwattr $C$DW$56, DW_AT_type(*$C$DW$T$33)
713 .dwattr $C$DW$56, DW_AT_location[DW_OP_reg4]
714;* r4_0 assigned to delay
715$C$DW$57 .dwtag DW_TAG_variable, DW_AT_name("delay")
716 .dwattr $C$DW$57, DW_AT_TI_symbol_name("delay")
717 .dwattr $C$DW$57, DW_AT_type(*$C$DW$T$33)
718 .dwattr $C$DW$57, DW_AT_location[DW_OP_reg16]
719;* r8_0 assigned to compensation
720$C$DW$58 .dwtag DW_TAG_variable, DW_AT_name("compensation")
721 .dwattr $C$DW$58, DW_AT_TI_symbol_name("compensation")
722 .dwattr $C$DW$58, DW_AT_type(*$C$DW$T$33)
723 .dwattr $C$DW$58, DW_AT_location[DW_OP_regx 0x20]
724;* r9_0 assigned to curr_addr
725$C$DW$59 .dwtag DW_TAG_variable, DW_AT_name("curr_addr")
726 .dwattr $C$DW$59, DW_AT_TI_symbol_name("curr_addr")
727 .dwattr $C$DW$59, DW_AT_type(*$C$DW$T$33)
728 .dwattr $C$DW$59, DW_AT_location[DW_OP_regx 0x24]
729$C$DW$60 .dwtag DW_TAG_variable, DW_AT_name("curr_buff")
730 .dwattr $C$DW$60, DW_AT_TI_symbol_name("curr_buff")
731 .dwattr $C$DW$60, DW_AT_type(*$C$DW$T$112)
732 .dwattr $C$DW$60, DW_AT_location[DW_OP_breg8 0]
733;* r11_0 assigned to num_captured
734$C$DW$61 .dwtag DW_TAG_variable, DW_AT_name("num_captured")
735 .dwattr $C$DW$61, DW_AT_TI_symbol_name("num_captured")
736 .dwattr $C$DW$61, DW_AT_type(*$C$DW$T$33)
737 .dwattr $C$DW$61, DW_AT_location[DW_OP_regx 0x2c]
738;* r14_0 assigned to $O$U116
739;* r1_0 assigned to $O$U45
740;* r13_0 assigned to $O$U41
741;* r10_0 assigned to $O$K32
742 .dwcfi cfa_offset, 0
743 SUB r2, r2, 0x4b ; [ALU_PRU]
744 .dwcfi cfa_offset, 75
745 .dwpsn file "PRU_ADS8688_Controller.c",line 289,column 2,is_stmt,isa 0
746 ZERO &r28, 4 ; [ALU_PRU] |289|
747 SBBO &r3.b2, r2, 33, 42 ; [ALU_PRU]
748 .dwcfi save_reg_to_mem, 14, -42
749 .dwcfi save_reg_to_mem, 15, -41
750 .dwcfi save_reg_to_mem, 16, -40
751 .dwcfi save_reg_to_mem, 17, -39
752 .dwcfi save_reg_to_mem, 18, -38
753 .dwcfi save_reg_to_mem, 19, -37
754 .dwcfi save_reg_to_mem, 20, -36
755 .dwcfi save_reg_to_mem, 21, -35
756 .dwcfi save_reg_to_mem, 22, -34
757 .dwcfi save_reg_to_mem, 23, -33
758 .dwcfi save_reg_to_mem, 24, -32
759 .dwcfi save_reg_to_mem, 25, -31
760 .dwcfi save_reg_to_mem, 26, -30
761 .dwcfi save_reg_to_mem, 27, -29
762 .dwcfi save_reg_to_mem, 28, -28
763 .dwcfi save_reg_to_mem, 29, -27
764 .dwcfi save_reg_to_mem, 30, -26
765 .dwcfi save_reg_to_mem, 31, -25
766 .dwcfi save_reg_to_mem, 32, -24
767 .dwcfi save_reg_to_mem, 33, -23
768 .dwcfi save_reg_to_mem, 34, -22
769 .dwcfi save_reg_to_mem, 35, -21
770 .dwcfi save_reg_to_mem, 36, -20
771 .dwcfi save_reg_to_mem, 37, -19
772 .dwcfi save_reg_to_mem, 38, -18
773 .dwcfi save_reg_to_mem, 39, -17
774 .dwcfi save_reg_to_mem, 40, -16
775 .dwcfi save_reg_to_mem, 41, -15
776 .dwcfi save_reg_to_mem, 42, -14
777 .dwcfi save_reg_to_mem, 43, -13
778 .dwcfi save_reg_to_mem, 44, -12
779 .dwcfi save_reg_to_mem, 45, -11
780 .dwcfi save_reg_to_mem, 46, -10
781 .dwcfi save_reg_to_mem, 47, -9
782 .dwcfi save_reg_to_mem, 48, -8
783 .dwcfi save_reg_to_mem, 49, -7
784 .dwcfi save_reg_to_mem, 50, -6
785 .dwcfi save_reg_to_mem, 51, -5
786 .dwcfi save_reg_to_mem, 52, -4
787 .dwcfi save_reg_to_mem, 53, -3
788 .dwcfi save_reg_to_mem, 54, -2
789 .dwcfi save_reg_to_mem, 55, -1
790 XOUT 0x0b, &r28.b0, 0x04 ; [ALU_PRU] |289|
791 .dwpsn file "PRU_ADS8688_Controller.c",line 290,column 2,is_stmt,isa 0
792 ZERO &r29, 4 ; [ALU_PRU] |290|
793 XOUT 0x0b, &r29.b0, 0x04 ; [ALU_PRU] |290|
794 .dwpsn file "PRU_ADS8688_Controller.c",line 293,column 2,is_stmt,isa 0
795 LBCO &r0, __PRU_CREG_PRU_CFG, $CSBREL(||CT_CFG||+4), 4 ; [ALU_PRU] |293| CT_CFG
796 CLR r0, r0, 0x00000004 ; [ALU_PRU] |293|
797 SBCO &r0, __PRU_CREG_PRU_CFG, $CSBREL(||CT_CFG||+4), 4 ; [ALU_PRU] |293| CT_CFG
798 .dwpsn file "PRU_ADS8688_Controller.c",line 296,column 2,is_stmt,isa 0
799$C$DW$62 .dwtag DW_TAG_TI_branch
800 .dwattr $C$DW$62, DW_AT_low_pc(0x00)
801 .dwattr $C$DW$62, DW_AT_name("adc_init")
802 .dwattr $C$DW$62, DW_AT_TI_call
803 JAL r3.w2, ||adc_init|| ; [ALU_PRU] |296| adc_init
804 ZERO &r10, 4 ; [ALU_PRU] $O$K32
805 .dwpsn file "PRU_ADS8688_Controller.c",line 272,column 22,is_stmt,isa 0
806 LDI r6, 0x0001 ; [ALU_PRU] |272| oversample
807 .dwpsn file "PRU_ADS8688_Controller.c",line 274,column 26,is_stmt,isa 0
808 ZERO &r7, 4 ; [ALU_PRU] |274| zero_crossings
809 .dwpsn file "PRU_ADS8688_Controller.c",line 279,column 24,is_stmt,isa 0
810 ZERO &r11, 4 ; [ALU_PRU] |279| num_captured
811 .dwpsn file "PRU_ADS8688_Controller.c",line 281,column 2,is_stmt,isa 0
812 LDI r4, 0x030d ; [ALU_PRU] |281| delay
813 .dwpsn file "PRU_ADS8688_Controller.c",line 282,column 2,is_stmt,isa 0
814 LDI r8, 0x0002 ; [ALU_PRU] |282| compensation
815 .dwpsn file "PRU_ADS8688_Controller.c",line 285,column 2,is_stmt,isa 0
816 LDI32 r9, 0x9ffc0008 ; [ALU_PRU] |285| curr_addr
817 LDI32 r0, 0x00022000 ; [ALU_PRU] $O$K73
818 SBBO &r0, r2, 21, 4 ; [ALU_PRU] $C$SP6,$O$K73
819 LDI32 r0, 0x9ffc0000 ; [ALU_PRU] $O$Q1
820 SBBO &r0, r2, 1, 4 ; [ALU_PRU] $C$SP1,$O$Q1
821 LDI32 r0, 0x9ffe0000 ; [ALU_PRU] $O$Q2
822 SBBO &r0, r2, 5, 4 ; [ALU_PRU] $C$SP2,$O$Q2
823 LDI r0, 0xffff ; [ALU_PRU] $O$K108
824 SBBO &r0, r2, 17, 4 ; [ALU_PRU] $C$SP5,$O$K108
825 LDI r0, ||chan_data_temp|| ; [ALU_PRU] $O$K35,chan_data_temp
826 SBBO &r0, r2, 29, 4 ; [ALU_PRU] $C$SP8,$O$K35
827 .dwpsn file "PRU_ADS8688_Controller.c",line 273,column 19,is_stmt,isa 0
828 LDI r0, 0x0001 ; [ALU_PRU] |273| last_pol
829 SBBO &r0, r2, 9, 4 ; [ALU_PRU] |273| $C$SP3,last_pol
830 .dwpsn file "PRU_ADS8688_Controller.c",line 286,column 2,is_stmt,isa 0
831 LDI r0.b0, 0x00 ; [ALU_PRU] |286| curr_buff
832 SBBO &r0.b0, r2, 0, 1 ; [ALU_PRU] |286| $C$SP0,curr_buff
833;* --------------------------------------------------------------------------*
834;* BEGIN LOOP ||$C$L11||
835;*
836;* Loop source line : 298
837;* Loop closing brace source line : 389
838;* Known Minimum Trip Count : 1
839;* Known Maximum Trip Count : 4294967295
840;* Known Max Trip Count Factor : 1
841;* --------------------------------------------------------------------------*
842||$C$L11||:
843 .dwpsn file "PRU_ADS8688_Controller.c",line 299,column 8,is_stmt,isa 0
844 ZERO &r5, 4 ; [ALU_PRU] |299| i
845;* --------------------------------------------------------------------------*
846;* BEGIN LOOP ||$C$L12||
847;*
848;* Loop source line : 299
849;* Loop closing brace source line : 352
850;* Known Minimum Trip Count : 8
851;* Known Maximum Trip Count : 8
852;* Known Max Trip Count Factor : 8
853;* --------------------------------------------------------------------------*
854||$C$L12||:
855 .dwpsn file "PRU_ADS8688_Controller.c",line 301,column 4,is_stmt,isa 0
856 QBLT ||$C$L13||, r8, r5 ; [ALU_PRU] |301| i,compensation
857;* --------------------------------------------------------------------------*
858 MOV r14, r4 ; [ALU_PRU] delay
859 .dwpsn file "PRU_ADS8688_Controller.c",line 304,column 5,is_stmt,isa 0
860 JMP ||$C$L14|| ; [ALU_PRU] |304|
861;* --------------------------------------------------------------------------*
862||$C$L13||:
863 .dwpsn file "PRU_ADS8688_Controller.c",line 302,column 5,is_stmt,isa 0
864 ADD r14, r4, 0x01 ; [ALU_PRU] |302| delay
865;* --------------------------------------------------------------------------*
866||$C$L14||:
867$C$DW$63 .dwtag DW_TAG_TI_branch
868 .dwattr $C$DW$63, DW_AT_low_pc(0x00)
869 .dwattr $C$DW$63, DW_AT_name("send_delay")
870 .dwattr $C$DW$63, DW_AT_TI_call
871 JAL r3.w2, ||send_delay|| ; [ALU_PRU] |302| send_delay
872 .dwpsn file "PRU_ADS8688_Controller.c",line 305,column 4,is_stmt,isa 0
873$C$DW$64 .dwtag DW_TAG_TI_branch
874 .dwattr $C$DW$64, DW_AT_low_pc(0x00)
875 .dwattr $C$DW$64, DW_AT_name("receive_data")
876 .dwattr $C$DW$64, DW_AT_TI_call
877 JAL r3.w2, ||receive_data|| ; [ALU_PRU] |305| receive_data
878 LDI r13, ||data_buf|| ; [ALU_PRU] $O$U41,data_buf
879 .dwpsn file "PRU_ADS8688_Controller.c",line 306,column 9,is_stmt,isa 0
880 ZERO &r12, 4 ; [ALU_PRU] |306| j
881 SBBO &r5, r2, 25, 4 ; [ALU_PRU] $C$SP7,$O$U28
882;* --------------------------------------------------------------------------*
883;* BEGIN LOOP ||$C$L15||
884;*
885;* Loop source line : 306
886;* Loop closing brace source line : 351
887;* Known Minimum Trip Count : 6
888;* Known Maximum Trip Count : 6
889;* Known Max Trip Count Factor : 6
890;* --------------------------------------------------------------------------*
891||$C$L15||:
892 LBBO &r0, r2, 25, 4 ; [ALU_PRU] $O$U28,$C$SP7
893 .dwpsn file "PRU_ADS8688_Controller.c",line 310,column 5,is_stmt,isa 0
894 QBNE ||$C$L16||, r6, 0x01 ; [ALU_PRU] |310| oversample
895;* --------------------------------------------------------------------------*
896 .dwpsn file "PRU_ADS8688_Controller.c",line 311,column 6,is_stmt,isa 0
897 LSL r14, r0, 0x02 ; [ALU_PRU] |311| idx
898 LBBO &r1, r2, 29, 4 ; [ALU_PRU] |311| $O$K35,$C$SP8
899 SBBO &r10, r1, r14, 4 ; [ALU_PRU] |311| $O$K35,$O$K32
900;* --------------------------------------------------------------------------*
901||$C$L16||:
902 .dwpsn file "PRU_ADS8688_Controller.c",line 314,column 5,is_stmt,isa 0
903 LSL r1, r0, 0x02 ; [ALU_PRU] |314| idx
904 LBBO &r0, r2, 29, 4 ; [ALU_PRU] |314| $O$K35,$C$SP8
905 ADD r1, r1, r0 ; [ALU_PRU] |314| $O$U45,$O$K35
906 LBBO &r0.w0, r13, 0, 2 ; [ALU_PRU] |314| $O$U41
907 LBBO &r14, r1, 0, 4 ; [ALU_PRU] |314| $O$U45
908 ADD r0, r14, r0.w0 ; [ALU_PRU] |314|
909 SBBO &r0, r1, 0, 4 ; [ALU_PRU] |314| $O$U45
910 .dwpsn file "PRU_ADS8688_Controller.c",line 317,column 5,is_stmt,isa 0
911 QBNE ||$C$L22||, r6, 0x01 ; [ALU_PRU] |317| oversample
912;* --------------------------------------------------------------------------*
913 .dwpsn file "PRU_ADS8688_Controller.c",line 318,column 6,is_stmt,isa 0
914 MOV r15, r0.w0 ; [ALU_PRU] |318| $O$C1,$O$C2
915 SBBO &r15, r1, 0, 4 ; [ALU_PRU] |318| $O$U45,$O$C1
916 .dwpsn file "PRU_ADS8688_Controller.c",line 320,column 6,is_stmt,isa 0
917 QBNE ||$C$L22||, r12, 0x00 ; [ALU_PRU] |320| j
918;* --------------------------------------------------------------------------*
919 QBNE ||$C$L22||, r5, 0x05 ; [ALU_PRU] |320| i
920;* --------------------------------------------------------------------------*
921 LBBO &r0, r2, 9, 4 ; [ALU_PRU] last_pol,$C$SP3
922 LDI r14, 0x0000 ; [ALU_PRU] |320|
923 XOR r0.b3, r0.b3, 0x80 ; [ALU_PRU] |320|
924 XOR r14.b3, r14.b3, 0x80 ; [ALU_PRU] |320|
925 QBGE ||$C$L17||, r0, r14 ; [ALU_PRU] |320|
926;* --------------------------------------------------------------------------*
927 LDI r0.w2, 0x00 ; [ALU_PRU] |320|
928 LDI r0.w0, 0x8000 ; [ALU_PRU] |320|
929 XOR r0.b3, r0.b3, 0x80 ; [ALU_PRU] |320|
930 ADD r0.w0, r15.w0, r0.w0 ; [ALU_PRU] |320| $O$C1
931 XOR r0.b1, r0.b1, 0x80 ; [ALU_PRU] |320|
932 QBLE ||$C$L17||, r0.w0, r0.w2 ; [ALU_PRU] |320|
933;* --------------------------------------------------------------------------*
934 JMP ||$C$L18|| ; [ALU_PRU] |320|
935;* --------------------------------------------------------------------------*
936||$C$L17||:
937 LBBO &r0, r2, 9, 4 ; [ALU_PRU] last_pol,$C$SP3
938 LDI r14, 0x0000 ; [ALU_PRU] |320|
939 XOR r0.b3, r0.b3, 0x80 ; [ALU_PRU] |320|
940 XOR r14.b3, r14.b3, 0x80 ; [ALU_PRU] |320|
941 QBLE ||$C$L22||, r0, r14 ; [ALU_PRU] |320|
942;* --------------------------------------------------------------------------*
943 LBBO &r0.w2, r1, 0, 2 ; [ALU_PRU] |320| $O$U45
944 LDI r0.w0, 0x8000 ; [ALU_PRU] |320|
945 ADD r0.w0, r0.w2, r0.w0 ; [ALU_PRU] |320|
946 XOR r0.b1, r0.b1, 0x80 ; [ALU_PRU] |320|
947 LDI r0.w2, 0x00 ; [ALU_PRU] |320|
948 XOR r0.b3, r0.b3, 0x80 ; [ALU_PRU] |320|
949 QBGE ||$C$L22||, r0.w0, r0.w2 ; [ALU_PRU] |320|
950;* --------------------------------------------------------------------------*
951||$C$L18||:
952 LBBO &r0, r2, 9, 4 ; [ALU_PRU] last_pol,$C$SP3
953 .dwpsn file "PRU_ADS8688_Controller.c",line 327,column 8,is_stmt,isa 0
954 ADD r7, r7, 0x01 ; [ALU_PRU] |327| zero_crossings,zero_crossings
955 .dwpsn file "PRU_ADS8688_Controller.c",line 324,column 8,is_stmt,isa 0
956 NOT r0, r0 ; [ALU_PRU] |324| last_pol,last_pol
957 SBBO &r0, r2, 9, 4 ; [ALU_PRU] |324| $C$SP3,last_pol
958 .dwpsn file "PRU_ADS8688_Controller.c",line 327,column 8,is_stmt,isa 0
959 QBEQ ||$C$L21||, r7, 0x01 ; [ALU_PRU] |327| zero_crossings
960;* --------------------------------------------------------------------------*
961 .dwpsn file "PRU_ADS8688_Controller.c",line 331,column 13,is_stmt,isa 0
962 QBNE ||$C$L22||, r7, 0x0b ; [ALU_PRU] |331| zero_crossings
963;* --------------------------------------------------------------------------*
964 LBBO &r0, r2, 21, 4 ; [ALU_PRU] $O$K73,$C$SP6
965 .dwpsn file "PRU_ADS8688_Controller.c",line 334,column 9,is_stmt,isa 0
966 LDI r15, 0x0c80 ; [ALU_PRU] |334|
967 .dwpsn file "PRU_ADS8688_Controller.c",line 332,column 9,is_stmt,isa 0
968 LBBO &r1, r0, 12, 4 ; [ALU_PRU] |332| stop,$O$K73
969 LBBO &r0, r2, 13, 4 ; [ALU_PRU] |332| start,$C$SP4
970 .dwpsn file "PRU_ADS8688_Controller.c",line 334,column 9,is_stmt,isa 0
971 RSB r14, r0, r1 ; [ALU_PRU] |334| start,stop
972$C$DW$65 .dwtag DW_TAG_TI_branch
973 .dwattr $C$DW$65, DW_AT_low_pc(0x00)
974 .dwattr $C$DW$65, DW_AT_name("__pruabi_divu")
975 .dwattr $C$DW$65, DW_AT_TI_call
976 JAL r3.w2, ||__pruabi_divu|| ; [ALU_PRU] |334| __pruabi_divu
977 MOV r4, r14 ; [ALU_PRU] |334| delay
978 .dwpsn file "PRU_ADS8688_Controller.c",line 337,column 9,is_stmt,isa 0
979 LDI r0, 0x02c6 ; [ALU_PRU] |337|
980 .dwpsn file "PRU_ADS8688_Controller.c",line 335,column 9,is_stmt,isa 0
981 AND r8, r4, 0x07 ; [ALU_PRU] |335| compensation,delay
982 .dwpsn file "PRU_ADS8688_Controller.c",line 337,column 9,is_stmt,isa 0
983 LSR r4, r4, 0x03 ; [ALU_PRU] |337| delay,delay
984 QBLT ||$C$L19||, r0, r4 ; [ALU_PRU] |337| delay
985;* --------------------------------------------------------------------------*
986 .dwpsn file "PRU_ADS8688_Controller.c",line 341,column 14,is_stmt,isa 0
987 LDI r0, 0x0364 ; [ALU_PRU] |341|
988 QBLE ||$C$L20||, r0, r4 ; [ALU_PRU] |341| delay
989;* --------------------------------------------------------------------------*
990 .dwpsn file "PRU_ADS8688_Controller.c",line 342,column 10,is_stmt,isa 0
991 LDI r4, 0x0364 ; [ALU_PRU] |342| delay
992 .dwpsn file "PRU_ADS8688_Controller.c",line 343,column 10,is_stmt,isa 0
993 LDI r8, 0x0007 ; [ALU_PRU] |343| compensation
994 JMP ||$C$L20|| ; [ALU_PRU] |343|
995;* --------------------------------------------------------------------------*
996||$C$L19||:
997 .dwpsn file "PRU_ADS8688_Controller.c",line 338,column 10,is_stmt,isa 0
998 LDI r4, 0x02c6 ; [ALU_PRU] |338| delay
999 .dwpsn file "PRU_ADS8688_Controller.c",line 339,column 10,is_stmt,isa 0
1000 ZERO &r8, 4 ; [ALU_PRU] |339| compensation
1001;* --------------------------------------------------------------------------*
1002||$C$L20||:
1003 LBBO &r0, r2, 21, 4 ; [ALU_PRU] $O$K73,$C$SP6
1004 .dwpsn file "PRU_ADS8688_Controller.c",line 346,column 9,is_stmt,isa 0
1005 ZERO &r7, 4 ; [ALU_PRU] |346| zero_crossings
1006 .dwpsn file "PRU_ADS8688_Controller.c",line 345,column 9,is_stmt,isa 0
1007 SBBO &r10, r0, 12, 4 ; [ALU_PRU] |345| $O$K73,$O$K32
1008 .dwpsn file "PRU_ADS8688_Controller.c",line 346,column 9,is_stmt,isa 0
1009 JMP ||$C$L22|| ; [ALU_PRU] |346|
1010;* --------------------------------------------------------------------------*
1011||$C$L21||:
1012 LBBO &r0, r2, 21, 4 ; [ALU_PRU] $O$K73,$C$SP6
1013 .dwpsn file "PRU_ADS8688_Controller.c",line 328,column 9,is_stmt,isa 0
1014 LBBO &r0, r0, 12, 4 ; [ALU_PRU] |328| start,$O$K73
1015 SBBO &r0, r2, 13, 4 ; [ALU_PRU] |328| $C$SP4,start
1016;* --------------------------------------------------------------------------*
1017||$C$L22||:
1018 LBBO &r0, r2, 25, 4 ; [ALU_PRU] $O$U28,$C$SP7
1019 .dwpsn file "PRU_ADS8688_Controller.c",line 306,column 16,is_stmt,isa 0
1020 ADD r0, r0, 0x08 ; [ALU_PRU] |306| $O$U28,$O$U28
1021 ADD r13, r13, 0x04 ; [ALU_PRU] |306| $O$U41,$O$U41
1022 ADD r12, r12, 0x01 ; [ALU_PRU] |306| j,j
1023 SBBO &r0, r2, 25, 4 ; [ALU_PRU] |306| $C$SP7,$O$U28
1024 QBGT ||$C$L15||, r12, 0x06 ; [ALU_PRU] |306| j
1025;* --------------------------------------------------------------------------*
1026 .dwpsn file "PRU_ADS8688_Controller.c",line 299,column 15,is_stmt,isa 0
1027 ADD r5, r5, 0x01 ; [ALU_PRU] |299| i,i
1028 QBGT ||$C$L12||, r5, 0x08 ; [ALU_PRU] |299| i
1029;* --------------------------------------------------------------------------*
1030 .dwpsn file "PRU_ADS8688_Controller.c",line 353,column 3,is_stmt,isa 0
1031 ADD r6, r6, 0x01 ; [ALU_PRU] |353| oversample,oversample
1032 QBNE ||$C$L11||, r6, 0x02 ; [ALU_PRU] |353| oversample
1033;* --------------------------------------------------------------------------*
1034 .dwpsn file "PRU_ADS8688_Controller.c",line 356,column 4,is_stmt,isa 0
1035 MOV r14, r9 ; [ALU_PRU] |356| curr_addr
1036 LBBO &r15, r2, 29, 4 ; [ALU_PRU] |356| $O$K35,$C$SP8
1037 LDI r16, 0x00c0 ; [ALU_PRU] |356|
1038$C$DW$66 .dwtag DW_TAG_TI_branch
1039 .dwattr $C$DW$66, DW_AT_low_pc(0x00)
1040 .dwattr $C$DW$66, DW_AT_name("memcpy")
1041 .dwattr $C$DW$66, DW_AT_TI_call
1042 JAL r3.w2, ||memcpy|| ; [ALU_PRU] |356| memcpy
1043 .dwpsn file "PRU_ADS8688_Controller.c",line 354,column 4,is_stmt,isa 0
1044 LDI r6, 0x0001 ; [ALU_PRU] |354| oversample
1045 .dwpsn file "PRU_ADS8688_Controller.c",line 358,column 4,is_stmt,isa 0
1046 ADD r9, r9, 0xc0 ; [ALU_PRU] |358| curr_addr,curr_addr
1047 .dwpsn file "PRU_ADS8688_Controller.c",line 361,column 4,is_stmt,isa 0
1048 ADD r11, r11, 0x01 ; [ALU_PRU] |361| num_captured,num_captured
1049 LDI r0, 0x0280 ; [ALU_PRU] |361|
1050 QBNE ||$C$L11||, r0, r11 ; [ALU_PRU] |361| num_captured
1051;* --------------------------------------------------------------------------*
1052 LSL r0, r8.w0, 0x10 ; [ALU_PRU] compensation
1053 OR r14, r0, r4.w0 ; [ALU_PRU] $O$U116,delay
1054 LBBO &r0.b0, r2, 0, 1 ; [ALU_PRU] curr_buff,$C$SP0
1055 .dwpsn file "PRU_ADS8688_Controller.c",line 362,column 5,is_stmt,isa 0
1056 QBNE ||$C$L23||, r0.b0, 0x00 ; [ALU_PRU] |362| curr_buff
1057;* --------------------------------------------------------------------------*
1058 LBBO &r0, r2, 1, 4 ; [ALU_PRU] $O$Q1,$C$SP1
1059 LBBO &r1, r2, 17, 4 ; [ALU_PRU] $O$K108,$C$SP5
1060 .dwpsn file "PRU_ADS8688_Controller.c",line 370,column 6,is_stmt,isa 0
1061 LDI32 r9, 0x9ffe0008 ; [ALU_PRU] |370| curr_addr
1062 .dwpsn file "PRU_ADS8688_Controller.c",line 364,column 6,is_stmt,isa 0
1063 SBBO &r1, r0, 0, 4 ; [ALU_PRU] |364| $O$Q1,$O$K108
1064 .dwpsn file "PRU_ADS8688_Controller.c",line 366,column 6,is_stmt,isa 0
1065 SBBO &r14, r0, 4, 4 ; [ALU_PRU] |366| $O$Q1,$O$U116
1066 LBBO &r0, r2, 5, 4 ; [ALU_PRU] |366| $O$Q2,$C$SP2
1067 .dwpsn file "PRU_ADS8688_Controller.c",line 368,column 6,is_stmt,isa 0
1068 SBBO &r10, r0, 0, 4 ; [ALU_PRU] |368| $O$Q2,$O$K32
1069 .dwpsn file "PRU_ADS8688_Controller.c",line 372,column 6,is_stmt,isa 0
1070 LDI r0.b0, 0x01 ; [ALU_PRU] |372| curr_buff
1071 .dwpsn file "PRU_ADS8688_Controller.c",line 373,column 5,is_stmt,isa 0
1072 JMP ||$C$L24|| ; [ALU_PRU] |373|
1073;* --------------------------------------------------------------------------*
1074||$C$L23||:
1075 LBBO &r0, r2, 5, 4 ; [ALU_PRU] $O$Q2,$C$SP2
1076 LBBO &r1, r2, 17, 4 ; [ALU_PRU] $O$K108,$C$SP5
1077 .dwpsn file "PRU_ADS8688_Controller.c",line 382,column 6,is_stmt,isa 0
1078 LDI32 r9, 0x9ffc0008 ; [ALU_PRU] |382| curr_addr
1079 .dwpsn file "PRU_ADS8688_Controller.c",line 376,column 6,is_stmt,isa 0
1080 SBBO &r1, r0, 0, 4 ; [ALU_PRU] |376| $O$Q2,$O$K108
1081 .dwpsn file "PRU_ADS8688_Controller.c",line 378,column 6,is_stmt,isa 0
1082 SBBO &r14, r0, 4, 4 ; [ALU_PRU] |378| $O$Q2,$O$U116
1083 LBBO &r0, r2, 1, 4 ; [ALU_PRU] |378| $O$Q1,$C$SP1
1084 .dwpsn file "PRU_ADS8688_Controller.c",line 380,column 6,is_stmt,isa 0
1085 SBBO &r10, r0, 0, 4 ; [ALU_PRU] |380| $O$Q1,$O$K32
1086 .dwpsn file "PRU_ADS8688_Controller.c",line 384,column 6,is_stmt,isa 0
1087 LDI r0.b0, 0x00 ; [ALU_PRU] |384| curr_buff
1088;* --------------------------------------------------------------------------*
1089||$C$L24||:
1090 SBBO &r0.b0, r2, 0, 1 ; [ALU_PRU] |384| $C$SP0,curr_buff
1091 .dwpsn file "PRU_ADS8688_Controller.c",line 386,column 5,is_stmt,isa 0
1092 ZERO &r11, 4 ; [ALU_PRU] |386| num_captured
1093 JMP ||$C$L11|| ; [ALU_PRU] |386|
1094 .dwattr $C$DW$48, DW_AT_TI_end_file("PRU_ADS8688_Controller.c")
1095 .dwattr $C$DW$48, DW_AT_TI_end_line(0x186)
1096 .dwattr $C$DW$48, DW_AT_TI_end_column(0x01)
1097 .dwendentry
1098 .dwendtag $C$DW$48
1099
1100;*****************************************************************************
1101;* UNDEFINED EXTERNAL REFERENCES *
1102;*****************************************************************************
1103 .global ||__pruabi_divu||
1104 .global ||memcpy||
1105
1106;******************************************************************************
1107;* TYPE INFORMATION *
1108;******************************************************************************
1109
1110$C$DW$T$20 .dwtag DW_TAG_structure_type
1111 .dwattr $C$DW$T$20, DW_AT_byte_size(0x04)
1112$C$DW$67 .dwtag DW_TAG_member
1113 .dwattr $C$DW$67, DW_AT_type(*$C$DW$T$11)
1114 .dwattr $C$DW$67, DW_AT_name("REVID")
1115 .dwattr $C$DW$67, DW_AT_TI_symbol_name("REVID")
1116 .dwattr $C$DW$67, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x20)
1117 .dwattr $C$DW$67, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1118 .dwattr $C$DW$67, DW_AT_accessibility(DW_ACCESS_public)
1119 .dwattr $C$DW$67, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1120 .dwattr $C$DW$67, DW_AT_decl_line(0x2d)
1121 .dwattr $C$DW$67, DW_AT_decl_column(0x0d)
1122 .dwendtag $C$DW$T$20
1123
1124 .dwattr $C$DW$T$20, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1125 .dwattr $C$DW$T$20, DW_AT_decl_line(0x2c)
1126 .dwattr $C$DW$T$20, DW_AT_decl_column(0x13)
1127$C$DW$T$49 .dwtag DW_TAG_volatile_type
1128 .dwattr $C$DW$T$49, DW_AT_type(*$C$DW$T$20)
1129
1130$C$DW$T$21 .dwtag DW_TAG_structure_type
1131 .dwattr $C$DW$T$21, DW_AT_byte_size(0x04)
1132$C$DW$68 .dwtag DW_TAG_member
1133 .dwattr $C$DW$68, DW_AT_type(*$C$DW$T$11)
1134 .dwattr $C$DW$68, DW_AT_name("IDLE_MODE")
1135 .dwattr $C$DW$68, DW_AT_TI_symbol_name("IDLE_MODE")
1136 .dwattr $C$DW$68, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x02)
1137 .dwattr $C$DW$68, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1138 .dwattr $C$DW$68, DW_AT_accessibility(DW_ACCESS_public)
1139 .dwattr $C$DW$68, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1140 .dwattr $C$DW$68, DW_AT_decl_line(0x37)
1141 .dwattr $C$DW$68, DW_AT_decl_column(0x0d)
1142$C$DW$69 .dwtag DW_TAG_member
1143 .dwattr $C$DW$69, DW_AT_type(*$C$DW$T$11)
1144 .dwattr $C$DW$69, DW_AT_name("STANDBY_MODE")
1145 .dwattr $C$DW$69, DW_AT_TI_symbol_name("STANDBY_MODE")
1146 .dwattr $C$DW$69, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x02)
1147 .dwattr $C$DW$69, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1148 .dwattr $C$DW$69, DW_AT_accessibility(DW_ACCESS_public)
1149 .dwattr $C$DW$69, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1150 .dwattr $C$DW$69, DW_AT_decl_line(0x38)
1151 .dwattr $C$DW$69, DW_AT_decl_column(0x0d)
1152$C$DW$70 .dwtag DW_TAG_member
1153 .dwattr $C$DW$70, DW_AT_type(*$C$DW$T$11)
1154 .dwattr $C$DW$70, DW_AT_name("STANDBY_INIT")
1155 .dwattr $C$DW$70, DW_AT_TI_symbol_name("STANDBY_INIT")
1156 .dwattr $C$DW$70, DW_AT_bit_offset(0x1b), DW_AT_bit_size(0x01)
1157 .dwattr $C$DW$70, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1158 .dwattr $C$DW$70, DW_AT_accessibility(DW_ACCESS_public)
1159 .dwattr $C$DW$70, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1160 .dwattr $C$DW$70, DW_AT_decl_line(0x39)
1161 .dwattr $C$DW$70, DW_AT_decl_column(0x0d)
1162$C$DW$71 .dwtag DW_TAG_member
1163 .dwattr $C$DW$71, DW_AT_type(*$C$DW$T$11)
1164 .dwattr $C$DW$71, DW_AT_name("SUB_MWAIT")
1165 .dwattr $C$DW$71, DW_AT_TI_symbol_name("SUB_MWAIT")
1166 .dwattr $C$DW$71, DW_AT_bit_offset(0x1a), DW_AT_bit_size(0x01)
1167 .dwattr $C$DW$71, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1168 .dwattr $C$DW$71, DW_AT_accessibility(DW_ACCESS_public)
1169 .dwattr $C$DW$71, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1170 .dwattr $C$DW$71, DW_AT_decl_line(0x3a)
1171 .dwattr $C$DW$71, DW_AT_decl_column(0x0d)
1172$C$DW$72 .dwtag DW_TAG_member
1173 .dwattr $C$DW$72, DW_AT_type(*$C$DW$T$11)
1174 .dwattr $C$DW$72, DW_AT_name("rsvd6")
1175 .dwattr $C$DW$72, DW_AT_TI_symbol_name("rsvd6")
1176 .dwattr $C$DW$72, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x1a)
1177 .dwattr $C$DW$72, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1178 .dwattr $C$DW$72, DW_AT_accessibility(DW_ACCESS_public)
1179 .dwattr $C$DW$72, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1180 .dwattr $C$DW$72, DW_AT_decl_line(0x3b)
1181 .dwattr $C$DW$72, DW_AT_decl_column(0x0d)
1182 .dwendtag $C$DW$T$21
1183
1184 .dwattr $C$DW$T$21, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1185 .dwattr $C$DW$T$21, DW_AT_decl_line(0x36)
1186 .dwattr $C$DW$T$21, DW_AT_decl_column(0x13)
1187$C$DW$T$51 .dwtag DW_TAG_volatile_type
1188 .dwattr $C$DW$T$51, DW_AT_type(*$C$DW$T$21)
1189
1190$C$DW$T$22 .dwtag DW_TAG_structure_type
1191 .dwattr $C$DW$T$22, DW_AT_byte_size(0x04)
1192$C$DW$73 .dwtag DW_TAG_member
1193 .dwattr $C$DW$73, DW_AT_type(*$C$DW$T$11)
1194 .dwattr $C$DW$73, DW_AT_name("PRU0_GPI_MODE")
1195 .dwattr $C$DW$73, DW_AT_TI_symbol_name("PRU0_GPI_MODE")
1196 .dwattr $C$DW$73, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x02)
1197 .dwattr $C$DW$73, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1198 .dwattr $C$DW$73, DW_AT_accessibility(DW_ACCESS_public)
1199 .dwattr $C$DW$73, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1200 .dwattr $C$DW$73, DW_AT_decl_line(0x45)
1201 .dwattr $C$DW$73, DW_AT_decl_column(0x0d)
1202$C$DW$74 .dwtag DW_TAG_member
1203 .dwattr $C$DW$74, DW_AT_type(*$C$DW$T$11)
1204 .dwattr $C$DW$74, DW_AT_name("PRU0_GPI_CLK_MODE")
1205 .dwattr $C$DW$74, DW_AT_TI_symbol_name("PRU0_GPI_CLK_MODE")
1206 .dwattr $C$DW$74, DW_AT_bit_offset(0x1d), DW_AT_bit_size(0x01)
1207 .dwattr $C$DW$74, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1208 .dwattr $C$DW$74, DW_AT_accessibility(DW_ACCESS_public)
1209 .dwattr $C$DW$74, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1210 .dwattr $C$DW$74, DW_AT_decl_line(0x46)
1211 .dwattr $C$DW$74, DW_AT_decl_column(0x0d)
1212$C$DW$75 .dwtag DW_TAG_member
1213 .dwattr $C$DW$75, DW_AT_type(*$C$DW$T$11)
1214 .dwattr $C$DW$75, DW_AT_name("PRU0_GPI_DIV0")
1215 .dwattr $C$DW$75, DW_AT_TI_symbol_name("PRU0_GPI_DIV0")
1216 .dwattr $C$DW$75, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x05)
1217 .dwattr $C$DW$75, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1218 .dwattr $C$DW$75, DW_AT_accessibility(DW_ACCESS_public)
1219 .dwattr $C$DW$75, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1220 .dwattr $C$DW$75, DW_AT_decl_line(0x47)
1221 .dwattr $C$DW$75, DW_AT_decl_column(0x0d)
1222$C$DW$76 .dwtag DW_TAG_member
1223 .dwattr $C$DW$76, DW_AT_type(*$C$DW$T$11)
1224 .dwattr $C$DW$76, DW_AT_name("PRU0_GPI_DIV1")
1225 .dwattr $C$DW$76, DW_AT_TI_symbol_name("PRU0_GPI_DIV1")
1226 .dwattr $C$DW$76, DW_AT_bit_offset(0x13), DW_AT_bit_size(0x05)
1227 .dwattr $C$DW$76, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1228 .dwattr $C$DW$76, DW_AT_accessibility(DW_ACCESS_public)
1229 .dwattr $C$DW$76, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1230 .dwattr $C$DW$76, DW_AT_decl_line(0x48)
1231 .dwattr $C$DW$76, DW_AT_decl_column(0x0d)
1232$C$DW$77 .dwtag DW_TAG_member
1233 .dwattr $C$DW$77, DW_AT_type(*$C$DW$T$11)
1234 .dwattr $C$DW$77, DW_AT_name("PRU0_GPI_SB")
1235 .dwattr $C$DW$77, DW_AT_TI_symbol_name("PRU0_GPI_SB")
1236 .dwattr $C$DW$77, DW_AT_bit_offset(0x12), DW_AT_bit_size(0x01)
1237 .dwattr $C$DW$77, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1238 .dwattr $C$DW$77, DW_AT_accessibility(DW_ACCESS_public)
1239 .dwattr $C$DW$77, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1240 .dwattr $C$DW$77, DW_AT_decl_line(0x49)
1241 .dwattr $C$DW$77, DW_AT_decl_column(0x0d)
1242$C$DW$78 .dwtag DW_TAG_member
1243 .dwattr $C$DW$78, DW_AT_type(*$C$DW$T$11)
1244 .dwattr $C$DW$78, DW_AT_name("PRU0_GPO_MODE")
1245 .dwattr $C$DW$78, DW_AT_TI_symbol_name("PRU0_GPO_MODE")
1246 .dwattr $C$DW$78, DW_AT_bit_offset(0x11), DW_AT_bit_size(0x01)
1247 .dwattr $C$DW$78, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1248 .dwattr $C$DW$78, DW_AT_accessibility(DW_ACCESS_public)
1249 .dwattr $C$DW$78, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1250 .dwattr $C$DW$78, DW_AT_decl_line(0x4a)
1251 .dwattr $C$DW$78, DW_AT_decl_column(0x0d)
1252$C$DW$79 .dwtag DW_TAG_member
1253 .dwattr $C$DW$79, DW_AT_type(*$C$DW$T$11)
1254 .dwattr $C$DW$79, DW_AT_name("PRU0_GPO_DIV0")
1255 .dwattr $C$DW$79, DW_AT_TI_symbol_name("PRU0_GPO_DIV0")
1256 .dwattr $C$DW$79, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x05)
1257 .dwattr $C$DW$79, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1258 .dwattr $C$DW$79, DW_AT_accessibility(DW_ACCESS_public)
1259 .dwattr $C$DW$79, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1260 .dwattr $C$DW$79, DW_AT_decl_line(0x4b)
1261 .dwattr $C$DW$79, DW_AT_decl_column(0x0d)
1262$C$DW$80 .dwtag DW_TAG_member
1263 .dwattr $C$DW$80, DW_AT_type(*$C$DW$T$11)
1264 .dwattr $C$DW$80, DW_AT_name("PRU0_GPO_DIV1")
1265 .dwattr $C$DW$80, DW_AT_TI_symbol_name("PRU0_GPO_DIV1")
1266 .dwattr $C$DW$80, DW_AT_bit_offset(0x07), DW_AT_bit_size(0x05)
1267 .dwattr $C$DW$80, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1268 .dwattr $C$DW$80, DW_AT_accessibility(DW_ACCESS_public)
1269 .dwattr $C$DW$80, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1270 .dwattr $C$DW$80, DW_AT_decl_line(0x4c)
1271 .dwattr $C$DW$80, DW_AT_decl_column(0x0d)
1272$C$DW$81 .dwtag DW_TAG_member
1273 .dwattr $C$DW$81, DW_AT_type(*$C$DW$T$11)
1274 .dwattr $C$DW$81, DW_AT_name("PRU0_GPO_SH_SEL")
1275 .dwattr $C$DW$81, DW_AT_TI_symbol_name("PRU0_GPO_SH_SEL")
1276 .dwattr $C$DW$81, DW_AT_bit_offset(0x06), DW_AT_bit_size(0x01)
1277 .dwattr $C$DW$81, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1278 .dwattr $C$DW$81, DW_AT_accessibility(DW_ACCESS_public)
1279 .dwattr $C$DW$81, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1280 .dwattr $C$DW$81, DW_AT_decl_line(0x4d)
1281 .dwattr $C$DW$81, DW_AT_decl_column(0x0d)
1282$C$DW$82 .dwtag DW_TAG_member
1283 .dwattr $C$DW$82, DW_AT_type(*$C$DW$T$11)
1284 .dwattr $C$DW$82, DW_AT_name("rsvd26")
1285 .dwattr $C$DW$82, DW_AT_TI_symbol_name("rsvd26")
1286 .dwattr $C$DW$82, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x06)
1287 .dwattr $C$DW$82, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1288 .dwattr $C$DW$82, DW_AT_accessibility(DW_ACCESS_public)
1289 .dwattr $C$DW$82, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1290 .dwattr $C$DW$82, DW_AT_decl_line(0x4e)
1291 .dwattr $C$DW$82, DW_AT_decl_column(0x0d)
1292 .dwendtag $C$DW$T$22
1293
1294 .dwattr $C$DW$T$22, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1295 .dwattr $C$DW$T$22, DW_AT_decl_line(0x44)
1296 .dwattr $C$DW$T$22, DW_AT_decl_column(0x13)
1297$C$DW$T$53 .dwtag DW_TAG_volatile_type
1298 .dwattr $C$DW$T$53, DW_AT_type(*$C$DW$T$22)
1299
1300$C$DW$T$23 .dwtag DW_TAG_structure_type
1301 .dwattr $C$DW$T$23, DW_AT_byte_size(0x04)
1302$C$DW$83 .dwtag DW_TAG_member
1303 .dwattr $C$DW$83, DW_AT_type(*$C$DW$T$11)
1304 .dwattr $C$DW$83, DW_AT_name("PRU1_GPI_MODE")
1305 .dwattr $C$DW$83, DW_AT_TI_symbol_name("PRU1_GPI_MODE")
1306 .dwattr $C$DW$83, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x02)
1307 .dwattr $C$DW$83, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1308 .dwattr $C$DW$83, DW_AT_accessibility(DW_ACCESS_public)
1309 .dwattr $C$DW$83, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1310 .dwattr $C$DW$83, DW_AT_decl_line(0x58)
1311 .dwattr $C$DW$83, DW_AT_decl_column(0x0d)
1312$C$DW$84 .dwtag DW_TAG_member
1313 .dwattr $C$DW$84, DW_AT_type(*$C$DW$T$11)
1314 .dwattr $C$DW$84, DW_AT_name("PRU1_GPI_CLK_MODE")
1315 .dwattr $C$DW$84, DW_AT_TI_symbol_name("PRU1_GPI_CLK_MODE")
1316 .dwattr $C$DW$84, DW_AT_bit_offset(0x1d), DW_AT_bit_size(0x01)
1317 .dwattr $C$DW$84, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1318 .dwattr $C$DW$84, DW_AT_accessibility(DW_ACCESS_public)
1319 .dwattr $C$DW$84, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1320 .dwattr $C$DW$84, DW_AT_decl_line(0x59)
1321 .dwattr $C$DW$84, DW_AT_decl_column(0x0d)
1322$C$DW$85 .dwtag DW_TAG_member
1323 .dwattr $C$DW$85, DW_AT_type(*$C$DW$T$11)
1324 .dwattr $C$DW$85, DW_AT_name("PRU1_GPI_DIV0")
1325 .dwattr $C$DW$85, DW_AT_TI_symbol_name("PRU1_GPI_DIV0")
1326 .dwattr $C$DW$85, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x05)
1327 .dwattr $C$DW$85, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1328 .dwattr $C$DW$85, DW_AT_accessibility(DW_ACCESS_public)
1329 .dwattr $C$DW$85, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1330 .dwattr $C$DW$85, DW_AT_decl_line(0x5a)
1331 .dwattr $C$DW$85, DW_AT_decl_column(0x0d)
1332$C$DW$86 .dwtag DW_TAG_member
1333 .dwattr $C$DW$86, DW_AT_type(*$C$DW$T$11)
1334 .dwattr $C$DW$86, DW_AT_name("PRU1_GPI_DIV1")
1335 .dwattr $C$DW$86, DW_AT_TI_symbol_name("PRU1_GPI_DIV1")
1336 .dwattr $C$DW$86, DW_AT_bit_offset(0x13), DW_AT_bit_size(0x05)
1337 .dwattr $C$DW$86, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1338 .dwattr $C$DW$86, DW_AT_accessibility(DW_ACCESS_public)
1339 .dwattr $C$DW$86, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1340 .dwattr $C$DW$86, DW_AT_decl_line(0x5b)
1341 .dwattr $C$DW$86, DW_AT_decl_column(0x0d)
1342$C$DW$87 .dwtag DW_TAG_member
1343 .dwattr $C$DW$87, DW_AT_type(*$C$DW$T$11)
1344 .dwattr $C$DW$87, DW_AT_name("PRU1_GPI_SB")
1345 .dwattr $C$DW$87, DW_AT_TI_symbol_name("PRU1_GPI_SB")
1346 .dwattr $C$DW$87, DW_AT_bit_offset(0x12), DW_AT_bit_size(0x01)
1347 .dwattr $C$DW$87, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1348 .dwattr $C$DW$87, DW_AT_accessibility(DW_ACCESS_public)
1349 .dwattr $C$DW$87, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1350 .dwattr $C$DW$87, DW_AT_decl_line(0x5c)
1351 .dwattr $C$DW$87, DW_AT_decl_column(0x0d)
1352$C$DW$88 .dwtag DW_TAG_member
1353 .dwattr $C$DW$88, DW_AT_type(*$C$DW$T$11)
1354 .dwattr $C$DW$88, DW_AT_name("PRU1_GPO_MODE")
1355 .dwattr $C$DW$88, DW_AT_TI_symbol_name("PRU1_GPO_MODE")
1356 .dwattr $C$DW$88, DW_AT_bit_offset(0x11), DW_AT_bit_size(0x01)
1357 .dwattr $C$DW$88, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1358 .dwattr $C$DW$88, DW_AT_accessibility(DW_ACCESS_public)
1359 .dwattr $C$DW$88, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1360 .dwattr $C$DW$88, DW_AT_decl_line(0x5d)
1361 .dwattr $C$DW$88, DW_AT_decl_column(0x0d)
1362$C$DW$89 .dwtag DW_TAG_member
1363 .dwattr $C$DW$89, DW_AT_type(*$C$DW$T$11)
1364 .dwattr $C$DW$89, DW_AT_name("PRU1_GPO_DIV0")
1365 .dwattr $C$DW$89, DW_AT_TI_symbol_name("PRU1_GPO_DIV0")
1366 .dwattr $C$DW$89, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x05)
1367 .dwattr $C$DW$89, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1368 .dwattr $C$DW$89, DW_AT_accessibility(DW_ACCESS_public)
1369 .dwattr $C$DW$89, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1370 .dwattr $C$DW$89, DW_AT_decl_line(0x5e)
1371 .dwattr $C$DW$89, DW_AT_decl_column(0x0d)
1372$C$DW$90 .dwtag DW_TAG_member
1373 .dwattr $C$DW$90, DW_AT_type(*$C$DW$T$11)
1374 .dwattr $C$DW$90, DW_AT_name("PRU1_GPO_DIV1")
1375 .dwattr $C$DW$90, DW_AT_TI_symbol_name("PRU1_GPO_DIV1")
1376 .dwattr $C$DW$90, DW_AT_bit_offset(0x07), DW_AT_bit_size(0x05)
1377 .dwattr $C$DW$90, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1378 .dwattr $C$DW$90, DW_AT_accessibility(DW_ACCESS_public)
1379 .dwattr $C$DW$90, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1380 .dwattr $C$DW$90, DW_AT_decl_line(0x5f)
1381 .dwattr $C$DW$90, DW_AT_decl_column(0x0d)
1382$C$DW$91 .dwtag DW_TAG_member
1383 .dwattr $C$DW$91, DW_AT_type(*$C$DW$T$11)
1384 .dwattr $C$DW$91, DW_AT_name("PRU1_GPO_SH_SEL")
1385 .dwattr $C$DW$91, DW_AT_TI_symbol_name("PRU1_GPO_SH_SEL")
1386 .dwattr $C$DW$91, DW_AT_bit_offset(0x06), DW_AT_bit_size(0x01)
1387 .dwattr $C$DW$91, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1388 .dwattr $C$DW$91, DW_AT_accessibility(DW_ACCESS_public)
1389 .dwattr $C$DW$91, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1390 .dwattr $C$DW$91, DW_AT_decl_line(0x60)
1391 .dwattr $C$DW$91, DW_AT_decl_column(0x0d)
1392$C$DW$92 .dwtag DW_TAG_member
1393 .dwattr $C$DW$92, DW_AT_type(*$C$DW$T$11)
1394 .dwattr $C$DW$92, DW_AT_name("rsvd26")
1395 .dwattr $C$DW$92, DW_AT_TI_symbol_name("rsvd26")
1396 .dwattr $C$DW$92, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x06)
1397 .dwattr $C$DW$92, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1398 .dwattr $C$DW$92, DW_AT_accessibility(DW_ACCESS_public)
1399 .dwattr $C$DW$92, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1400 .dwattr $C$DW$92, DW_AT_decl_line(0x61)
1401 .dwattr $C$DW$92, DW_AT_decl_column(0x0d)
1402 .dwendtag $C$DW$T$23
1403
1404 .dwattr $C$DW$T$23, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1405 .dwattr $C$DW$T$23, DW_AT_decl_line(0x57)
1406 .dwattr $C$DW$T$23, DW_AT_decl_column(0x13)
1407$C$DW$T$55 .dwtag DW_TAG_volatile_type
1408 .dwattr $C$DW$T$55, DW_AT_type(*$C$DW$T$23)
1409
1410$C$DW$T$24 .dwtag DW_TAG_structure_type
1411 .dwattr $C$DW$T$24, DW_AT_byte_size(0x04)
1412$C$DW$93 .dwtag DW_TAG_member
1413 .dwattr $C$DW$93, DW_AT_type(*$C$DW$T$11)
1414 .dwattr $C$DW$93, DW_AT_name("PRU0_CLK_STOP_REQ")
1415 .dwattr $C$DW$93, DW_AT_TI_symbol_name("PRU0_CLK_STOP_REQ")
1416 .dwattr $C$DW$93, DW_AT_bit_offset(0x1f), DW_AT_bit_size(0x01)
1417 .dwattr $C$DW$93, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1418 .dwattr $C$DW$93, DW_AT_accessibility(DW_ACCESS_public)
1419 .dwattr $C$DW$93, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1420 .dwattr $C$DW$93, DW_AT_decl_line(0x6b)
1421 .dwattr $C$DW$93, DW_AT_decl_column(0x0d)
1422$C$DW$94 .dwtag DW_TAG_member
1423 .dwattr $C$DW$94, DW_AT_type(*$C$DW$T$11)
1424 .dwattr $C$DW$94, DW_AT_name("PRU0_CLK_STOP_ACK")
1425 .dwattr $C$DW$94, DW_AT_TI_symbol_name("PRU0_CLK_STOP_ACK")
1426 .dwattr $C$DW$94, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x01)
1427 .dwattr $C$DW$94, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1428 .dwattr $C$DW$94, DW_AT_accessibility(DW_ACCESS_public)
1429 .dwattr $C$DW$94, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1430 .dwattr $C$DW$94, DW_AT_decl_line(0x6c)
1431 .dwattr $C$DW$94, DW_AT_decl_column(0x0d)
1432$C$DW$95 .dwtag DW_TAG_member
1433 .dwattr $C$DW$95, DW_AT_type(*$C$DW$T$11)
1434 .dwattr $C$DW$95, DW_AT_name("PRU0_CLK_EN")
1435 .dwattr $C$DW$95, DW_AT_TI_symbol_name("PRU0_CLK_EN")
1436 .dwattr $C$DW$95, DW_AT_bit_offset(0x1d), DW_AT_bit_size(0x01)
1437 .dwattr $C$DW$95, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1438 .dwattr $C$DW$95, DW_AT_accessibility(DW_ACCESS_public)
1439 .dwattr $C$DW$95, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1440 .dwattr $C$DW$95, DW_AT_decl_line(0x6d)
1441 .dwattr $C$DW$95, DW_AT_decl_column(0x0d)
1442$C$DW$96 .dwtag DW_TAG_member
1443 .dwattr $C$DW$96, DW_AT_type(*$C$DW$T$11)
1444 .dwattr $C$DW$96, DW_AT_name("PRU1_CLK_STOP_REQ")
1445 .dwattr $C$DW$96, DW_AT_TI_symbol_name("PRU1_CLK_STOP_REQ")
1446 .dwattr $C$DW$96, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x01)
1447 .dwattr $C$DW$96, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1448 .dwattr $C$DW$96, DW_AT_accessibility(DW_ACCESS_public)
1449 .dwattr $C$DW$96, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1450 .dwattr $C$DW$96, DW_AT_decl_line(0x6e)
1451 .dwattr $C$DW$96, DW_AT_decl_column(0x0d)
1452$C$DW$97 .dwtag DW_TAG_member
1453 .dwattr $C$DW$97, DW_AT_type(*$C$DW$T$11)
1454 .dwattr $C$DW$97, DW_AT_name("PRU1_CLK_STOP_ACK")
1455 .dwattr $C$DW$97, DW_AT_TI_symbol_name("PRU1_CLK_STOP_ACK")
1456 .dwattr $C$DW$97, DW_AT_bit_offset(0x1b), DW_AT_bit_size(0x01)
1457 .dwattr $C$DW$97, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1458 .dwattr $C$DW$97, DW_AT_accessibility(DW_ACCESS_public)
1459 .dwattr $C$DW$97, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1460 .dwattr $C$DW$97, DW_AT_decl_line(0x6f)
1461 .dwattr $C$DW$97, DW_AT_decl_column(0x0d)
1462$C$DW$98 .dwtag DW_TAG_member
1463 .dwattr $C$DW$98, DW_AT_type(*$C$DW$T$11)
1464 .dwattr $C$DW$98, DW_AT_name("PRU1_CLK_EN")
1465 .dwattr $C$DW$98, DW_AT_TI_symbol_name("PRU1_CLK_EN")
1466 .dwattr $C$DW$98, DW_AT_bit_offset(0x1a), DW_AT_bit_size(0x01)
1467 .dwattr $C$DW$98, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1468 .dwattr $C$DW$98, DW_AT_accessibility(DW_ACCESS_public)
1469 .dwattr $C$DW$98, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1470 .dwattr $C$DW$98, DW_AT_decl_line(0x70)
1471 .dwattr $C$DW$98, DW_AT_decl_column(0x0d)
1472$C$DW$99 .dwtag DW_TAG_member
1473 .dwattr $C$DW$99, DW_AT_type(*$C$DW$T$11)
1474 .dwattr $C$DW$99, DW_AT_name("INTC_CLK_STOP_REQ")
1475 .dwattr $C$DW$99, DW_AT_TI_symbol_name("INTC_CLK_STOP_REQ")
1476 .dwattr $C$DW$99, DW_AT_bit_offset(0x19), DW_AT_bit_size(0x01)
1477 .dwattr $C$DW$99, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1478 .dwattr $C$DW$99, DW_AT_accessibility(DW_ACCESS_public)
1479 .dwattr $C$DW$99, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1480 .dwattr $C$DW$99, DW_AT_decl_line(0x71)
1481 .dwattr $C$DW$99, DW_AT_decl_column(0x0d)
1482$C$DW$100 .dwtag DW_TAG_member
1483 .dwattr $C$DW$100, DW_AT_type(*$C$DW$T$11)
1484 .dwattr $C$DW$100, DW_AT_name("INTC_CLK_STOP_ACK")
1485 .dwattr $C$DW$100, DW_AT_TI_symbol_name("INTC_CLK_STOP_ACK")
1486 .dwattr $C$DW$100, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x01)
1487 .dwattr $C$DW$100, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1488 .dwattr $C$DW$100, DW_AT_accessibility(DW_ACCESS_public)
1489 .dwattr $C$DW$100, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1490 .dwattr $C$DW$100, DW_AT_decl_line(0x72)
1491 .dwattr $C$DW$100, DW_AT_decl_column(0x0d)
1492$C$DW$101 .dwtag DW_TAG_member
1493 .dwattr $C$DW$101, DW_AT_type(*$C$DW$T$11)
1494 .dwattr $C$DW$101, DW_AT_name("INTC_CLK_EN")
1495 .dwattr $C$DW$101, DW_AT_TI_symbol_name("INTC_CLK_EN")
1496 .dwattr $C$DW$101, DW_AT_bit_offset(0x17), DW_AT_bit_size(0x01)
1497 .dwattr $C$DW$101, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1498 .dwattr $C$DW$101, DW_AT_accessibility(DW_ACCESS_public)
1499 .dwattr $C$DW$101, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1500 .dwattr $C$DW$101, DW_AT_decl_line(0x73)
1501 .dwattr $C$DW$101, DW_AT_decl_column(0x0d)
1502$C$DW$102 .dwtag DW_TAG_member
1503 .dwattr $C$DW$102, DW_AT_type(*$C$DW$T$11)
1504 .dwattr $C$DW$102, DW_AT_name("UART_CLK_STOP_REQ")
1505 .dwattr $C$DW$102, DW_AT_TI_symbol_name("UART_CLK_STOP_REQ")
1506 .dwattr $C$DW$102, DW_AT_bit_offset(0x16), DW_AT_bit_size(0x01)
1507 .dwattr $C$DW$102, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1508 .dwattr $C$DW$102, DW_AT_accessibility(DW_ACCESS_public)
1509 .dwattr $C$DW$102, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1510 .dwattr $C$DW$102, DW_AT_decl_line(0x74)
1511 .dwattr $C$DW$102, DW_AT_decl_column(0x0d)
1512$C$DW$103 .dwtag DW_TAG_member
1513 .dwattr $C$DW$103, DW_AT_type(*$C$DW$T$11)
1514 .dwattr $C$DW$103, DW_AT_name("UART_CLK_STOP_ACK")
1515 .dwattr $C$DW$103, DW_AT_TI_symbol_name("UART_CLK_STOP_ACK")
1516 .dwattr $C$DW$103, DW_AT_bit_offset(0x15), DW_AT_bit_size(0x01)
1517 .dwattr $C$DW$103, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1518 .dwattr $C$DW$103, DW_AT_accessibility(DW_ACCESS_public)
1519 .dwattr $C$DW$103, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1520 .dwattr $C$DW$103, DW_AT_decl_line(0x75)
1521 .dwattr $C$DW$103, DW_AT_decl_column(0x0d)
1522$C$DW$104 .dwtag DW_TAG_member
1523 .dwattr $C$DW$104, DW_AT_type(*$C$DW$T$11)
1524 .dwattr $C$DW$104, DW_AT_name("UART_CLK_EN")
1525 .dwattr $C$DW$104, DW_AT_TI_symbol_name("UART_CLK_EN")
1526 .dwattr $C$DW$104, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x01)
1527 .dwattr $C$DW$104, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1528 .dwattr $C$DW$104, DW_AT_accessibility(DW_ACCESS_public)
1529 .dwattr $C$DW$104, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1530 .dwattr $C$DW$104, DW_AT_decl_line(0x76)
1531 .dwattr $C$DW$104, DW_AT_decl_column(0x0d)
1532$C$DW$105 .dwtag DW_TAG_member
1533 .dwattr $C$DW$105, DW_AT_type(*$C$DW$T$11)
1534 .dwattr $C$DW$105, DW_AT_name("ECAP_CLK_STOP_REQ")
1535 .dwattr $C$DW$105, DW_AT_TI_symbol_name("ECAP_CLK_STOP_REQ")
1536 .dwattr $C$DW$105, DW_AT_bit_offset(0x13), DW_AT_bit_size(0x01)
1537 .dwattr $C$DW$105, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1538 .dwattr $C$DW$105, DW_AT_accessibility(DW_ACCESS_public)
1539 .dwattr $C$DW$105, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1540 .dwattr $C$DW$105, DW_AT_decl_line(0x77)
1541 .dwattr $C$DW$105, DW_AT_decl_column(0x0d)
1542$C$DW$106 .dwtag DW_TAG_member
1543 .dwattr $C$DW$106, DW_AT_type(*$C$DW$T$11)
1544 .dwattr $C$DW$106, DW_AT_name("ECAP_CLK_STOP_ACK")
1545 .dwattr $C$DW$106, DW_AT_TI_symbol_name("ECAP_CLK_STOP_ACK")
1546 .dwattr $C$DW$106, DW_AT_bit_offset(0x12), DW_AT_bit_size(0x01)
1547 .dwattr $C$DW$106, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1548 .dwattr $C$DW$106, DW_AT_accessibility(DW_ACCESS_public)
1549 .dwattr $C$DW$106, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1550 .dwattr $C$DW$106, DW_AT_decl_line(0x78)
1551 .dwattr $C$DW$106, DW_AT_decl_column(0x0d)
1552$C$DW$107 .dwtag DW_TAG_member
1553 .dwattr $C$DW$107, DW_AT_type(*$C$DW$T$11)
1554 .dwattr $C$DW$107, DW_AT_name("ECAP_CLK_EN")
1555 .dwattr $C$DW$107, DW_AT_TI_symbol_name("ECAP_CLK_EN")
1556 .dwattr $C$DW$107, DW_AT_bit_offset(0x11), DW_AT_bit_size(0x01)
1557 .dwattr $C$DW$107, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1558 .dwattr $C$DW$107, DW_AT_accessibility(DW_ACCESS_public)
1559 .dwattr $C$DW$107, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1560 .dwattr $C$DW$107, DW_AT_decl_line(0x79)
1561 .dwattr $C$DW$107, DW_AT_decl_column(0x0d)
1562$C$DW$108 .dwtag DW_TAG_member
1563 .dwattr $C$DW$108, DW_AT_type(*$C$DW$T$11)
1564 .dwattr $C$DW$108, DW_AT_name("IEP_CLK_STOP_REQ")
1565 .dwattr $C$DW$108, DW_AT_TI_symbol_name("IEP_CLK_STOP_REQ")
1566 .dwattr $C$DW$108, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x01)
1567 .dwattr $C$DW$108, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1568 .dwattr $C$DW$108, DW_AT_accessibility(DW_ACCESS_public)
1569 .dwattr $C$DW$108, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1570 .dwattr $C$DW$108, DW_AT_decl_line(0x7a)
1571 .dwattr $C$DW$108, DW_AT_decl_column(0x0d)
1572$C$DW$109 .dwtag DW_TAG_member
1573 .dwattr $C$DW$109, DW_AT_type(*$C$DW$T$11)
1574 .dwattr $C$DW$109, DW_AT_name("IEP_CLK_STOP_ACK")
1575 .dwattr $C$DW$109, DW_AT_TI_symbol_name("IEP_CLK_STOP_ACK")
1576 .dwattr $C$DW$109, DW_AT_bit_offset(0x0f), DW_AT_bit_size(0x01)
1577 .dwattr $C$DW$109, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1578 .dwattr $C$DW$109, DW_AT_accessibility(DW_ACCESS_public)
1579 .dwattr $C$DW$109, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1580 .dwattr $C$DW$109, DW_AT_decl_line(0x7b)
1581 .dwattr $C$DW$109, DW_AT_decl_column(0x0d)
1582$C$DW$110 .dwtag DW_TAG_member
1583 .dwattr $C$DW$110, DW_AT_type(*$C$DW$T$11)
1584 .dwattr $C$DW$110, DW_AT_name("IEP_CLK_EN")
1585 .dwattr $C$DW$110, DW_AT_TI_symbol_name("IEP_CLK_EN")
1586 .dwattr $C$DW$110, DW_AT_bit_offset(0x0e), DW_AT_bit_size(0x01)
1587 .dwattr $C$DW$110, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1588 .dwattr $C$DW$110, DW_AT_accessibility(DW_ACCESS_public)
1589 .dwattr $C$DW$110, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1590 .dwattr $C$DW$110, DW_AT_decl_line(0x7c)
1591 .dwattr $C$DW$110, DW_AT_decl_column(0x0d)
1592$C$DW$111 .dwtag DW_TAG_member
1593 .dwattr $C$DW$111, DW_AT_type(*$C$DW$T$11)
1594 .dwattr $C$DW$111, DW_AT_name("rsvd18")
1595 .dwattr $C$DW$111, DW_AT_TI_symbol_name("rsvd18")
1596 .dwattr $C$DW$111, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x0e)
1597 .dwattr $C$DW$111, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1598 .dwattr $C$DW$111, DW_AT_accessibility(DW_ACCESS_public)
1599 .dwattr $C$DW$111, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1600 .dwattr $C$DW$111, DW_AT_decl_line(0x7d)
1601 .dwattr $C$DW$111, DW_AT_decl_column(0x0d)
1602 .dwendtag $C$DW$T$24
1603
1604 .dwattr $C$DW$T$24, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1605 .dwattr $C$DW$T$24, DW_AT_decl_line(0x6a)
1606 .dwattr $C$DW$T$24, DW_AT_decl_column(0x13)
1607$C$DW$T$57 .dwtag DW_TAG_volatile_type
1608 .dwattr $C$DW$T$57, DW_AT_type(*$C$DW$T$24)
1609
1610$C$DW$T$25 .dwtag DW_TAG_structure_type
1611 .dwattr $C$DW$T$25, DW_AT_byte_size(0x04)
1612$C$DW$112 .dwtag DW_TAG_member
1613 .dwattr $C$DW$112, DW_AT_type(*$C$DW$T$11)
1614 .dwattr $C$DW$112, DW_AT_name("PRU0_IMEM_PE_RAW")
1615 .dwattr $C$DW$112, DW_AT_TI_symbol_name("PRU0_IMEM_PE_RAW")
1616 .dwattr $C$DW$112, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x04)
1617 .dwattr $C$DW$112, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1618 .dwattr $C$DW$112, DW_AT_accessibility(DW_ACCESS_public)
1619 .dwattr $C$DW$112, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1620 .dwattr $C$DW$112, DW_AT_decl_line(0x87)
1621 .dwattr $C$DW$112, DW_AT_decl_column(0x0d)
1622$C$DW$113 .dwtag DW_TAG_member
1623 .dwattr $C$DW$113, DW_AT_type(*$C$DW$T$11)
1624 .dwattr $C$DW$113, DW_AT_name("PRU0_DMEM_PE_RAW")
1625 .dwattr $C$DW$113, DW_AT_TI_symbol_name("PRU0_DMEM_PE_RAW")
1626 .dwattr $C$DW$113, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04)
1627 .dwattr $C$DW$113, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1628 .dwattr $C$DW$113, DW_AT_accessibility(DW_ACCESS_public)
1629 .dwattr $C$DW$113, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1630 .dwattr $C$DW$113, DW_AT_decl_line(0x88)
1631 .dwattr $C$DW$113, DW_AT_decl_column(0x0d)
1632$C$DW$114 .dwtag DW_TAG_member
1633 .dwattr $C$DW$114, DW_AT_type(*$C$DW$T$11)
1634 .dwattr $C$DW$114, DW_AT_name("PRU1_IMEM_PE_RAW")
1635 .dwattr $C$DW$114, DW_AT_TI_symbol_name("PRU1_IMEM_PE_RAW")
1636 .dwattr $C$DW$114, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x04)
1637 .dwattr $C$DW$114, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1638 .dwattr $C$DW$114, DW_AT_accessibility(DW_ACCESS_public)
1639 .dwattr $C$DW$114, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1640 .dwattr $C$DW$114, DW_AT_decl_line(0x89)
1641 .dwattr $C$DW$114, DW_AT_decl_column(0x0d)
1642$C$DW$115 .dwtag DW_TAG_member
1643 .dwattr $C$DW$115, DW_AT_type(*$C$DW$T$11)
1644 .dwattr $C$DW$115, DW_AT_name("PRU1_DMEM_PE_RAW")
1645 .dwattr $C$DW$115, DW_AT_TI_symbol_name("PRU1_DMEM_PE_RAW")
1646 .dwattr $C$DW$115, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x04)
1647 .dwattr $C$DW$115, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1648 .dwattr $C$DW$115, DW_AT_accessibility(DW_ACCESS_public)
1649 .dwattr $C$DW$115, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1650 .dwattr $C$DW$115, DW_AT_decl_line(0x8a)
1651 .dwattr $C$DW$115, DW_AT_decl_column(0x0d)
1652$C$DW$116 .dwtag DW_TAG_member
1653 .dwattr $C$DW$116, DW_AT_type(*$C$DW$T$11)
1654 .dwattr $C$DW$116, DW_AT_name("RAM_PE_RAW")
1655 .dwattr $C$DW$116, DW_AT_TI_symbol_name("RAM_PE_RAW")
1656 .dwattr $C$DW$116, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x04)
1657 .dwattr $C$DW$116, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1658 .dwattr $C$DW$116, DW_AT_accessibility(DW_ACCESS_public)
1659 .dwattr $C$DW$116, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1660 .dwattr $C$DW$116, DW_AT_decl_line(0x8b)
1661 .dwattr $C$DW$116, DW_AT_decl_column(0x0d)
1662$C$DW$117 .dwtag DW_TAG_member
1663 .dwattr $C$DW$117, DW_AT_type(*$C$DW$T$11)
1664 .dwattr $C$DW$117, DW_AT_name("rsvd20")
1665 .dwattr $C$DW$117, DW_AT_TI_symbol_name("rsvd20")
1666 .dwattr $C$DW$117, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x0c)
1667 .dwattr $C$DW$117, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1668 .dwattr $C$DW$117, DW_AT_accessibility(DW_ACCESS_public)
1669 .dwattr $C$DW$117, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1670 .dwattr $C$DW$117, DW_AT_decl_line(0x8c)
1671 .dwattr $C$DW$117, DW_AT_decl_column(0x0d)
1672 .dwendtag $C$DW$T$25
1673
1674 .dwattr $C$DW$T$25, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1675 .dwattr $C$DW$T$25, DW_AT_decl_line(0x86)
1676 .dwattr $C$DW$T$25, DW_AT_decl_column(0x14)
1677$C$DW$T$59 .dwtag DW_TAG_volatile_type
1678 .dwattr $C$DW$T$59, DW_AT_type(*$C$DW$T$25)
1679
1680$C$DW$T$26 .dwtag DW_TAG_structure_type
1681 .dwattr $C$DW$T$26, DW_AT_byte_size(0x04)
1682$C$DW$118 .dwtag DW_TAG_member
1683 .dwattr $C$DW$118, DW_AT_type(*$C$DW$T$11)
1684 .dwattr $C$DW$118, DW_AT_name("PRU0_IMEM_PE")
1685 .dwattr $C$DW$118, DW_AT_TI_symbol_name("PRU0_IMEM_PE")
1686 .dwattr $C$DW$118, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x04)
1687 .dwattr $C$DW$118, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1688 .dwattr $C$DW$118, DW_AT_accessibility(DW_ACCESS_public)
1689 .dwattr $C$DW$118, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1690 .dwattr $C$DW$118, DW_AT_decl_line(0x96)
1691 .dwattr $C$DW$118, DW_AT_decl_column(0x0d)
1692$C$DW$119 .dwtag DW_TAG_member
1693 .dwattr $C$DW$119, DW_AT_type(*$C$DW$T$11)
1694 .dwattr $C$DW$119, DW_AT_name("PRU0_DMEM_PE")
1695 .dwattr $C$DW$119, DW_AT_TI_symbol_name("PRU0_DMEM_PE")
1696 .dwattr $C$DW$119, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04)
1697 .dwattr $C$DW$119, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1698 .dwattr $C$DW$119, DW_AT_accessibility(DW_ACCESS_public)
1699 .dwattr $C$DW$119, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1700 .dwattr $C$DW$119, DW_AT_decl_line(0x97)
1701 .dwattr $C$DW$119, DW_AT_decl_column(0x0d)
1702$C$DW$120 .dwtag DW_TAG_member
1703 .dwattr $C$DW$120, DW_AT_type(*$C$DW$T$11)
1704 .dwattr $C$DW$120, DW_AT_name("PRU1_IMEM_PE")
1705 .dwattr $C$DW$120, DW_AT_TI_symbol_name("PRU1_IMEM_PE")
1706 .dwattr $C$DW$120, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x04)
1707 .dwattr $C$DW$120, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1708 .dwattr $C$DW$120, DW_AT_accessibility(DW_ACCESS_public)
1709 .dwattr $C$DW$120, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1710 .dwattr $C$DW$120, DW_AT_decl_line(0x98)
1711 .dwattr $C$DW$120, DW_AT_decl_column(0x0d)
1712$C$DW$121 .dwtag DW_TAG_member
1713 .dwattr $C$DW$121, DW_AT_type(*$C$DW$T$11)
1714 .dwattr $C$DW$121, DW_AT_name("PRU1_DMEM_PE")
1715 .dwattr $C$DW$121, DW_AT_TI_symbol_name("PRU1_DMEM_PE")
1716 .dwattr $C$DW$121, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x04)
1717 .dwattr $C$DW$121, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1718 .dwattr $C$DW$121, DW_AT_accessibility(DW_ACCESS_public)
1719 .dwattr $C$DW$121, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1720 .dwattr $C$DW$121, DW_AT_decl_line(0x99)
1721 .dwattr $C$DW$121, DW_AT_decl_column(0x0d)
1722$C$DW$122 .dwtag DW_TAG_member
1723 .dwattr $C$DW$122, DW_AT_type(*$C$DW$T$11)
1724 .dwattr $C$DW$122, DW_AT_name("RAM_PE")
1725 .dwattr $C$DW$122, DW_AT_TI_symbol_name("RAM_PE")
1726 .dwattr $C$DW$122, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x04)
1727 .dwattr $C$DW$122, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1728 .dwattr $C$DW$122, DW_AT_accessibility(DW_ACCESS_public)
1729 .dwattr $C$DW$122, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1730 .dwattr $C$DW$122, DW_AT_decl_line(0x9a)
1731 .dwattr $C$DW$122, DW_AT_decl_column(0x0d)
1732$C$DW$123 .dwtag DW_TAG_member
1733 .dwattr $C$DW$123, DW_AT_type(*$C$DW$T$11)
1734 .dwattr $C$DW$123, DW_AT_name("rsvd20")
1735 .dwattr $C$DW$123, DW_AT_TI_symbol_name("rsvd20")
1736 .dwattr $C$DW$123, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x0c)
1737 .dwattr $C$DW$123, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1738 .dwattr $C$DW$123, DW_AT_accessibility(DW_ACCESS_public)
1739 .dwattr $C$DW$123, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1740 .dwattr $C$DW$123, DW_AT_decl_line(0x9b)
1741 .dwattr $C$DW$123, DW_AT_decl_column(0x0d)
1742 .dwendtag $C$DW$T$26
1743
1744 .dwattr $C$DW$T$26, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1745 .dwattr $C$DW$T$26, DW_AT_decl_line(0x95)
1746 .dwattr $C$DW$T$26, DW_AT_decl_column(0x14)
1747$C$DW$T$61 .dwtag DW_TAG_volatile_type
1748 .dwattr $C$DW$T$61, DW_AT_type(*$C$DW$T$26)
1749
1750$C$DW$T$27 .dwtag DW_TAG_structure_type
1751 .dwattr $C$DW$T$27, DW_AT_byte_size(0x04)
1752$C$DW$124 .dwtag DW_TAG_member
1753 .dwattr $C$DW$124, DW_AT_type(*$C$DW$T$11)
1754 .dwattr $C$DW$124, DW_AT_name("PRU0_IMEM_PE_SET")
1755 .dwattr $C$DW$124, DW_AT_TI_symbol_name("PRU0_IMEM_PE_SET")
1756 .dwattr $C$DW$124, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x04)
1757 .dwattr $C$DW$124, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1758 .dwattr $C$DW$124, DW_AT_accessibility(DW_ACCESS_public)
1759 .dwattr $C$DW$124, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1760 .dwattr $C$DW$124, DW_AT_decl_line(0xa4)
1761 .dwattr $C$DW$124, DW_AT_decl_column(0x0d)
1762$C$DW$125 .dwtag DW_TAG_member
1763 .dwattr $C$DW$125, DW_AT_type(*$C$DW$T$11)
1764 .dwattr $C$DW$125, DW_AT_name("PRU0_DMEM_PE_SET")
1765 .dwattr $C$DW$125, DW_AT_TI_symbol_name("PRU0_DMEM_PE_SET")
1766 .dwattr $C$DW$125, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04)
1767 .dwattr $C$DW$125, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1768 .dwattr $C$DW$125, DW_AT_accessibility(DW_ACCESS_public)
1769 .dwattr $C$DW$125, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1770 .dwattr $C$DW$125, DW_AT_decl_line(0xa5)
1771 .dwattr $C$DW$125, DW_AT_decl_column(0x0d)
1772$C$DW$126 .dwtag DW_TAG_member
1773 .dwattr $C$DW$126, DW_AT_type(*$C$DW$T$11)
1774 .dwattr $C$DW$126, DW_AT_name("PRU1_IMEM_PE_SET")
1775 .dwattr $C$DW$126, DW_AT_TI_symbol_name("PRU1_IMEM_PE_SET")
1776 .dwattr $C$DW$126, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x04)
1777 .dwattr $C$DW$126, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1778 .dwattr $C$DW$126, DW_AT_accessibility(DW_ACCESS_public)
1779 .dwattr $C$DW$126, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1780 .dwattr $C$DW$126, DW_AT_decl_line(0xa6)
1781 .dwattr $C$DW$126, DW_AT_decl_column(0x0d)
1782$C$DW$127 .dwtag DW_TAG_member
1783 .dwattr $C$DW$127, DW_AT_type(*$C$DW$T$11)
1784 .dwattr $C$DW$127, DW_AT_name("PRU1_DMEM_PE_SET")
1785 .dwattr $C$DW$127, DW_AT_TI_symbol_name("PRU1_DMEM_PE_SET")
1786 .dwattr $C$DW$127, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x04)
1787 .dwattr $C$DW$127, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1788 .dwattr $C$DW$127, DW_AT_accessibility(DW_ACCESS_public)
1789 .dwattr $C$DW$127, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1790 .dwattr $C$DW$127, DW_AT_decl_line(0xa7)
1791 .dwattr $C$DW$127, DW_AT_decl_column(0x0d)
1792$C$DW$128 .dwtag DW_TAG_member
1793 .dwattr $C$DW$128, DW_AT_type(*$C$DW$T$11)
1794 .dwattr $C$DW$128, DW_AT_name("RAM_PE_SET")
1795 .dwattr $C$DW$128, DW_AT_TI_symbol_name("RAM_PE_SET")
1796 .dwattr $C$DW$128, DW_AT_bit_offset(0x0c), DW_AT_bit_size(0x04)
1797 .dwattr $C$DW$128, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1798 .dwattr $C$DW$128, DW_AT_accessibility(DW_ACCESS_public)
1799 .dwattr $C$DW$128, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1800 .dwattr $C$DW$128, DW_AT_decl_line(0xa8)
1801 .dwattr $C$DW$128, DW_AT_decl_column(0x0d)
1802$C$DW$129 .dwtag DW_TAG_member
1803 .dwattr $C$DW$129, DW_AT_type(*$C$DW$T$11)
1804 .dwattr $C$DW$129, DW_AT_name("rsvd20")
1805 .dwattr $C$DW$129, DW_AT_TI_symbol_name("rsvd20")
1806 .dwattr $C$DW$129, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x0c)
1807 .dwattr $C$DW$129, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1808 .dwattr $C$DW$129, DW_AT_accessibility(DW_ACCESS_public)
1809 .dwattr $C$DW$129, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1810 .dwattr $C$DW$129, DW_AT_decl_line(0xa9)
1811 .dwattr $C$DW$129, DW_AT_decl_column(0x0d)
1812 .dwendtag $C$DW$T$27
1813
1814 .dwattr $C$DW$T$27, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1815 .dwattr $C$DW$T$27, DW_AT_decl_line(0xa3)
1816 .dwattr $C$DW$T$27, DW_AT_decl_column(0x13)
1817$C$DW$T$63 .dwtag DW_TAG_volatile_type
1818 .dwattr $C$DW$T$63, DW_AT_type(*$C$DW$T$27)
1819
1820$C$DW$T$28 .dwtag DW_TAG_structure_type
1821 .dwattr $C$DW$T$28, DW_AT_byte_size(0x04)
1822$C$DW$130 .dwtag DW_TAG_member
1823 .dwattr $C$DW$130, DW_AT_type(*$C$DW$T$11)
1824 .dwattr $C$DW$130, DW_AT_name("PRU0_IMEM_PE_CLR")
1825 .dwattr $C$DW$130, DW_AT_TI_symbol_name("PRU0_IMEM_PE_CLR")
1826 .dwattr $C$DW$130, DW_AT_bit_offset(0x1c), DW_AT_bit_size(0x04)
1827 .dwattr $C$DW$130, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1828 .dwattr $C$DW$130, DW_AT_accessibility(DW_ACCESS_public)
1829 .dwattr $C$DW$130, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1830 .dwattr $C$DW$130, DW_AT_decl_line(0xb3)
1831 .dwattr $C$DW$130, DW_AT_decl_column(0x0d)
1832$C$DW$131 .dwtag DW_TAG_member
1833 .dwattr $C$DW$131, DW_AT_type(*$C$DW$T$11)
1834 .dwattr $C$DW$131, DW_AT_name("PRU0_DMEM_PE_CLR")
1835 .dwattr $C$DW$131, DW_AT_TI_symbol_name("PRU0_DMEM_PE_CLR")
1836 .dwattr $C$DW$131, DW_AT_bit_offset(0x18), DW_AT_bit_size(0x04)
1837 .dwattr $C$DW$131, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1838 .dwattr $C$DW$131, DW_AT_accessibility(DW_ACCESS_public)
1839 .dwattr $C$DW$131, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1840 .dwattr $C$DW$131, DW_AT_decl_line(0xb4)
1841 .dwattr $C$DW$131, DW_AT_decl_column(0x0d)
1842$C$DW$132 .dwtag DW_TAG_member
1843 .dwattr $C$DW$132, DW_AT_type(*$C$DW$T$11)
1844 .dwattr $C$DW$132, DW_AT_name("PRU1_IMEM_PE_CLR")
1845 .dwattr $C$DW$132, DW_AT_TI_symbol_name("PRU1_IMEM_PE_CLR")
1846 .dwattr $C$DW$132, DW_AT_bit_offset(0x14), DW_AT_bit_size(0x04)
1847 .dwattr $C$DW$132, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1848 .dwattr $C$DW$132, DW_AT_accessibility(DW_ACCESS_public)
1849 .dwattr $C$DW$132, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1850 .dwattr $C$DW$132, DW_AT_decl_line(0xb5)
1851 .dwattr $C$DW$132, DW_AT_decl_column(0x0d)
1852$C$DW$133 .dwtag DW_TAG_member
1853 .dwattr $C$DW$133, DW_AT_type(*$C$DW$T$11)
1854 .dwattr $C$DW$133, DW_AT_name("PRU1_DMEM_PE_CLR")
1855 .dwattr $C$DW$133, DW_AT_TI_symbol_name("PRU1_DMEM_PE_CLR")
1856 .dwattr $C$DW$133, DW_AT_bit_offset(0x10), DW_AT_bit_size(0x04)
1857 .dwattr $C$DW$133, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1858 .dwattr $C$DW$133, DW_AT_accessibility(DW_ACCESS_public)
1859 .dwattr $C$DW$133, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1860 .dwattr $C$DW$133, DW_AT_decl_line(0xb6)
1861 .dwattr $C$DW$133, DW_AT_decl_column(0x0d)
1862$C$DW$134 .dwtag DW_TAG_member
1863 .dwattr $C$DW$134, DW_AT_type(*$C$DW$T$11)
1864 .dwattr $C$DW$134, DW_AT_name("rsvd16")
1865 .dwattr $C$DW$134, DW_AT_TI_symbol_name("rsvd16")
1866 .dwattr $C$DW$134, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x10)
1867 .dwattr $C$DW$134, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1868 .dwattr $C$DW$134, DW_AT_accessibility(DW_ACCESS_public)
1869 .dwattr $C$DW$134, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1870 .dwattr $C$DW$134, DW_AT_decl_line(0xb7)
1871 .dwattr $C$DW$134, DW_AT_decl_column(0x0d)
1872 .dwendtag $C$DW$T$28
1873
1874 .dwattr $C$DW$T$28, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1875 .dwattr $C$DW$T$28, DW_AT_decl_line(0xb2)
1876 .dwattr $C$DW$T$28, DW_AT_decl_column(0x13)
1877$C$DW$T$65 .dwtag DW_TAG_volatile_type
1878 .dwattr $C$DW$T$65, DW_AT_type(*$C$DW$T$28)
1879
1880$C$DW$T$29 .dwtag DW_TAG_structure_type
1881 .dwattr $C$DW$T$29, DW_AT_byte_size(0x04)
1882$C$DW$135 .dwtag DW_TAG_member
1883 .dwattr $C$DW$135, DW_AT_type(*$C$DW$T$11)
1884 .dwattr $C$DW$135, DW_AT_name("PMAO_PRU0")
1885 .dwattr $C$DW$135, DW_AT_TI_symbol_name("PMAO_PRU0")
1886 .dwattr $C$DW$135, DW_AT_bit_offset(0x1f), DW_AT_bit_size(0x01)
1887 .dwattr $C$DW$135, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1888 .dwattr $C$DW$135, DW_AT_accessibility(DW_ACCESS_public)
1889 .dwattr $C$DW$135, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1890 .dwattr $C$DW$135, DW_AT_decl_line(0xc4)
1891 .dwattr $C$DW$135, DW_AT_decl_column(0x0d)
1892$C$DW$136 .dwtag DW_TAG_member
1893 .dwattr $C$DW$136, DW_AT_type(*$C$DW$T$11)
1894 .dwattr $C$DW$136, DW_AT_name("PMAO_PRU1")
1895 .dwattr $C$DW$136, DW_AT_TI_symbol_name("PMAO_PRU1")
1896 .dwattr $C$DW$136, DW_AT_bit_offset(0x1e), DW_AT_bit_size(0x01)
1897 .dwattr $C$DW$136, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1898 .dwattr $C$DW$136, DW_AT_accessibility(DW_ACCESS_public)
1899 .dwattr $C$DW$136, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1900 .dwattr $C$DW$136, DW_AT_decl_line(0xc5)
1901 .dwattr $C$DW$136, DW_AT_decl_column(0x0d)
1902$C$DW$137 .dwtag DW_TAG_member
1903 .dwattr $C$DW$137, DW_AT_type(*$C$DW$T$11)
1904 .dwattr $C$DW$137, DW_AT_name("rsvd2")
1905 .dwattr $C$DW$137, DW_AT_TI_symbol_name("rsvd2")
1906 .dwattr $C$DW$137, DW_AT_bit_offset(0x00), DW_AT_bit_size(0x1e)
1907 .dwattr $C$DW$137, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1908 .dwattr $C$DW$137, DW_AT_accessibility(DW_ACCESS_public)
1909 .dwattr $C$DW$137, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1910 .dwattr $C$DW$137, DW_AT_decl_line(0xc6)
1911 .dwattr $C$DW$137, DW_AT_decl_column(0x0d)
1912 .dwendtag $C$DW$T$29
1913
1914 .dwattr $C$DW$T$29, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1915 .dwattr $C$DW$T$29, DW_AT_decl_line(0xc3)
1916 .dwattr $C$DW$T$29, DW_AT_decl_column(0x13)
1917$C$DW$T$67 .dwtag DW_TAG_volatile_type
1918 .dwattr $C$DW$T$67, DW_AT_type(*$C$DW$T$29)
1919
1920$C$DW$T$30 .dwtag DW_TAG_structure_type
1921 .dwattr $C$DW$T$30, DW_AT_byte_size(0x04)
1922$C$DW$138 .dwtag DW_TAG_member
1923 .dwattr $C$DW$138, DW_AT_type(*$C$DW$T$11)
1924 .dwattr $C$DW$138, DW_AT_name("OCP_EN")
1925 .dwattr $C$DW$138, DW_AT_TI_symbol_name("OCP_EN")
1926 .dwattr $C$DW$138, DW_AT_bit_offset(0x1f), DW_AT_bit_size(0x01)
1927 .dwattr $C$DW$138, DW_AT_data_member_location[DW_OP_plus_uconst 0x0]
1928 .dwattr $C$DW$138, DW_AT_accessibility(DW_ACCESS_public)
1929 .dwattr $C$DW$138, DW_AT_decl_file("/home/a0273976local/pru-software-support-package/include/am335x/pru_cfg.h")
1930 .dwattr $C$DW$138, DW_AT_decl_line(0xd3)
1931 .dwattr $C$DW$138, DW_AT_decl_column(0x0d)
1932$C$DW$139 .dwtag DW_TAG_member
1933 .dwattr $C$DW$139, DW_AT_type(*$C$DW$T$11)
1934 .dwattr $C$DW$139, DW_AT_name("rsvd1")
1935 .dwattr $C$DW$139, DW_AT_TI_symbol_name("rsvd1")