{"id":18676149,"url":"https://github.com/greatscottgadgets/saturn-v","last_synced_at":"2025-04-12T02:12:29.606Z","repository":{"id":45591829,"uuid":"337082437","full_name":"greatscottgadgets/saturn-v","owner":"greatscottgadgets","description":"DFU bootloader for SAMD11 and SAMD21 microcontrollers","archived":false,"fork":false,"pushed_at":"2024-06-27T12:55:16.000Z","size":984,"stargazers_count":21,"open_issues_count":3,"forks_count":11,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-08T07:42:49.187Z","etag":null,"topics":["bootloader","dfu"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greatscottgadgets.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-08T13:19:26.000Z","updated_at":"2025-03-20T10:29:32.000Z","dependencies_parsed_at":"2023-10-03T21:53:13.791Z","dependency_job_id":"a5f00d97-ca82-419f-b5a3-ae631174da6f","html_url":"https://github.com/greatscottgadgets/saturn-v","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greatscottgadgets%2Fsaturn-v","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greatscottgadgets%2Fsaturn-v/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greatscottgadgets%2Fsaturn-v/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greatscottgadgets%2Fsaturn-v/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greatscottgadgets","download_url":"https://codeload.github.com/greatscottgadgets/saturn-v/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248199247,"owners_count":21063641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootloader","dfu"],"created_at":"2024-11-07T09:27:53.774Z","updated_at":"2025-04-12T02:12:29.582Z","avatar_url":"https://github.com/greatscottgadgets.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Saturn-V\n\n## A DFU Bootloader\n_for [Cynthion](https://greatscottgadgets.com/cynthion/) and similar SAMD11 and SAMD21 boards_\n\nBased on [opendime/DAFU/](https://github.com/opendime/) and [t2-firmware/boot/](https://github.com/tessel/t2-firmware).\n\nCompatible with [DFU Utils](http://dfu-util.sourceforge.net/) and [pyfwup](http://github.com/usb-tools/pyfwup).\n\n## Background\n\nSaturn-V is the Device Firmware Upgrade (DFU) bootloader for Cynthion. It is used to load [Apollo](https://github.com/greatscottgadgets/apollo) firmware over USB onto Cynthion's on-board debugger. Alternatively it may be used as a bootloader for other devices featuring a SAMD11 or SAMD21 microcontroller.\n\nSaturn-V uses only 2 KiB of flash memory, leaving plenty of space for application firmware. Space optimization in Saturn-V was achieved using some of the tricks in [SAMDx1-USB-DFU-Bootloader](https://github.com/majbthrd/SAMDx1-USB-DFU-Bootloader) which is even smaller at 1 KiB but lacks features such as [Microsoft-compatible descriptors](https://github.com/pbatard/libwdi/wiki/WCID-Devices).\n\n## Use\n\nTo invoke Saturn-V on Cynthion, hold down the PROGRAM button while connecting power or while pressing and releasing the RESET button. LED C will blink, indicating that Saturn-V is running. In this mode you can update Apollo with Apollo's `make dfu` command or use `dfu-util` or another DFU utility.\n\n## Building\n\nNormally Saturn-V needs to be installed only once on a newly assembled board.\n\nTo compile for the latest Cynthion hardware revision, type:\n\n```\n$ cd saturn-v\n$ make\n```\n\nAlternatively, use variables to specify the board and/or hardware revision:\n\n```\n$ cd saturn-v\n$ make BOARD=cynthion BOARD_REVISION_MAJOR=1 BOARD_REVISION_MINOR=3\n```\n\nIf you're not using the `arm-none-eabi-` toolchain, you'll need to specify your compiler prefix using the `CROSS` variable.\n\nOnce the bootloader has been built, use an SWD programmer to load the `bootloader.elf` file, or program `bootloader.bin` to the start of flash (address `0x00000000`). If you're using the Black Magic Probe, this might look like:\n\n```\n$ arm-none-eabi-gdb -nx --batch \\\n    -ex 'target extended-remote /dev/ttyACM0' \\\n    -ex 'monitor swdp_scan' \\\n    -ex 'attach 1' \\\n    -ex 'monitor unlock_bootprot' \\\n    -ex 'load' \\\n    -ex 'monitor lock_bootprot 4' \\\n    -ex 'kill' \\\n    bootloader.elf\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreatscottgadgets%2Fsaturn-v","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgreatscottgadgets%2Fsaturn-v","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreatscottgadgets%2Fsaturn-v/lists"}