diff --git a/WEBFiles/protect2/cookie.js b/WEBFiles/protect2/cookie.js
index ea8a307..0358dc0 100644
--- a/WEBFiles/protect2/cookie.js
+++ b/WEBFiles/protect2/cookie.js
@@ -24,18 +24,18 @@ function setCookieElem(name, defv) {
function NewCookie(add) {
var val = parseInt(document.getElementById('start').value, 16) & 0xFFFFFFF0;
if (val == NaN)
- setCookieElem('start', '0x40000000');
+ setCookieElem('start', '0x10000000');
else {
val += add;
- setCookie('start', '0x' + val.toString(16));
+ setCookie('start', '0x' + (val >>> 0).toString(16));
var nval = val + 256;
- setCookie('stop', '0x' + nval.toString(16));
- document.getElementById('start').value = '0x' + val.toString(16);
+ setCookie('stop', '0x' + (nval >>> 0).toString(16));
+ document.getElementById('start').value = '0x' + (val >>> 0).toString(16);
document.getElementById('pmem').contentWindow.location.reload();
}
}
-setCookieElem('start', '0x40000000');
-setCookieElem('set_ramaddr', '0x3FFF0000');
+setCookieElem('start', '0x10000000');
+setCookieElem('set_ramaddr', '0x10000000');
setCookieElem('set_ramdata', '0x12345678');
function UpTxt(xD, n, v) {
var x = getXMLValue(xD, n, v);
@@ -55,16 +55,16 @@ function SendRamVal(x) {
var addr = parseInt(document.getElementById('set_ramaddr').value, 16);
var val = parseInt(document.getElementById('set_ramdata').value, 16);
if (addr != NaN && val != NaN) {
- document.getElementById('set_ramaddr').value = '0x' + addr.toString(16);
- setCookie('set_ramaddr','0x' + addr.toString(16));
- document.getElementById('set_ramdata').value = '0x' + val.toString(16);
- setCookie('set_ramdata','0x' + val.toString(16));
+ document.getElementById('set_ramaddr').value = '0x' + (addr >>> 0).toString(16);
+ setCookie('set_ramaddr','0x' + (addr >>> 0).toString(16));
+ document.getElementById('set_ramdata').value = '0x' + (val >>> 0).toString(16);
+ setCookie('set_ramdata','0x' + (val >>> 0).toString(16));
if (x != 0)
- newAJAXCommand('chiprams.xml?start=0x' + addr.toString(16),
+ newAJAXCommand('chiprams.xml?start=0x' + (addr >>> 0).toString(16),
UpdateValuesRam, 0);
else
- newAJAXCommand('chiprams.xml?sys_ram0x' + addr.toString(16) + '=0x'
- + val.toString(16) + '&start=0x' + addr.toString(16),
+ newAJAXCommand('chiprams.xml?sys_ram0x' + (addr >>> 0).toString(16) + '=0x'
+ + val.toString(16) + '&start=0x' + (addr >>> 0).toString(16),
UpdateValuesRam, 0);
}
}
\ No newline at end of file
diff --git a/WEBFiles/protect2/hexdmpb.htm b/WEBFiles/protect2/hexdmpb.htm
index 098f1ed..6c7748b 100644
--- a/WEBFiles/protect2/hexdmpb.htm
+++ b/WEBFiles/protect2/hexdmpb.htm
@@ -11,7 +11,7 @@
RAM Start addr |
- |
+ |
|
|
|
@@ -21,7 +21,7 @@
diff --git a/WEBFiles/protect2/hexdmpd.htm b/WEBFiles/protect2/hexdmpd.htm
index 3b30c46..38bafbf 100644
--- a/WEBFiles/protect2/hexdmpd.htm
+++ b/WEBFiles/protect2/hexdmpd.htm
@@ -11,7 +11,7 @@
diff --git a/project/inc/web/web_utils.h b/project/inc/web/web_utils.h
index b96d1c1..8d00c33 100644
--- a/project/inc/web/web_utils.h
+++ b/project/inc/web/web_utils.h
@@ -8,6 +8,21 @@
#ifndef _INCLUDE_WEB_UTILS_H_
#define _INCLUDE_WEB_UTILS_H_
+typedef enum {
+ SEG_ID_ROM = 0,
+ SEG_ID_SRAM,
+ SEG_ID_TCM,
+ SEG_ID_FLASH,
+ SEG_ID_SDRAM,
+ SEG_ID_SOC,
+ SEG_ID_CPU,
+ SEG_ID_ERR,
+ SEG_ID_MAX
+} SEG_ID;
+
+extern const uint32 tab_seg_def[];
+SEG_ID get_seg_id(uint32 addr, int32 size);
+
int rom_atoi(const char *s);
void copy_align4(void *ptrd, void *ptrs, uint32 len);
uint32 hextoul(uint8 *s);
diff --git a/project/src/console/pwm_tst.c b/project/src/console/pwm_tst.c
index 5e995c3..95f0a1d 100644
--- a/project/src/console/pwm_tst.c
+++ b/project/src/console/pwm_tst.c
@@ -44,16 +44,11 @@ LOCAL void fATPWM(int argc, char *argv[]) {
};
}
-LOCAL void fATWLED(int argc, char *argv[]) {
- HalPinCtrlRtl8195A(WL_LED, 2, 1);
- HalPinCtrlRtl8195A(EGTIM, ahextoul(argv[1]), 1);
-}
//------------------------------------------------------------------------------
// atpwm=34,1048575,524287
// atpwm=34,122,61 (8.187kHz)
// atsw 40000368 85001002 (8.187kHz)
// atsd 40000360 6
-MON_RAM_TAB_SECTION COMMAND_TABLE console_commands_adc[] = {
- { "ATWLED", 0, fATWLED, ": WLED Test" },
+MON_RAM_TAB_SECTION COMMAND_TABLE console_commands_pwm[] = {
{ "ATPWM", 3, fATPWM, "=,,: PWM Test" }
};
diff --git a/project/src/web/web_int_callbacks.c b/project/src/web/web_int_callbacks.c
index 4ce4f51..72fd6ce 100644
--- a/project/src/web/web_int_callbacks.c
+++ b/project/src/web/web_int_callbacks.c
@@ -53,6 +53,10 @@
#define mMIN(a, b) ((audata_stop &= 0xfffffff0;
while(web_conn->msgbuflen + (9+3*16+17+2) <= web_conn->msgbufsize) {
- if((uint32)addr < 0x9A000000) {
+// if((uint32)addr < 0x9A000000) {
+ if((uint32)addr >= 0x98000000 && (uint32)addr < 0x9A000000) {
+ OpenFlash();
+ }
tcp_puts("%08x", addr);
for(i=0 ; i < 4 ; i++) data.dw[i] = *addr++;
web_conn->udata_start = (uint32)addr;
- if(ts_conn->flag.user_option1) {
+ if(ts_conn->flag.user_option1) { // dword or byte ?
for(i=0 ; i < 4 ; i++) tcp_puts(" %08x", data.dw[i]);
}
else {
for(i=0 ; i < 16 ; i++) tcp_puts(" %02x", data.b[i]);
}
+ if((uint32)addr >= 0x98000000 && (uint32)addr < 0x9A000000) {
+ CloseFlash();
+ }
tcp_put(' '); tcp_put(' ');
for(i=0 ; i < 16 ; i++) tcp_put((data.b[i] >=' ' && data.b[i] != 0x7F)? data.b[i] : '.');
tcp_puts("\r\n");
@@ -248,13 +258,12 @@ void ICACHE_FLASH_ATTR web_hexdump(TCP_SERV_CONN *ts_conn)
if(!CheckSCB(SCB_WEBSOC)) SetSCB(SCB_FCLOSE | SCB_DISCONNECT); // connection close
return;
}
- }
- else {
- tcp_puts("%p = Bad address!\r\n", addr);
- ClrSCB(SCB_RETRYCB);
- if(!CheckSCB(SCB_WEBSOC)) SetSCB(SCB_FCLOSE | SCB_DISCONNECT); // connection close
- return;
- };
+// } else {
+// tcp_puts("%p = Bad address!\r\n", addr);
+// ClrSCB(SCB_RETRYCB);
+// if(!CheckSCB(SCB_WEBSOC)) SetSCB(SCB_FCLOSE | SCB_DISCONNECT); // connection close
+// return;
+// };
}
// repeat in the next call ...
SetSCB(SCB_RETRYCB);
@@ -283,18 +292,18 @@ void ICACHE_FLASH_ATTR web_get_flash(TCP_SERV_CONN *ts_conn)
#if DEBUGSOO > 2
os_printf("%08x..%08x ",web_conn->udata_start, web_conn->udata_start + len );
#endif
-// device_mutex_lock(RT_DEV_LOCK_FLASH);
+ device_mutex_lock(RT_DEV_LOCK_FLASH);
if(spi_flash_read(web_conn->udata_start, web_conn->msgbuf, len)) {
web_conn->udata_start += len;
web_conn->msgbuflen += len;
if(web_conn->udata_start < web_conn->udata_stop) {
SetNextFunSCB(web_get_flash);
-// device_mutex_unlock(RT_DEV_LOCK_FLASH);
+ device_mutex_unlock(RT_DEV_LOCK_FLASH);
SetSCB(SCB_RETRYCB);
return;
};
};
-// device_mutex_unlock(RT_DEV_LOCK_FLASH);
+ device_mutex_unlock(RT_DEV_LOCK_FLASH);
ClrSCB(SCB_RETRYCB);
// SetSCB(SCB_FCLOSE | SCB_DISCONNECT);
return;
@@ -320,7 +329,13 @@ void ICACHE_FLASH_ATTR web_get_ram(TCP_SERV_CONN *ts_conn)
}
// Get/put as many bytes as possible
uint32 len = mMIN(web_conn->msgbufsize - web_conn->msgbuflen, web_conn->udata_stop - web_conn->udata_start);
+ if((uint32)web_conn->udata_start >= 0x98000000 && (uint32)web_conn->udata_start < 0x9A000000) {
+ OpenFlash();
+ }
copy_align4(web_conn->msgbuf, (void *)(web_conn->udata_start), len);
+ if((uint32)web_conn->udata_start >= 0x98000000 && (uint32)web_conn->udata_start < 0x9A000000) {
+ CloseFlash();
+ }
web_conn->msgbuflen += len;
web_conn->udata_start += len;
#if DEBUGSOO > 2
diff --git a/project/src/web/web_utils.c b/project/src/web/web_utils.c
index b6c704f..1adb718 100644
--- a/project/src/web/web_utils.c
+++ b/project/src/web/web_utils.c
@@ -95,6 +95,46 @@ int ICACHE_FLASH_ATTR rom_atoi(const char *s)
n = 10*n - (*s++ - '0');
return neg ? n : -n;
}
+
+/******************************************************************************
+ * get_seg_id()
+*******************************************************************************/
+const char * const txt_tab_seg[] = {
+ "ROM" // 0
+ "SRAM", // 1
+ "TCM", // 2
+ "FLASH", // 3 // -> flash On
+ "SDRAM", // 4 // -> Test ChipID or HAL_PERI_ON_WRITE32(REG_SOC_FUNC_EN, HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) | BIT(21)); // Flag SDRAM Off
+ "SOC", // 5 // protected !
+ "CPU", // 6 // protected !
+ "UNK", // 7
+ };
+
+const uint32 tab_seg_def[] = {
+ 0x00000000, 0x00050000,
+ 0x10000000, 0x10070000,
+ 0x1fff0000, 0x20000000,
+ 0x98000000, 0xA0000000,
+ 0x30000000, 0x30200000,
+ 0x40000000, 0x40800000,
+ 0xE0000000, 0xE0010000,
+ 0x00000000, 0xFFFFFFFF
+};
+
+SEG_ID get_seg_id(uint32 addr, int32 size) {
+ SEG_ID ret = SEG_ID_ERR;
+ uint32 * ptr = &tab_seg_def;
+ if (size > 0) {
+ do {
+ ret++;
+ if (addr >= ptr[0] && addr + size <= ptr[1]) {
+ return ret;
+ };
+ ptr += 2;
+ } while (ret < SEG_ID_MAX);
+ };
+ return 0;
+}
/******************************************************************************
* copy_align4
* копирует данные из области кеширования flash и т.д.