docs: a step-by-step first program on EmbSim's micro:bit board
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 82/100
- Issue type
- Documentation
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- c, markdown
- Domain
- documentation
Research direction
Read the Cortex-M3 walkthrough in docs/manual/getting-started.md, the board table, and tests/harness/thumb-m0/boot.c and io.c; build the toolchain and run the documented program with embsim --board microbit --stats. Capture the commands and output as printed, including the librt.a link step for __aeabi_uidivmod, and explain the ARMv6-M instruction set difference. Finish when a fresh clone can follow the walkthrough and make embdoc && ./embdoc check passes.
Written by the indexing model from the issue text.
Description
Context. Getting started walks through a first program on a Cortex-M3, step by step. The roadmap asks for a getting-started page for each EmbSim board. The BBC micro:bit (a Cortex-M0) is a good next one. Its row in the boards table already gives the target (thumbv6m-none-eabi), the harness (tests/harness/thumb-m0) and the link flags (-e reset -Ttext 0x0 -Tdata 0x20000000), but there is no walkthrough.
Where.
docs/manual/getting-started.md: the "Cortex-M3, step by step" section is the model, and the board table is around line 491. Add a "micro:bit (Cortex-M0), step by step" section next to it, or a page underdocs/manual/linked from there; ask in the comments if unsure which.tests/harness/thumb-m0/: itsboot.candio.care the start-up code and the output functions.embsim --board microbit: runs the image.
Steps.
- Write the same small program as the Cortex-M3 section, then compile, link and run it with
embcc,embldandembsim --board microbit --stats. - One difference you will meet: ARMv6-M has no divide instruction, so the harness's
io.ccalls__aeabi_uidivmod, and the link fails withundefined symbol '__aeabi_uidivmod'until the compiler runtime is linked. Build it withmake rt-embedded(orsh tools/build-rt.sh thumbv6m-none-eabi build/libc/thumbv6m-none-eabifor this target alone), putbuild/libc/thumbv6m-none-eabi/librt.alast on theembldline, and explain this in the section. - Paste the commands and the output exactly as printed. Do not edit the output.
- Say what else differs from the Cortex-M3 version: ARMv6-M's smaller, mostly 16-bit instruction set.
- Run
make embdoc && ./embdoc check.
Done when a reader with a fresh clone can follow the section from make embcc embld embsim to the program's output on EmbSim's micro:bit, the output shown is the real one, and ./embdoc check passes.
Before you start: the contributor's guide has the rules. A new test counts only after it has failed against the code before your change, and a commit subject reads area: summary. Questions are welcome in the comments or in Discussions.
- Dominant language
- C
- Stars
- 1
- Forks
- 2
- Avg merge
- 20h 55m
- Merged PRs (30d)
- 73
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from EmbLinkOs/EmbCC
-
avr: errno does not link: __errno_location is not in the C libraryPossibly taken @Firat17aze claimed this today. Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 50/100
Maintainers usually reply within 1 day
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
SPIDevice selects an active-high device as soon as it is createdPossibly taken @mikeysklar claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
adafruit/circuitpython#11869 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
gnif/LookingGlass#1352 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100