Cyber & Robot
  • 主页
  • 归档
  • 关于

ESP8266 Bootloader开源代码解析之rboot(二)

回顾上一篇说了rboot的加载流程,主要的是通过makefile将两个程序文件串了起来。这篇文章会对整个加载流程做详细讲解。 数据结构typedef struct { /* magic是常用的名称,用来标识这是个结构体,通常存在flash上,并且已经被初始化了 */ uint8_t magic; ///< Our magic, identifies rBoot configuration - should be BOOT_CONFIG_MAGIC /* 用来说明当前的数据结构适用于哪个版本,不同版本常需要考虑兼容性问题 */ uint8_t version; ///< Version of configuration structure - should be BOOT_CONFIG_VERSION /* 当前rboot的启动模式 */ uint8_t mode; ///< Boot loader mode (MODE_STANDARD | MODE_GPIO_R
 2020-07-30     

ESP8266 Bootloader开源代码解析之rboot(一)

前言在非Linux的嵌入式开发中,自己手写Bootloader是很正常的事。因为可以定制自己想要的功能。比如定制自己的Bootloader通信接口(UART、I2C、SPI),通信协议,甚至更高级的固件备份回退等功能。但是使用ESP8266就不一样了,整个芯片的程序是怎么跑起来的都一知半解(所以我写了这篇文章:ESP8266架构探索-运行的起始);官方提供了Bootloader和完整的接口,但是是闭源的;官方Bootloader虽然有做固件备份,但是没有固件回滚,等等这些问题。所以这时候rboot出现了。我们有很多原因不能从无到有写一个自己的Bootloader,但是我们可以借鉴,知道rboot怎么运作后,就能够通过修改,裁剪,做出自己想要的Bootloader。所以这篇文章不会花大力气去分析rboot的特性是怎么实现的,着重于怎么写一个ESP8266上最基础的Bootloader。 工程目录先给出rboot的github地址:https://github.com/raburton/rboot编译后,是像下面这样 . ├── appcode │ ├── rboot-api.c │
 2020-07-20     

ESP8266架构探索-运行的起始

都2020年了,想必大家对ESP8266都很熟了,没用过至少也听说过。所以抛开丰富有趣的各种应用,下面来说一说很少人讨论的ESP8266的架构。 架构ESP8266集成了增强版的超低功耗Tensilica’s Xtensa L106 32-bit内核处理器。为什么说增强版呢,因为Tensilica处理器的特点,就是工程师可以对内核IP做定制化,乐鑫购买IP后,继续进行优化,形成了增强版。该处理器使用RISC指令集,CPU时钟速度最⾼可达160MHz,芯⽚内置了存储控制器,包含ROM和SRAM。但这个ROM呢,固化一些底层代码,用户是修改不了的,用户程序必须由外部Flash存储,理论上最大可支持16MB的存储。所以这就是为什么买ESP8266模块时,都要看用的多大的Flash,使用SDK开发方式的话,从编译到下载都要选择正确的Flash。 代码和内存的存储分配熟悉计算机原理的都知道,计算机的本质就是计算,通过执行不同的指令,操作不同的数据来得到不同的数据结果。指令在代码中可以认为是不同的语句,数据就是不同的变量。在单片机中,一般指令存在ROM中,数据变量存在RAM中。有这两个概念后,再看
 2020-07-04     

初次见面,多多关照

我的博客开始运营啦。 以后会给大家带来很多好玩新奇的代码。 今天被鸿蒙OS刷屏了,可能下期就是关于它的教程哦,偷偷预告一下。 另外,这是我的技术博客,只写代码,不谈风月。 如果想看一些代码之外的东西,关于科技和未来的文章,欢迎关注我的公众号: CyberAndRobot
 2019-08-09     
友情链接: RustFisher   
Hexo Material-T
粤ICP备19099962号 | 粤公网安备 44030502004357号