Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // stock BELA overlay loaded, with **no** dummy tx and rx
- // ----
- // When resource table is unchanged:
- // I get an entire stream on infinite:
- davinci-mcasp 48460000.mcasp: unhandled rx event. rxstat: 0x00000144
- // -------------------------------
- // Now, when the resource table is as follows:
- // git diff:
- diff --git a/resources/rproc-build/common/resource_table_empty.h b/resources/rproc-build/common/resource_table_empty.h
- index 07e97d9b..c779a2d3 100644
- --- a/resources/rproc-build/common/resource_table_empty.h
- +++ b/resources/rproc-build/common/resource_table_empty.h
- @@ -1,17 +1,34 @@
- /*
- - * ======== resource_table_empty.h ========
- + * Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
- *
- - * Define the resource table entries for all PRU cores. This will be
- - * incorporated into corresponding base images, and used by the remoteproc
- - * on the host-side to allocated/reserve resources. Note the remoteproc
- - * driver requires that all PRU firmware be built with a resource table.
- *
- - * This file contains an empty resource table. It can be used either as:
- + * Redistribution and use in source and binary forms, with or without
- + * modification, are permitted provided that the following conditions
- + * are met:
- *
- - * 1) A template, or
- - * 2) As-is if a PRU application does not need to configure PRU_INTC
- - * or interact with the rpmsg driver
- + * * Redistributions of source code must retain the above copyright
- + * notice, this list of conditions and the following disclaimer.
- *
- + * * Redistributions in binary form must reproduce the above copyright
- + * notice, this list of conditions and the following disclaimer in the
- + * documentation and/or other materials provided with the
- + * distribution.
- + *
- + * * Neither the name of Texas Instruments Incorporated nor the names of
- + * its contributors may be used to endorse or promote products derived
- + * from this software without specific prior written permission.
- + *
- + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #ifndef _RSC_TABLE_PRU_H_
- @@ -19,21 +36,104 @@
- #include <stddef.h>
- #include <rsc_types.h>
- +#include "pru_virtio_ids.h"
- +
- +/*
- + * Sizes of the virtqueues (expressed in number of buffers supported,
- + * and must be power of 2)
- + */
- +#define PRU_RPMSG_VQ0_SIZE 16
- +#define PRU_RPMSG_VQ1_SIZE 16
- +
- +/*
- + * The feature bitmap for virtio rpmsg
- + */
- +#define VIRTIO_RPMSG_F_NS 0 //name service notifications
- +
- +/* This firmware supports name service notifications as one of its features */
- +#define RPMSG_PRU_C0_FEATURES (1 << VIRTIO_RPMSG_F_NS)
- +
- +/* Definition for unused interrupts */
- +#define HOST_UNUSED 255
- +
- +/* Mapping sysevts to a channel. Each pair contains a sysevt, channel. */
- +// struct ch_map pru_intc_map[] = { {16, 2},
- +// {17, 0},
- +// };
- +struct ch_map pru_intc_map[] = { {54, 1},
- + {55, 1},
- +};
- +
- struct my_resource_table {
- struct resource_table base;
- - uint32_t offset[1]; /* Should match 'num' in actual definition */
- + uint32_t offset[2]; /* Should match 'num' in actual definition */
- +
- + /* rpmsg vdev entry */
- + struct fw_rsc_vdev rpmsg_vdev;
- + struct fw_rsc_vdev_vring rpmsg_vring0;
- + struct fw_rsc_vdev_vring rpmsg_vring1;
- +
- + /* intc definition */
- + struct fw_rsc_custom pru_ints;
- };
- -#pragma DATA_SECTION(pru_remoteproc_ResourceTable, ".resource_table")
- -#pragma RETAIN(pru_remoteproc_ResourceTable)
- -struct my_resource_table pru_remoteproc_ResourceTable = {
- - 1, /* we're the first version that implements this */
- - 0, /* number of entries in the table */
- +#pragma DATA_SECTION(resourceTable, ".resource_table")
- +#pragma RETAIN(resourceTable)
- +struct my_resource_table resourceTable = {
- + 1, /* Resource table version: only version 1 is supported by the current driver */
- + 2, /* number of entries in the table */
- 0, 0, /* reserved, must be zero */
- - 0, /* offset[0] */
- + /* offsets to entries */
- + {
- + offsetof(struct my_resource_table, rpmsg_vdev),
- + offsetof(struct my_resource_table, pru_ints),
- + },
- +
- + /* rpmsg vdev entry */
- + {
- + (uint32_t)TYPE_VDEV, //type
- + (uint32_t)VIRTIO_ID_RPMSG, //id
- + (uint32_t)0, //notifyid
- + (uint32_t)RPMSG_PRU_C0_FEATURES, //dfeatures
- + (uint32_t)0, //gfeatures
- + (uint32_t)0, //config_len
- + (uint8_t)0, //status
- + (uint8_t)2, //num_of_vrings, only two is supported
- + { (uint8_t)0, (uint8_t)0 }, //reserved
- + /* no config data */
- + },
- + /* the two vrings */
- + {
- + 0, //da, will be populated by host, can't pass it in
- + 16, //align (bytes),
- + PRU_RPMSG_VQ0_SIZE, //num of descriptors
- + 0, //notifyid, will be populated, can't pass right now
- + 0 //reserved
- + },
- + {
- + 0, //da, will be populated by host, can't pass it in
- + 16, //align (bytes),
- + PRU_RPMSG_VQ1_SIZE, //num of descriptors
- + 0, //notifyid, will be populated, can't pass right now
- + 0 //reserved
- + },
- +
- + {
- + TYPE_CUSTOM, TYPE_PRU_INTS,
- + sizeof(struct fw_rsc_custom_ints),
- + { /* PRU_INTS version */
- + 0x0000,
- + /* Channel-to-host mapping, 255 for unused */
- + 0, HOST_UNUSED, 2, HOST_UNUSED, HOST_UNUSED,
- + HOST_UNUSED, HOST_UNUSED, HOST_UNUSED, HOST_UNUSED, HOST_UNUSED,
- + /* Number of evts being mapped to channels */
- + (sizeof(pru_intc_map) / sizeof(struct ch_map)),
- + /* Pointer to the structure containing mapped events */
- + pru_intc_map,
- + },
- + },
- };
- #endif /* _RSC_TABLE_PRU_H_ */
- // -
- // and then I run sinetone/sinetone
- // This shows on UART logs: (infinitely)
- // ... till I hit ctrl + C
- [ 62.937859] ---[ end trace 1f2efa44b0c3bbcc ]---
- [ 62.942977] ------------[ cut here ]------------
- [ 62.947628] WARNING: CPU: 0 PID: 2954 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x338/0x388
- [ 62.957070] 44000000.ocp:L3 Standard Error: MASTER MPU TARGET PRUSS1 (Read): At Address: 0x00012080 : Data Access in User mode during Functional access
- [ 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
- [ 62.993786] CPU: 0 PID: 2954 Comm: sinetone Tainted: G D W 4.19.94-ti-xenomai-r64 #1buster
- [ 63.003224] Hardware name: Generic DRA74X (Flattened Device Tree)
- [ 63.009347] I-pipe domain: Linux
- [ 63.012603] [<c011419c>] (unwind_backtrace) from [<c010ea1c>] (show_stack+0x20/0x24)
- [ 63.020392] [<c010ea1c>] (show_stack) from [<c0d7345c>] (dump_stack+0xc8/0xe4)
- [ 63.027659] [<c0d7345c>] (dump_stack) from [<c013e880>] (__warn.part.3+0xcc/0xe8)
- [ 63.035185] [<c013e880>] (__warn.part.3) from [<c013e914>] (warn_slowpath_fmt+0x78/0x94)
- [ 63.043322] [<c013e914>] (warn_slowpath_fmt) from [<c07c1958>] (l3_interrupt_handler+0x338/0x388)
- [ 63.052244] [<c07c1958>] (l3_interrupt_handler) from [<c01b1500>] (__handle_irq_event_percpu+0x84/0x2d0)
- [ 63.061774] [<c01b1500>] (__handle_irq_event_percpu) from [<c01b1788>] (handle_irq_event_percpu+0x3c/0x90)
- [ 63.071478] [<c01b1788>] (handle_irq_event_percpu) from [<c01b1824>] (handle_irq_event+0x48/0x6c)
- [ 63.080399] [<c01b1824>] (handle_irq_event) from [<c01b5b80>] (handle_fasteoi_irq+0xc8/0x134)
- [ 63.088975] [<c01b5b80>] (handle_fasteoi_irq) from [<c01b0544>] (generic_handle_irq+0x34/0x44)
- [ 63.097634] [<c01b0544>] (generic_handle_irq) from [<c01b0c64>] (__handle_domain_irq+0xa0/0x11c)
- [ 63.106469] [<c01b0c64>] (__handle_domain_irq) from [<c010ac18>] (handle_IRQ+0x28/0x2c)
- [ 63.114520] [<c010ac18>] (handle_IRQ) from [<c0118af8>] (__ipipe_do_IRQ+0x38/0x40)
- [ 63.122136] [<c0118af8>] (__ipipe_do_IRQ) from [<c021d9cc>] (__ipipe_do_sync_stage+0x1c0/0x1f4)
- [ 63.130884] [<c021d9cc>] (__ipipe_do_sync_stage) from [<c021dac8>] (__ipipe_do_sync_pipeline+0xc8/0xcc)
- [ 63.140330] [<c021dac8>] (__ipipe_do_sync_pipeline) from [<c021e308>] (__ipipe_dispatch_irq+0x1d4/0x1f8)
- [ 63.149864] [<c021e308>] (__ipipe_dispatch_irq) from [<c0102664>] (__ipipe_grab_irq+0x74/0x8c)
- [ 63.158524] [<c0102664>] (__ipipe_grab_irq) from [<c010276c>] (gic_handle_irq+0x4c/0x88)
- [ 63.166660] [<c010276c>] (gic_handle_irq) from [<c0101f14>] (__irq_usr+0x54/0x80)
- [ 63.174180] Exception stack(0xd27d3fb0 to 0xd27d3ff8)
- [ 63.179260] 3fa0: 01271390 00000000 01281f20 b6252080
- [ 63.187480] 3fc0: 01281f18 01281d18 00000000 00000001 0008d000 00000000 00000008 00000008
- [ 63.195701] 3fe0: 0000ffff beec4648 01281f28 0002481a 80080030 ffffffff
- [ 63.202350] ---[ end trace 1f2efa44b0c3bbcd ]---
- // with the ssh terminal showing:
- echo "Running" /root/testBela/projects/sinetone/sinetone -v
- Running /root/testBela/projects/sinetone/sinetone -v
- sync& cd /root/testBela/projects/sinetone && /root/testBela/projects/sinetone/sinetone -v
- Xenomai not explicitly inited
- Xenomai is going to be inited by us
- Bela_initAudio()
- Starting with period size 16 ;analog enabled
- DAC level 99999997952.000000 dB; ADC level 99999997952.000000 dB; headphone level 99999997952.000000 dB
- could not open EEPROM for reading
- Detected hardware: Bela
- Hardware specified at the command line: NoHardware
- Hardware specified in the user's belaconfig: NoHardware
- Hardware to be used: Bela
- Codec mode: 0 ()
- fifoFactor: 1
- core audioFrames: 16
- Project name: sinetone
- ^Cmake: *** [Makefile:658: runonly] Interrupt
- // those infinite line
Add Comment
Please, Sign In to add comment