Just reading this now. Looks great. Trying to read through the examples -
the format is really nice - how would you like feedback? Any deadlines for
you on this?. I'm away on vacation on Tue, and then might be able to try
the examples Sept 12 onwards.


On Fri, Aug 17, 2018 at 7:58 AM Mark A. Yoder <mark.a.yo...@gmail.com>
wrote:

> The PRU cookbook is nearing completion (more accurately, I'm running out
> of summer).
>
> Here's a link https://markayoder.github.io/PRUCookbook/
>
> I'm happy for any feedback you can give me.
>
> --Mark
>
> On Thursday, June 28, 2018 at 8:45:00 PM UTC-4, Neilh wrote:
>>
>> Ok thanks. I see I was think SHARED_RAM between the ARM-A8 and PRU0 and
>> its actually shared between ARM PRU0 and PRU1. Ahhhh-lightbulb---hhhhh
>> Many thanks for the evolving cookbook and detailed explanation- I have
>> got a little lost at times digging through the manual - gosh I want to read
>> all the PRU sections - I'd have paid gold  4weeks ago when I started using
>> the PRUst!.
>> If it becomes a book I'll be first in line to buy it :).
>> The PRUs are a cool part of the BBB - and now I've got it working appears
>> pretty simple.
>>
>>
>> On Thu, Jun 28, 2018 at 12:59 PM Mark A. Yoder <mark.a...@gmail.com>
>> wrote:
>>
>>> Neilh:
>>>   I've worked up some examples[1] for a PRU Cookbook that might help.
>>> I'm taking a similar approach to what you did, but I'm using DRAM0.  It
>>> shouldn't be hard
>>> to switch to shared RAM.
>>>
>>> --Mark
>>>
>>> [1]
>>> https://markayoder.github.io/PRUCookbook/05blocks/blocks.html#_controlling_the_pwm_frequency
>>>
>>>
>>> On Wednesday, June 27, 2018 at 5:36:13 PM UTC-4, Neilh wrote:
>>>>
>>>> Oops I got it - it was sizing a pointer and not the struct.
>>>>
>>>> I'd be interested in anybody's comments on the use of the SHAREDRAM
>>>> approach as it makes for a very simple one way api. I'm partly publishing
>>>> this as a tutorial for anybody else - but its my first try at the PRU.
>>>>
>>>> Here is the logic anlayzer output from the Saleae 8 Channels mapping of
>>>> PRU0 to GPIO P9_25 ...P8_12
>>>> There is an increasing pulse count chn0, and then fixed 1hz, 2hz... on
>>>> subsequent channels
>>>>
>>>>
>>>>
>>>> On Wed, Jun 27, 2018 at 2:13 PM Neil Hancock <neilh...@gmail.com>
>>>> wrote:
>>>>
>>>>> Oops  - you are right, I'll update my comments
>>>>>
>>>>> Here is the code that is allocating the SHAREDRAM - though I'm still
>>>>> hazy as to how mmap() works in BBB mapping the SHAREDRAM
>>>>>
>>>>> #define AM33XX_DATARAM0_PHYS_BASE 0x4a300000
>>>>> #define AM33XX_DATARAM1_PHYS_BASE 0x4a302000
>>>>> #define AM33XX_PRUSS_SHAREDRAM_BASE 0x4a310000
>>>>> #define SHARED_RAM_SZ 16  /* grab 8*4 bytes or 8 words */
>>>>>
>>>>> volatile uint16_t *shared_dataram;
>>>>>
>>>>> /* Define an API to be calleable from JS -still needs work */
>>>>>
>>>>> void bbbio_ppm_api(struct channels_s *channels){
>>>>>    memcpy((void *)shared_dataram,(void *)channels,sizeof(channels));
>>>>> }
>>>>>
>>>>> void bbbio_ppm_init() {
>>>>>    /* Allocate shared memory pointer to PRU0 DATARAM */
>>>>> int mem_dev = open("/dev/mem", O_RDWR | O_SYNC);
>>>>> volatile void *shared_dataram_init = mmap(NULL,
>>>>>    SHARED_RAM_SZ,
>>>>> PROT_READ | PROT_WRITE,
>>>>> MAP_SHARED,
>>>>> mem_dev,
>>>>> AM33XX_PRUSS_SHAREDRAM_BASE
>>>>> );
>>>>> shared_dataram = (uint16_t *) shared_dataram_init;
>>>>> }
>>>>>
>>>>> void bbbio_ppm_cleanup() {
>>>>> munmap((void *)shared_dataram,SHARED_RAM_SZ); //njh guess at releasing
>>>>> it.
>>>>> }
>>>>>
>>>>> #ifdef MAIN_LOCAL
>>>>> void main() {
>>>>> unsigned int sec_i, chnl_j;
>>>>> unsigned int offset;
>>>>>    struct channels_s  channels;
>>>>>    volatile uint16_t *shared_dataram2;
>>>>>
>>>>>    bbbio_ppm_init();
>>>>>    uint16_t ppm =60;//actually
>>>>>
>>>>> offset = 0;
>>>>> channels.chn[offset].sr =ppm;
>>>>> printf("shared_datara2 = %p, offset=%d At init Read:",
>>>>> shared_dataram,offset);
>>>>>    shared_dataram2 = (uint16_t *) shared_dataram;
>>>>> for(chnl_j=0; chnl_j<8; chnl_j++) {
>>>>> printf(" %04d",  *shared_dataram2);
>>>>>    shared_dataram2++;
>>>>>    if (0x3 ==(chnl_j & 0x3)){printf("   ");}
>>>>>    }
>>>>>    printf("\n");
>>>>>
>>>>>    ppm =0;
>>>>> for(chnl_j=0; chnl_j<8; chnl_j++) {
>>>>>       channels.chn[chnl_j].sr=ppm;
>>>>>       ppm += 60;
>>>>>     }
>>>>>     //Fut - wait for ack from PRU and then init shared ram
>>>>>
>>>>>     //while (1)
>>>>>     {
>>>>>     ppm=60;
>>>>>     for(sec_i=0; sec_i<8; sec_i++) {
>>>>>        channels.chn[offset].sr +=ppm;
>>>>>     //memcpy((void *)shared_dataram,(void
>>>>> *)&channels,sizeof(channels));
>>>>> bbbio_ppm_api(&channels);
>>>>>     printf("Writing %04d Read:", ppm);
>>>>>     shared_dataram2 = (uint16_t *) shared_dataram;
>>>>>     for(chnl_j=0; chnl_j<8; chnl_j++) {
>>>>>        printf(" %04d",  *shared_dataram2);
>>>>>        shared_dataram2++;
>>>>>        if (0x3 ==(chnl_j & 0x3)){printf("   ");}
>>>>>          }
>>>>>          printf("\n");
>>>>>          sleep(1);
>>>>>     }
>>>>> }
>>>>> bbbio_ppm_cleanup();
>>>>> }
>>>>>
>>>>> #endif //MAIN_LOCAL
>>>>>
>>>>> On Wed, Jun 27, 2018 at 1:33 PM Dennis Lee Bieber <
>>>>> wlf...@ix.netcom.com> wrote:
>>>>>
>>>>>> On Wed, 27 Jun 2018 12:18:27 -0700, Neil Hancock
>>>>>> <neilh...@gmail.com> declaimed the
>>>>>> following:
>>>>>>
>>>>>> > with 8*int16 (or 32bytes).
>>>>>> >
>>>>>>         Pardon?
>>>>>>
>>>>>>         int16 is 2-bytes, 8*2 => 16 bytes
>>>>>>
>>>>>> >Initially I tried 8*int32 (64bytes) but could only sucessfully use
>>>>>> the
>>>>>> >first 5*int32(40bytes
>>>>>> >
>>>>>>         Similarly, int32 is 4-bytes, 8*4 => 32; 5*4 => 20
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>         Wulfraed                 Dennis Lee Bieber         AF6VN
>>>>>>         wlf...@ix.netcom.com    HTTP://wlfraed.home.netcom.com/
>>>>>>
>>>>>> --
>>>>>> For more options, visit http://beagleboard.org/discuss
>>>>>> ---
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "BeagleBoard" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to beagleboard...@googlegroups.com.
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/beagleboard/pvs7jdpvq34jft17pkpeljrk5p0scj487r%404ax.com
>>>>>> .
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>> --
>>> For more options, visit http://beagleboard.org/discuss
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "BeagleBoard" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to beagleboard...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/beagleboard/a90eb811-c902-4a20-96fa-31e1b03abb5a%40googlegroups.com
>>> <https://groups.google.com/d/msgid/beagleboard/a90eb811-c902-4a20-96fa-31e1b03abb5a%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to beagleboard+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/beagleboard/5ef1cbae-0e43-47dc-83b1-dead26d1645d%40googlegroups.com
> <https://groups.google.com/d/msgid/beagleboard/5ef1cbae-0e43-47dc-83b1-dead26d1645d%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/CAE_cRSe9s55awO%2B7qpXxtpg%2B4V%2Bia-Wub_R943WPmiz1E4g4uA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to