Okay, here is the abstract and bulleted summary for the provided transcript, following your example format.
Abstract:
This webinar showcases Capstone projects and updates on Ada and Spark technologies within the GNAT Academic Program (GAP). Fabien presents updates on Alire, GNAT Studio, VS Code plugin, and GNAT FSF 14, highlighting new language extensions like fixed array lower bounds, dot calls for untagged types, string interpolation, generic formal function defaults, local declarations, case pattern matching, and enhanced exit when constructs.
Student teams present five distinct projects: an autonomous deminer robot built on STM32 leveraging Ada drivers and concurrency; an open-source bare metal bootloader for STM32 focusing on Ada's strengths in low-level programming, host communication via UART, and flash operations; an embedded UI library inspired by Flexbox for STM32 touchscreens utilizing Ada's multi-way trees and tasking; an Ada-exclusive machine learning engine implementing core neural network concepts, activation functions, loss calculation, and optimizers, demonstrating Ada's capability despite low-level complexity; and a bare metal implementation of the lightweight Min communication protocol for microcontrollers, providing a reliable byte-oriented data exchange mechanism.
Olivier Le Gall concludes with an overview of GAP's strategy, focusing on practical, applied projects, recommending specific development boards, developing onboarding resources like Alire crates and a concise Ada guide, fostering collaborations with universities and industry-relevant technologies (like RISC-V, Leon, SpaceWire), and sponsoring student competitions and projects to promote Ada adoption and build a pool of curated educational resources.
Exploring Ada and Spark: GNAT Academic Program Capstones and Updates
1:01 Webinar Introduction: The session explores exciting Capstone projects and updates on Ada and Spark for the academic community, hosted by Olivier Le Gall, Adacore's GAP coordinator and Capstone projects mentor. The event is recorded.
2:50 Alire 2.0 Updates: Fabien details new features in Alire version 2, including the ability to easily install crates, a publishing assistant, enhanced search, shared builds for dependencies (improving compile performance), and on-demand index loading.
4:50 IDE Updates: Updates to development environments include a new GNAT Studio release with improved code navigation and Alire support, and a recent VS Code plugin version with better GPR file handling, test integration, and bug fixes.
5:39 GNAT FSF 14 Release: The GNAT FSF version 14 compiler is now available in the Alire index for Linux, Windows, and macOS (x86), with an ARM Mac version coming soon. A GNAT Pro build is also in development.
6:49 Ada Language Evolutions: Fabien highlights new experimental language features available in GNAT FSF 14 under the gnatx (stable) and gnatx0 (prototype) switches, encouraging discussion via a GitHub repository.
8:32 New Language Features (GNATx/GNATx0): Features include fixing lower bounds for array types using new syntax (e.g., (0..)); enabling dot calls for untagged types; supporting string interpolation with formatted literals (e.g., F"..."); allowing default implementations for generic formal functions (GNATx0, stabilizing in FSF 15); permitting local declarations without a declare block (GNATx0) to reduce variable scope; introducing case pattern matching (GNATx0) for records and value binding; and extending exit when to other constructs like return when, goto when, and exceptions.
14:42 Autonomous Deminer Robot Project: Joseph Bamba presents his Capstone project, an autonomous robot designed for demining based in Senegal's Casamance region, aiming to detect landmines and reduce human risk and cost.
22:13 Robot Hardware: The robot utilizes an STM32F4 Discovery board, recycled lithium batteries, DC motors, an L298N motor driver, a Sharp distance sensor, servo motors for a robotic arm, and a metal detector as the end effector.
26:41 Robot Software: The software is built in Ada, leveraging the Ada driver Library and a custom crate for the board, with an architecture comprising packages for position management, sonar sensing, scanning, and vehicle control, using periodic tasks for real-time operation.
33:17 Robot Conclusion & Future: Joseph demonstrates the robot's movement and scanning, thanks Adacore and his mentor for support, proves Ada is usable in Senegal, and plans future upgrades like improved navigation and remote control. Challenges included lack of Ada robotic examples and difficulty/cost of obtaining hardware in Senegal.
36:30 MCU Bootloader Project: Alan Everett and Xavier Zong from Penn State present their open-source bare metal bootloader written in Ada for the STM32F746G Discovery board, aiming to showcase Ada in a bare metal environment.
38:28 Bootloader Goals & Design: The project's goal is to provide a bootloader capable of handling the booting process for application code and performing microcontroller functions like erasing, flashing, and verifying via a command-line interface (CLI) over UART.
43:36 Bootloader Process: The bootloader runs if a user button is pressed on startup; it establishes communication with the host CLI, receives commands (verify, flash, erase), performs the operation on the internal flash memory, and reports the status back.
45:33 Bootloader Demo: The demo shows flashing and verifying application code on the STM32 board using the host CLI, including erasing sectors and byte-by-byte verification, proving functionality for managing application firmware.
51:03 Bootloader Lessons & Future: Lessons learned emphasize continuous testing, using debuggers, and fixing errors early. Future goals include utilizing DMA and CRC peripherals, and adding an onboard boot menu interface. The project is open source, with licensing TBD, and migration to other STM32 MCUs is expected to be straightforward with existing Ada drivers.
55:31 Reena Stack Project: Kian Kaserman, Mason, and Anthony present their project implementing a bare metal Recursive Internetwork Architecture (RINA) stack in Ada on the STM32F746G Discovery board, addressing criticisms of TCP/IP regarding efficiency, security, and complexity.
58:29 Reena Objectives: RINA treats networking as inter-process communication (IPC) with a single protocol and stackable, recursive Distributed IPC Facilities (DIFs). The project aimed to develop an Ada bare metal implementation, utilizing an Ada API layer to interface with an existing C RINA library (rlite) on a Linux host to enable communication between the host and the embedded board.
1:04:38 Reena UI & Demo: The STM32 board's UI displays network statistics and connection status. The demo shows configuring rlite on Linux, enrolling the embedded board onto the RINA network (with Wireshark showing Reena's ARP and CDAP messages), and transferring an image file from the Linux host to the STM32 board over the RINA stack, which is then displayed on the board's screen.
1:15:55 Reena Q&A: Questions touch on the recursive nature of RINA and the project's implementation of the bare metal stack and host interface. The project demonstrates RINA's potential and Ada's capability for complex networking stacks.
1:17:11 GNAT Academic Program (GAP) Update: Olivier provides an update on GAP activities, focusing on making Capstone projects fun, challenging, and impressive. He emphasizes applied projects, using Ada Driver Library, and leveraging tools like Alire.
1:20:33 GAP Onboarding & Boards: Gap prefers specific development boards (STM32F4/F7) for their affordability, availability, and existing Ada Driver Library support to reduce friction for new students. Custom Alire chains and minimalist board support crates have been created for these boards.
1:23:31 Ada for the Impatient: A new project is underway to create a concise guide to Ada, inspired by "Learn X in Y minutes," tailored for students who need to quickly learn enough Ada to work on a project.
1:25:18 Other GAP Projects: Two other University of Ottawa Capstone projects are highlighted: an RSA Public Key Crypto Lab (native, uses multi-threading and sockets) and a Realtime Embedded Lab (using STM32F429 and basic electronics for 5 real-time labs). These projects are being developed into sharable lab resources.
1:28:39 GAP Outreach & Sponsoring: GAP is expanding outreach, attending conferences (like FENAADC at Penn State, attracting industry interest from companies like Google) and making new contacts for Capstone collaborations. GAP also sponsors student competitions (CanSat France, Space Concordia Cubesat) to promote Ada adoption, although integrating Ada into existing large student projects can be challenging.
1:33:05 GAP Future Framing: Future goals include accelerating student onboarding, enhancing Capstone project relevance to student interests and industry (e.g., RISC-V, Leon processors, SpaceWire), coordinating around advanced open-source projects (like the Ora T ML library), and using Capstones as a formative boot camp for industry-relevant skills.
1:37:41 Ada Machine Learning Engine Project: Owen presents the ML Engine, the first implementation of machine learning functionality natively in Ada, addressing the lack of ML support for Ada users in industries trending towards AI.
1:40:38 ML Objectives & Techniques: The key objective was to develop the foundations to construct and train a neural network exclusively in Ada. Techniques included using Alire and AUnit for testing, implementing activation functions (ReLU), using libraries for tensors, implementing the softmax loss function, and creating a Stochastic Gradient Descent optimizer to achieve a spiral decision boundary classification.
1:47:40 ML Challenges & Architecture: A major challenge was the complexity of low-level operations in Ada compared to high-level languages like Python, requiring intricate data and memory manipulation. The project successfully implemented the core architecture including layers, activation, normalization/loss, and backpropagation.
1:52:07 ML Demo & Applications: A terminal demo shows the engine training through epochs to achieve an accuracy better than random guessing, proving its learning capability. Applications include contributing to mission-critical systems requiring Ada's safety/security guarantees, or serving as a low-level ML backend for other languages.
2:14:46 Min Protocol Implementation: Samuel (via recording) presents his bare metal implementation of the lightweight Min communication protocol in Ada for microcontrollers like the STM32F429, previously only available in C, Python, and Rust.
2:16:53 Min Protocol Structure: Min uses three layers: the Serial layer (platform-dependent, handles byte-by-byte transfer, e.g., UART), the Frame layer (packs/unpacks data with ID, length, payload, checksum, start/end bytes, byte stuffing), and an optional Transport layer (ensures reliable delivery, not implemented in this project).
2:21:31 Min Project Goals & Challenges: The goal was to provide Min as an easy-to-use Ada package, learn about protocols, and gain experience with Ada. Challenges included learning Ada, adhering to the existing protocol specification, and debugging on embedded systems with limited tools.
2:23:43 Min Implementation & Demo: Implementation involves defining serial communication handling and overriding Min's application handler (for received frames) and transmit byte procedure. A demo shows sending a "hello adacore" message from the MCU to a host application (using GNAT Serial Comm) and back, with the raw serial bytes shown.
2:31:23 Min Future Improvements: Future work includes adding the optional transport layer, finishing the Alire packaging, providing clear documentation, and optimizing the implementation based on further Ada experience.
2:34:03 Webinar Conclusion: Olivier thanks everyone involved β Adacore for supporting the program, the students for their hard work and professionalism in tackling challenging Ada projects, and all attendees. He encourages continued contact regarding GAP and Adacore activities.