ESP8266 Boot

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(启动模式)
(启动模式)
第40行: 第40行:
  
 
<br><br>
 
<br><br>
 +
 +
== 代码流程 ==
 +
 +
<source lang=bash>
 +
ResetHandler
 +
 +
    Set interrupt level 1
 +
    Set processor modes (see separate section)
 +
    Copy SROM data to SRAM
 +
    Goto _start
 +
 +
_start
 +
 +
    Set Ring 0
 +
    Clear callback vector
 +
    Set up stack at 3FFFFFFFh
 +
    Call main
 +
 +
main
 +
 +
    Initialize UART0
 +
        115,200 bps, 8N1
 +
        iomux.u0txd &= 0xE4F
 +
        iomux.gpio2 = (iomux.gpio2 & 0xECF) | 0x100
 +
 +
Processor Modes
 +
 +
    Only Ring 0 used
 +
    TLBs (D and I) are set to
 +
        00000000h-1FFFFFFFh: Illegal
 +
        20000000h-5FFFFFFFh: RWX, Cache Write-Through
 +
        60000000h-FFFFFFFFh: RWX, Bypass Cache
 +
</source>
 +
 
<br><br>
 
<br><br>
 
<br><br>
 
<br><br>

2015年11月14日 (六) 16:36的版本

1 ESP8266 启动

Reset 入口在: 0x40000080


ESP8266 启动时,将从 UART0 以波特率 74880 打印:

 ets Jan  8 2013,rst cause:1, boot mode:(3,1)

load 0x40100000, len 26880, room 16 
tail 0
chksum 0x0a
load 0x3ffe8000, len 884, room 8 
tail 12
chksum 0x3f
ho 0 tail 12 room 4
load 0x3ffe8378, len 272, room 12 
tail 4
chksum 0xc7
csum 0xc7



2 启动模式

ESP8266 Reset 后,通过判断如下管脚的状态来决定启动模式:

MTDO 	GPIO0 	GPIO2 	Mode 	Description
L 	L 	H 	UART 	串口刷机
L 	H 	H 	Flash 	SPI Flash 正常启动
H 	x 	x 	SDIO 	SD-card 启动

MTDO 为 GPIO15

启动时串口输出的 'boot mode:(x, y)' , x 的低三位对应 {MTDO, GPIO0, GPIO2}



3 代码流程

ResetHandler

    Set interrupt level 1
    Set processor modes (see separate section)
    Copy SROM data to SRAM
    Goto _start

_start

    Set Ring 0
    Clear callback vector
    Set up stack at 3FFFFFFFh
    Call main

main

    Initialize UART0
        115,200 bps, 8N1
        iomux.u0txd &= 0xE4F
        iomux.gpio2 = (iomux.gpio2 & 0xECF) | 0x100

Processor Modes

    Only Ring 0 used
    TLBs (D and I) are set to
        00000000h-1FFFFFFFh: Illegal
        20000000h-5FFFFFFFh: RWX, Cache Write-Through
        60000000h-FFFFFFFFh: RWX, Bypass Cache





















个人工具
名字空间

变换
操作
导航
工具箱