本文主要講述了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...