Последнее редактирование:
Полностью обновлены описания AT команд ESP8266 на русском в соответствии с AT v0.20Прошу добавить в список АТ комманд AT+IPR - комманда установки скорости порта на оригинальной прошивке. Например AT+IPR=9600
0x00000000 **** Exc Protected area
0x20000000 **** --- Unmapped, repeated pattern
0x3FF00000 0x010000 R/W Memory-mapped I/O, repeated every 0x100.
0x3FF10000 0x010000 R only Mapped, zeroes
0x3FF20000 0x001800 R/W I/O registers
0x3FF21800 0x09E800 R only Mapped, zeroes
0x3FFC0000 0x020000 --- Unmapped, repeated pattern
0x3FFE0000 0x008000 R only Mapped, zeroes
0x3FFE8000 0x014000 R/W User data RAM. Available to applications.
0x3FFFC000 0x004000 R/W ETS system data RAM.
0x40000000 0x010000 R only Internal ROM.
0x40010000 0x010000 R only Internal ROM (repeated 0x40000000).
0x40020000 0x0E0000 R only Mapped, zeroes
0x40100000 0x008000 R/W IRAM
0x40108000 0x038000 R only Mapped, zeroes
0x40140000 0x0C0000 --- Unmapped, repeated pattern
0x40200000 0x100000 R only SPI Flash is mapped (512k->2x repeated, 16Mb - 1Mb mapped )
0x40300000 **** --- Unmapped, repeated pattern
0x60000000 0x001000 R/W I/O registers
0x60001000 0x000400 R/W RTC_RAM
0x60001400 0x000400 R/W I/O registers
0x60001800 0x000400 R/W RTC_RAM (repead 0x60001000)
0x60001C00 0x000400 R/W I/O registers (repead 0x60001400)
0x60002000 0x006000 Exc Protected area
0x60008000 0x001800 --- Unmapped, repeated pattern
0x60009800 0x000600 R/W I/O registers
0x3ff00000 INTC_BASE
0x3ff00050 OTP_BASE (MAC, ChipID...)
-------
0x3FF20C00 phy_get_mactime();
0x3FF20CB0 wDev_SetWaitingQueue()
0x3FF20CC0 wDev_GetTxqCollisions()
-------
0x60000000 UART0_BASE
0x60000100 SPI1_BASE
0x60000200 SPI0_BASE
0x60000300 GPIO_BASE
0x60000400 ?
0x60000500 ?
0x60000600 TIMER_BASE
0x60000700 RTC_BASE 0x60000710 bit25 sar_init, ...
0x60000800 IOMUX_BASE
0x60000900 WDT_BASE
0x60000a00 ?
0x60000b00 SCL_BASE
0x60000c00 ?
0x60000d00 rom_i2c_Reg доступ через rom_i2c_readReg(), rom_i2c_readReg_Mask(), rom_i2c_writeReg(), rom_i2c_writeReg_Mask(), 0x60000D50 - управление sar ...
0x60000e00 I2S_BASE
0x60000f00 UART1_BASE
0x60001000 RTC_MEM_BASE (1024bytes)
0x60001400 RTC_BASE (repead 0x60000700)
0x60001500 RTC_BASE (repead 0x60000700)
0x60001600 RTC_BASE (repead 0x60000700)
0x60001700 RTC_BASE (repead 0x60000700)
0x60009800 ??
0x60009A00 WiFi registers 0x60009b00 bit28 - cca, 0x60009B64 – уровень шума в приемнике (в дБ отдает rom_get_noisefloor()) ...
[0x3fffc730]=0x3fffc734 phy_get_romfuncs(void)
смещение / адрес функции / название
+000 0x400060c0 rom_abs_temp
+004 0x400060d0 rom_chip_v5_disable_cca
+008 0x400060ec rom_chip_v5_enable_cca
+012 0x4000610c rom_chip_v5_sense_backoff
+016 0x4000615c rom_dc_iq_est
+020 0x00000000
+024 0x400061b8 rom_en_pwdet
+028 0x40006238 rom_get_bb_atten
+032 0x40006260 rom_get_corr_power
+036 0x40250d9c ram_get_fm_sar_dout / rom_get_fm_sar_dout
+040 0x4024d50c ram_get_noisefloor / rom_get_noisefloor
+044 0x400063b0 rom_get_power_db
+048 0x40006400 rom_iq_est_disable
+052 0x40006430 rom_iq_est_enable
+056 0x40006484 rom_linear_to_db
+060 0x4000650c rom_set_txclk_en
+064 0x40006550 rom_set_rxclk_en
+068 0x400065a4 rom_mhz2ieee
+072 0x40251430 ram_rxiq_get_mis / rom_rxiq_get_mis
+076 0x40006738 rom_sar_init
+080 0x4000678c rom_set_ana_inf_tx_scale
+084 0x400067c8 rom_set_loopback_gain
+088 0x4024d558 ram_set_noise_floor / rom_set_noise_floor
+092 0x00000000
+096 0x00000000
+100 0x4024d5b4 ram_start_noisefloor / rom_start_noisefloor
+104 0x400068b4 rom_start_tx_tone
+108 0x4000698c rom_stop_tx_tone
+112 0x40006a1c rom_txtone_linear_pwr
+116 0x4010655c ram_tx_mac_disable / rom_tx_mac_disable
+120 0x4024c288 ram_tx_mac_enable
+124 0x4024b2d0 ram_ana_inf_gating_en / rom_ana_inf_gating_en
+128 0x40006c50 rom_set_channel_freq
+132 0x40006f84 rom_chip_50_set_channel
+136 0x4024af18 ram_chip_v6_rx_init / rom_chip_v5_rx_init
+140 0x4000718c rom_chip_v5_tx_init
+144 0x40007268 rom_i2c_readReg
+148 0x4000729c rom_i2c_readReg_Mask
+152 0x400072d8 rom_i2c_writeReg
+156 0x4000730c rom_i2c_writeReg_Mask
+160 0x4024ac38 ram_pbus_debugmode / rom_pbus_debugmode
+164 0x40007410 rom_pbus_enter_debugmode
+168 0x40007448 rom_pbus_exit_debugmode
+172 0x4000747c rom_pbus_force_test
+176 0x400074d8 rom_pbus_rd
+180 0x4000754c rom_pbus_set_rxgain
+184 0x40007610 rom_pbus_set_txgain
+188 0x40007648 rom_pbus_workmode
+192 0x40007688 rom_pbus_xpd_rx_off
+196 0x400076cc rom_pbus_xpd_rx_on
+200 0x400076fc rom_pbus_xpd_tx_off
+204 0x40007740 rom_pbus_xpd_tx_on
+208 0x400077a0 rom_pbus_xpd_tx_on__low_gain
+212 0x40007804 rom_phy_reset_req
+216 0x4024b430 ram_restart_cal / rom_restart_cal
+220 0x40007868 rom_rfpll_reset
+224 0x400078dc rom_write_rfpll_sdm
+228 0x40007968 rom_rfpll_set_freq
+232 0x40250e40 ram_cal_tos_v60 / rom_cal_tos_v50
+236 0x40007bf0 rom_pbus_dco___SA2
+240 0x40007eb4 rom_rfcal_pwrctrl
+244 0x4000804c rom_rfcal_rxiq
+248 0x40008264 rom_rfcal_rxiq_set_reg
+252 0x40008388 rom_rfcal_txcap
+256 0x40008610 rom_rfcal_txiq
+260 0x400088b8 rom_rfcal_txiq_cover
+264 0x40008a70 rom_rfcal_txiq_set_reg
+268 0x402515fc ram_rxiq_cover_mg_mp / rom_rxiq_cover_mg_mp
+272 0x40008c6c rom_set_txbb_atten
+276 0x40008d34 rom_set_txiq_cal
+280 0x00000000
Какая чудесная картина мира. А между тем https://github.com/esp8266/esp8266-wiki -- это wiki, любой получивший право редактирования может написать там что угодно. Чтобы стать редактором нужно иметь аккаунт на github и обратиться к themindfactory (владельцу репозитория) с просьбой дать вашему аккаунту права редактора. По крайней мере я сделал именно так. Если вы сообщите имя своего аккаунта на github я могу попросить за вас.А то в https://github.com/esp8266/esp8266-wiki совсем беда. Там засел товарищьjcmvbkbc и ничего не пополняет.
/******************************************************************************
* FileName: rom_phy.h
* Description: Reverse SDK 1.0.0 (phy.a)
* Author: PV`
* ver1.0
*******************************************************************************/
#ifndef _LIBS_ROM_PHY_H_
#define _LIBS_ROM_PHY_H_
//[0x3fffc730]=0x3fffc734 phy_get_romfuncs(void)
struct phy_func_tab {
void * abs_temp; // +000 rom_abs_temp
void * chip_v5_disable_cca; // +004 rom_chip_v5_disable_cca
void * chip_v5_enable_cca; // +008 rom_chip_v5_enable_cca
void * chip_v5_sense_backoff; // +012 rom_chip_v5_sense_backoff
void * dc_iq_est; // +016 rom_dc_iq_est
void * fun20; // +020 NULL ??
void * en_pwdet; // +024 rom_en_pwdet
void * get_bb_atten; // +028 rom_get_bb_atten
void * get_corr_power; // +032 rom_get_corr_power
void * get_fm_sar_dout; // +036 ram_get_fm_sar_dout / rom_get_fm_sar_dout
void * get_noisefloor; // +040 ram_get_noisefloor / rom_get_noisefloor
void * get_power_db; // +044 rom_get_power_db
void * iq_est_disable; // +048 rom_iq_est_disable
void * iq_est_enable; // +052 rom_iq_est_enable
void * linear_to_db; // +056 rom_linear_to_db
void * set_txclk_en; // +060 rom_set_txclk_en
void * set_rxclk_en; // +064 rom_set_rxclk_en
void * mhz2ieee; // +068 rom_mhz2ieee
void * rxiq_get_mis; // +072 ram_rxiq_get_mis / rom_rxiq_get_mis
void * sar_init; // +076 rom_sar_init
void * set_ana_inf_tx_scale; // +080 rom_set_ana_inf_tx_scale
void * set_loopback_gain; // +084 rom_set_loopback_gain
void * set_noise_floor; // +088 ram_set_noise_floor / rom_set_noise_floor
void * fun92; // +092 NULL ??
void * fun96; // +096 NULL ??
void * start_noisefloor; // +100 ram_start_noisefloor / rom_start_noisefloor
void * start_tx_tone; // +104 rom_start_tx_tone
void * stop_tx_tone; // +108 rom_stop_tx_tone
void * txtone_linear_pwr; // +112 rom_txtone_linear_pwr
void * tx_mac_disable; // +116 ram_tx_mac_disable / rom_tx_mac_disable
void * tx_mac_enable; // +120 ram_tx_mac_enable
void * ana_inf_gating_en; // +124 ram_ana_inf_gating_en / rom_ana_inf_gating_en
void * set_channel_freq; // +128 rom_set_channel_freq
void * chip_50_set_channel; // +132 rom_chip_50_set_channel
void * chip_v6_rx_init; // +136 ram_chip_v6_rx_init / rom_chip_v5_rx_init
void * chip_v5_tx_init; // +140 rom_chip_v5_tx_init
void * i2c_readReg; // +144 rom_i2c_readReg
void * i2c_readReg_Mask; // +148 rom_i2c_readReg_Mask
void * i2c_writeReg; // +152 rom_i2c_writeReg
void * i2c_writeReg_Mask; // +156 rom_i2c_writeReg_Mask
void * pbus_debugmode; // +160 ram_pbus_debugmode / rom_pbus_debugmode
void * pbus_enter_debugmode; // +164 rom_pbus_enter_debugmode
void * pbus_exit_debugmode; // +168 rom_pbus_exit_debugmode
void * pbus_force_test; // +172 rom_pbus_force_test
void * pbus_rd; // +176 rom_pbus_rd
void * pbus_set_rxgain; // +180 rom_pbus_set_rxgain
void * pbus_set_txgain; // +184 rom_pbus_set_txgain
void * pbus_workmode; // +188 rom_pbus_workmode
void * pbus_xpd_rx_off; // +192 rom_pbus_xpd_rx_off
void * pbus_xpd_rx_on; // +196 rom_pbus_xpd_rx_on
void * pbus_xpd_tx_off; // +200 rom_pbus_xpd_tx_off
void * pbus_xpd_tx_on; // +204 rom_pbus_xpd_tx_on
void * pbus_xpd_tx_on__low_gain;// +208 rom_pbus_xpd_tx_on__low_gain
void * phy_reset_req; // +212 rom_phy_reset_req
void * restart_cal; // +216 ram_restart_cal / rom_restart_cal
void * rfpll_reset; // +220 rom_rfpll_reset
void * write_rfpll_sdm; // +224 rom_write_rfpll_sdm
void * rfpll_set_freq; // +228 rom_rfpll_set_freq
void * cal_tos_v60; // +232 ram_cal_tos_v60 / rom_cal_tos_v50
void * pbus_dco___SA2; // +236 rom_pbus_dco___SA2
void * rfcal_pwrctrl; // +240 rom_rfcal_pwrctrl
void * rfcal_rxiq; // +244 rom_rfcal_rxiq
void * rfcal_rxiq_set_reg; // +248 rom_rfcal_rxiq_set_reg
void * rfcal_txcap; // +252 rom_rfcal_txcap
void * rfcal_txiq; // +256 rom_rfcal_txiq
void * rfcal_txiq_cover; // +260 rom_rfcal_txiq_cover
void * rfcal_txiq_set_reg; // +264 rom_rfcal_txiq_set_reg
void * rxiq_cover_mg_mp; // +268 ram_rxiq_cover_mg_mp / rom_rxiq_cover_mg_mp
void * set_txbb_atten; // +272 rom_set_txbb_atten
void * set_txiq_cal; // +276 rom_set_txiq_cal
void * xxx_end; // +280 NULL
};
#endif /* _LIBS_ROM_PHY_H_ */
Остаётся просить тех, кто уже имеет права на редактирование. Но это будет неудобно, как вам, так и им.А если "не иметь аккаунт на github" и не "обратиться к themindfactory" то как?
Я же и говорю, чудесная картина мира. Может быть вот эта ссылка ответит на ваш вопрос: http://www.communitywiki.org/DoOcracyТам уже вроде есть редакторы, взявшиеся за это дело. Если они ничего не делают, то зачем они взялись?
А зачем тогда вы и сюда пишите свои недовольства?Я же и говорю, чудесная картина мира. Может быть вот эта ссылка ответит на ваш вопрос: http://www.communitywiki.org/DoOcracy
В данном топике я подсказал вам, как именно вы можете в два простых шага поправить https://github.com/esp8266/esp8266-wiki. Я начинаю подозревать, что у вас серьёзные проблемы с пониманием написанного.А зачем тогда вы и сюда пишите свои недовольства?
Однако вы и не просите разместить вашу информацию там. И сами размещать, похоже, не хотите.Я здесь пишу информацию, которой нет там, где редактором являетесь вы.
Вы необоснованно подозрительны. Мне всё равно на кого и какими методами вы работаете, мне от вас ничего не нужно.Вы хотите меня обязать работать на вас и по вашим методам?
Очень зарактерно, что вы это сказали. Я вам ещё раз предлагаю прочитать статью по моей ссылке.У меня вопроса "отметиться", "застолбить везде всё" не стоит.
А я вам рекомендую прочитать название данной темы и сильно не отклоняться. На все ваши вопросы ответ дан.Очень зарактерно, что вы это сказали. Я вам ещё раз предлагаю прочитать статью по моей ссылке.
Пока нет.Здравствуйте pvvx, есть ли у Вас информация о том какие(ая) функции(я) отвечает за размер буфера при приёме пакета в режиме promiscuous mode?
Это уже функция из SDK, а я пытаюсь раскрутить функции ROM, чтобы отказаться от SDK.wdev_go_sniffer не то?
Спасибо, а находятся они (функции ROM) в libmain.a или liblwip.a?Это уже функция из SDK, а я пытаюсь раскрутить функции ROM
Они прошиты в ППЗУ самого чипа и SDK обращается к ним.Спасибо, а находятся они (функции ROM) в libmain.a или liblwip.a?
Огромное спасибо!Они прошиты в ППЗУ самого чипа и SDK обращается к ним.
Вы можете считать эту область (ROM: 0x40000000..0x40080000) и дизассемблировать.
Тут есть уже дизассемблированый начальный вариант http://df.lth.se/~kongo/esp8266.bin/
Оглавление (названия функций и их адреса в ROM) находятся в файле SDK ld\eagle.rom.addr.v6.ld
От любого - это от чипа ESP8266, его встроенная ППЗУ. А дальше муторное разгребание какие параметры у каждой функции и как они управляют аппаратурой...Огромное спасибо!
Всё нормально читается (адреса из eagle.rom.addr.v6.ld соответствуют ROM), этот файл ROM от какого чипа (я имею ввиду ESP-01,02,xx)?
pvvx благодарю за помощь!От любого - это от чипа ESP8266, его встроенная ППЗУ. А дальше муторное разгребание какие параметры у каждой функции и как они управляют аппаратурой...
//=============================================
// ROM
//=============================================
uint32 func0x2f14(int a)
{
if(a==3) return 11;
else if (a == 6) return 12;
if(a-12 != 13) return 0;
return 13;
}
//----------------------------------0x40002f88-
void _wdt_int(void)
{
x = ets_wdt_get_mode();
switch(x)
{
case 1:
vmem_write(0x60000914,0x73);
vmem_read(0x60000910);
break;
case 2:
x = read(0x60000910);
if(x == 1) {
vmem_write(0x60000918,0x73);
vmem_write(0x60000914,0x73);
}
else break;
}
}
//---------------------------------------------
void ets_wdt_init(void)
{
vmem_and(0x60000900,0xfffffffe);
ets_isr_attach(8, _wdt_int, 0);
vmem_or(0x3FF00004,1);
}
//---------------------------------------------
ets_wdt_restore(int a)
{
if(a) {
uint32 *ptr = 0x3fffc708;
ets_wdt_enable(a, ptr[1], ptr[2]);
}
}
//---------------------------------------------
ets_wdt_enable(a,b,c)
{
uint32 *ptr = 0x3fffc708;
if(*ptr != 2 ) {
ets_isr_mask(0x100);
}
ptr[1] = b;
ptr[2] = c;
vmem_and(0x60000900,0xfffffffe);
switch(a){
case 1:
ets_timer_setfn(0x3fffdde0, _wdt_int, 0);
ets_timer_arm(0x3fffdde0, b<<10, 1);
vmem_write(0x60000900,0x3C);
x = func0x2f14(c);
vmem_write(0x60000904,x);
break;
case 3:
x = func0x2f14(c)
vmem_write(0x60000904,x);
case 2:
case 4:
vmem_write(0x60000900,0x38);
x = func0x2f14(b)
vmem_write(0x60000904,x);
vmem_write(0x60000908,x);
if(a != 2) ets_isr_unmask(0x100);
break;
};
vmem_or(0x60000900,1);
ptr[0] = a;
break;
}
//=============================================
// SDK
//=============================================
void wdt_feed(void)
{
system_rtc_mem_read(????);
if(? == 2) system_rtc_mem_write(0,?,28);
ets_post(30,0,0);
}
void wdt_task(void)
{
system_rtc_mem_read(0,?,28);
system_rtc_mem_write(0,?,28);
vmem_write(0x60000914,0x73);
}
//---------------------------------------------
void wdt_init(void)
{
ets_task(wdt_task,30,0x3ffea100,1);
vmem_and(0x60000900,0xfffffffe);
ets_isr_attach(8,wdt_feed,0);
uint32 *ptr = 0x3FF00004;
*ptr |= 1;
vmem_write(0x60000904,0x0B);
vmem_write(0x60000908,0x0B);
vmem_or(0x60000900,0x38);
vmem_and(0x60000900,0xfffffff9);
vmem_or(0x60000900,1);
ets_isr_unmask(0x100);
}