Difference between revisions of "BeagleBoard/GSoC 2021/Micropython for BeagleConnect Freedom"

From eLinux.org
Jump to: navigation, search
Line 46: Line 46:
 
* I will start with installing Zephyr SDK, getting Zephyr source code, and setting up development environment followed by configuring the  environment, for example by sourcing  zephyrproject/zephyr/zephyr-env.sh.<br>
 
* I will start with installing Zephyr SDK, getting Zephyr source code, and setting up development environment followed by configuring the  environment, for example by sourcing  zephyrproject/zephyr/zephyr-env.sh.<br>
 
* I will then clone the MicroPython repository into the home directory and build the Zephyr port for the BeagleConnect Freedom  board like this:<br>
 
* I will then clone the MicroPython repository into the home directory and build the Zephyr port for the BeagleConnect Freedom  board like this:<br>
   west build -b frdm_k64f ~/micropython/ports/zephyr<br>
+
   west build -b ~/micropython/ports/zephyr<br>
 
* Followed by this is I will flash it to the board and start a gdb debug session using:<br>
 
* Followed by this is I will flash it to the board and start a gdb debug session using:<br>
 
   west debug<br>
 
   west debug<br>
Line 57: Line 57:
 
'''Execution:'''<br>
 
'''Execution:'''<br>
 
The core code of MicroPython is shared amongst ports including CircuitPython. There is also Documentation released by Adafruit for [https://learn.adafruit.com/installing-circuitpython-on-samd21-boards/advanced-creating-your-own-port creating ones own port].<br>
 
The core code of MicroPython is shared amongst ports including CircuitPython. There is also Documentation released by Adafruit for [https://learn.adafruit.com/installing-circuitpython-on-samd21-boards/advanced-creating-your-own-port creating ones own port].<br>
*  
+
* The first step would be creating a UF2 Port by Cloning the [https://github.com/adafruit/uf2-samdx1 Adafruit uf2-samdx1] repository followed by creating a new folder in boards/ with the particular board name.I will also refer other board files as examples for how to fill out the board files.<br>
*  
+
*The next step will be cloning the Adafruit CircuitPython repository and creating a new folder with the board name.
*
+
For reference purposes i will constantly refer the Circuitpython Documentation and the forums for effective flow of the porting process.<br>
 +
'''I will test various pins and features of the board using  some hardware line  LEDs, resistors and EEPROM after each individual port.Pull requests will be generated for all the work done to the respective upstream repositories.'''<br>
 +
 
 
   
 
   
  

Revision as of 06:03, 10 April 2021


BeagleBoard/GSoC 2021/Micropython for BeagleConnect Freedom

{{#ev:youtube|Jl3sUq2WwcY||right|BeagleLogic}} About Student: new student
Mentors: Jason Kridner
Code: https://github.com/deebot/Beaglebone-BidirectionBus
Wiki: http://elinux.org/BeagleBoard/GSoC/ProposalTemplate
GSoC: GSoC entry

Status

This project is currently just a proposal.

Proposal

Please complete the requirements listed on the ideas page and fill out this template.

About you

IRC: Freenode IRC nickname
Github: Github account
School: School name
Country: Country
Primary language (We have mentors who speak multiple languages): Language
Typical work hours (We have mentors in various time zones): 8AM-5PM US Eastern
Previous GSoC participation: Tell us why you want to participate in GSoC here. Also, provide list of URLs for any previous GSoC participation with any organizations.

About your project

Project name: Micropython for BeagleConnect Freedom

Description

Introduction:
BeagleConnect is a revolutionary technology which eliminates low-level software development for IoT and IIoT applications,such as building automation, factory automation, and home automation.What sets it apart is that it eliminates the need of relying on software libraries enabling it to be used for interfacing a greater number of sensors, actuators and indicators for communicating over various networks compared to other conventional solutions.This can be achieved since it is built with fully open source software with submissions to mainline Linux and Zephyr repositories to aide in support and porting.
The BeagleConnect Freedom is based on the TI CC1352 and is the first available BeagleConnect solution which runs the Zephyr RTOS and has mikroBUS ports along with BLE and Sub-GHz radios on it.The BeagleConnect has a few technologies at the core namely IPv6 (via 6LoWPAN),Zephyr support for IEEE 802.15.4 and Greybus from Project Ara.
The goal of this project is to port Micropython and Circuitpython support along with GPIO, I2C, SPI, PWM and ADC drivers support in Micropython for the BeagleConnect solution.After the porting is completed and the drivers have been inculcated,the practicality will be thoroughly tested with the help of MikroElektronika click boards of each respective protocol and documented on my blog.
Project Deliverables:
1)Porting Micropython
MicroPython is a completely free and open source software that is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.A few of its salient features that will be advantageous for the BeagleConnect include:

  • It provides an interactive prompt (the REPL) to execute commands immediately, along with the ability to run and import scripts from the built-in filesystem. The REPL has history, tab completion, auto-indent and paste mode for a great user experience.
  • Highly configurable due to many compile-time configuration options
  • Code coverage at 98.4% for the core and at 96.3% for the core plus extended modules

Execution:
There is ample of documentation related to porting Micropython to the Zephyr RTOS Running on Beagleconnect. The most comprehensive guide can be found in the MicroPython port to Zephyr RTOS repository.

  • I will start with installing Zephyr SDK, getting Zephyr source code, and setting up development environment followed by configuring the environment, for example by sourcing zephyrproject/zephyr/zephyr-env.sh.
  • I will then clone the MicroPython repository into the home directory and build the Zephyr port for the BeagleConnect Freedom board like this:
 west build -b ~/micropython/ports/zephyr
  • Followed by this is I will flash it to the board and start a gdb debug session using:
 west debug

If I find any difficulty while navigating through I will rely on the Micropython repository and the Micropython forum page.
2)Porting Circuitpython:
CircuitPython is a programming language designed to simplify experimenting and learning to program on low-cost microcontroller boards.It is majorly built for Adafruit devices and has an active community base.CircuitPython is designed with education in mind. It's easy to start learning how to program and the user gets immediate feedback from the board.This will enable even a novice user to take complete advantage of the BeagleConnect Freedom device.A few of its salient features that will be advantageous for the BeagleConnect include:

  • The serial console and REPL allow for live feedback from your code and interactive programming
  • The internal storage for CircuitPython makes it great for data-logging, playing audio clips, and otherwise interacting with files.
  • There is no compiling, no downloading and no uploading needed due to which it runs immediately just after creating a file, editing the code and saving the file.

Execution:
The core code of MicroPython is shared amongst ports including CircuitPython. There is also Documentation released by Adafruit for creating ones own port.

  • The first step would be creating a UF2 Port by Cloning the Adafruit uf2-samdx1 repository followed by creating a new folder in boards/ with the particular board name.I will also refer other board files as examples for how to fill out the board files.
  • The next step will be cloning the Adafruit CircuitPython repository and creating a new folder with the board name.

For reference purposes i will constantly refer the Circuitpython Documentation and the forums for effective flow of the porting process.
I will test various pins and features of the board using some hardware line LEDs, resistors and EEPROM after each individual port.Pull requests will be generated for all the work done to the respective upstream repositories.






Timeline

Provide a development timeline with a milestone each of the 11 weeks and any pre-work. (A realistic timeline is critical to our selection process.)

Mar 29 Applications open, Students register with GSoC, work on proposal with mentors
Apr 13 Proposal complete, Submitted to https://summerofcode.withgoogle.com
May 17 Proposal accepted or rejected
Jun 07 Pre-work complete, Coding officially begins!
Jun 17 Milestone #1, Introductory YouTube video
June 24 Milestone #2
June 30 Milestone #3
July 12 18:00 UTC Milestone #4, Mentors and students can begin submitting Phase 1 evaluations
July 16 18:00 UTC Phase 1 Evaluation deadline
July 23 Milestone #5
July 30 Milestone #6
Aug 06 Milestone #7
August 10 Milestone #8, Completion YouTube video
August 16 - 26 18:00 UTC Final week: Students submit their final work product and their final mentor evaluation
August 23 - 30 18:00 UTC Mentors submit final student evaluations

Experience and approach

In 5-15 sentences, convince us you will be able to successfully complete your project in the timeline you have described.

Contingency

What will you do if you get stuck on your project and your mentor isn’t around?

Benefit

If successfully completed, what will its impact be on the BeagleBoard.org community? Include quotes from BeagleBoard.org community members who can be found on http://beagleboard.org/discuss and http://bbb.io/gsocchat.

Misc

Please complete the requirements listed on the ideas page. Provide link to pull request.

Suggestions

Is there anything else we should have asked you?