这个 arduino 开发及 esp8266 开发是具体怎么个过程?

2018-10-08 21:49:07 +08:00
 azev

看了下,貌似是写完程序后重新构建一个全新的完整固件刷进去把原先的固件给替换掉? 并不是仅把所写的程序编译了放进去?

2093 次点击
所在节点    问与答
11 条回复
loading
2018-10-08 21:51:17 +08:00
这个随便 youtube 搜索个视频看看,半个小时就知道了。
loading
2018-10-08 21:54:06 +08:00
arduino 有内置的底层库,你这样理解就可以了。

c 语言 include,了解一下。
就是编译整个项目,直接写进去。当然 bootloader 就不一定了。

c 的普通 hello world,不也是有 include 一个 print 吗。
azev
2018-10-08 22:01:12 +08:00
@loading 你说的这个'直接写进去'是写的一个完整固件吗?
loading
2018-10-08 22:13:25 +08:00
去买本书看吧,你没系统学的,懒得教你。
billlee
2018-10-09 00:53:48 +08:00
单片机没有内核、进程、动态连接库这些东西。你写的程序就是独占运行的,所以依赖库都要静态连接进去。
azev
2018-10-09 09:00:11 +08:00
@loading
嗯 没系统学是真的 我是学新闻的
开发板的程序倒是写了些了 但是对感觉对内部机制不太清楚


@billlee 这样烧进去的是个跟原先板子上类似的完整固件?
azev
2018-10-09 09:00:48 +08:00
@loading 对了 推荐本好的入门书吧
deben
2018-10-09 09:41:11 +08:00
esp8266 模块里面的主驱动芯片是 单片机 /ARM,无需操作系统,直接由 C/C++ 编译成机器码来驱动。
Arduino 提供了一堆底层的硬件驱动,比如 IO/UART/I2C 等等,只需按照指定的 C/C++ 语法就可以直接驱动硬件。
Arduino 里面的 setup\loop 等函数,只是包装了常规 C/C++ 里面的 init 或者 main 函数而已。
抛开 BootLoader 不谈,编译器编译出来的直接是 Hex 文件,也就是机器码,MCU 读取烧写到 Flash 里面的机器码来逐步驱动硬件来工作。

如果只是应用,不建议系统学习电子方面的知识,只需编程就行了,遇到什么问题再去 Google 了解一下。
728528678
2018-10-09 09:55:10 +08:00
没有 BootLoader 的情况下,每次烧写就是改写内部 flash,应该可以理解为原来的都不复存在,全盘替换
azev
2018-10-09 10:15:39 +08:00
@728528678
@deben
多谢 基本清楚了
把 hex 文件烧进去 基本就可以说是把板子里的固件整个替换的过程了
deben
2018-10-09 10:30:33 +08:00
@azev bootloader 其实就是一段引导程序,帮助烧写 flash 的程序以及引导启动。Arduino 集成了一套自己的 bootloader
和底层库,让使用人员无需自己配置各种底层的寄存器即可使用底层硬件。

随着工艺的进步,芯片成本的下降,Arduino 的这种做法会是趋势。可能未来越来越少直接汇编甚至 C 语言了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/495742

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX