ESP32 as ISP
- Vader_Mester
- Posts: 300
- Joined: Tue Dec 05, 2017 8:28 pm
- Location: Hungary
- Contact:
Re: ESP32 as ISP
Now that is good news. If you happen to succeed, in this, let me know. I have a forthcoming smart light project with the PICO in the center.
Vader[BEN]
Vader[BEN]
Code: Select all
task_t coffeeTask()
{
while(atWork){
if(!xStreamBufferIsEmpty(mug)){
coffeeDrink(mug);
} else {
xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
}
}
vTaskDelete(NULL);
}
Re: ESP32 as ISP
Any news on this matter?
I see that the guys at Arduino have a tutorial on their website entirely dedicated to this: https://www.arduino.cc/en/Tutorial/ArduinoISP
I see that the guys at Arduino have a tutorial on their website entirely dedicated to this: https://www.arduino.cc/en/Tutorial/ArduinoISP
- Vader_Mester
- Posts: 300
- Joined: Tue Dec 05, 2017 8:28 pm
- Location: Hungary
- Contact:
Re: ESP32 as ISP
Check this thread in Showcase, for external flash driver (I knew we had it somewhere ).
https://esp32.com/viewtopic.php?f=17&t=4666
Check driver files.
1 note is that as far as I know, in case of most flashes, you can only program 1 page at a time, 256bytes (Command, Address, 256byte of data), because the flash page size is usually that large. You just read the 256bytes of chunks from your .bin file until you write everything to the flash.
Normally the flash is a Winbond flash, but what you see in the datasheet below, usually applies to all NOR flashes.
http://www.winbond.com/resource-files/w ... %20kms.pdf
I haven't looked into the driver yet, so check it out.
https://esp32.com/viewtopic.php?f=17&t=4666
Check driver files.
1 note is that as far as I know, in case of most flashes, you can only program 1 page at a time, 256bytes (Command, Address, 256byte of data), because the flash page size is usually that large. You just read the 256bytes of chunks from your .bin file until you write everything to the flash.
Normally the flash is a Winbond flash, but what you see in the datasheet below, usually applies to all NOR flashes.
http://www.winbond.com/resource-files/w ... %20kms.pdf
I haven't looked into the driver yet, so check it out.
Code: Select all
task_t coffeeTask()
{
while(atWork){
if(!xStreamBufferIsEmpty(mug)){
coffeeDrink(mug);
} else {
xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
}
}
vTaskDelete(NULL);
}
Re: ESP32 as ISP
@Vader_Mester
I've also came across that github repo while looking for a solution to this problem. Unfortunately, it doesn't provide much more info than the other ones out there; this one is another example. They are great for testing basic operations on the serial flash, but provide no real solution to the problem of uploading a bin/hex file to it.
Reading more into this, I think that the bootloader of the programmer board needs to be modified in order for SPI flashing to work (feel free to correct me if I'm wrong).
I've also came across that github repo while looking for a solution to this problem. Unfortunately, it doesn't provide much more info than the other ones out there; this one is another example. They are great for testing basic operations on the serial flash, but provide no real solution to the problem of uploading a bin/hex file to it.
Reading more into this, I think that the bootloader of the programmer board needs to be modified in order for SPI flashing to work (feel free to correct me if I'm wrong).
- Vader_Mester
- Posts: 300
- Joined: Tue Dec 05, 2017 8:28 pm
- Location: Hungary
- Contact:
Re: ESP32 as ISP
If you have a driver to write to flash, then you can write anything. You just declare buffers, get their pointers, and pass them to the writing function which does it, and then repeat.
You first need to calculate the size of the .bin file in bytes, the number of page writes needed, and a for cycle to do the write and warification.
So
1st: erase target flash, and read from the target flash to check if it's erased.
- Read the first 256 bytes from the .bin file on the ESP-Flash, and copy it into a DMA buffer.
- Disable write protect on the target flash
- Start writing the 256bytes of data to target
- Read back the written data into a receive buffer
- Compare the 2 sets of 256bytes to make sure you correctly written the target flash
- repeat.
For you, I think the library I linked should be good to go.
You first need to calculate the size of the .bin file in bytes, the number of page writes needed, and a for cycle to do the write and warification.
So
1st: erase target flash, and read from the target flash to check if it's erased.
- Read the first 256 bytes from the .bin file on the ESP-Flash, and copy it into a DMA buffer.
- Disable write protect on the target flash
- Start writing the 256bytes of data to target
- Read back the written data into a receive buffer
- Compare the 2 sets of 256bytes to make sure you correctly written the target flash
- repeat.
For you, I think the library I linked should be good to go.
Code: Select all
task_t coffeeTask()
{
while(atWork){
if(!xStreamBufferIsEmpty(mug)){
coffeeDrink(mug);
} else {
xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
}
}
vTaskDelete(NULL);
}
Re: ESP32 as ISP
That is certainly easier said than done, especially if I take into consideration my limited interaction with ESP-IDF (most of the time I use Arduino IDE + ESP32 Core for Arduino), but I will try to look into it.Vader_Mester wrote:If you have a driver to write to flash, then you can write anything. You just declare buffers, get their pointers, and pass them to the writing function which does it, and then repeat.
You first need to calculate the size of the .bin file in bytes, the number of page writes needed, and a for cycle to do the write and warification.
So
1st: erase target flash, and read from the target flash to check if it's erased.
- Read the first 256 bytes from the .bin file on the ESP-Flash, and copy it into a DMA buffer.
- Disable write protect on the target flash
- Start writing the 256bytes of data to target
- Read back the written data into a receive buffer
- Compare the 2 sets of 256bytes to make sure you correctly written the target flash
- repeat.
For you, I think the library I linked should be good to go.
First of all I have to figure out a way to make it work with SPI routed trought the GPIO MUX. For now I see it only works with default HSPI/VSPI bus pins. I'm using GPIO 25,26 & 27 for the main SPI lines.
Second of all I will have to check the compatibility with S25FL164K Cypress serial NOR flash that I'm using.
Last, if I'm lucky, and by now all is fine I'll might be able to implement the algorithm you've described.
I'll let you know the result.
- Vader_Mester
- Posts: 300
- Joined: Tue Dec 05, 2017 8:28 pm
- Location: Hungary
- Contact:
Re: ESP32 as ISP
If you compare the 2 datasheets, you will find the conclusion.
So far what I have seen for flashes, is that all the functions and commands are exactly the same, there are some manufacturer specific commands and registers you normally don't need.
I started ESP32 with Arduino.. then discovered ESP-IDF and dumped Arduino completely.
Reason: The learning curve is not that quick for the IDF, but now most of the commands are in my fingers for navigating and make commands, so I can easily flash things.
I strongly recommend Eclipse for writing in C or Cpp, as it's compatible with the make system used by IDF. So essentially you can use Codeblocks, Notepad++, Eclipse, etc for code writing.
The important thing is to use the Monitor function in IDF "make monitor" after you flash something. When you write your code, use a bunch of Printf-s after each function has run, to see how your code progresses, that you can monitor.
By the way, the sequence I wrote in the previous post is right in the code from Illucius, write test function.
"exflash.cpp"
Write test function - Starting from line 115:
Here you define the basic info for the flash chip, and GPIO pins for the SPI, SPI freq, as well as maximum DMA size, etc.
Further down in the write test function (line 143)
This code checks flash size, and creates the write and read buffers
And finally this is what you need. (Starting from line 158).
This nice code eareses a sector before write, writes the Write buffer, reads the written data back to the read buffer, and
compares the 2 buffers, the printf function then prints to serial (into the monitor app),if it is failed, and in which cycle (sector write)
Further below, it will write out to serial the 2 data arrays in a visible form.
You basically include this library into your project, and in your main app, you just call the functions with some given data, and then you are done!
So far what I have seen for flashes, is that all the functions and commands are exactly the same, there are some manufacturer specific commands and registers you normally don't need.
I started ESP32 with Arduino.. then discovered ESP-IDF and dumped Arduino completely.
Reason: The learning curve is not that quick for the IDF, but now most of the commands are in my fingers for navigating and make commands, so I can easily flash things.
I strongly recommend Eclipse for writing in C or Cpp, as it's compatible with the make system used by IDF. So essentially you can use Codeblocks, Notepad++, Eclipse, etc for code writing.
The important thing is to use the Monitor function in IDF "make monitor" after you flash something. When you write your code, use a bunch of Printf-s after each function has run, to see how your code progresses, that you can monitor.
By the way, the sequence I wrote in the previous post is right in the code from Illucius, write test function.
"exflash.cpp"
Write test function - Starting from line 115:
Here you define the basic info for the flash chip, and GPIO pins for the SPI, SPI freq, as well as maximum DMA size, etc.
Code: Select all
void write_test(ExtFlash & flash, const char *name, const char *cycles)
{
printf("%-5.5s %-6.6s ", name, cycles);
ext_flash_config_t cfg =
{
.vspi = true,
.sck_io_num = PIN_SPI_SCK,
.miso_io_num = PIN_SPI_MISO,
.mosi_io_num = PIN_SPI_MOSI,
.ss_io_num = PIN_SPI_SS,
.hd_io_num = PIN_SPI_HD,
.wp_io_num = PIN_SPI_WP,
.speed_mhz = 40,
.dma_channel = 1,
.queue_size = 2,
.max_dma_size = 8192,
.sector_size = 0,
.capacity = 0
};
Code: Select all
int cap = flash.chip_size();
int sector_sz = flash.sector_size();
int step = cap / 16;
uint8_t *rbuf = (uint8_t *) malloc(sector_sz);
uint8_t *wbuf = (uint8_t *) malloc(sector_sz);
And finally this is what you need. (Starting from line 158).
Code: Select all
for (addr = 0; addr < cap; addr += step)
{
sectors++;
flash.erase_sector(addr / sector_sz);
flash.write(addr, wbuf, sector_sz);
flash.read(addr, rbuf, sector_sz);
bool good = true;
for (int b = 0; b < sector_sz; b++)
{
if (wbuf[b] != rbuf[b])
{
printf("erase/write/verify failed at block %d offset %d\n", addr / sector_sz, b);
Code: Select all
if (wbuf[b] != rbuf[b])
Further below, it will write out to serial the 2 data arrays in a visible form.
You basically include this library into your project, and in your main app, you just call the functions with some given data, and then you are done!
Code: Select all
task_t coffeeTask()
{
while(atWork){
if(!xStreamBufferIsEmpty(mug)){
coffeeDrink(mug);
} else {
xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
}
}
vTaskDelete(NULL);
}
- Vader_Mester
- Posts: 300
- Joined: Tue Dec 05, 2017 8:28 pm
- Location: Hungary
- Contact:
Re: ESP32 as ISP
1 additional thing for the above:
You can try to use SPIFFS on the programmer ESP32, to store the .bin file.
There is an example in the ESP-IDF repo: [url]https://github.com/espressif/esp-idf/tr ... age/spiffs[/url
Using this, you can essentialy store your .bin file you want to program, as a binary, and using the example, the following functions can be used:
This effectively opens a .txt file stored on the ESP flash, and created the pointer "f" to the file, which the rest of the system can use to read, from etc.
Here you can use POSIX and C standard library functions to work with files, the example is very nice.
For you this should be the most convenient to put your .bin file onto the ESP-ISP flash, as it's just a matter of preparing the partition contents and use the tools to include it when the project is getting built.
Warning here is that, you may have some limitations on how much data can you store on the flash of the ISP. I suggest using a 16MB flash for the ISP, which is well enough for almost anything.
Vader[Ben]
You can try to use SPIFFS on the programmer ESP32, to store the .bin file.
There is an example in the ESP-IDF repo: [url]https://github.com/espressif/esp-idf/tr ... age/spiffs[/url
Using this, you can essentialy store your .bin file you want to program, as a binary, and using the example, the following functions can be used:
Code: Select all
f = fopen("/spiffs/foo.txt", "r");
if (f == NULL) {
ESP_LOGE(TAG, "Failed to open file for reading");
return;
}
char line[64];
fgets(line, sizeof(line), f);
fclose(f);
// strip newline
char* pos = strchr(line, '\n');
if (pos) {
*pos = '\0';
}
ESP_LOGI(TAG, "Read from file: '%s'", line);
Here you can use POSIX and C standard library functions to work with files, the example is very nice.
For you this should be the most convenient to put your .bin file onto the ESP-ISP flash, as it's just a matter of preparing the partition contents and use the tools to include it when the project is getting built.
Warning here is that, you may have some limitations on how much data can you store on the flash of the ISP. I suggest using a 16MB flash for the ISP, which is well enough for almost anything.
Vader[Ben]
Code: Select all
task_t coffeeTask()
{
while(atWork){
if(!xStreamBufferIsEmpty(mug)){
coffeeDrink(mug);
} else {
xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
}
}
vTaskDelete(NULL);
}
Re: ESP32 as ISP
Big thanks for your help, Ben!
The library seems to work with the Cypress S25FL164K serial flash that I use. As you said, the instructions for both Winbond and Cypress serial flash NOR chips are quite the same (also applies for other manuf. like GigaDevice, Macronix etc).
Here are the results for reading:
Unfortunately the writing process yields the error: unaliged write failed . I need to dig into this to see what's wrong.
Later edit: seems like every write action fails with:
The bin files (bootloader.bin, partitions_singleapp.bin and blink.bin) take just a few hundreds of KB of memory. I don't think that would present any problem to the 8MB S25FL164K serial NOR flash that I use.
I'll have a look into SPIFFS. You may be right about storing those bin files using the SPIFFS file system and then putting them in the right place in memory (0x1000, 0x8000, 0x10000); rather than transfering each byte of the bin files trough the serial interface at its respective location in memory.
The library seems to work with the Cypress S25FL164K serial flash that I use. As you said, the instructions for both Winbond and Cypress serial flash NOR chips are quite the same (also applies for other manuf. like GigaDevice, Macronix etc).
Here are the results for reading:
Code: Select all
Bus Bus Queue Block Block
Mode Cycles Mhz Size Size Count Secs MB/s
std 1-1-1 10 1 256 32768 8.17 0.98
std 1-1-1 10 1 512 16384 7.44 1.08
std 1-1-1 10 1 1024 8192 7.07 1.13
std 1-1-1 10 1 2048 4096 6.89 1.16
std 1-1-1 10 1 4096 2048 6.80 1.18
std 1-1-1 10 1 8192 1024 6.76 1.18
std 1-1-1 10 1 16384 512 6.76 1.18
std 1-1-1 10 1 32768 256 6.76 1.18
std 1-1-1 10 1 65536 128 6.76 1.18
std 1-1-1 10 2 256 32768 8.17 0.98
std 1-1-1 10 2 512 16384 7.44 1.08
std 1-1-1 10 2 1024 8192 7.08 1.13
std 1-1-1 10 2 2048 4096 6.89 1.16
std 1-1-1 10 2 4096 2048 6.80 1.18
std 1-1-1 10 2 8192 1024 6.76 1.18
std 1-1-1 10 2 16384 512 6.75 1.19
std 1-1-1 10 2 32768 256 6.74 1.19
std 1-1-1 10 2 65536 128 6.74 1.19
std 1-1-1 10 3 256 32768 8.17 0.98
std 1-1-1 10 3 512 16384 7.44 1.08
std 1-1-1 10 3 1024 8192 7.08 1.13
std 1-1-1 10 3 2048 4096 6.89 1.16
std 1-1-1 10 3 4096 2048 6.80 1.18
std 1-1-1 10 3 8192 1024 6.76 1.18
std 1-1-1 10 3 16384 512 6.75 1.19
std 1-1-1 10 3 32768 256 6.74 1.19
std 1-1-1 10 3 65536 128 6.74 1.19
std 1-1-1 10 4 256 32768 8.17 0.98
std 1-1-1 10 4 512 16384 7.44 1.08
std 1-1-1 10 4 1024 8192 7.08 1.13
std 1-1-1 10 4 2048 4096 6.89 1.16
std 1-1-1 10 4 4096 2048 6.80 1.18
std 1-1-1 10 4 8192 1024 6.76 1.18
std 1-1-1 10 4 16384 512 6.75 1.19
std 1-1-1 10 4 32768 256 6.74 1.19
std 1-1-1 10 4 65536 128 6.74 1.19
std 1-1-1 20 1 256 32768 4.74 1.69
std 1-1-1 20 1 512 16384 4.05 1.98
std 1-1-1 20 1 1024 8192 3.70 2.16
std 1-1-1 20 1 2048 4096 3.53 2.27
std 1-1-1 20 1 4096 2048 3.44 2.32
std 1-1-1 20 1 8192 1024 3.40 2.35
std 1-1-1 20 1 16384 512 3.40 2.35
std 1-1-1 20 1 32768 256 3.40 2.35
std 1-1-1 20 1 65536 128 3.40 2.35
std 1-1-1 20 2 256 32768 4.74 1.69
std 1-1-1 20 2 512 16384 4.05 1.98
std 1-1-1 20 2 1024 8192 3.70 2.16
std 1-1-1 20 2 2048 4096 3.53 2.27
std 1-1-1 20 2 4096 2048 3.44 2.32
std 1-1-1 20 2 8192 1024 3.40 2.35
std 1-1-1 20 2 16384 512 3.39 2.36
std 1-1-1 20 2 32768 256 3.38 2.37
std 1-1-1 20 2 65536 128 3.38 2.37
std 1-1-1 20 3 256 32768 4.74 1.69
std 1-1-1 20 3 512 16384 4.05 1.98
std 1-1-1 20 3 1024 8192 3.70 2.16
std 1-1-1 20 3 2048 4096 3.53 2.27
std 1-1-1 20 3 4096 2048 3.44 2.32
std 1-1-1 20 3 8192 1024 3.40 2.35
std 1-1-1 20 3 16384 512 3.39 2.36
std 1-1-1 20 3 32768 256 3.38 2.37
std 1-1-1 20 3 65536 128 3.38 2.37
std 1-1-1 20 4 256 32768 4.74 1.69
std 1-1-1 20 4 512 16384 4.05 1.98
std 1-1-1 20 4 1024 8192 3.70 2.16
std 1-1-1 20 4 2048 4096 3.53 2.27
std 1-1-1 20 4 4096 2048 3.44 2.32
std 1-1-1 20 4 8192 1024 3.40 2.35
std 1-1-1 20 4 16384 512 3.39 2.36
std 1-1-1 20 4 32768 256 3.38 2.37
std 1-1-1 20 4 65536 128 3.38 2.37
std 1-1-1 40 1 256 32768 3.02 2.65
std 1-1-1 40 1 512 16384 2.35 3.41
std 1-1-1 40 1 1024 8192 2.01 3.97
std 1-1-1 40 1 2048 4096 1.85 4.33
std 1-1-1 40 1 4096 2048 1.76 4.54
std 1-1-1 40 1 8192 1024 1.72 4.65
std 1-1-1 40 1 16384 512 1.72 4.65
std 1-1-1 40 1 32768 256 1.72 4.65
std 1-1-1 40 1 65536 128 1.72 4.65
std 1-1-1 40 2 256 32768 3.02 2.65
std 1-1-1 40 2 512 16384 2.35 3.40
std 1-1-1 40 2 1024 8192 2.01 3.97
std 1-1-1 40 2 2048 4096 1.85 4.33
std 1-1-1 40 2 4096 2048 1.76 4.54
std 1-1-1 40 2 8192 1024 1.72 4.65
std 1-1-1 40 2 16384 512 1.71 4.68
std 1-1-1 40 2 32768 256 1.70 4.70
std 1-1-1 40 2 65536 128 1.70 4.71
std 1-1-1 40 3 256 32768 3.02 2.65
std 1-1-1 40 3 512 16384 2.35 3.40
std 1-1-1 40 3 1024 8192 2.01 3.97
std 1-1-1 40 3 2048 4096 1.85 4.33
std 1-1-1 40 3 4096 2048 1.76 4.54
std 1-1-1 40 3 8192 1024 1.72 4.65
std 1-1-1 40 3 16384 512 1.71 4.68
std 1-1-1 40 3 32768 256 1.70 4.70
std 1-1-1 40 3 65536 128 1.70 4.71
std 1-1-1 40 4 256 32768 3.02 2.65
std 1-1-1 40 4 512 16384 2.35 3.40
std 1-1-1 40 4 1024 8192 2.01 3.97
std 1-1-1 40 4 22048 4096 1.85 4.33
std 1-1-1 40 4 4096 2048 1.76 4.54
std 1-1-1 40 4 8192 1024 1.72 4.65
std 1-1-1 40 4 16384 512 1.71 4.68
std 1-1-1 40 4 32768 256 1.70 4.70
std 1-1-1 40 4 65536 128 1.70 4.71
std 1-1-1 80 1 256 32768 2.16 3.70
std 1-1-1 80 1 512 16384 1.50 5.33
std 1-1-1 80 1 1024 8192 1.17 6.84
std 1-1-1 80 1 2048 4096 1.00 7.97
std 1-1-1 80 1 4096 2048 0.92 8.67
std 1-1-1 80 1 8192 1024 0.88 9.07
std 1-1-1 80 1 16384 512 0.88 9.08
std 1-1-1 80 1 32768 256 0.88 9.08
std 1-1-1 80 1 65536 128 0.88 9.09
std 1-1-1 80 2 256 32768 2.16 3.70
std 1-1-1 80 2 512 16384 1.50 5.33
std 1-1-1 80 2 1024 8192 1.17 6.84
std 1-1-1 80 2 2048 4096 1.00 7.96
std 1-1-1 80 2 4096 2048 0.92 8.67
std 1-1-1 80 2 8192 1024 0.88 9.07
std 1-1-1 80 2 16384 512 0.87 9.20
std 1-1-1 80 2 32768 256 0.86 9.26
std 1-1-1 80 2 65536 128 0.86 9.29
std 1-1-1 80 3 256 32768 2.16 3.70
std 1-1-1 80 3 512 16384 1.50 5.33
std 1-1-1 80 3 1024 8192 1.17 6.84
std 1-1-1 80 3 2048 4096 1.00 7.96
std 1-1-1 80 3 4096 2048 0.92 8.67
std 1-1-1 80 3 8192 1024 0.88 9.07
std 1-1-1 80 3 16384 512 0.87 9.20
std 1-1-1 80 3 32768 256 0.86 9.26
std 1-1-1 80 3 65536 128 0.86 9.29
std 1-1-1 80 4 256 32768 2.16 3.70
std 1-1-1 80 4 512 16384 1.50 5.33
std 1-1-1 80 4 1024 8192 1.17 6.84
std 1-1-1 80 4 2048 4096 1.00 7.96
std 1-1-1 80 4 4096 2048 0.92 8.67
std 1-1-1 80 4 8192 1024 0.88 9.07
std 1-1-1 80 4 16384 512 0.87 9.20
std 1-1-1 80 4 32768 256 0.86 9.26
std 1-1-1 80 4 65536 128 0.86 9.29
dual 1-1-2 10 1 256 32768 4.83 1.66
dual 1-1-2 10 1 512 16384 4.10 1.95
dual 1-1-2 10 1 1024 8192 3.72 2.15
dual 1-1-2 10 1 2048 4096 3.54 2.26
dual 1-1-2 10 1 4096 2048 3.45 2.32
dual 1-1-2 10 1 8192 1024 3.40 2.35
dual 1-1-2 10 1 16384 512 3.40 2.35
dual 1-1-2 10 1 32768 256 3.40 2.35
dual 1-1-2 10 1 65536 128 3.40 2.35
dual 1-1-2 10 2 256 32768 4.83 1.66
dual 1-1-2 10 2 512 16384 4.10 1.95
dual 1-1-2 10 2 1024 8192 3.72 2.15
dual 1-1-2 10 2 2048 4096 3.54 2.26
dual 1-1-2 10 2 4096 2048 3.45 2.32
dual 1-1-2 10 2 8192 1024 3.40 2.35
dual 1-1-2 10 2 16384 512 3.39 2.36
dual 1-1-2 10 2 32768 256 3.38 2.36
dual 1-1-2 10 2 65536 128 3.38 2.37
dual 1-1-2 10 3 256 32768 4.83 1.66
dual 1-1-2 10 3 512 16384 4.10 1.95
dual 1-1-2 10 3 1024 8192 3.72 2.15
dual 1-1-2 10 3 2048 4096 3.54 2.26
dual 1-1-2 10 3 4096 2048 3.45 2.32
dual 1-1-2 10 3 8192 1024 3.40 2.35
dual 1-1-2 10 3 16384 512 3.39 2.36
dual 1-1-2 10 3 32768 256 3.38 2.36
dual 1-1-2 10 3 65536 128 3.38 2.37
dual 1-1-2 10 4 256 32768 4.83 1.66
dual 1-1-2 10 4 512 16384 4.10 1.95
dual 1-1-2 10 4 1024 8192 3.72 2.15
dual 1-1-2 10 4 2048 4096 3.54 2.26
dual 1-1-2 10 4 4096 2048 3.45 2.32
dual 1-1-2 10 4 8192 1024 3.40 2.35
dual 1-1-2 10 4 16384 512 3.39 2.36
dual 1-1-2 10 4 32768 256 3.38 2.36
dual 1-1-2 10 4 65536 128 3.38 2.37
dual 1-1-2 20 1 256 32768 3.08 2.60
dual 1-1-2 20 1 512 16384 2.38 3.36
dual 1-1-2 20 1 1024 8192 2.03 3.95
dual 1-1-2 20 1 2048 4096 1.85 4.32
dual 1-1-2 20 1 4096 2048 1.77 4.53
dual 1-1-2 20 1 8192 1024 1.72 4.64
dual 1-1-2 20 1 16384 512 1.72 4.65
dual 1-1-2 20 1 32768 256 1.72 4.65
dual 1-1-2 20 1 65536 128 1.72 4.65
dual 1-1-2 20 2 256 32768 3.08 2.60
dual 1-1-2 20 2 512 16384 2.38 3.36
dual 1-1-2 20 2 1024 8192 2.03 3.94
dual 1-1-2 20 2 2048 4096 1.85 4.32
dual 1-1-2 20 2 4096 2048 1.77 4.53
dual 1-1-2 20 2 8192 1024 1.72 4.64
dual 1-1-2 20 2 16384 512 1.71 4.68
dual 1-1-2 20 2 32768 256 1.70 4.69
dual 1-1-2 20 2 65536 128 1.70 4.70
dual 1-1-2 20 3 256 32768 3.08 2.60
dual 1-1-2 20 3 512 16384 2.38 3.36
dual 1-1-2 20 3 1024 8192 2.03 3.94
dual 1-1-2 20 3 2048 4096 1.85 4.32
dual 1-1-2 20 3 4096 2048 1.77 4.53
dual 1-1-2 20 3 8192 1024 1.72 4.64
dual 1-1-2 20 3 16384 512 1.71 4.68
dual 1-1-2 20 3 32768 256 1.70 4.69
dual 1-1-2 20 3 65536 128 1.70 4.70
dual 1-1-2 20 4 256 32768 3.08 2.60
dual 1-1-2 20 4 512 16384 2.38 3.36
dual 1-1-2 20 4 1024 8192 2.03 3.94
dual 1-1-2 20 4 2048 4096 1.85 4.32
dual 1-1-2 20 4 4096 2048 1..7 4.53
dual 1-1-2 20 4 8192 1024 1.72 4.64
dual 1-1-2 20 4 16384 512 1.77 4.68
dual 1-1-2 20 4 32768 256 1.70 4.69
dual 1-1-2 20 4 65536 128 1.77 4.70
dual 1-1-2 40 1 256 32768 2.20 3.63
dual 1-1-2 40 1 512 16384 1.52 5.26
dual 1-1-2 40 1 1024 8192 1.18 6.78
dual 1-1-2 40 1 2048 4096 1.01 7.93
dual 1-1-2 40 1 4096 2048 0.93 8.64
dual 1-1-2 40 1 8192 1024 0.88 9.06
dual 1-1-2 40 1 16384 512 0..8 9.07
dual 1-1-2 40 1 32768 256 0.88 9.07
dual 1-1-2 40 1 65536 128 0.88 9.08
dual 1-1-2 40 2 256 32768 2.20 3.63
dual 1-1-2 40 2 512 16384 1.52 5.26
dual 1-1-2 40 2 1024 8192 1.18 6.78
dual 1-1-2 40 2 2048 4096 1.01 7.93
dual 1-1-2 40 2 4096 2048 0.93 8.64
dual 1-1-2 40 2 8192 1024 0.88 9.06
dual 1-1-2 40 2 16384 512 0.87 9.19
dual 1-1-2 40 2 32768 256 0.86 9.25
dual 1-1-2 40 2 65536 128 0.86 9.28
dual 1-1-2 40 3 256 32768 2.20 3.63
dual 1-1-2 40 3 512 16384 1.52 5.26
dual 1-1-2 40 3 1024 8192 1.18 6.78
dual 1-1-2 40 3 20048 4096 1.01 7.93
dual 1-1-2 40 3 4096 2048 0.93 8.64
dual 1-1-2 40 3 8192 1024 0.88 9.06
dual 1-1-2 40 3 16384 512 0.87 9.19
dual 1-1-2 40 3 32768 256 0.86 9.25
dual 1-1-2 40 3 65536 128 0.86 9.28
dual 1-1-2 40 4 256 32768 2.20 3.63
dual 1-1-2 40 4 512 16384 1.52 5.26
dual 1-1-2 40 4 1024 8192 1.18 6.78
dual 1-1-2 40 4 2048 4096 1.01 7.93
dual 1-1-2 40 4 4096 2048 0.93 8.64
dual 1-1-2 40 4 8192 1024 0.88 9.06
dual 1-1-2 40 4 16384 512 0.877 9.19
dual 1-1-2 40 4 32768 256 0.86 9.25
dual 1-1-2 40 4 65536 128 0.86 9.28
dual 1-1-2 80 1 256 32768 1.73 4.62
dual 1-1-2 80 1 512 16384 1.09 7.32
dual 1-1-2 80 1 1024 8192 0.76 10.59
dual 1-1-2 80 1 2048 4096 0.59 13.62
dual 1-1-2 80 1 4096 2048 0.50 15.85
dual 1-1-2 80 1 8192 1024 0.46 17.29
dual 1-1-2 80 1 16384 512 0.46 17.31
dual 1-1-2 80 1 32768 225 0.46 17.33
dual 1-1-2 80 1 65536 128 0.46 17.34
dual 1-1-2 80 2 256 32768 1.73 44.61
dual 1-1-2 80 2 512 16384 1.09 7.32
dual 1-1-2 80 2 1024 8192 0.76 10.59
dual 1-1-2 80 2 2048 4096 0.59 13.62
dual 1-1-2 80 2 4096 2048 0.50 15.85
dual 1-1-2 80 2 8192 1024 0.46 17.28
dual 1-1-2 80 2 16384 512 0.45 17.75
dual 1-1-2 80 2 32768 256 0.44 17.99
dual 1-1-2 80 2 65536 128 0.44 18.11
dual 1-1-2 80 3 256 32768 1.73 4.61
dual 1-1-2 80 3 512 11638 1.09 7.32
dual 1-1-2 80 3 1024 8192 0.76 10.59
dual 1-1-2 80 3 2048 4096 0.59 13.61
dual 1-1-2 80 3 4096 2048 0.50 15.85
dual 1-1-2 80 3 8192 1024 0.46 17.28
dual 1-1-2 80 3 16384 512 0.45 17.75
dual 1-1-2 80 3 32768 256 0.44 17.99
dual 1-1-2 80 3 65536 128 0.44 18.11
dual 1-1-2 80 4 256 32768 1.73 4.61
dual 1-1-2 80 4 512 16384 1.09 7.32
dual 1-1-2 80 4 1024 8192 0.76 10.59
dual 1-1-2 80 4 2048 4096 0.59 13.61
dual 1-1-2 80 4 4096 2048 0.50 15.85
dual 1-1-2 80 4 8192 1024 0.46 17.28
dual 1-1-2 80 4 16384 512 0.45 17.75
dual 1-1-2 80 4 32768 256 0.44 17.99
dual 1-1-2 80 4 65536 128 0.44 18.11
dio 1-2-2 10 1 256 32768 4.79 1.67
dio 1-2-2 10 1 512 16384 4.07 1.97
dio 1-2-2 10 1 1024 8192 3.71 2.15
dio 1-2-2 10 1 2048 4096 3.53 2.26
dio 1-2-2 10 1 4096 2048 3.45 2.32
dio 1-2-2 10 1 8192 1024 3.40 2.35
dio 1-2-2 10 1 16384 512 3.40 2.35
dio 1-2-2 10 1 32768 256 3.40 2.35
dio 1-2-2 10 1 65536 128 3.40 2.35
dio 1-2-2 10 2 256 32768 4.79 1.67
dio 1-2-2 10 2 512 16384 4.07 1.97
dio 1-2-2 10 2 1024 8192 3.71 2.15
dio 1-2-2 10 2 2048 4096 3.53 2.26
dio 1-2-2 10 2 4096 2048 3.45 2.32
dio 1-2-2 10 2 8192 1024 3.40 2.35
dio 1-2-2 10 2 16384 512 3.39 2.36
dio 1-2-2 10 2 32768 256 3.38 2.36
dio 1-2-2 10 2 65536 128 3.38 2.37
dio 1-2-2 10 3 256 32768 4.79 1.67
dio 1-2-2 10 3 512 16384 4.07 1.97
dio 1-2-2 10 3 1024 8192 3.71 2.15
dio 1-2-2 10 3 2048 4096 3.53 2.26
dio 1-2-2 10 3 4096 2048 3.45 2.32
dio 1-2-2 10 3 8192 1024 3.40 2.35
dio 1-2-2 10 3 16384 512 3.39 2.36
dio 1-2-2 10 3 32768 256 3.38 2.36
dio 1-2-2 10 3 65536 128 3.38 2.37
dio 1-2-2 10 4 256 32768 4.79 1.67
dio 1-2-2 10 4 512 16384 4.07 1.97
dio 1-2-2 10 4 1024 8192 3.71 2.15
dio 1-2-2 10 4 2048 4096 3.53 2.26
dio 1-2-2 10 4 4096 2048 3.45 2.32
dio 1-2-2 10 4 8192 1024 3.40 2.35
dio 1-2-2 10 4 16384 512 3.39 2.36
dio 1-2-2 10 4 32768 256 3.38 2.36
dio 1-2-2 10 4 65536 128 3.38 2.37
dio 1-2-2 20 1 256 32768 3.06 2.62
dio 1-2-2 20 1 512 16384 2.37 3.38
dio 1-2-2 20 1 1024 8192 2.02 3.95
dio 1-2-2 20 1 2048 4096 1.85 4.32
dio 1-2-2 20 1 4096 2048 1.77 4.53
dio 1-2-2 20 1 8192 1024 1.72 4.65
dio 1-2-2 20 1 16384 512 1.72 4.65
dio 1-2-2 20 1 32768 256 1.72 4.65
dio 1-2-2 20 1 65536 128 1.72 4.65
dio 1-2-2 20 2 256 32768 3.06 2.62
dio 1-2-2 20 2 512 16384 2.37 3.38
dio 1-2-2 20 2 1024 8192 2.02 3.96
dio 1-2-2 20 2 2048 4096 1.85 4.32
dio 1-2-2 20 2 4096 2048 1.77 4.53
dio 1-2-2 20 2 8192 1024 1.72 4.65
dio 1-2-2 20 2 16384 512 1.71 4.68
dio 1-2-2 20 2 32768 256 1.70 4.70
dio 1-2-2 20 2 65536 128 1.70 4.70
dio 1-2-2 20 3 256 32768 3.06 2.62
dio 1-2-2 20 3 512 16384 2.37 3.38
dio 1-2-2 20 3 1024 8192 2.02 3.95
dio 1-2-2 20 3 2048 4096 1.85 4.32
dio 1-2-2 20 3 4096 2048 1.77 4.53
dio 1-2-2 20 3 8192 1024 1.72 4.65
dio 1-2-2 20 3 16384 512 1.71 4.68
dio 1-2-2 20 3 32768 256 1.70 4.70
dio 1-2-2 20 3 65536 128 1.70 4.70
dio 1-2-2 20 4 256 32768 3.06 2.62
dio 1-2-2 20 4 512 16384 2.37 3.38
dio 1-2-2 20 4 1024 8192 2.02 3.95
dio 1-2-2 20 4 2048 4096 1.85 4.32
dio 1-2-2 20 4 4096 2048 1.77 4.53
dio 1-2-2 20 4 8192 1024 1.72 4.65
dio 1-2-2 20 4 16384 512 1.71 4.68
dio 1-2-2 20 4 32768 256 1.70 4.70
dio 1-2-2 20 4 65536 128 1.70 4.70
dio 1-2-2 40 1 256 32768 2.20 3.64
dio 1-2-2 40 1 511 16384 1.52 5.27
dio 1-2-2 40 1 1024 8192 1.18 6.79
dio 1-2-2 40 1 2048 4096 1.01 7.93
dio 1-2-2 40 1 4096 2048 0.92 8.65
dio 1-2-2 40 1 8192 1024 0.88 9.06
dio 1-2-2 40 1 16384 512 0.88 9.07
dio 1-2-2 40 1 32768 256 0.88 9.08
dio 1-2-2 40 1 65536 128 0.88 9.08
dio 1-2-2 40 2 256 32768 2.20 3.64
dio 1-2-2 40 2 512 16384 1.52 5.27
dio 1-2-2 40 2 1024 8192 1.18 6.79
dio 1-2-2 40 2 2048 4096 1.01 7.93
dio 1-2-2 40 2 4096 2048 0.93 8.65
dio 1-2-2 40 2 8192 1024 0.88 9.06
dio 1-2-2 40 2 16384 512 0.87 9.19
dio 1-2-2 40 2 32768 256 0.86 9.26
dio 1-2-2 40 2 65536 128 0.86 9.29
dio 1-2-2 40 3 256 32768 2.20 3.64
dio 1-2-2 40 3 512 16338 1.52 5.27
dio 1-2-2 40 3 1024 8192 1.18 6.79
dio 1-2-2 40 3 2048 4096 1.01 7.93
dio 1-2-2 40 3 4096 2048 0.93 8.65
dio 1-2-2 40 3 8192 1024 0.88 9.06
dio 1-2-2 40 3 16384 512 0.87 9.19
dio 1-2-2 40 3 32768 256 0.86 9.26
dio 1-2-2 40 3 65536 128 0.86 9.29
dio 1-2-2 40 4 256 32768 2.20 3.64
dio 1-2-2 40 4 512 16384 1.52 5.27
dio 1-2-2 40 4 1024 8192 1.18 6.79
dio 1-2-2 40 4 2048 4096 1.01 7.93
dio 1-2-2 40 4 4096 2048 0.93 8.65
dio 1-2-2 40 4 8192 1024 0.88 9.06
dio 1-2-2 40 4 16384 512 0.87 9.19
dio 1-2-2 40 4 32768 256 0.86 9.26
dio 1-2-2 40 4 65536 128 0.86 9.29
dio 1-2-2 80 1 256 32768 1.74 4.60
dio 1-2-2 80 1 512 16384 1.09 7.33
dio 1-2-2 80 1 1024 8192 0.76 10.59
dio 1-2-2 80 1 2048 4096 0.59 13.62
dio 1-2-2 80 1 4096 2048 0.50 15.85
dio 1-2-2 80 1 8192 1024 0.46 17.29
dio 1-2-2 80 1 16384 512 0.46 17.32
dio 1-2-2 80 1 332768 256 0.46 17.33
dio 1-2-2 80 1 65536 128 0.46 17.33
dio 1-2-2 80 2 256 32768 1.74 4.60
dio 1-2-2 80 2 512 16384 1.09 7.32
dio 1-2-2 80 2 1024 8192 0.76 10.59
dio 1-2-2 80 2 2048 4096 0.59 13.62
dio 1-2-2 80 2 4096 2048 0.50 15.85
dio 1-2-2 80 2 8192 1024 0.46 17.28
dio 1-2-2 80 2 16384 512 0.45 17.75
dio 1-2-2 80 2 32768 256 0.44 18.00
dio 1-2-2 80 2 65536 128 0.44 18.12
dio 1-2-2 80 3 256 32768 1.74 4.60
dio 1-2-2 80 3 512 16384 1.09 7.32
dio 1-2-2 80 3 1024 8192 0.76 10.59
dio 1-2-2 80 3 2048 4096 0.59 13.62
dio 1-2-2 80 3 4096 2048 0.50 15.85
dio 1-2-2 80 3 8192 1024 0.46 17.28
dio 1-2-2 80 3 16384 512 0.45 17.75
dio 1-2-2 80 3 32768 256 0.44 18.00
dio 1-2-2 80 3 65536 128 0.44 18.12
dio 1-2-2 80 4 256 32768 1.74 4.60
dio 1-2-2 80 4 512 16384 1.09 7.32
dio 1-2-2 80 4 1024 8192 0.76 10.59
dio 1-2-2 80 4 2048 4096 0.59 13.62
dio 1-2-2 80 4 4096 2048 0.50 15.85
dio 1-2-2 80 4 8192 1024 0.46 17.28
dio 1-2-2 80 4 16384 512 0.45 17.75
dio 1-2-2 80 4 32768 256 0.44 18.00
dio 1-2-2 80 4 65536 128 0.44 18.12
quad 1-1-4 10 1 256 32768 3.28 2.44
quad 1-1-4 10 1 512 16384 2.48 3.22
quad 1-1-4 10 1 1024 8192 2.08 3.85
quad 1-1-4 10 1 2048 4096 1.88 4.26
quad 1-1-4 11 1 4096 2048 1.78 4.50
quad 1-1-4 10 1 8192 1024 1.73 4.63
quad 1-1-4 10 1 16384 512 1.73 4.63
quad 1-1-4 10 1 32768 256 1.73 4.66
quad 1-1-4 10 1 65536 128 1.72 4.64
quad 1-1-4 10 2 256 32768 3.29 2.44
quad 1-1-4 10 2 512 16384 2.48 3.22
quad 1-1-4 10 2 1024 8192 2.08 3.85
quad 1-1-4 10 2 2048 4096 1.88 4.26
quad 1-1-4 10 2 4096 2048 1.78 4.50
quad 1-1-4 10 2 8192 1024 1.73 4.63
quad 1-1-4 10 2 16384 512 1.72 4..6
quad 1-1-4 10 2 32768 256 1.71 4.68
quad 1-1-4 10 2 65536 128 1.70 4.69
quad 1-1-4 10 3 256 32768 3.29 2.44
quad 1-1-4 10 3 512 16384 2.48 3.22
quad 1-1-4 10 3 1024 8192 2.08 3.85
quad 1-1-4 10 3 2048 4096 1.88 4.26
quad 1-1-4 10 3 4096 2048 1.78 4.50
quad 1-1-4 10 3 8192 1024 1.73 4.63
quad 1-1-4 10 3 16384 512 1.72 4.66
quad 1-1-4 10 3 32768 256 1.71 4.68
quad 1-1-4 10 3 65536 128 1.70 4.69
quad 1-1-4 10 4 256 32768 3.29 2.44
quad 1-1-4 10 4 512 16384 2.48 3.22
quad 1-1-4 10 4 1024 8192 2.08 3.85
quad 1-1-4 10 4 2048 4096 1.88 4.26
quad 1-1-4 10 4 4096 2048 1.78 4.50
quad 1-1-4 10 4 8192 1024 1.73 4.63
quad 1-1-4 10 4 16384 512 1.72 4.66
quad 1-1-4 10 4 32768 256 1.71 4.68
quad 1-1-4 10 4 65536 128 1.70 4.69
quad 1-1-4 20 1 256 32768 2.38 3.37
quad 1-1-4 20 1 512 16384 1.60 4.99
quad 1-1-4 20 1 1024 8192 1.22 6.55
quad 1-1-4 20 1 2048 4096 1.03 7.77
quad 1-1-4 20 1 4096 2048 0.94 8.55
quad 1-1-4 20 1 8192 1024 0.89 9.01
quad 1-1-4 20 1 16384 512 0.89 9.02
quad 1-1-4 20 1 332768 256 0.88 9.04
quad 1-1-4 20 1 65536 128 0.88 9.05
quad 1-1-4 20 2 256 32768 2.38 3.36
quad 1-1-4 20 2 512 16384 1.60 4.99
quad 1-1-4 20 2 1024 8192 1.22 6.55
quad 1-1-4 20 2 2048 4096 1.03 7.76
quad 1-1-4 20 2 4096 2048 0.94 8.55
quad 1-1-4 20 2 8192 1024 0.89 9.01
quad 1-1-4 20 2 16384 512 0.87 9.15
quad 1-1-4 20 2 32768 256 0.87 9.23
quad 1-1-4 20 2 65536 128 0.86 9.27
quad 1-1-4 20 3 256 32768 2.38 3.36
quad 1-1-4 20 3 512 16384 1.60 4.99
quad 1-1-4 20 3 1024 8192 1.22 6.55
quad 1-1-4 20 3 2048 4096 1.03 7.76
quad 1-1-4 20 3 4096 2048 0.94 8.55
quad 1-1-4 20 3 8192 1024 0.89 9.01
quad 1-1-4 20 3 16384 512 0.88 9.15
quad 1-1-4 20 3 32768 256 0.87 9.23
quad 1-1-4 20 3 65536 128 0.86 9.26
quad 1-1-4 20 4 256 32768 2.38 3.36
quad 1-1-4 20 4 512 16384 1.60 4.99
quad 1-1-4 20 4 1024 8192 1.22 6.55
quad 1-1-4 20 4 2048 4096 1.03 7.76
quad 1-1-4 20 4 4096 2048 0.94 8.55
quad 1-1-4 20 4 8192 1024 0.89 9.01
quad 1-1-4 20 4 16384 512 0.87 9.15
quad 1-1-4 20 4 32768 256 0.87 9.23
quad 1-1-4 20 4 65536 128 0.86 9.27
quad 1-1-4 40 1 256 32768 2.07 3.86
quad 1-1-4 40 1 512 16384 1.18 6.78
quad 1-1-4 40 1 1024 8192 0.79 10.09
quad 1-1-4 40 1 2048 4096 0.61 13.20
quad 1-1-4 40 1 4096 2048 0.51 15.56
quad 1-1-4 40 1 8192 1024 0.47 17.11
quad 1-1-4 40 1 16384 512 0.47 17.14
quad 1-1-4 40 1 32768 256 0.46 17.23
quad 1-1-4 40 1 65536 128 0.46 17.27
quad 1-1-4 40 2 256 32768 2.07 3.86
quad 1-1-4 44 2 512 16384 1.18 6.78
quad 1-1-4 40 2 1024 8192 0.79 10.09
quad 1-1-4 40 2 2048 4096 0.61 13.20
quad 1-1-4 40 2 4096 2048 0.51 15.56
quad 1-1-4 40 2 8192 1024 0.47 17.11
quad 1-1-4 40 2 16384 512 0.45 17.64
quad 1-1-4 40 2 327688 256 0.45 17.92
quad 1-1-4 40 2 65536 128 0.44 18.06
quad 1-1-4 40 3 256 32768 2.07 3.86
quad 1-1-4 40 3 512 16384 1.18 6.78
quad 1-1-4 40 3 1024 8192 0.79 10.09
quad 1-1-4 40 3 2048 4096 0.61 13.20
quad 1-1-4 40 3 4096 2048 0.51 15.56
quad 1-1-4 40 3 8192 1024 0.47 17.11
quad 1-1-4 40 3 16384 512 0.45 17.64
quad 1-1-4 40 3 32768 256 0.45 17.92
quad 1-1-4 40 3 65536 128 0.44 18.06
quad 1-1-4 40 4 256 32768 2.07 3.86
quad 1-1-4 40 4 512 16384 1.18 6.78
quad 1-1-4 40 4 1024 8192 0.79 10.09
quad 1-1-4 40 4 2048 4096 0.61 13.20
quad 1-1-4 40 4 4096 2048 0.51 15.56
quad 1-1-4 40 4 8192 1024 0.47 17.11
quad 1-1-4 40 4 16384 512 0.45 17.64
quad 1-1-4 40 4 32768 256 0.45 17.92
quud 1-1-4 40 4 65536 128 0.44 18.06
quad 1-1-4 80 1 256 32768 2.20 3.64
quad 1-1-4 80 1 512 16384 0.96 8.30
quad 1-1-4 80 1 1024 8192 0.58 13.80
quad 1-1-4 80 1 2048 4096 0.39 20.31
quad 1-1-4 80 1 4096 2048 0.30 26.38
quad 1-1-4 80 1 8192 1024 0.26 31.11
quad 1-1-4 80 1 16384 512 0.26 31.20
quad 1-1-4 80 1 32768 256 0.25 31.50
quad 1-1-4 80 1 65536 128 0.25 31.64
quad 1-1-4 80 2 256 32768 2.20 3.64
quad 1-1-4 80 2 512 16384 0.96 8.30
quad 1-1-4 80 2 1024 8192 0.58 13.80
quad 1-1-4 80 2 2048 4096 0.39 20.31
quad 1-1-4 80 2 4096 2048 0.30 26.38
quad 1-1-4 80 2 8192 1024 0.26 31.11
quad 1-1-4 80 2 16384 512 0.24 32.91
quad 1-1-4 80 2 32768 256 0.24 33.89
quad 1-1-4 80 2 65536 128 0.23 34.40
quad 1-1-4 80 3 256 32768 2.20 3.64
quad 1-1-4 80 3 512 16384 0.96 8.30
quad 1-1-4 80 3 1024 8192 0.58 13.80
quad 1-1-4 80 3 2048 4096 0.39 20.31
quad 1-1-4 80 3 4096 2048 0.30 26.38
quad 1-1-4 80 3 8192 1024 0.26 31.11
quad 1-1-4 80 3 16384 512 0.24 32.91
quad 1-1-4 80 3 32768 256 0.24 33.89
quad 1-1-4 80 3 65536 128 0.23 34.40
quad 1-1-4 80 4 256 32768 2.20 3.64
quad 1-1-4 80 4 512 16384 0.96 8.30
quad 1-1-4 80 4 1024 8192 0.58 13.80
quad 1-1-4 80 4 2048 4096 0.39 20.31
quad 1-1-4 80 4 4096 2048 0.30 26.38
quad 1-1-4 80 4 8192 1024 0.26 31.10
quad 1-1-4 80 4 16384 512 0.24 32.91
quad 1-1-4 80 4 32768 256 0.24 33.89
quad 1-1-4 80 4 65536 128 0.23 34.40
qio 1-4-4 10 1 256 32768 3.09 2.59
qio 1-4-4 10 1 512 16384 2.38 3.36
qio 1-4-4 10 1 1024 8192 2.03 3.94
qio 1-4-4 10 1 2048 4096 1.85 4.32
qio 1-4-4 10 1 4096 2048 1.77 4.53
qio 1-4-4 10 1 8192 1024 1.72 4.64
qio 1-4-4 10 1 16384 512 1.72 4.65
qio 1-4-4 10 1 32768 256 1.72 4.65
qio 1-4-4 10 1 65536 128 1.72 4.65
qio 1-4-4 10 2 256 32768 3.09 2.59
qio 1-4-4 10 2 512 16384 2.38 3.36
qio 1-4-4 10 2 1024 8192 2.03 3.94
qio 1-4-4 10 2 2048 4096 1.85 4.32
qio 1-4-4 10 2 4096 2048 1.77 4.53
qio 1-4-4 10 2 8192 1024 1.72 4.64
qio 1-4-4 10 2 16384 512 1.71 4.68
qio 1-4-4 10 2 32768 256 1.70 4.69
qio 1-4-4 10 2 65536 128 1.70 4.70
qio 1-4-4 10 3 256 32768 3.09 2.59
qio 1-4-4 10 3 512 16384 2.38 3.36
qio 1-4-4 10 3 1024 8192 2.03 3.94
qio 1-4-4 10 3 2048 4096 1.85 4.32
qio 1-4-4 10 3 4096 2048 1.77 4.53
qio 1-4-4 10 3 8192 1024 1.72 4.64
qio 1-4-4 10 3 16384 512 1.71 4.68
qio 1-4-4 10 3 32768 256 1.70 4.69
qio 1-4-4 10 3 65536 128 1.70 4.70
qio 1-4-4 10 4 256 32768 3.09 2.59
qio 1-4-4 10 4 512 16384 2.38 3.36
qio 1-4-4 10 4 1024 8192 2.03 3.94
qio 1-4-4 10 4 2048 4096 1.85 4.32
qio 1-4-4 10 4 4096 2048 1.77 4.53
qio 1-4-4 10 4 8192 1024 1.72 4.64
qio 1-4-4 10 4 16384 512 1.71 4.68
qio 1-4-4 10 4 32768 256 1.70 4.69
qio 1-4-4 10 4 65536 128 1.70 4.70
qio 1-4-4 20 1 256 32768 2.21 3.62
qio 1-4-4 20 1 512 16384 1.52 5.25
qio 1-4-4 20 1 1024 8192 1.18 6.77
qio 1-4-4 20 1 2048 4096 1.01 7.92
qio 1-4-4 20 1 4096 2048 0.93 8.64
qio 1-4-4 20 1 8192 1024 0.88 9.06
qio 1-4-4 20 1 16384 512 0.88 9.07
qio 1-4-4 20 1 32768 256 0.88 9.07
qio 1-4-4 20 1 65536 128 0.88 9.08
qio 1-4-4 20 2 256 32768 2.21 3.62
qio 1-4-4 20 2 512 16384 1.52 5.25
qio 1-4-4 20 2 1024 8192 1.18 6.77
qio 1-4-4 20 2 2048 4096 1.01 7.92
qio 1-4-4 20 2 4096 2048 0.93 8.64
qio 1-4-4 20 2 8192 1024 0.88 9.06
qio 1-4-4 20 2 16384 512 0.87 9.19
qio 1-4-4 20 2 32768 256 0.86 9.25
qio 1-4-4 20 2 65536 128 0.86 9.29
qio 1-4-4 20 3 256 32768 2.21 3.62
qio 1-4-4 20 3 512 16384 1.52 5.25
qio 1-4-4 20 3 1024 8192 1.18 6.77
qio 1-4-4 20 3 2048 4096 1.01 7.92
qio 1-4-4 20 3 4096 2048 0.93 8.64
qio 1-4-4 20 3 8192 1024 0.88 9.06
qio 1-4-4 20 3 16384 512 0.87 9.19
qio 1-4-4 20 3 32768 256 0.86 9.25
qio 1-4-4 20 3 65536 128 0.86 9.29
qio 1-4-4 20 4 256 32768 2.21 3.62
qio 1-4-4 20 4 512 16384 1.52 5.25
qio 1-4-4 20 4 1024 8192 1.18 6.77
qio 1-4-4 20 4 2048 4096 1.01 7.92
qio 1-4-4 20 4 4096 2048 0.93 8.64
qio 1-4-4 20 4 8192 1024 0.88 9.06
qio 1-4-4 20 4 16384 512 0.87 9.19
qio 1-4-4 20 4 32768 256 0.86 9.25
qio 1-4-4 20 4 65536 128 0.86 9.29
qio 1-4-4 40 1 256 32768 1.74 4.59
qio 1-4-4 40 1 512 16384 1.10 7.30
qio 1-4-4 40 1 1024 8192 0.76 10.56
qio 1-4-4 40 1 2048 4096 0.59 13.59
qio 1-4-4 40 1 4096 2048 0.51 15.83
qio 1-4-4 40 1 8192 1024 0.46 17.27
qio 1-4-4 40 1 16384 512 0.46 17.31
qio 1-4-4 40 1 32768 256 0.46 17.33
qio 1-4-4 40 1 65536 128 0.46 17.34
qio 1-4-4 40 2 256 32768 1.74 4.59
qio 1-4-4 40 2 512 16384 1.10 7.30
qio 1-4-4 40 2 1024 8192 0.76 10.56
qio 1-4-4 40 2 2048 4096 0.59 13.59
qio 1-4-4 40 2 4096 2048 0.51 15.83
qio 1-4-4 40 2 8192 1024 0.46 17.27
qio 1-4-4 40 2 16384 512 0.45 17.75
qio 1-4-4 40 2 32768 256 0.44 17.99
qio 1-4-4 40 2 65536 128 0.44 18.12
qio 1-4-4 40 3 256 32768 1.74 4.59
qio 1-4-4 40 3 512 16384 1.10 7.30
qio 1-4-4 40 3 1024 8192 0.76 10.56
qio 1-4-4 40 3 2048 4096 0.59 13.59
qio 1-4-4 40 3 4096 2048 0.51 15.83
qio 1-4-4 40 3 8192 1024 0.46 17.27
qio 1-4-4 40 3 16384 512 0.45 17.75
qio 1-4-4 40 3 32768 256 0.44 17.99
qio 1-4-4 40 3 65536 128 0.44 18.12
qio 1-4-4 40 4 256 32768 1.74 4.59
qio 1-4-4 40 4 512 16384 1.10 7.30
qio 1-4-4 40 4 1024 8192 0.76 10.56
qio 1-4-4 40 4 2048 4096 0.59 13.59
qio 1-4-4 40 4 4096 2048 0.51 15.83
qio 1-4-4 40 4 8192 1024 0.46 17.27
qio 1-4-4 40 4 16384 512 0.45 17.75
qio 1-4-4 40 4 32768 256 0.44 17.99
qio 1-4-4 40 4 65536 128 0.44 18.12
qio 1-4-4 80 1 256 32768 2.01 3.98
qio 1-4-4 80 1 512 16384 0.87 9.18
qio 1-4-4 80 1 1024 8192 0.55 14.66
qio 1-4-4 80 1 2048 4096 0.38 21.19
qio 1-4-4 80 1 4096 2048 0.30 27.11
qio 1-4-4 80 1 8192 1024 0.25 31.61
qio 1-4-4 80 1 16384 512 0.25 31.72
qio 1-4-4 80 1 327668 256 0.25 31.78
qio 1-4-4 80 1 65536 128 0.25 31.81
qio 1-4-4 80 2 256 32768 2.02 3.97
qio 1-4-4 80 2 512 16384 0.87 9.18
qio 1-4-4 80 2 1024 8192 0.55 14.66
qio 1-4-4 80 2 2048 4096 0.38 21.18
qio 1-4-4 80 2 4096 2048 0.30 27.11
qio 1-4-4 80 2 8192 1024 0.25 31.61
qio 1-4-4 80 2 16384 512 0.24 33.21
qio 1-4-4 80 2 32768 256 0.23 34.08
qio 1-4-4 80 2 65536 128 0.23 34.53
qio 1-4-4 80 3 256 32768 2.02 3.97
qio 1-4-4 80 3 512 16384 0.87 9.17
qio 1-4-4 80 3 1024 8192 0.55 14.65
qio 1-4-4 80 3 2048 4096 0.38 21.18
qio 1-4-4 80 3 4096 2048 0.30 27.11
qio 1-4-4 80 3 8192 1024 0.25 31.61
qio 1-4-4 80 3 16384 512 0.24 33.21
qio 1-4-4 80 3 32768 256 0.23 34.08
qio 1-4-4 80 3 65536 128 0.23 34.53
qio 1-4-4 80 4 256 32768 2.02 3.97
qio 1-4-4 80 4 512 16384 0.87 9.17
qio 1-4-4 80 4 1024 8192 0.55 14.65
qio 1-4-4 80 4 2048 4096 0.38 21.18
qio 1-4-4 80 4 4096 2048 0.30 27.11
qio 1-4-4 80 4 8192 1024 0.25 31.61
qio 1-4-4 80 4 16384 512 0.24 33.21
qio 1-4-4 80 4 32768 256 0.23 34.08
qio 1-4-4 80 4 65536 128 0.23 34.53
Later edit: seems like every write action fails with:
Code: Select all
ERASE/WRITE/VERIFY Test...
Bus
Proto Cycles
std 1-1-11 Flash size 8388608
erase/write/verify failed at block 0 offset 0
dual 1-1-2 Flash size 8388608
erase/write/verify failed at block 0 offset 0
dio 1-2-2 Flash size 8388608
erase/write/verify failed at block 0 offset 0
quad 1-1-4 Flash size 8388608
erase/write/verify failed at block 0 offset 0
qio 1-4-4 Flash size 8388608
erase/write/verify failed at block 0 offset 1
qpi 4-4-4 Flash size 8388608
erase/write/verify failed at block 0 offset 1
I'll have a look into SPIFFS. You may be right about storing those bin files using the SPIFFS file system and then putting them in the right place in memory (0x1000, 0x8000, 0x10000); rather than transfering each byte of the bin files trough the serial interface at its respective location in memory.
- Vader_Mester
- Posts: 300
- Joined: Tue Dec 05, 2017 8:28 pm
- Location: Hungary
- Contact:
Re: ESP32 as ISP
It's worth posting this write issue into under the thread here on the forum, or on Github, to see if he can help you out.
I haven't tried that myselft just browsed the code, what it contains.
As for the SPIFFS, you don't even have to know at which offset do you store the .bin, the SPIFFS API can find the file and return a pointer for the file, which the rest of your program can use.
And yes 8MB Flash is plenty
I haven't tried that myselft just browsed the code, what it contains.
As for the SPIFFS, you don't even have to know at which offset do you store the .bin, the SPIFFS API can find the file and return a pointer for the file, which the rest of your program can use.
And yes 8MB Flash is plenty
Code: Select all
task_t coffeeTask()
{
while(atWork){
if(!xStreamBufferIsEmpty(mug)){
coffeeDrink(mug);
} else {
xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
}
}
vTaskDelete(NULL);
}
Who is online
Users browsing this forum: forrest and 62 guests