HackMD
  • Prime
    Prime  Full-text search on all paid plans
    Search anywhere and reach everything in a Workspace with Prime plan.
    Got it
      • Create new note
      • Create a note from template
    • Prime  Full-text search on all paid plans
      Prime  Full-text search on all paid plans
      Search anywhere and reach everything in a Workspace with Prime plan.
      Got it
      • Sharing Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • More (Comment, Invitee)
      • Publishing
        Everyone on the web can find and read all notes of this public team.
        After the note is published, everyone on the web can find and read this note.
        See all published notes on profile page.
      • Commenting Enable
        Disabled Forbidden Owners Signed-in users Everyone
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Invitee
      • No invitee
      • Options
      • Versions and GitHub Sync
      • Transfer ownership
      • Delete this note
      • Template
      • Save as template
      • Insert from template
      • Export
      • Dropbox
      • Google Drive
      • Gist
      • Import
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
      • Download
      • Markdown
      • HTML
      • Raw HTML
    Menu Sharing Create Help
    Create Create new note Create a note from template
    Menu
    Options
    Versions and GitHub Sync Transfer ownership Delete this note
    Export
    Dropbox Google Drive Gist
    Import
    Dropbox Google Drive Gist Clipboard
    Download
    Markdown HTML Raw HTML
    Back
    Sharing
    Sharing Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Note Permission
    Read
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    Write
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    More (Comment, Invitee)
    Publishing
    Everyone on the web can find and read all notes of this public team.
    After the note is published, everyone on the web can find and read this note.
    See all published notes on profile page.
    More (Comment, Invitee)
    Commenting Enable
    Disabled Forbidden Owners Signed-in users Everyone
    Permission
    Owners
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Invitee
    No invitee
       owned this note    owned this note      
    Published Linked with GitHub
    Like BookmarkBookmarked
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # Oxidize `impl days` main document # Where https://oxidizeconf.com/oxidize-chat and the projects platforms ## Time Anytime you want to work. There will be an intro event at [10:00 UTC](https://everytimezone.com/s/28431c3b) on our youtube channel, where we present projects. This will be recorded. Florian Gilcher will be the host on Sunday and Monday! ## Projects ### GD32V + probe-rs = ❤️ **What?** Add support for GD32VF103 RISC-V chips in probe-rs **Why?** Tooling for GD32V chips is not perfect, usually a custom openocd fork is the only choiсe. We want to change this. **When?** 12:00-01:00 UTC on Sunday and Monday **Platform:** Matrix **Contact:** @disasm-ewg:matrix.org **Hardware requirements:** You will need a GD32V-based board (LonganNano, GD32VF103C-START or others) and a compatible probe (FTDI-based or CMSIS-DAP-based). More details: First we need to do either of both of the following: * implement support for FTDI-based adapters * implement support for JTAG interface of CMSIS-DAP adapters FTDI adapters are more common, but require more work to support them in probe-rs. CMSIS-DAP adapters are less common, but it's potentially possible to make one out of the BluePill board. probe-rs support for a compatible probe is one of the steps. The next step is to implement flash algorithm (or find one that is compatible) and fix issues with the GD32V debug interface. See also https://github.com/probe-rs/probe-rs/issues/189 **Current status:** FTDI support almost works (https://github.com/probe-rs/probe-rs/pull/313) ### ITM for probe-rs **What?** Finalize ITM support for probe-rs. Also implement ITM support for CMSIS-DAP and J-Link possibly. **Why?** ITM is a great way to trace your ARM cores activities and probe-rs is the perfect place to implement this! **When?** 12:00-01:00 UTC on Sunday and Monday **Platform:** Matrix **Contact:** @Yatekii:matrix.org, @adamgreig:matrix.org, @bcantril:unix.house **Current Status Document:** https://hackmd.io/YYt7eNJTQXubXm6DjeDCeg **Coordination Room:** Matrix Room #OC2020-ITM-probe-rs:chat.berline.rs ### Fixing various issues around probe-rs **What?** We have many open issues with proposed improvements but also small bug reports (https://github.com/probe-rs/probe-rs). Pick one that suits you best :) If you are still unsure, just come ask, we are happy to help you and get you started! **Why?** Having a bugfree library is key and we can all profit of it! **When?** 12:00-01:00 UTC on Sunday and Monday **Platform:** Matrix **Contact:** @Yatekii:matrix.org ### Adding docs to probe-rs **What?** The guides on https://probe.rs cound use some improvements. Also the rustdocs could use some more elaborate explanations of the various errors and function intricacies we have. While writing docs may not be very appealing, it's very vital and even if you are not into the project much yet, you can contribute your experiences to the guides :) Ferrous wrote an awesome troubleshoot guide for their workshops which could be used as a starting point for adding extended information on certain errors: https://github.com/ferrous-systems/embedded-trainings-2020/blob/main/embedded-workshop-book/src/troubleshoot-cargo-flash.md **Why?** Having a bugfree library is key and we can all profit of it! **When?** 12:00-01:00 UTC on Sunday and Monday **Platform:** Matrix **Contact:** @Yatekii:matrix.org ### Add Microchip (Atmel) EDBG and ATSAME support to probe-rs **What?** To enable probe-rs for the ATSAM line of MCUs, we need to add support for the Atmel Embedded Debugger (EDBG) that come with many of these boards. The debugger is based on CMSIS-DAP, but uses a non-standard report size as well as possibly other differences that need to be ironed out. We will also add target support for the ATSAMD5x and ATSAME5x as a start. **Why?** To enable probe-rs on even more targets. **When?** 10:00-16:00 UTC on Sunday **Platform?** Matrix **Contact:** @jgust:matrix.org #### Status @ 2020-06-19 15:30 SAMD51, SAME51, SAME53 and SAME54 targets were added. Probe-rs connects to the EDBG debugger successfully. `cargo-flash`, `probe-rs-cli reset` and `probe-rs-cli dump` all seem to work, while `probe-rs-cli info` fails. More testing and debugging before this can be sent as a PR but its a good start. The code can be found [here](https://github.com/probe-rs/probe-rs/pull/308). This was tested on a SAME54-XPro board. ### Embedded Rust for Hobbiests (Codename: Patina) **What?** Start the process for implementing some of the ideas in the slides in the link below **Why?** There seems to be some consense that this is a good idea. The first steps is reviewing what needs to be done and what organisation needs to be done for future work **When?** 00:00-17:00 UTC on Sunday & 07:00-17:00 UTC Monday **Platform:** Matrix ([Tristan's Speaker Chat](https://matrix.to/#/!QUPHrbBlIBMegNuBYh:chat.berline.rs?via=chat.berline.rs&via=matrix.org&via=andvision.se)) and Github **Contact:** * @tl8:matrix.org * @darneas:matrix.org (can also help you get started after 12:00 UTC) **Reference / Working Documents:** * Coordination Repo: https://github.com/tl8roy/patina * More details: https://docs.google.com/presentation/d/1XJdM1ZhFA2RbumnIgHLvUFZNUB2PGNtzoQEsGe5a-Q0/edit?usp=sharing ### Implement the LE Security Manager for [Rubble](https://github.com/jonas-schievink/rubble) (the pure-Rust BLE stack) **What?** Implement more parts of the LE Security Manager (tracked in issue [#36](https://github.com/jonas-schievink/rubble/issues/36)). **Why?** Rubble now has support for P-256 cryptography thanks to Tony's work on RustCrypto, so more progress on the LE Security Manager can be made. This will eventually allow pairing a Rubble device with another device, as well as securely exchanging messages between them. **When?** Until 20:00 UTC on Sunday, 9:00-20:00 UTC on Monday **Platform:** Matrix, GitHub **Contact:** @jschievink:matrix.org More details: - The Bluetooth Core Specification describes how the LE Security Manager work and is available here: https://www.bluetooth.com/specifications/bluetooth-core-specification/ - The existing stub implementation of the LE Security Manager is [here](https://github.com/jonas-schievink/rubble/blob/b040194c79b4ece318aa956aacdc79bc2e006dfa/rubble/src/security.rs). - Rubble currently supports nRF52 and nRF51 chips, so if you participated in one of the Workshops you already have hardware you can use. ### Implement Access Address generation for Rubble **What?** Access Addresses are created by a device that wants to initiate a connection. They need to follow specific requirements detailed in the spec and the corresponding issue, [#16](https://github.com/jonas-schievink/rubble/issues/16). **Why?** Rubble is currently not able to initiate a connection on its own, it is only a Peripheral-side stack. Fixing this issue is one of many things that need to be done to support this. **When?** Until 20:00 UTC on Sunday, 9:00-20:00 UTC on Monday **Platform:** Matrix, GitHub **Contact:** @jschievink:matrix.org ### Show of the effect of multiple optimization passes **What?** Generate diffs for the MIR after applying multiple optimization passes **Why?** Right now you can only generate the diff of a single pass or the state before/after a single pass, there's no way to autogenerate a diff between multiple passes **When?** 09-15 CET Monday **Platform:** Matrix and [zulip](https://rust-lang.zulipchat.com/#narrow/stream/189540-t-compiler.2Fwg-mir-opt/topic/hello/near/203783033) **Contact:** @oli-obk More details: * [How the MIR output is tested in Rust CI](https://github.com/rust-lang/rust/blob/master/src/test/mir-opt/README.md) This is done now: https://github.com/rust-lang/rust/pull/74715 ### Visualize the effect of optimization passes as a graphviz graph **What?** Generate a graphviz graph that contains red and green parts showing which basic blocks and edges were removed by certain optimizations and which ones were added **Why?** Sometimes MIR can get very complex and analyzing it in a textual manner just isn't that helpful **When?** 09-15 CET Monday **Platform:** Matrix and [zulip](https://rust-lang.zulipchat.com/#narrow/stream/189540-t-compiler.2Fwg-mir-opt/topic/hello/near/203783033) **Contact:** @oli-obk More details: Some flags for the rust compiler to generate graphs ``` -Z dump-mir-dataflow=val -- in addition to `.mir` files, create graphviz `.dot` files with dataflow results -Z dump-mir-graphviz=val -- in addition to `.mir` files, create graphviz `.dot` files -Z unpretty=val -- present the input source, unstable (and less-pretty) variants; `mir` (the MIR), or `mir-cfg` (graphviz formatted MIR) ``` ### no_std async-h1 **What?** port async-h1 to no_std environments **Why?** async HTTP support in environments without a heap is basically non-existant, async-h1 can change that **When?** 12:00-20:00 UTC on Sunday and Monday **Platform:** berlinrs matrix or https://discord.gg/JvZeVNe **Contact:** @skade More details: https://github.com/http-rs/async-h1/ https://discord.gg/JvZeVNe ### Improving onboarding for new users **What?** Improve documentation for new embedded rust users. **Why?** Right now, it seems to not be clear where a new user should start. The official documentation (the discovery book etc.) shows low level setup, but I'm of the opinion that one should try to use a HAL directly. **When?** 10:00-20:00 UTC on Sunday and Monday **Platform:** matrix **Contact:** @thezoq2 https://matrix.to/#/!TyTDZBLESDWANougNn:matrix.org?via=matrix.org More details: I think our first step should be to write a "discovery book" that directly jumps into using HALs. A book might be out of scope for 1.5 days, so I'll start off with a blog post. If someone else wants to join, we can be a bit more ambitious :). There are also a number of other issues that could be fixed: Updating awesome-embedded-rust to clean up old stuff and add new drivers etc. ([partially done](https://github.com/rust-embedded/awesome-embedded-rust/pull/288)) ### Neotron Have you heard of Monotron - the ARM microcontroller based, Rust-powered 1980s style home computer? Perhaps you saw the talks at RustFest Paris, Rust Belt Rust 2018, or RustConf 2019? Well Neotron is Monotron Mk2, and there's lots to do! The goal is a family of open-source PCBs which all run the same OS - the Neotron OS. This OS is pretty bare bones - think early versions of MS-DOS. The portability across boards is handled through the use of ARM Cortex-M4 and higher MCUs, and the Neotron BIOS. The Neotron BIOS is the hardware abstraction layer, and provides a C foreign-function-interface API for the OS to use - must like the IBM PC BIOS (and the CP/M BIOS) provides simple APIs for MS-DOS (and CP/M respectively) to use. Neotron lives at https://github.com/neotron-compute. The developers hang out in the Neotron chat room on Matrix (https://app.element.io/#/room/#Neotron:matrix.org) #### Availability I @thejpster (https://github.com/thejpster or @thejpster:matrix.org) will be around from 10am to 5pm British Summer Time (11:00 UTC to 18:00 UTC). #### What needs to be done? 1) We use an embedded FAT32/SD card library - https://github.com/rust-embedded-community/embedded-sdmmc-rs. This currently has support for basic embedded-hal blocking SPI interfaces, but that's it. I'd love to see a BlockDevice implementation for peripherals that drive a full 4-bit SD interface, like you get on an STM32. It might also be useful to think about how it might be improved to work in an async context, with an async embedded-HAL (if such a thing exists?). 2) USB Host support. There is good progress on USB device support, but it would be great if you could plug a USB keyboard or USB flash drive into your Neotron (or any other embedded Rust system). There are lots of good C examples around - some open source, some manufacturer proprietary. 3) Porting the BIOS. There are two BIOS implementations so far, in fairly early state (basic serial and/or video only). It might be interesting to see how much of the BIOS API you can implement for a board of your choice. See https://github.com/Neotron-Compute/Neotron-XXX-BIOS as a template, plus the implementations for the Neotron 32 (a TM4C123) and the Neotron 340ST (an STM32F7 Discovery). 4) There's a PC keyboard driver crate - https://github.com/rust-embedded-community/pc-keyboard. This doesn't handle the very lowest layer of communication with a keyboard (PS/2 or USB), instead it handles the scan-codes that keyboards generate and converts them to Unicode characters or key events. It supports QWERTY UK and US keyboards, and there's a PR for AZERTY keyboards, but it would be great to see some more. # Progress reports * [ITM Probe-rs / JLink SWO+ITM](https://hackmd.io/YYt7eNJTQXubXm6DjeDCeg?both) * [GD32V + probe-rs = ❤️](https://hackmd.io/brhn32aVRkaWK2sADCp_Rw) * Embedded Rust for Hobbiests [coordination repo](https://github.com/tl8roy/patina/issues) ## Progress report for the onboarding project. We started writing a [hal-discovery](https://hackmd.io/zeFhRHtYSxOzyB-F_sP91A) document, inspired by the Discovery book but using a HAL. So far, we show how to set up a project, get `cargo flash` running, and turning on an LED. We decided to write it for both the blue-pill and f3discovery boards, since it was the hardware we had on hand, and to highlight the differences and similarities that may be present between boards. We also ended up finding some issues in the documentation of both crates that we have addressed https://github.com/stm32-rs/stm32f1xx-hal/pull/249 and https://github.com/stm32-rs/stm32f3xx-hal/pull/117

    Import from clipboard

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lost their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template is not available.


    Upgrade

    All
    • All
    • Team
    No template found.

    Create custom template


    Upgrade

    Delete template

    Do you really want to delete this template?

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Tutorials

    Book Mode Tutorial

    Slide Mode Tutorial

    YAML Metadata

    Contacts

    Facebook

    Twitter

    Feedback

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions

    Versions and GitHub Sync

    Sign in to link this note to GitHub Learn more
    This note is not linked with GitHub Learn more
     
    Add badge Pull Push GitHub Link Settings
    Upgrade now

    Version named by    

    More Less
    • Edit
    • Delete

    Note content is identical to the latest version.
    Compare with
      Choose a version
      No search result
      Version not found

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub

        Please sign in to GitHub and install the HackMD app on your GitHub repo. Learn more

         Sign in to GitHub

        HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Available push count

        Upgrade

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Upgrade

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully