About you What is your name? • Kumar Abhishek
Transcription
About you What is your name? • Kumar Abhishek
About you • What is your name? Kumar Abhishek • What is your email address? <> • What is your eLinux wiki username? <> What is your IRC nickname? <> • • What is the name of your School and in what country? Indian Institute of Technology, Kharagpur; India • What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.) English • Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible) Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an opensource project this summer? I have contributed display drivers and touchscreen calibration features to the ChibiOS/GFX project (which is now known as uGFX), as mentioned at: http://ugfx.org/community and on my GitHub activity log: http://github.com/abhishek-kakkar About the Project • What is the name of your project? “BeagleLogic: A logic analyser / visualiser tool using the BeagleBone Black” • Describe your project in 10-20 sentences. What are you making? For whom are you making it, and why do they need it? What technologies (programming languages, etc.) will you be using? The project is an implementation of a standalone logic analyzer using the Programmable RealTime Unit (PRU) on the BeagleBone Black intended to be used as an on-board learning and diagnostic tool, bundled along with the Bone101 web-based starter interface of the BeagleBone Black. The goal is not to make an expensive or professional logic analyzer, but a tool that will be widely available (as widely as the BeagleBone Black) and which can help tinkerers do things more effectively, concentrate on building their application while still being able to debug their logic connections and devices in a time and cost-effective way. It will carry a web-based client user interface which would make it universally accessible from PCs, smartphones and tablets alike. The project is intended to be used by a very wide audience. There are many logic analyzers available at the same price point as the BeagleBone Black, but they are a mostly USB dataloggers with everything happening on the PC side. I am sure that a logic analyzer built with a BeagleBone Black would offer the best blend of price, features and performance at its price point, as it has both the sampling hardware (the 200 MHz PRU) and a 1 GHz ARM CortexA8 on board which can be used to efficiently process the data onboard. The specifications to begin with are 50 MHz and 8 channels; avenues for real-time sampling, expanding to 16 channels and increasing the sample rate will be considered with my (potential) mentors; if it might be possible to fit them in the timeline, else will be kept as stretch (postGSoC) project goal. Edge-based triggering will be present, pattern based triggering is planned [under discussion]. The project will consist of: • The core running on the PRU, responsible for trigger and data capture - PRU Assembly • libsigrok, with custom bindings for the PRU core. [The skeleton driver has already been • added into libsigrok, see my fork at: https://github.com/abhishek-kakkar/libsigrok] - C The back-end program using libsigrok and libsigrok-decode to retrieve and process the logic data, and then pass it on to the web client using node.js; it will receive UI inputs for trigger and sample rate configuration. • The web-based client, built using rich user interface components. WaveDrom will be used to render the timing diagram data received from the back-end. • What is the timeline for development of your project? The Summer of Code work period is about 11 weeks long; tell us what you will be working on each week. The project is demanding, and hence for successful execution, I have started working right away, ahead of the 11 weeks timeline. I will be sharing updates about my progress on various components post the application deadline here - http://www.theembeddedkitchen.net/gsoc2014-beaglelogic/. My plan of action will be to get the core and libsigrok bindings working before the coding period begins. The community bonding period will be spent in discussing possible improvements to the core, running iterations on the user interface of the front-end and looking at possible design iterations; and coding will begin directly with the backend. I have reported success with adding a "bbb_pru" driver skeleton into my fork of libsigrok, and have been able to successfully compile and install it on my BeagleBone Black. The work of each week will blend into the work of the next week, but the task defined for each week is the minimum that has to be achieved during that period. Been Done So Far / In progress: • Successful Running of a Proof-of-concept demonstration of an example – http://linux.thaj.net63.net/2014/01/logic-analyzer-with-your-beaglebone.htm - this will serve as the core of the project and will be improved upon with support from my mentors (triggering based on patterns in addition to edges) in the Community Bonding period [Done: March 14th] • • • • Setup of libsigrok build system on the BBB, and successful build. Committed driver skeleton [Done: March 17th/18th] Going through PRU assembly, the PRU subsystem from the reference manual, and the PRU demos available (ongoing, to be completed by 23rd March). A sample webpage using BoneScript to poll a few pins and then use WaveDrom to draw the timing diagram (to be done by 23rd March). Writing the bindings of libsigrok with bbb_pru driver using the already existing core (mentioned in the first point above) and testing with sigrok-cli (to be done in the coming 2 weeks) Till Week -1.5 (May 1 – May 9) [Community Bonding Period] • Brainstorming on the development of the "View" of the front-end. Looking at changes to the WaveDrom engine as it has limitations which prevent zooming out of a waveform above a certain level. Also look on the best ways of implementation of addition of markers. A reference we might use for the UI design is of an online VCD viewer - http://www.edaplayground.com/w/ • Deliberation on the back-end daemon architecture, and preparation of a blueprint in code. Week -1.5 -> 1 - Finalisation of the PRU Core [May 10 - May 25] • Discussion, improvements and finalisation of the PRU+libsigrok core • Increase in sample rate beyond 50 MHz and number of channels to 16 (if possible), working together with the mentors • Looking into possibilities of real-time sampling [its implementation to be looked at postGSoC] • Fixing bugs in the core and tests • Testing with sigrok-cli : Once the library passes these stages, sigrok-cli to be used to verify that everything works correctly, though the aim is to develop a web-based client to be added to Bone101 as the PRU LA input pins are shared with the HDMI framer, hence display cannot be used with the PRU [The PRU pins may be remapped but they would disable one of internal eMMC or external SD] • Submission of the completed driver patch to the sigrok Git repository Week 2-3-4 - Backend development [May 26 - June 15] • • • Forking sigrok-cli and building over it a daemon that will communicate with the client. Possible approach: C application <=> node.js webserver <=> web client (via Socket.IO) . Interface between C and webserver has not been finalized. Suggested pathways: via libffi (for native library invocation via node.js), tmpfs or sockets. Define the overall data packet format between BBB and the web client. [WaveDrom accepts JSON input, node.js server to handle this conversion] • Implement the backend [Week 2 - deliberation (architecture related) & Coding, Week 3 & 4 coding] • The backend is expected to be ready by the end of Week 4. Finishing touches (if required) will be given Week 9. Week 5 - Commence development of the front-end [June 16 - June 22] • Creation of the web client UI using Bootstrap / jQuery and WaveDrom; add basic functionality like start, stop, edge triggers. • Reference Mockup of the user interface [Balsamiq]: • The Skeleton client should be able to communicate with the skeleton back-end built in week 2-3, and be able to draw from a JSON sent over Socket.IO Pre-mid-term evaluation [June 23 - June 25] • Prepare the front-end so as to trigger on a particular edge, record a waveform and graph it onto the web client. • This would be the midterm evaluation checkpoint for the project. • Once this is accomplished, moving on to the tasks of Week 6 and further implement the frontend features. Week 6-7-8-9 - Implementation of advanced features on web client; Finalization [June 26 - July 27] • Add functionality for pin labeling and selection [say, only two out of 8 pins are used, hence just display two pins with appropriate labels]. • Add UI for "trigger on pattern" • Add support for display of text for decoded protocols. To achieve this using WaveDrom, the source JSON that is sent to the client, and hence the back end will need to be tweaked. • Implement pan-zoom-scroll support. • Save / load / download to host support • Optional (if time permits, otherwise Post-GSoC): Support for markers Week 10 and 11 - Wrap - up, Documentation [July 28 - August 10th] • Documentation on the usage of the front-end, specifically • Integrating the web client features into Bone101 • Putting all the work in a package that can be installed via the package manager [for Debian and Angstrom]; create a tarball for others. • Conclude with a YouTube video featuring the tool and explaining the basic functionality and usage of the analyser • Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant. Provide references such as professors who know your work if you like. Please feel encouraged to visit our IRC channels, #beagle and #beagle-gsoc on irc.freenode.net, and ask for help. I come from a background in C programming in embedded systems with microcontrollers like the STM32, AVR and the 8051. My methodology of teaching myself the various concepts of embedded systems, programming, and electronics has been to set myself certain goals every summer or winter break (for example, to learn about UI design, build a system with an LCD and few buttons, and then write code to design a simple user interface), and then achieve and exceed them. I have learnt most of the concepts on my own, and have debugged circuits and code without any outside support, and with limited equipment. I have had a very early start in the world of computer programming and electronics stuff, and that makes it advantageous as I can learn new things and master them quickly enough. My profile can be seen here. This summer break at school, [from May to mid-July] I will be completely free of any academic or work commitments. Hence I will be able to dedicate ample time each day (8- 10 hours) for the code. I am looking forward to channelize my time and the resources at my disposal to build something carrying immense value to the entire BeagleBoard community I have a BeagleBone Black, and I have been setting up the testing environment, and also got leads as I have previously mentioned (being able to run PRU-based applications, setting up and building libsigrok on the BBB). In the coming 2-3 weeks, I expect to be thorough with all the technologies and libraries that will be used to implement the tool; thus allowing me to focus on the implementation and integration during the GSoC period. This is indeed a challenging project, and the deadlines are quite stringent. I intend to meet all the deadlines and complete things by the assigned date so that things are able to go on smoothly. You and the community • If your project is successfully completed, what will its impact be on the BeagleBoard.org community? Consider who will use it and how it will save them effort. Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers received from feedback of members of the BeagleBoard.org community, at least one of whom should be a BeagleBoard.org GSoC mentor. Provide email contact information for non-GSoC mentors. My answer: The goal of the project (as a whole, beyond the GSoC timeline) is to become a tool bundled in the default system image on every BeagleBone Black. Implementation of this tool will add significant value to the BeagleBone Black, which now apart from being used in projects will be able be used as a debugging tool for intermediate users and a learning tool for beginners. Users will be able to use it for debugging their circuits right away after installing our software on it. Successful completion of this project will also attract more users to the BeagleBone Black. Beginners may use our project to visualise actual hardware communication between the BBB and the peripherals they are using by connecting their SPI, I2C or other ports to the PRU inputs of the BeagleBone Black. With inputs from Hunyue Yau [ds2] : The value of such a tool will be to help create a self-contained educational lab that will go from blinking an LED to more complex protocols like SPI/I2C and beyond. Also, the project can provide remote debugging capabilities due to the onboard networking features of the BBB. Other low cost logic analyzers built around FPGAs would require an additional processor to reduce the data into a network capable format. The BeagleBone Black can leverage its networking and processing capabilities, combined with the two 200 MHz PRUs to provide a network-enabled instrumentation platform at the same price point as a competing FPGA based product. With inputs from Pantelis Antoniou [panto]: Upon successful conclusion of this project the community will also have access to an established and documented method of using the PRU (or any kind of heterogenous) architecture on a very high speed capture problem. With inputs from Jason Kridner [jkridner]: If completed, such a system would enable BeagleBone developers to learn all about the signals they are generating, without needing to pay for any extra equipment. Visualization is an absolutely critical tool for building an intuitive understanding and this project has a tremendous potential for enabling both new and experienced users to visualize signals in an easier way than ever. • What will you do if you get stuck on your project and your mentor isn't around? Since the project involves multiple aspects, and it is unlikely that I would get stuck on all aspects at once, I will focus my time building the other parts of the project, or looking for possible improvements or touch-ups on previously written code when I get stuck on one of the aspects while I wait for my mentor to be back. As I have mentioned previously, I have spent my summer and winter breaks doing projects on topics I found interesting, but had little knowledge to start with, and by experimentation and reading through the available documentation, I have been able to understand the concepts better, sort out problems, debug, and successfully able to run my applications with almost nil external support. Hence I feel I will be able to handle things and report progress in the best possible way till my mentor is back. Miscellaneous • Please submit to the beagleboard-gsoc mailing list a statically-linked ARM Linux "hello world" style executable that prints out your name and the date. Please keep it under 1MB. Provide a link here to that executable as archived on the mailing list and provide any instructions required for invoking it. You are welcome to test it on an ARM QEMU environment. Please feel free to visit our IRC channels, #beagle and #beagle-gsoc on irc.freenode.net, and ask for help. Done. Please see the thread on the list, and pull request #23 on github.com/jkridner/gsocapplication . • Is there anything else we should have asked you? • None in particular.