Weekly Progress Report Thread: Cape Compatibility

Hi,

This is a Week 0 report for GSoC2020 project Cape compatibility layer for BeagleBone Black and BeagleBone AI, my mentors for the project are Jason Kridner, Drew Fustini, Hunyue Yau and KumarAbhishek. I will publish all my weekly reports through this thread,

I have also created a blog website for progress tracking and for posting “how to” guides for my future self and for whoever find them informative https://lorforlinux.github.io/GSoC2020_BeagleBoard.org/

Accomplishments:

Resolutions to blockers:
N/A

On-going blockers:

  • Working of Touch controller code written in /bb.org-overlays/src/arm/BBAI_BB-BONE-LCD7-01-00A2.dts is not clear to me. The code is important for creating /bb.org-overlays/src/arm/BBAI_BB-BONE-LCD4-01-00A1.dts. Some discussion with Robert had been made here.

Plans for the next week:
Hopefully I’ll receive the hardware by tonight (30th May 2020). If that will be the case, I am sticking to my original timeline which you can see here. According to that I will try to accomplish these things June 8th (#Milestone 1):

  • Introductory YouTube video.
  • Flashing the boards with up to date Linux image and Testing user-led blink code :wink:
  • Running cape examples and user space examples on BeagleBone Black.
  • Update the blog website for a journal page.

If somehow I didn’t get the hardware in time I will try to accomplish these things by June 8th (#Milestone 1):

  • Introductory YouTube video.
  • Pull request for Servo Cape and LCD4-01 Cape DT overlay.
  • Update the blog website for a journal page.

Hi,

This is a Week 0 report for GSoC2020 project Cape compatibility layer for BeagleBone Black and BeagleBone AI, my mentors for the project are Jason Kridner, Drew Fustini, Hunyue Yau and KumarAbhishek. I will publish all my weekly reports through this thread,

Perfect. Thanks.

I have also created a blog website for progress tracking and for posting “how to” guides for my future self and for whoever find them informative https://lorforlinux.github.io/GSoC2020_BeagleBoard.org/

In addition to tracking there, please use strike-through’s on BeagleBoard/GSoC/2020 Projects - eLinux.org to indicate what’s completed. I plan to help you simplify them a little bit to make it clearer if they are accomplished or not. For example, you need to test to scratch off a milestone, but the milestone should be rolled up a bit to say something is working, rather than you performed the testing. I also removed milestones for reports, but added a milestone for the final video.

Accomplishments:

Note, I hope there isn’t confusion that these are not final. The objective is to create a strategy where ONE overlay per cape works on both BeagleBone Black and BeagleBone AI by using either shared symbols or sockets/connectors defined by the base DT of each board. To repeat, end users creating overlays for new capes they create need only create 1 overlay.

Great to see such early progress though!

In addition to tracking there, please use strike-through’s on https://elinux.org/BeagleBoard/GSoC/2020_Projects#Projects to indicate what’s completed. I plan to help you simplify them a little bit to make it clearer if they are accomplished or not. For example, you need to test to scratch off a milestone, but the milestone should be rolled up a bit to say something is working, rather than you performed the testing. I also removed milestones for reports, but added a milestone for the final video.

Okay thanks, I have updated the wiki by using strike-through on milestones (Intro YouTube video). Appreciate your changes :slight_smile:

Note, I hope there isn’t confusion that these are not final. The objective is to create a strategy where ONE overlay per cape works on both BeagleBone Black and BeagleBone AI by using either shared symbols or sockets/connectors defined by the base DT of each board. To repeat, end users creating overlays for new capes they create need only create 1 overlay.

Yes, It’s clear that I have to create a software layer that makes the already working BBB userspace code and DT overlays compatible with BBAI.

Great to see such early progress though!

Thank you so much for your encouragement :slight_smile:

Hello,

This is the Week 1 Progress Report of the project.

Accomplishments:

Resolutions to blockers:

  1. Thanks to ds2 and rcn-ee LCD4 blocker has been resolved. The schematic and am5729-beagleboneai.dts contained all the info required to resolve the issue.

On-going blockers*:*
None

Plans for the this week:
I received the boards and other tools today (8th June) still missing the barcode reader for beagle-tester testing and further development. Jason told me that Keyboard and command line can also be used, I will look into that and start beagle-tester development.

  1. Understand the inner working of beagle-tester and cleaning up it’s code.

  2. Creating new examples for beagle-tester.

  3. Running cape examples and user space examples on BeagleBone Black.

Hello,

This is the Week 2 Progress Report of the Cape Compatibility project.

Accomplishments:

  • Got these capes working on BBWL,
  • BBORG Servo cape
  • BBORG Relay cape
  • BBORG Load cape
  • 4D systems LCD4 cape- Partially tested BBORG Comms cape, CAN bus and 4-20mA are remained to be tested.
  • Updated am5729-beagleboneai.dts**.**
  • Got UART and I2C working on BBBWL through user space code.

Resolutions to blockers:
N/A

On-going blockers*:*
None

Plans for the this week:
I was unable to complete the beagle-tester work last week so I will try to complete that this week and will try to get these things to work with BBAI.

  • Virtual cape overlays to use buses on BBAI, atleast I2C and UART.
  • Using same BBBWL User space code on BBAI to test those buses.
  • Finalizing the compatibility of the header pins of the BBAI with the BBBWL.

In addition to tracking there, please use strike-through’s on https://elinux.org/BeagleBoard/GSoC/2020_Projects#Projects to indicate what’s completed. I plan to help you simplify them a little bit to make it clearer if they are accomplished or not. For example, you need to test to scratch off a milestone, but the milestone should be rolled up a bit to say something is working, rather than you performed the testing. I also removed milestones for reports, but added a milestone for the final video.

Okay thanks, I have updated the wiki by using strike-through on milestones (Intro YouTube video). Appreciate your changes :slight_smile:

Note, I hope there isn’t confusion that these are not final. The objective is to create a strategy where ONE overlay per cape works on both BeagleBone Black and BeagleBone AI by using either shared symbols or sockets/connectors defined by the base DT of each board. To repeat, end users creating overlays for new capes they create need only create 1 overlay.

Yes, It’s clear that I have to create a software layer that makes the already working BBB userspace code and DT overlays compatible with BBAI.

Just to make sure this point is clear:

The code run on Black doesn’t need to be the same as the existing code for Black. It is just that it must be possible to make one set of userspace software that works on both, without generating additional logic (such as if statements based on the board).

Hello,

This is the Week 3 Progress Report of the Cape Compatibility project.

Accomplishments:

Resolutions to blockers:
N/A

On-going blockers*:*

None

Plans for the this week:

I will not be focusing majorly on Beagle-tester repository for some time as it requires gradual updates and changes with the development of this project. I will give a small portion of my time for this repository every week. Last week I worked on virtual overlays for BBAI I2C but discarded that work. I switched to work on compatibility code for BBB and BBAI, bb.org-overlays/pull/180 and /BeagleBoard-DeviceTrees/pull/17 is the result of that work. This week I will work on these topics

  • Writing and Testing Virtual capes to provide /bone/i2c and /bone/spi on BBB and BBAI.
  • Making Servo, Relay and Load capes to work on BBAI and BBB using same DT overlay.
  • Further working on code refactoring in beagle-tester repository.

Hello,

This is the Week 4 Progress Report of the Cape Compatibility project.

Accomplishments:

Resolutions to blockers:
N/A

On-going blockers*:*

None

Plans for this week:

Writing cape overlays require some discussion with mentors over what method to choose for pin muxing, I will do that in today’s (6/30/20 - Tuesday) meeting. That is the remaining part from last week’s work. I will try to complete these things this week

  • Completing comms cape testing on BBBWL.

  • Making Servo, Relay and Load capes to work on BBAI and BBB using same DT overlay.

  • Testing libgpiod on BBAI and if everything works out in time, creating at least 5 examples.

  • Further working on code refactoring in beagle-tester repository.

Hello,

This is the Week 5 Progress Report of the Cape Compatibility project.

Accomplishments:

Resolutions to blockers:
N/A

On-going blockers*:*

None

Plans for this week:

The compatibility layer needs some updates to write overlay easily, I have started working on this and the initial work will be completed this week. The 4-20mA of comms cape is remained to be tested and the servo cape overlay requires some updated in the compatibility layer. I didn’t get much time to work on libgpiod, I will surely do some work this week.

  • Completing comms cape testing on BBBWL.

  • Making Servo Cape to work on BBAI and BBB using same DT overlay.

  • Testing libgpiod on BBAI and if everything works out in time, creating at least 5 examples.

  • Further working on code refactoring in beagle-tester repository.

Hello,

This is the Week 6 Progress Report of the Cape Compatibility project.

Accomplishments:

Resolutions to blockers:
N/A

On-going blockers*:*

None

Plans for this week:
comms cape and LCD cape are remained to get a compatible DT overlay. I will try to achieve these for now:

  • Making comms cape to work on BBB and BBAI using same DT overlay.

  • Creating TIMER and ADC nodes in compatibility layer code.

  • Updating previous compatible DT overlays for UART, I2C and SPI as compatibility code has been updated.

  • Writing compatible DT overlays to use new nodes on BBB and BBAI.

Hello,

This is the Week 7 Progress Report of the Cape Compatibility project.

Accomplishments:

Resolutions to blockers:
N/A

On-going blockers*:*

None

Plans for this week:
LCD cape is remained to get a compatible overlay, I will work on the LCD cape this week. I will also work on these tasks this week:

Hello,

This is the Week 8 Progress Report of the Cape Compatibility project.

Accomplishments:

Resolutions to blockers:
N/A

On-going blockers*:*

I am not able to make the LCD work on BBAI. the pwm-backlight driver is not working but, I am able to control the backlight through sysfs by excluding pwm-backlight driver from DT overlay. I am not sure about the working of dss interface as I majorly focused to make the backlight work. one of the compatible I use can be found here → https://pastebin.com/BEnyTtL0

Plans for this week:
I will try to make the LCD cape to work on BBAI but, I will majorly focus on these things:

Hello,

This is the Week 9 Progress Report of the Cape Compatibility project.

Accomplishments:

Resolutions to blockers:
None

On-going blockers*:*

I am not able to make the LCD work on BBAI. the pwm-backlight driver is not working but, I am able to control the backlight through sysfs by excluding pwm-backlight driver from DT overlay. I am not sure about the working of dss interface as I majorly focused to make the backlight work. one of the compatible I use can be found here → https://pastebin.com/BEnyTtL0

Plans for this week:
I will focus on beagle-tester and cape interface spec this week,

Hello,

This is the Week 10 Progress Report of the Cape Compatibility project.

Accomplishments:

  • Failed to rebase the compatibility layer with v5.4.x-ti-overlays branch. Some crucial things are missing in v5.4x kernel like, eMMC doesn’t work.

  • Create PR for the compatibility layer and overlays into v4.19.x-ti-overlays branch.

  • Updated cape interface spec page.

  • Thanks to RobertCNelson, the new uBoot patch for v4.19x allows us to,

    • Plug and play with capes just like we have in BBBWl/BBB.
    • Give the name of the overlay and uBoot will make sure to load the compatible overlay from /boot/dtb//overlays/ folder if available else the overlay will be loaded from /lib/firmware/. This simply allows us to write something like uboot_overlay_addr0=overlay.dtbo, while previously we had to write uboot_overlay_addr0=/lib/firmware/overlay.dtbo.

Resolutions to blockers:
None

On-going blockers*:*

I am not able to make the LCD work on BBAI. the pwm-backlight driver is not working but, I am able to control the backlight through sysfs by excluding pwm-backlight driver from DT overlay. I am not sure about the working of DSS interface as I majorly focused to make the backlight work. one of the compatible I use can be found here → https://pastebin.com/BEnyTtL0

Plans for this week:

Last week most of the time went into trying rebasing/merging compatibility layer code with v5.4.x-ti-overlays but nothing useful came out of it. I will focus on finalizing things for end-user this week and I will also try to accomplish these things.

  1. Creating eCAP, ADC, McASP, LCD, and eQEP nodes in the compatibility layer, I might not be able to create the overlays and test them due to lack of required hardware for some buses like eQEP.
  2. Testing beagle-tester on BBWL.
  3. Finalizing cape interface spec page.
  4. Creating new userspace examples in cloud9-examples repo.

Hello,

This is the Week 11 Progress Report of the Cape Compatibility project.

Accomplishments:

  • compatibility_update1 has been merged, The PR majorly includes new features and updated like,
    • Added nodes and compatible DT overlays for eQEP, McASP, ADC, and eCAP.- Updated old compatible overlays.

Resolutions to blockers:
After updating the board, pwm-backlight driver is working on BBAI now!

On-going blockers*:*

When I enable the dss on BBAI pwm-backlight stops working.

Plans for this week:

Finish up the compatibility layer code (compatibility_update2) and start working on the final video for the project. I will also try to achieve these things if time allows.

  1. Finalize the beagle-tester code and test it on BBBWL/BBB.
  2. Update the cape interface spec page.
  3. Create blog posts for compatibility code usage and Bone buses examples.

Hello,

This is the Week 12 Progress Report of the Cape Compatibility project.

Accomplishments:

  • compatibility_update2 has been merged, The PR majorly includes these major changes,
    • Removed *gpio_input_pin pinmux nodes for BBB and BBAI.
    • Added remaining PRU pinmux nodes (eCAP and UART).
    • Created bone_emmc label and compatible DT overlay.
    • New gpio_* macros for each Header pins.
    • Updated BBAI bone-pinmux-helper nodes.
    • Updated comments to point this repo (v4.19.x.ti-overlays).
    • Replace CTAG SW 16ch (for v4.4) with CTAG SW 8ch for (v4.14 and above).
    • Updated DT overlay names e.x. ECAP → eCAP.

Resolutions to blockers:

None

On-going blockers*:*

When I enable the dss on BBAI pwm-backlight stops working.

Plans for this week:

My first priority this week is to finalize the cape interface spec page and update the blog site. If I manage to get some time I will try to work on beagle tester and LCD as well.

Hello,

This is the Final Progress Report of the Cape Compatibility project. Almost all of the milestones have been achieved you can see the milestones list on ewiki for more info. For the documentation check out the official website of this project here. For using the compatibility layer you can download the latest firmware image.

Last week accomplishments:

Project accomplishments:

  1. Created header pin references for BBAI that matches with BBB. :white_check_mark:
  2. The same symlinks have been Assigned for Buses like I2C, SPI, UART, etc. :white_check_mark:
  3. Able to refactor code in Beagle-tester repo but, no new examples. :ballot_box_with_check:
  4. The same user-space examples now work with BBB and BBAI. :white_check_mark:
  5. The GPIO pin control has been tested using libgpiod. :white_check_mark:
  6. Created compatible DT overlays for the bone buses and the capes. :white_check_mark:
  7. With the new uBoot cape manager patch, BBAI is able to load DT overlays for capes during boot, just like we have for BBB. It is now even simpler than before. :white_check_mark:

Project Outcomes:

  • The same userspace code now works with both BeagleBone Black and BeagleBone AI, using the same references to the drivers for peripherals assigned to the same header pins.

  • The same DT overlay now works for both BBB and BBAI.

  • The uBoot cape manager is now able to load the DT overlays automatically during boot on BBAI just like we have on BBB.
    It was a fantastic experience working with BeagleBoard.org. I would like to thank my mentors, #beagle IRC community members especially zmatt and Robert C Nelson for helping me thought the project. I will keep contributing to the BealgeBoard.or code base whenever possible.

Final Video: https://www.youtube.com/watch?v=jxqSYCKa3K8
Project site: https://deepaklorkhatri.me/GSoC2020_BeagleBoard.org/
Project Proposal: https://elinux.org/BeagleBoard/GSoC/2020Proposal/DeepakKhatri
GSoC2020 Projects wiki: https://elinux.org/BeagleBoard/GSoC/2020_Projects#Cape_Compatibility

Regards,
Deepak Khatri
https://deepaklorkhatri.me