mirror of
https://github.com/nkbai/book.git
synced 2026-09-05 22:14:54 +08:00
Merge #174
174: Small text changes r=therealprof a=Niederb Some small changes I did while reading. Feel fee to incorporate what you like and discard the rest. Co-authored-by: Thomas Niederberger <thomas@niederb.ch>
This commit is contained in:
@@ -18,7 +18,7 @@ What does this board contain?
|
||||
|
||||
- 48 KiB of RAM.
|
||||
|
||||
- Many integrated peripherals such as timers, I2C, SPI and USART.
|
||||
- A variety of integrated peripherals such as timers, I2C, SPI and USART.
|
||||
|
||||
- General purpose Input Output (GPIO) and other types of pins accessible through the two rows of headers along side the board.
|
||||
|
||||
@@ -34,6 +34,6 @@ What does this board contain?
|
||||
|
||||
- A second microcontroller: a [STM32F103](https://www.st.com/en/microcontrollers/stm32f103cb.html). This microcontroller is actually part of an on-board programmer / debugger and is connected to the USB port named "USB ST-LINK".
|
||||
|
||||
For a more detailed features list and further specification of the board take a look at [STMicroelectronics](https://www.st.com/en/evaluation-tools/stm32f3discovery.html) website.
|
||||
For a more detailed list of features and further specifications of the board take a look at the [STMicroelectronics](https://www.st.com/en/evaluation-tools/stm32f3discovery.html) website.
|
||||
|
||||
A word of warning: be careful if you want to apply external signals to the board. The microcontroller STM32F303VCT6 pins take a nominal voltage of 3.3 volts. For further information consult the [6.2 Absolute maximum ratings section in the manual](https://www.st.com/resource/en/datasheet/stm32f303vc.pdf)
|
||||
A word of caution: be careful if you want to apply external signals to the board. The microcontroller STM32F303VCT6 pins take a nominal voltage of 3.3 volts. For further information consult the [6.2 Absolute maximum ratings section in the manual](https://www.st.com/resource/en/datasheet/stm32f303vc.pdf)
|
||||
|
||||
@@ -4,7 +4,7 @@ Welcome to The Embedded Rust Book: An introductory book about using the Rust
|
||||
Programming Language on "Bare Metal" embedded systems, such as Microcontrollers.
|
||||
|
||||
## Who Embedded Rust is For
|
||||
Embedded Rust is for everyone who wants to do embedded programming backed by the higher-level concepts and safety guarantees the Rust language provides.
|
||||
Embedded Rust is for everyone who wants to do embedded programming while taking advantage of the higher-level concepts and safety guarantees the Rust language provides.
|
||||
(See also [Who Rust Is For](https://doc.rust-lang.org/book/2018-edition/ch00-00-introduction.html))
|
||||
|
||||
## Scope
|
||||
@@ -23,16 +23,16 @@ The goals of this book are:
|
||||
|
||||
This book tries to be as general as possible but to make things easier for both
|
||||
the readers and the writers it uses the ARM Cortex-M architecture in all its
|
||||
examples. However, the book assumes that the reader is not familiar with this
|
||||
examples. However, the book doesn't assume that the reader is familiar with this
|
||||
particular architecture and explains details particular to this architecture
|
||||
where required.
|
||||
|
||||
## Who This Book is For
|
||||
This book caters towards people with either some embedded background or some Rust background, however we assume
|
||||
This book caters towards people with either some embedded background or some Rust background, however we believe
|
||||
everybody curious about embedded Rust programming can get something out of this book. For those without any prior knowledge
|
||||
we suggest you read the "Assumptions and Prerequisites" section and catch up on missing knowledge to get more out of the book
|
||||
and improve your reading experience. You can check out the "Other Resources" section to find resources on topics
|
||||
you want to catch up on.
|
||||
you might want to catch up on.
|
||||
|
||||
### Assumptions and Prerequisites
|
||||
|
||||
@@ -72,7 +72,7 @@ not dig into details on a topic, revisiting the topic in a later chapter.
|
||||
This book will be using the [STM32F3DISCOVERY] development board from
|
||||
STMicroelectronics for the majority of the examples contained within. This board
|
||||
is based on the ARM Cortex-M architecture, and while basic functionality is
|
||||
common across most CPUs based on this architecture, peripherals and other
|
||||
the same across most CPUs based on this architecture, peripherals and other
|
||||
implementation details of Microcontrollers are different between different
|
||||
vendors, and often even different between Microcontroller families from the same
|
||||
vendor.
|
||||
|
||||
@@ -11,7 +11,7 @@ There are two general Embedded Programming classifications:
|
||||
|
||||
## Hosted Environments
|
||||
These kinds of environments are close to a normal PC environment.
|
||||
What this means is you are provided with a System Interface [E.G. POSIX](https://en.wikipedia.org/wiki/POSIX)
|
||||
What this means is that you are provided with a System Interface [E.G. POSIX](https://en.wikipedia.org/wiki/POSIX)
|
||||
that provides you with primitives to interact with various systems, such as file systems, networking, memory management, threads, etc.
|
||||
Standard libraries in turn usually depend on these primitives to implement their functionality.
|
||||
You may also have some sort of sysroot and restrictions on RAM/ROM-usage, and perhaps some
|
||||
|
||||
@@ -24,11 +24,11 @@ can be found on the next page.
|
||||
## `cargo-generate` OR `git`
|
||||
|
||||
Bare metal programs are non-standard (`no_std`) Rust programs that require some
|
||||
fiddling with the linking process to get the memory layout of the program
|
||||
right. All this requires unusual files (like linker scripts) and unusual
|
||||
settings (like linker flags). We have packaged all that for you in a template
|
||||
so that you only need to fill in the blanks such as the project name and the
|
||||
characteristics of your target hardware.
|
||||
adjustments to the linking process in order to get the memory layout of the program
|
||||
right. This requires some additional files (like linker scripts) and
|
||||
settings (like linker flags). We have packaged those for you in a template
|
||||
such that you only need to fill in the missing information (such as the project name and the
|
||||
characteristics of your target hardware).
|
||||
|
||||
Our template is compatible with `cargo-generate`: a Cargo subcommand for
|
||||
creating new Cargo projects from templates. You can also download the
|
||||
@@ -57,7 +57,7 @@ can follow some parts of this book even if you don't have any hardware with you!
|
||||
|
||||
A debugger is a very important component of embedded development as you may not
|
||||
always have the luxury to log stuff to the host console. In some cases, you may
|
||||
not have LEDs to blink on your hardware!
|
||||
not even have LEDs to blink on your hardware!
|
||||
|
||||
In general, LLDB works as well as GDB when it comes to debugging but we haven't
|
||||
found an LLDB counterpart to GDB's `load` command, which uploads the program to
|
||||
|
||||
@@ -7,9 +7,9 @@ the tooling and the development process.
|
||||
|
||||
[LM3S6965]: http://www.ti.com/product/LM3S6965
|
||||
|
||||
## A non standard Rust program
|
||||
## Creating a non standard Rust program
|
||||
|
||||
We'll use the [`cortex-m-quickstart`] project template so go generate a new
|
||||
We'll use the [`cortex-m-quickstart`] project template to generate a new
|
||||
project from it.
|
||||
|
||||
[`cortex-m-quickstart`]: https://github.com/rust-embedded/cortex-m-quickstart
|
||||
@@ -73,7 +73,7 @@ $ mv cortex-m-quickstart-master app
|
||||
$ cd app
|
||||
```
|
||||
|
||||
OR you can browse to [`cortex-m-quickstart`], click the green "Clone or
|
||||
Or you can browse to [`cortex-m-quickstart`], click the green "Clone or
|
||||
download" button and then click "Download ZIP".
|
||||
|
||||
Then fill in the placeholders in the `Cargo.toml` file as done in the second
|
||||
|
||||
Reference in New Issue
Block a user