Make colorchord work with W25Q40 memory, using the window of flash after the IRAM loaded section.
This commit is contained in:
parent
c90a00e290
commit
997ad27cc2
|
@ -80,13 +80,20 @@ $(FW_FILE_2): $(TARGET_OUT)
|
||||||
@echo "FW $@"
|
@echo "FW $@"
|
||||||
$(FW_TOOL) -eo $(TARGET_OUT) -es .irom0.text $@ -ec
|
$(FW_TOOL) -eo $(TARGET_OUT) -es .irom0.text $@ -ec
|
||||||
|
|
||||||
|
|
||||||
IP?=192.168.4.1
|
|
||||||
|
|
||||||
burn : $(FW_FILE_1) $(FW_FILE_2)
|
burn : $(FW_FILE_1) $(FW_FILE_2)
|
||||||
($(ESPTOOL_PY) --port $(PORT) write_flash 0x00000 0x00000.bin 0x40000 0x40000.bin)||(true)
|
($(ESPTOOL_PY) --port $(PORT) write_flash 0x00000 0x00000.bin 0x40000 0x40000.bin)||(true)
|
||||||
|
|
||||||
|
|
||||||
|
#If you have space, MFS should live at 0x100000, if you don't it can also live at
|
||||||
|
#0x10000. But, then it is limited to 180kB. You might need to do this if you have a 512kB
|
||||||
|
#ESP variant.
|
||||||
|
|
||||||
|
burnweb : web/page.mpfs
|
||||||
|
($(ESPTOOL_PY) --port $(PORT) write_flash 0x10000 web/page.mpfs)||(true)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IP?=192.168.4.1
|
||||||
|
|
||||||
netburn : image.elf $(FW_FILE_1) $(FW_FILE_2)
|
netburn : image.elf $(FW_FILE_1) $(FW_FILE_2)
|
||||||
web/execute_reflash $(IP) 0x00000.bin 0x40000.bin
|
web/execute_reflash $(IP) 0x00000.bin 0x40000.bin
|
||||||
|
|
|
@ -6,6 +6,26 @@
|
||||||
#include "spi_flash.h"
|
#include "spi_flash.h"
|
||||||
#include "ets_sys.h"
|
#include "ets_sys.h"
|
||||||
|
|
||||||
|
uint32 mfs_at = 0;
|
||||||
|
|
||||||
|
void FindMPFS()
|
||||||
|
{
|
||||||
|
uint32 mfs_check[2];
|
||||||
|
EnterCritical();
|
||||||
|
flashchip->chip_size = 0x01000000;
|
||||||
|
|
||||||
|
spi_flash_read( MFS_START, mfs_check, sizeof( mfs_check ) );
|
||||||
|
if( strncmp( "MPFSPFS", mfs_check ) == 0 ) { mfs_at = MFS_START; goto done; }
|
||||||
|
|
||||||
|
spi_flash_read( MFS_ALTERNATIVE_START, mfs_check, sizeof( mfs_check ) );
|
||||||
|
if( strncmp( "MPFSPFS", mfs_check ) == 0 ) { mfs_at = MFS_ALTERNATIVE_START; goto done; }
|
||||||
|
|
||||||
|
|
||||||
|
done:
|
||||||
|
flashchip->chip_size = 0x00080000;
|
||||||
|
ExitCritical();
|
||||||
|
}
|
||||||
|
|
||||||
extern SpiFlashChip * flashchip;
|
extern SpiFlashChip * flashchip;
|
||||||
|
|
||||||
//Returns 0 on succses.
|
//Returns 0 on succses.
|
||||||
|
@ -14,9 +34,18 @@ extern SpiFlashChip * flashchip;
|
||||||
//Returns -1 if can't find file or reached end of file list.
|
//Returns -1 if can't find file or reached end of file list.
|
||||||
int8_t MFSOpenFile( const char * fname, struct MFSFileInfo * mfi )
|
int8_t MFSOpenFile( const char * fname, struct MFSFileInfo * mfi )
|
||||||
{
|
{
|
||||||
|
if( mfs_at == 0 )
|
||||||
|
{
|
||||||
|
FindMPFS();
|
||||||
|
}
|
||||||
|
if( mfs_at == 0 )
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
EnterCritical();
|
EnterCritical();
|
||||||
flashchip->chip_size = 0x01000000;
|
flashchip->chip_size = 0x01000000;
|
||||||
uint32 ptr = MFS_START;
|
uint32 ptr = mfs_at;
|
||||||
struct MFSFileEntry e;
|
struct MFSFileEntry e;
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
|
@ -51,7 +80,7 @@ int32_t MFSReadSector( uint8_t* data, struct MFSFileInfo * mfi )
|
||||||
|
|
||||||
EnterCritical();
|
EnterCritical();
|
||||||
flashchip->chip_size = 0x01000000;
|
flashchip->chip_size = 0x01000000;
|
||||||
spi_flash_read( MFS_START+mfi->offset, (uint32*)data, MFS_SECTOR );
|
spi_flash_read( mfs_at+mfi->offset, (uint32*)data, MFS_SECTOR );
|
||||||
flashchip->chip_size = 0x00080000;
|
flashchip->chip_size = 0x00080000;
|
||||||
ExitCritical();
|
ExitCritical();
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
#include "mystuff.h"
|
#include "mystuff.h"
|
||||||
|
|
||||||
//SPI_FLASH_SEC_SIZE 4096
|
//SPI_FLASH_SEC_SIZE 4096
|
||||||
|
|
||||||
|
//If you are on a chip with limited space, MFS can alternatively live here, with a max size of 180kB.
|
||||||
|
#define MFS_ALTERNATIVE_START 0x10000
|
||||||
|
|
||||||
#define MFS_STARTFLASHSECTOR 0x100
|
#define MFS_STARTFLASHSECTOR 0x100
|
||||||
#define MFS_START (MFS_STARTFLASHSECTOR*SPI_FLASH_SEC_SIZE)
|
#define MFS_START (MFS_STARTFLASHSECTOR*SPI_FLASH_SEC_SIZE)
|
||||||
#define MFS_SECTOR 256
|
#define MFS_SECTOR 256
|
||||||
|
|
Binary file not shown.
|
@ -49,6 +49,13 @@ int main( int argc, char ** argv )
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
memcpy( mfsfat[fatpointer].name, "MPFSMPFS", 8 );
|
||||||
|
mfsfat[fatpointer].start = 0;
|
||||||
|
mfsfat[fatpointer].len = 0;
|
||||||
|
fatpointer++;
|
||||||
|
|
||||||
|
|
||||||
while ((dir = readdir(d)) != NULL)
|
while ((dir = readdir(d)) != NULL)
|
||||||
{
|
{
|
||||||
if( dir->d_type & DT_REG )
|
if( dir->d_type & DT_REG )
|
||||||
|
|
|
@ -7,6 +7,11 @@ globalParams = {};
|
||||||
|
|
||||||
function mainticker()
|
function mainticker()
|
||||||
{
|
{
|
||||||
|
KickOscilloscope();
|
||||||
|
KickDFT();
|
||||||
|
KickNotes();
|
||||||
|
KickLEDs();
|
||||||
|
|
||||||
QueueOperation( "CVR", ReceiveParameters );
|
QueueOperation( "CVR", ReceiveParameters );
|
||||||
setTimeout( mainticker, 1000 );
|
setTimeout( mainticker, 1000 );
|
||||||
}
|
}
|
||||||
|
@ -14,10 +19,6 @@ function mainticker()
|
||||||
function maininit()
|
function maininit()
|
||||||
{
|
{
|
||||||
setTimeout( mainticker, 1000 );
|
setTimeout( mainticker, 1000 );
|
||||||
KickOscilloscope();
|
|
||||||
KickDFT();
|
|
||||||
KickNotes();
|
|
||||||
KickLEDs();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,7 +90,7 @@ pause_oscilloscope = false;
|
||||||
function KickOscilloscope()
|
function KickOscilloscope()
|
||||||
{
|
{
|
||||||
$( "#OScopePauseButton" ).css( "background-color", (is_oscilloscope_running&&pause_oscilloscope)?"green":"red" );
|
$( "#OScopePauseButton" ).css( "background-color", (is_oscilloscope_running&&pause_oscilloscope)?"green":"red" );
|
||||||
if( !is_oscilloscope_running && !pause_oscilloscope)
|
if( !pause_oscilloscope)
|
||||||
OScopeDataTicker();
|
OScopeDataTicker();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,7 +170,7 @@ pause_dft = false;
|
||||||
function KickDFT()
|
function KickDFT()
|
||||||
{
|
{
|
||||||
$( "#DFTPauseButton" ).css( "background-color", (is_dft_running&&!pause_dft)?"green":"red" );
|
$( "#DFTPauseButton" ).css( "background-color", (is_dft_running&&!pause_dft)?"green":"red" );
|
||||||
if( !is_dft_running && !pause_dft )
|
if( !pause_dft )
|
||||||
DFTDataTicker();
|
DFTDataTicker();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,9 +247,8 @@ function KickLEDs()
|
||||||
{
|
{
|
||||||
$( "#LEDPauseButton" ).css( "background-color", (is_leds_running&&!pause_led)?"green":"red" );
|
$( "#LEDPauseButton" ).css( "background-color", (is_leds_running&&!pause_led)?"green":"red" );
|
||||||
|
|
||||||
if( !is_leds_running && !pause_led )
|
if( !pause_led )
|
||||||
LEDDataTicker();
|
LEDDataTicker();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function ToggleLEDPause()
|
function ToggleLEDPause()
|
||||||
|
|
Loading…
Reference in a new issue