docs: a step-by-step first program on EmbSim's micro:bit board

Ouverte
#195 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
82/100
Type d'issue
Documentation
Clarté
Clairement spécifiée
Activité
Active
Stack technique
c, markdown
Domaine
documentation

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

documentation good first issue

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 under docs/manual/ linked from there; ask in the comments if unsure which.
  • tests/harness/thumb-m0/: its boot.c and io.c are the start-up code and the output functions.
  • embsim --board microbit: runs the image.

Steps.

  1. Write the same small program as the Cortex-M3 section, then compile, link and run it with embcc, embld and embsim --board microbit --stats.
  2. One difference you will meet: ARMv6-M has no divide instruction, so the harness's io.c calls __aeabi_uidivmod, and the link fails with undefined symbol '__aeabi_uidivmod' until the compiler runtime is linked. Build it with make rt-embedded (or sh tools/build-rt.sh thumbv6m-none-eabi build/libc/thumbv6m-none-eabi for this target alone), put build/libc/thumbv6m-none-eabi/librt.a last on the embld line, and explain this in the section.
  3. Paste the commands and the output exactly as printed. Do not edit the output.
  4. Say what else differs from the Cortex-M3 version: ARMv6-M's smaller, mostly 16-bit instruction set.
  5. 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.

Langage dominant
C
Étoiles
1
Forks
2
Merge moyen
20 h 55 min
PR mergées (30 j)
73

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de EmbLinkOs/EmbCC

Toutes les issues de EmbLinkOs/EmbCC

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.