[Jason Kridner] is a member of the i3 Detroit hackerspace and during the Hackaday meet-up we were able to spend a few minutes talking about what’s going on with BeagleBoard right now. For those of you that don’t know, BeagleBoard is a non-profit foundation which guides the open hardware initiative of the same name. This includes BeagleBone which is the third iteration of the platform. [Jason’s] a good guy to talk to about this as he co-founded the organization and has been the driving force in the community ever since.
Right now the organization is participating in the Google Summer of Code. This initiative allows students to propose open source coding projects which will help move the community forward. Students with accepted proposals were paired with mentors and are paid for the quality code which is produced. One of the projects this year is a 100 Megahertz, 14-channel Logic Analyzer which [Jason] is waving around in the video. It’s the GSoC project of [Kumar Abhishek] and you can learn more from his proposal.
Also of interest in the video is a discussion about the power of the BeagleBone’s PRUs, or Programmable Real-Time Units. They’re basically unused microcontrollers that have direct access to a lot of the processor’s features and are just waiting for you to bend them to your will. Having these is a huge boon for hardware hackers. If you haven’t played with them before, check out our earlier article on what PRUs are all about and then give it a whirl yourself.
After the break there’s a brief table of contents which maps the topics shown off in the video.
- 0:40 – Discussion of the Programmable Real-Time Units (PRUs) on the BeagleBoard
- 2:51 – BeagleBoard and the Google Summer of Code
- 4:19 – 100 MHz, 14-channel Logic Analyzer which is a product of the Google Summer of Code
Hello Hackaday community,
This is Abhishek, I’m the student currently working on the BeagleLogic Project for my Google Summer of Code Project with BeagleBoard.org .
For potential users, you can view the documentation on http://www.beaglelogic.net (It currently directs to the GitHub wiki of the project, but will have a website of its own in a few weeks from now).
The sigrok bindings have been merged upstream just yesterday. You can compile and install the latest versions of the BeagleBone vendor kernel by [rcnelson] (bone60+) and libsigrok on your BBB to use BeagleLogic.
If you have any suggestions/ideas, I would be pleased to hear from you all.
Thanks!
Where can I get the code for Beagle Logic?
https://github.com/abhishek-kakkar/BeagleLogic
Interesting that they chose to create a kernel driver to handle memory management. I was hoping to be able to use the PRU to write data directly to program RAM. i.e. in your userspace code, allocate a certain amount of memory, then pass the address of that memory to the PRU, and tell it to write to it. I guess the problem is getting a chunk of contiguous memory.
Indeed. The problem was actually two-fold. One was the large contiguous memory, which is solved using scatter/gather in small buffer chunks of 4 MB. PRU1 just gathers data into its registers in single-cycle operations, PRU0 writes them into the DDR RAM in 32 byte bursts. This enables sampling rates up to 100 Msps.
The second was the use of dma_alloc_coherent which allocates non-cached memory. Though it is useful to maintain cache coherency, I found that it made memcpy *very* slow. Hence this uses kmalloc and dma_map and dma_unmap operations on-the-fly to maintain cache coherency, giving raw memcpy speeds around 200 MB/s, which should be enough to do real-time processing on 8-bit data at 100 Msps, provided there is enough CPU time, and the buffer can be dumped somewhere. You can also reserve memory as much as 300+ MB out of the 512 MB RAM on the Bone Black, and have BeagleLogic fill it entirely.
This approach also allows you to use “dd” to capture (little-endian) logic binary dumps.
I have personally tested BeagleLogic with sigrok to decode large dumps of I2S data into wave files. They come out really nice.
>This approach also allows you to use “dd” to capture (little-endian) logic binary dumps.
Wow, that is a cool feature.
Hello,
I m asking if the pru assembler instructions(wbs and wbc) takes 5ns if the conditions is true?
thank you
Regards
They should. However you should check it for yourself.