?? flashutil.c
字號:
if (!vpp_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to switch on VDD - attempting to continue with VDD unchanged\n");
return;
}
*vpp_reg = 1;
if (OS21_SUCCESS != vmem_delete((void*)vpp_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used to switch on VDD - continuing\n");
}
}
static void switchOffVDD_mb317(void)
{
volatile unsigned int* vpp_reg = (volatile unsigned int*)
vmem_create((void*)0x07300000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!vpp_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to switch off VDD - attempting to continue with VDD unchanged\n");
return;
}
*vpp_reg = 0;
if (OS21_SUCCESS != vmem_delete((void*)vpp_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used to switch off VDD - continuing\n");
}
}
#elif defined(__sti5528__)
static void switchOnVDD_mb376(void)
{
volatile unsigned char* vpp_reg = (volatile unsigned char*)
vmem_create((void*)0x02300000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!vpp_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to switch on VDD - attempting to continue with VDD unchanged\n");
return;
}
*vpp_reg = 3;
if (OS21_SUCCESS != vmem_delete((void*)vpp_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used to switch on VDD - continuing\n");
}
}
static void switchOffVDD_mb376(void)
{
volatile unsigned char* vpp_reg = (volatile unsigned char*)
vmem_create((void*)0x02300000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!vpp_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to switch off VDD - attempting to continue with VDD unchanged\n");
return;
}
*vpp_reg = 2;
if (OS21_SUCCESS != vmem_delete((void*)vpp_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used to switch off VDD - continuing\n");
}
}
#endif
#endif
/*
* Routines to write protect / enable a FLASH
*/
static void writeEnable(flashTarget_t* target)
{
if (target->writeEnable)
{
target->writeEnable();
}
}
static void writeDisable(flashTarget_t* target)
{
if (target->writeDisable)
{
target->writeDisable();
}
}
#if defined(__st200__)
#if defined(__stm8000__)
static void writeEnable_mb379(void)
{
volatile unsigned char* ver_reg = (volatile unsigned char*)
vmem_create((void*)0x07000000, 0x54, NULL, VMEM_CREATE_UNCACHED);
if (!ver_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
volatile unsigned char* rw_reg = ver_reg + 0x50;
if (*ver_reg >= 0x15)
{
*rw_reg |= 1;
}
if (OS21_SUCCESS != vmem_delete((void*)ver_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb379(void)
{
volatile unsigned char* ver_reg = (volatile unsigned char*)
vmem_create((void*)0x07000000, 0x54, NULL, VMEM_CREATE_UNCACHED);
volatile unsigned char* rw_reg = ver_reg + 0x50;
if (!ver_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
if (*ver_reg >= 0x15)
{
*rw_reg &= ~1;
}
if (OS21_SUCCESS != vmem_delete((void*)ver_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
static void writeEnable_mb392(void)
{
volatile unsigned char* rw_reg = (volatile unsigned char*)
vmem_create((void*)0x0200001C, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 1;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb392(void)
{
volatile unsigned char* rw_reg = (volatile unsigned char*)
vmem_create((void*)0x0200001C, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 0;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
#elif defined(__stb5301__)
static void writeEnable_mb390(void)
{
volatile unsigned char* epld_virtual_ptr = (volatile unsigned char*)
vmem_create((void*)0x41400000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!epld_virtual_ptr)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
*epld_virtual_ptr |= 3;
if (OS21_SUCCESS != vmem_delete((void*)epld_virtual_ptr))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb390(void)
{
volatile unsigned char* epld_virtual_ptr = (volatile unsigned char*)
vmem_create((void*)0x41400000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!epld_virtual_ptr)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
*epld_virtual_ptr &= ~1;
if (OS21_SUCCESS != vmem_delete((void*)epld_virtual_ptr))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
#elif defined(__stm8010__)
static void writeEnable_mb421(void)
{
volatile unsigned char* epld_virtual_ptr = (volatile unsigned char*)
vmem_create((void*)0x00C00000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!epld_virtual_ptr)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
*epld_virtual_ptr |= 1;
if (OS21_SUCCESS != vmem_delete((void*)epld_virtual_ptr))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb421(void)
{
volatile unsigned char* epld_virtual_ptr = (volatile unsigned char*)
vmem_create((void*)0x00C00000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!epld_virtual_ptr)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
*epld_virtual_ptr &= ~1;
if (OS21_SUCCESS != vmem_delete((void*)epld_virtual_ptr))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
#if defined(OLD_MB426)
/* Configure PIO 0, pin 1 as output for enable, input for disable */
#define MB426_PIO_BASE 0x540A0000
#define MB426_PIO_PIN 1
#else /* Normal mb426 */
/* Configure PIO 5, pin 7 as output for enable, input for disable */
#define MB426_PIO_BASE 0x540A5000
#define MB426_PIO_PIN 7
#endif /* Types of mb426 board */
static void writeEnable_mb426(void)
{
volatile unsigned char* pio_virtual_ptr = (volatile unsigned char*)
vmem_create((void*)MB426_PIO_BASE, 0x100, NULL, VMEM_CREATE_UNCACHED);
if (!pio_virtual_ptr)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
PIO_CONFIGURE(pio_virtual_ptr, MB426_PIO_PIN, PIO_CFG_OUT);
if (OS21_SUCCESS != vmem_delete((void*)pio_virtual_ptr))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb426(void)
{
volatile unsigned char* pio_virtual_ptr = (volatile unsigned char*)
vmem_create((void*)MB426_PIO_BASE, 0x100, NULL, VMEM_CREATE_UNCACHED);
if (!pio_virtual_ptr)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
PIO_CONFIGURE(pio_virtual_ptr, MB426_PIO_PIN, PIO_CFG_IN);
if (OS21_SUCCESS != vmem_delete((void*)pio_virtual_ptr))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
#elif defined(__stx5525__)
static void switchOnVDD_mb428(void)
{
volatile unsigned char* vpp_reg = (volatile unsigned char*)
vmem_create((void*)0x0980B000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!vpp_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to switch on VDD - attempting to continue with VDD unchanged\n");
return;
}
*vpp_reg = 1;
if (OS21_SUCCESS != vmem_delete((void*)vpp_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used switch on VDD - attempting to continue with VDD unchanged\n");
}
}
static void switchOffVDD_mb428(void)
{
volatile unsigned char* vpp_reg = (volatile unsigned char*)
vmem_create((void*)0x0980B000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!vpp_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to switch off VDD - attempting to continue with VDD unchanged\n");
return;
}
*vpp_reg = 0;
if (OS21_SUCCESS != vmem_delete((void*)vpp_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used switch off VDD - attempting to continue with VDD unchanged\n");
}
}
#endif
#else
#if defined(__st40ra__)
static void writeEnable_mb293(void)
{
volatile unsigned int* rw_reg = (volatile unsigned int*)
vmem_create((void*)0x00800000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 3;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb293(void)
{
volatile unsigned int* rw_reg = (volatile unsigned int*)
vmem_create((void*)0x00800000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 0;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
static void writeEnable_mb374(void)
{
volatile unsigned int* rw_reg = (volatile unsigned int*)
vmem_create((void*)0x07000010, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 1;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb374(void)
{
volatile unsigned int* rw_reg = (volatile unsigned int*)
vmem_create((void*)0x07000010, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 0;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
#elif defined(__sti5528__)
static void writeEnable_mb376(void)
{
volatile unsigned int* rw_reg = (volatile unsigned int*)
vmem_create((void*)0x01300000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 0x3;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb376(void)
{
volatile unsigned int* rw_reg = (volatile unsigned int*)
vmem_create((void*)0x01300000, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 0x2;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
#elif defined(__stm8000__)
static void writeEnable_mb379(void)
{
volatile unsigned char* ver_reg = (volatile unsigned char*)
vmem_create((void*)0x07000000, 0x54, NULL, VMEM_CREATE_UNCACHED);
volatile unsigned char* rw_reg = ver_reg + 0x50;
if (!ver_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
if (*ver_reg >= 0x15)
{
*rw_reg |= 1;
}
if (OS21_SUCCESS != vmem_delete((void*)ver_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
}
}
static void writeDisable_mb379(void)
{
volatile unsigned char* ver_reg = (volatile unsigned char*)
vmem_create((void*)0x07000000, 0x54, NULL, VMEM_CREATE_UNCACHED);
volatile unsigned char* rw_reg = ver_reg + 0x50;
if (!ver_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to disable FLASH writes - attempting to continue\n");
return;
}
if (*ver_reg >= 0x15)
{
*rw_reg &= ~1;
}
if (OS21_SUCCESS != vmem_delete((void*)ver_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used disable FLASH writes - continuing\n");
}
}
static void writeEnable_mb392(void)
{
volatile unsigned char* rw_reg = (volatile unsigned char*)
vmem_create((void*)0x0200001C, vmem_min_page_size(), NULL, VMEM_CREATE_UNCACHED);
if (!rw_reg)
{
fprintf(stderr, "flashutil: Failed to create virtual mapping to enable FLASH writes - attempting to continue\n");
return;
}
*rw_reg = 1;
if (OS21_SUCCESS != vmem_delete((void*)rw_reg))
{
fprintf(stderr, "flashutil: Failed to delete virtual mapping used enable FLASH writes - continuing\n");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -