esp8266 esp8266 wiki記憶體對映

2021-07-05 08:33:25 字數 4375 閱讀 7214

本文主要講述了esp8266

晶元系列的實際記憶體布局。

復位向量是40000080h,對映到內部rom。 位址

名稱大小

型別r/w

描述00000000h

exc讀取時產生錯誤。

20000000h

no00 80 00 00未被對映重複的模式。

3ff00000h

dport0

1000h

i/orw?

記憶體對映的 i/o, 每100h重複一次。

3ff10000h

no未對映,都是0。

3ff20000h??

rw?未確認的資料。

3ff30000h

no未對映, 都是0。

3ffc0000h

?20000h

?rw?

對映到所在位址的unit32

, 這是什麼?

3ffe0000h

no未對映, 都是0。

3ffe8000h

dram0

14000h

ramrw

使用者資料記憶體,應用程式可以獲的。

3fffc000h

4000h

ramets系統資料記憶體

40000000h

brom?

10000h

romrw?

內部rom。可寫,但具體資訊不清楚。

40010000h

no都是0

。 假設未被對映。

40100000h

iram1

8000h

ramrw

指令記憶體。 引導裝載程式利用指令記憶體載入spi flash <40000h. 

40108000h

?4000h

ramrw

指令記憶體/flash

快取記憶體。 ota 引導裝載程式利用這一記憶體,如果dport0 register 0x3ff00024 的bit 4 (bit mask 0x10)清晰的話會對映到這裡。

4010c000h

?4000h

ramrw

指令記憶體/flash

快取記憶體,如果dport0 register 0x3ff00024 的bit 3 (bit mask 0x8)清晰的話會對映到這裡。 

40110000h

?都是0, 可能更多的是iram.

40140000h

?59 31 d8 ec的重複模式.

40200000h

?spi flash被對映到這裡. 對映硬體有32kb的快取(未確認). 沒有快取的**執行速度比iram

的**慢

12-13

倍,有快取的**執行速度和 iram**一樣快.。這一區域是可讀的,因為資料4 

位元組對齊的。把

flash

對映到這一區域受

17位元組的 spi ctrl儲存器控制(0x60000208): 設定為這一位元組就會對映flash, 清空位元組後就不能影**。

40300000h

?00 80 00 00的未對映重複模式

60000000h

?1000h

i/orw?

沒有快取的 i/o (詳見下表的 mmio)

60001000h

?800h

?rw?

沒有快取的 i/o (詳見下表的mmio )

60001800h

?800h

?rw?

沒有快取.。對映到60001000h?

60002000h

exc讀取時產生錯誤。

70000000h

90000000h

no00 80 00 00未對映重複的模式。

位址大小

名稱描述

00000h

248k

使用者應用

3e000h

8kmaster_device_key.bin

ota裝置金鑰。未確認:沒有ota就沒有使用這一金鑰。

40000h

240k

sdk 庫

7c000h

8kesp_init_data_default.bin

預設配置

7e000h

8kblank.bin

都是ffh. 可能是 wifi配置

這是針對0.8及以上版本的

esp iot sdk

的,支援

ota更新。

位址大小名稱

描述00000h

4kboot.bin

引導裝載程式

01000h

64k使用者應用,位置1

11000h

180k

sdk庫,位置1

3e000h

8kmaster_device_key.bin

ota 裝置金鑰

40000h

4k未使用

41000h

64k使用者應用,位置2

51000h

180k

sdk庫,位置2

7e000h

8kblank.bin

都是ffh。可能是 wifi配置。

位址名稱

40000010h

除錯異常

40000020h

nmi異常

40000030h

kernel異常

40000050h

user異常

40000070h

double exception

40000080h重置

大多數都是

60000000h。

基址大小名稱

描述60000000h

80huart0

the uart0 config registers, uart0 配置暫存器,詳見示例/iot_demo/include/drivers/uart_register.h

60000100h

100h

spi1

未確認: spi 控制器暫存器,詳見示例/iot_demo/include/driver/spi_register.h

60000200h

100h

spi0

未確認: spi 控制器暫存器, 詳見示例/iot_demo/include/driver/spi_register.h

60000300h

74hgpio

未確認:計時器配置暫存器, 詳見include/eagle_soc.h

60000600h

28htimer

未確認: 計時器配置暫存器, 詳見include/eagle_soc.h

60000700h

a4hrtc

未確認: rtc 配置暫存器,詳見include/eagle_soc.h

60000800h

44hiomux

io mux配置暫存器, 詳見 include/eagle_soc.h

60000d00h

>=8

i2c未確認:內部 i2c 控制器註冊,詳見rom functions rom_i2c_readreg, rom_i2c_writereg

60000f00h

80huart1

uart0 配置暫存器, 詳見/iot_demo/include/drivers/uart_register.h

60001000h

100h

rtcb

rtc 備份記憶體

, 詳見 rtc_mem_backup

60001100h

100h

rtcs

rtc 系統記憶體,詳見 system_rtc_mem_write

60001200h

200h

rtcu

rtc 使用者記憶體

位址位元組

描述3ff00014h

0清除時cpu執行速率為80mhz。置位時cpu執行速率為160mhz。請注意在改變位元組時需要呼叫 os_update_cpu_frequency(int freq_in_mhz)。可能需要調整計時器。uart divisor沒有自動更新,所以也需要呼叫uart_div_modify(uart_no, clock_freq_in_hz / baud_rate_in_baud)。

3ff00024h

3清除時iram對映為40108000h..4010bfffh。置位時,這一區域為0。

4清除時iram對映為4010c000h..4010ffffh。置位時,這一區域為0。

iomux pin暫存器 (60000804h-0000843h)

ESP8266 利用網頁控制ESP8266

說明 發出 gpio 1 就輸出 亮燈 gpio 0 就輸出 滅燈 include const char ssid jia 這裡輸入wifi名稱 const char password lm654321 這裡輸入wifi密碼 wifiserver server 80 開啟板子的80埠 int val...

ESP8266學習筆記

因為此模式可控性高且方便,所以推薦此模式 測試指令 at 應用模式設定 at cwmode 3 ap 模式 1 esp8266模組作為熱點,實現手機或電腦直接與模組通訊,實現區域網無線控制。sta 模式 2 esp8266模組通過路由器連線網際網路,手機或電腦通過網際網路實現對裝置的遠端控制 sta...

ESP8266輸出控制

gpio的輸出 esp8266的輸出控制。在esp8266引腳作為gpio輸出時,首先要配置gpio為輸出模式,這個和普通的32位微控制器的io輸出是一樣的,然後提供改變io口的電平來控制輸出模組的狀態。在這裡我用我自己手上的一款esp8266的微控制器為例。gpio相關介面位於 esp8266 n...