闪存
闪存是将我们的程序移动到微控制器(永久)存储器中的过程。一旦刷写完成,每次上电时,单片机都会执行刷写的程序。
在这种情况下,我们的led-roulette
程序将是微控制器内存中唯一的程序。 意思是微控制器上没有其他
任何东西在运行:没有操作系统,没有"守护进程",什么都没有。led-roulette
完全控制设备。
由于cargo embed
,闪存二进制文件本身非常简单。
不过,在执行该命令之前,让我们看看它实际上做了什么。如果您看一下micro:bit的侧面,USB连接器朝 上,您会注意到那里实际上有2个黑色方块 (在micro:bit v2上,有第三个也是最大的一个,它是一个扬声器),一个 是我们已经谈过的MCU,但另一个是干什么用的?另一个芯片有3个主要用途:
- 从USB连接器向我们的MCU供电
- 为我们的MCU提供一个串口转USB桥接器(我们将在后面的章节中研究)
- 作为程序/调试器(这是目前的相关目的)
基本上,该芯片充当我们的计算机(通过 USB 连接到它)和MCU(通过迹线连接到它并使用 SWD 协议与 之通信之间的桥梁。 这个桥使我们能够将新的二进制文件闪存到MCU上,通过调试器和其他东西检查它的状态。
所以让我们闪存吧!
# For micro:bit v2
$ cargo embed --features v2 --target thumbv7em-none-eabihf
(...)
Erasing sectors ✔ [00:00:00] [####################################################################################################################################################] 2.00KiB/ 2.00KiB @ 4.21KiB/s (eta 0s )
Programming pages ✔ [00:00:00] [####################################################################################################################################################] 2.00KiB/ 2.00KiB @ 2.71KiB/s (eta 0s )
Finished flashing in 0.608s
# For micro:bit v1
$ cargo embed --features v1 --target thumbv6m-none-eabi
(...)
Erasing sectors ✔ [00:00:00] [####################################################################################################################################################] 2.00KiB/ 2.00KiB @ 4.14KiB/s (eta 0s )
Programming pages ✔ [00:00:00] [####################################################################################################################################################] 2.00KiB/ 2.00KiB @ 2.69KiB/s (eta 0s )
Finished flashing in 0.614s
您会注意到cargo-embed
在输出最后一行后会出现块,这是有意的,您不应该关闭它,因为我们需要在此
状态下进行下一步:调试它!此外, 您会注意到cargo build
和cargo embed
实际上传递了相同的标志,
这是因为cargo embed
实际执行构建,然后将生成的二进制文件闪存到芯片上,因此如果您以后想要闪存,可以
在将来省去cargo build
步骤。