dhruvag2000

Untitled

Aug 6th, 2021 (edited)
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.19 KB | None | 0 0
  1. // stock BELA overlay loaded, with **no** dummy tx and rx
  2. // ----
  3. // When resource table is unchanged:
  4. // I get an entire stream on infinite:
  5. davinci-mcasp 48460000.mcasp: unhandled rx event. rxstat: 0x00000144
  6.  
  7. // -------------------------------
  8. // Now, when the resource table is as follows:
  9. // git diff:
  10. diff --git a/resources/rproc-build/common/resource_table_empty.h b/resources/rproc-build/common/resource_table_empty.h
  11. index 07e97d9b..c779a2d3 100644
  12. --- a/resources/rproc-build/common/resource_table_empty.h
  13. +++ b/resources/rproc-build/common/resource_table_empty.h
  14. @@ -1,17 +1,34 @@
  15.  /*
  16. - *  ======== resource_table_empty.h ========
  17. + * Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
  18.   *
  19. - *  Define the resource table entries for all PRU cores. This will be
  20. - *  incorporated into corresponding base images, and used by the remoteproc
  21. - *  on the host-side to allocated/reserve resources.  Note the remoteproc
  22. - *  driver requires that all PRU firmware be built with a resource table.
  23.   *
  24. - *  This file contains an empty resource table.  It can be used either as:
  25. + * Redistribution and use in source and binary forms, with or without
  26. + * modification, are permitted provided that the following conditions
  27. + * are met:
  28.   *
  29. - *        1) A template, or
  30. - *        2) As-is if a PRU application does not need to configure PRU_INTC
  31. - *                  or interact with the rpmsg driver
  32. + *     * Redistributions of source code must retain the above copyright
  33. + *       notice, this list of conditions and the following disclaimer.
  34.   *
  35. + *     * Redistributions in binary form must reproduce the above copyright
  36. + *       notice, this list of conditions and the following disclaimer in the
  37. + *       documentation and/or other materials provided with the
  38. + *       distribution.
  39. + *
  40. + *     * Neither the name of Texas Instruments Incorporated nor the names of
  41. + *       its contributors may be used to endorse or promote products derived
  42. + *       from this software without specific prior written permission.
  43. + *
  44. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  45. + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  46. + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  47. + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  48. + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  49. + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  50. + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  51. + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  52. + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  53. + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  54. + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  55.   */
  56.  
  57.  #ifndef _RSC_TABLE_PRU_H_
  58. @@ -19,21 +36,104 @@
  59.  
  60.  #include <stddef.h>
  61.  #include <rsc_types.h>
  62. +#include "pru_virtio_ids.h"
  63. +
  64. +/*
  65. + * Sizes of the virtqueues (expressed in number of buffers supported,
  66. + * and must be power of 2)
  67. + */
  68. +#define PRU_RPMSG_VQ0_SIZE     16
  69. +#define PRU_RPMSG_VQ1_SIZE     16
  70. +
  71. +/*
  72. + * The feature bitmap for virtio rpmsg
  73. + */
  74. +#define VIRTIO_RPMSG_F_NS      0               //name service notifications
  75. +
  76. +/* This firmware supports name service notifications as one of its features */
  77. +#define RPMSG_PRU_C0_FEATURES  (1 << VIRTIO_RPMSG_F_NS)
  78. +
  79. +/* Definition for unused interrupts */
  80. +#define HOST_UNUSED            255
  81. +
  82. +/* Mapping sysevts to a channel. Each pair contains a sysevt, channel. */
  83. +// struct ch_map pru_intc_map[] = { {16, 2},
  84. +//                              {17, 0},
  85. +// };
  86. +struct ch_map pru_intc_map[] = { {54, 1},
  87. +                 {55, 1},
  88. +};
  89. +
  90.  
  91.  struct my_resource_table {
  92.         struct resource_table base;
  93.  
  94. -       uint32_t offset[1]; /* Should match 'num' in actual definition */
  95. +       uint32_t offset[2]; /* Should match 'num' in actual definition */
  96. +
  97. +       /* rpmsg vdev entry */
  98. +       struct fw_rsc_vdev rpmsg_vdev;
  99. +       struct fw_rsc_vdev_vring rpmsg_vring0;
  100. +       struct fw_rsc_vdev_vring rpmsg_vring1;
  101. +
  102. +       /* intc definition */
  103. +       struct fw_rsc_custom pru_ints;
  104.  };
  105.  
  106. -#pragma DATA_SECTION(pru_remoteproc_ResourceTable, ".resource_table")
  107. -#pragma RETAIN(pru_remoteproc_ResourceTable)
  108. -struct my_resource_table pru_remoteproc_ResourceTable = {
  109. -       1,      /* we're the first version that implements this */
  110. -       0,      /* number of entries in the table */
  111. +#pragma DATA_SECTION(resourceTable, ".resource_table")
  112. +#pragma RETAIN(resourceTable)
  113. +struct my_resource_table resourceTable = {
  114. +       1,      /* Resource table version: only version 1 is supported by the current driver */
  115. +       2,      /* number of entries in the table */
  116.         0, 0,   /* reserved, must be zero */
  117. -       0,      /* offset[0] */
  118. +       /* offsets to entries */
  119. +       {
  120. +               offsetof(struct my_resource_table, rpmsg_vdev),
  121. +               offsetof(struct my_resource_table, pru_ints),
  122. +       },
  123. +
  124. +       /* rpmsg vdev entry */
  125. +       {
  126. +               (uint32_t)TYPE_VDEV,                    //type
  127. +               (uint32_t)VIRTIO_ID_RPMSG,              //id
  128. +               (uint32_t)0,                            //notifyid
  129. +               (uint32_t)RPMSG_PRU_C0_FEATURES,        //dfeatures
  130. +               (uint32_t)0,                            //gfeatures
  131. +               (uint32_t)0,                            //config_len
  132. +               (uint8_t)0,                             //status
  133. +               (uint8_t)2,                             //num_of_vrings, only two is supported
  134. +               { (uint8_t)0, (uint8_t)0 },             //reserved
  135. +               /* no config data */
  136. +       },
  137. +       /* the two vrings */
  138. +       {
  139. +               0,                      //da, will be populated by host, can't pass it in
  140. +               16,                     //align (bytes),
  141. +               PRU_RPMSG_VQ0_SIZE,     //num of descriptors
  142. +               0,                      //notifyid, will be populated, can't pass right now
  143. +               0                       //reserved
  144. +       },
  145. +       {
  146. +               0,                      //da, will be populated by host, can't pass it in
  147. +               16,                     //align (bytes),
  148. +               PRU_RPMSG_VQ1_SIZE,     //num of descriptors
  149. +               0,                      //notifyid, will be populated, can't pass right now
  150. +               0                       //reserved
  151. +       },
  152. +
  153. +       {
  154. +               TYPE_CUSTOM, TYPE_PRU_INTS,
  155. +               sizeof(struct fw_rsc_custom_ints),
  156. +               { /* PRU_INTS version */
  157. +                       0x0000,
  158. +                       /* Channel-to-host mapping, 255 for unused */
  159. +                       0, HOST_UNUSED, 2, HOST_UNUSED, HOST_UNUSED,
  160. +                       HOST_UNUSED, HOST_UNUSED, HOST_UNUSED, HOST_UNUSED, HOST_UNUSED,
  161. +                       /* Number of evts being mapped to channels */
  162. +                       (sizeof(pru_intc_map) / sizeof(struct ch_map)),
  163. +                       /* Pointer to the structure containing mapped events */
  164. +                       pru_intc_map,
  165. +               },
  166. +       },
  167.  };
  168.  
  169.  #endif /* _RSC_TABLE_PRU_H_ */
  170. // -
  171.  
  172.  
  173.  
  174.  
  175.  
  176. // and then I run sinetone/sinetone
  177. // This shows on UART logs: (infinitely)
  178. // ... till I hit ctrl + C
  179.  
  180. [   62.937859] ---[ end trace 1f2efa44b0c3bbcc ]---
  181. [   62.942977] ------------[ cut here ]------------
  182. [   62.947628] WARNING: CPU: 0 PID: 2954 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x338/0x388
  183. [   62.957070] 44000000.ocp:L3 Standard Error: MASTER MPU TARGET PRUSS1 (Read): At Address: 0x00012080 : Data Access in User mode during Functional access
  184. [   62.970692] Modules linked in: rpmsg_rpc virtio_rpmsg_bus bnep btsdio bluetooth ecdh_generic brcmfmac brcmutil cfg80211 omap_remoteproc remoteproc virtio virtio_ring usb_f_ncm usb_f_mass_storage usb_f_rndis u_ether libcomposite uio_pdrv_genirq uio gpio_pisosr
  185. [   62.993786] CPU: 0 PID: 2954 Comm: sinetone Tainted: G      D W         4.19.94-ti-xenomai-r64 #1buster
  186. [   63.003224] Hardware name: Generic DRA74X (Flattened Device Tree)
  187. [   63.009347] I-pipe domain: Linux
  188. [   63.012603] [<c011419c>] (unwind_backtrace) from [<c010ea1c>] (show_stack+0x20/0x24)
  189. [   63.020392] [<c010ea1c>] (show_stack) from [<c0d7345c>] (dump_stack+0xc8/0xe4)
  190. [   63.027659] [<c0d7345c>] (dump_stack) from [<c013e880>] (__warn.part.3+0xcc/0xe8)
  191. [   63.035185] [<c013e880>] (__warn.part.3) from [<c013e914>] (warn_slowpath_fmt+0x78/0x94)
  192. [   63.043322] [<c013e914>] (warn_slowpath_fmt) from [<c07c1958>] (l3_interrupt_handler+0x338/0x388)
  193. [   63.052244] [<c07c1958>] (l3_interrupt_handler) from [<c01b1500>] (__handle_irq_event_percpu+0x84/0x2d0)
  194. [   63.061774] [<c01b1500>] (__handle_irq_event_percpu) from [<c01b1788>] (handle_irq_event_percpu+0x3c/0x90)
  195. [   63.071478] [<c01b1788>] (handle_irq_event_percpu) from [<c01b1824>] (handle_irq_event+0x48/0x6c)
  196. [   63.080399] [<c01b1824>] (handle_irq_event) from [<c01b5b80>] (handle_fasteoi_irq+0xc8/0x134)
  197. [   63.088975] [<c01b5b80>] (handle_fasteoi_irq) from [<c01b0544>] (generic_handle_irq+0x34/0x44)
  198. [   63.097634] [<c01b0544>] (generic_handle_irq) from [<c01b0c64>] (__handle_domain_irq+0xa0/0x11c)
  199. [   63.106469] [<c01b0c64>] (__handle_domain_irq) from [<c010ac18>] (handle_IRQ+0x28/0x2c)
  200. [   63.114520] [<c010ac18>] (handle_IRQ) from [<c0118af8>] (__ipipe_do_IRQ+0x38/0x40)
  201. [   63.122136] [<c0118af8>] (__ipipe_do_IRQ) from [<c021d9cc>] (__ipipe_do_sync_stage+0x1c0/0x1f4)
  202. [   63.130884] [<c021d9cc>] (__ipipe_do_sync_stage) from [<c021dac8>] (__ipipe_do_sync_pipeline+0xc8/0xcc)
  203. [   63.140330] [<c021dac8>] (__ipipe_do_sync_pipeline) from [<c021e308>] (__ipipe_dispatch_irq+0x1d4/0x1f8)
  204. [   63.149864] [<c021e308>] (__ipipe_dispatch_irq) from [<c0102664>] (__ipipe_grab_irq+0x74/0x8c)
  205. [   63.158524] [<c0102664>] (__ipipe_grab_irq) from [<c010276c>] (gic_handle_irq+0x4c/0x88)
  206. [   63.166660] [<c010276c>] (gic_handle_irq) from [<c0101f14>] (__irq_usr+0x54/0x80)
  207. [   63.174180] Exception stack(0xd27d3fb0 to 0xd27d3ff8)
  208. [   63.179260] 3fa0:                                     01271390 00000000 01281f20 b6252080
  209. [   63.187480] 3fc0: 01281f18 01281d18 00000000 00000001 0008d000 00000000 00000008 00000008
  210. [   63.195701] 3fe0: 0000ffff beec4648 01281f28 0002481a 80080030 ffffffff
  211. [   63.202350] ---[ end trace 1f2efa44b0c3bbcd ]---
  212.  
  213. // with the ssh terminal showing:
  214.  
  215. echo "Running" /root/testBela/projects/sinetone/sinetone -v
  216. Running /root/testBela/projects/sinetone/sinetone -v
  217. sync& cd /root/testBela/projects/sinetone && /root/testBela/projects/sinetone/sinetone -v
  218. Xenomai not explicitly inited
  219. Xenomai is going to be inited by us
  220. Bela_initAudio()
  221. Starting with period size 16 ;analog enabled
  222. DAC level 99999997952.000000 dB; ADC level 99999997952.000000 dB; headphone level 99999997952.000000 dB
  223. could not open EEPROM for reading
  224. Detected hardware: Bela
  225. Hardware specified at the command line: NoHardware
  226. Hardware specified in the user's belaconfig: NoHardware
  227. Hardware to be used: Bela
  228. Codec mode: 0 ()
  229. fifoFactor: 1
  230. core audioFrames: 16
  231. Project name: sinetone
  232. ^Cmake: *** [Makefile:658: runonly] Interrupt
  233.  
  234. // those infinite line
Add Comment
Please, Sign In to add comment