{"id":19795115,"url":"https://github.com/embeddedenterprises/samd10-uart-bootloader","last_synced_at":"2025-09-14T04:36:15.071Z","repository":{"id":97398480,"uuid":"128679332","full_name":"EmbeddedEnterprises/samd10-uart-bootloader","owner":"EmbeddedEnterprises","description":"UART bootloader for SAMD10 series","archived":false,"fork":false,"pushed_at":"2018-04-08T20:54:00.000Z","size":218,"stargazers_count":13,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-19T10:51:09.482Z","etag":null,"topics":["arm","atmel-sam","atmel-sam-family","bootloader","c","cortex","cortex-m","cortex-m0","cortex-m0plus","embedded","uart","uart-protocol"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EmbeddedEnterprises.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2018-04-08T20:29:08.000Z","updated_at":"2024-08-28T19:25:20.000Z","dependencies_parsed_at":"2023-03-10T19:00:38.093Z","dependency_job_id":null,"html_url":"https://github.com/EmbeddedEnterprises/samd10-uart-bootloader","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EmbeddedEnterprises/samd10-uart-bootloader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmbeddedEnterprises%2Fsamd10-uart-bootloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmbeddedEnterprises%2Fsamd10-uart-bootloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmbeddedEnterprises%2Fsamd10-uart-bootloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmbeddedEnterprises%2Fsamd10-uart-bootloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EmbeddedEnterprises","download_url":"https://codeload.github.com/EmbeddedEnterprises/samd10-uart-bootloader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmbeddedEnterprises%2Fsamd10-uart-bootloader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275062952,"owners_count":25398886,"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","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["arm","atmel-sam","atmel-sam-family","bootloader","c","cortex","cortex-m","cortex-m0","cortex-m0plus","embedded","uart","uart-protocol"],"created_at":"2024-11-12T07:15:28.631Z","updated_at":"2025-09-14T04:36:15.058Z","avatar_url":"https://github.com/EmbeddedEnterprises.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SAMD10 UART Bootloader\n\nThis project contains a simple uart based bootloader which can be used as a\nstarting point for further experiments or dropped into production right away.\n\nThe bootloader is designed to allow easy in-system updates for SAMD10C/D MCUs.\n\n## Usage\n\nUsing this bootloader is simple:\n- Create your firmware, link it with the bootloader-variant of the linker script. (can be found [here](https://github.com/EmbeddedEnterprises/samd10-uart-bootloader/blob/master/linker/samd10x14-bootloader.ld))\n- Upload the bootloader to your device using SWD.\n- When the bootloader detects that no firmware is programmed, it will wait for a firmware to be uploaded.\n- Upload your firmware using the `upload.py` tool.\n\n**Note that your user-firmware has to include a function to enter the bootloader, one is provided [here](https://github.com/EmbeddedEnterprises/samd10-uart-bootloader/blob/master/example/reboot.c)**\n\nHints:\n- The bootloader requires 16 bytes of memory at the beginning of the memory address space.\n- If you write a specific value (**0xDEADBEEF**) to the first 16 bytes and issue an\n`NVIC_SystemReset()`, the bootloader will wait for a new firmware to be uploaded.\n- Currently, there is no timeout implemented, which means if you are within the\nbootloader it won't exit automatically.\n- `upload.py` has lots of options, especially a strict verification you won't overwrite your bootloader.\n- You are able to use interrupts in your user firmware, as the bootloader will relocate the interrupt vector table accordingly.\n\n## Architecture\n\nThe source code can be found in main.c, it is based on the awesome\n[mcu-starter-projects](https://github.com/ataradov/mcu-starter-projects) by Alex Taradov.\n\nYou can compile the project without any IDE installed, you will need arm-none-eabi-gcc and make.\nIf you have anything in place, just type `make` and you're done.\n\nThe provided binaries are built with GCC 7.3, however older versions should be fine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fembeddedenterprises%2Fsamd10-uart-bootloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fembeddedenterprises%2Fsamd10-uart-bootloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fembeddedenterprises%2Fsamd10-uart-bootloader/lists"}