mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 08:36:24 +08:00
STM32 FLASH changes from Freddie Chopin
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5473 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -112,6 +112,11 @@ uint16_t up_progmem_pagesize(uint16_t page)
|
|||||||
|
|
||||||
int up_progmem_getpage(uint32_t addr)
|
int up_progmem_getpage(uint32_t addr)
|
||||||
{
|
{
|
||||||
|
if (addr >= STM32_FLASH_BASE)
|
||||||
|
{
|
||||||
|
addr -= STM32_FLASH_BASE;
|
||||||
|
}
|
||||||
|
|
||||||
if (addr >= STM32_FLASH_SIZE)
|
if (addr >= STM32_FLASH_SIZE)
|
||||||
{
|
{
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
@@ -200,6 +205,11 @@ int up_progmem_write(uint32_t addr, const void *buf, size_t count)
|
|||||||
|
|
||||||
/* Check for valid address range */
|
/* Check for valid address range */
|
||||||
|
|
||||||
|
if (addr >= STM32_FLASH_BASE)
|
||||||
|
{
|
||||||
|
addr -= STM32_FLASH_BASE;
|
||||||
|
}
|
||||||
|
|
||||||
if ((addr+count) >= STM32_FLASH_SIZE)
|
if ((addr+count) >= STM32_FLASH_SIZE)
|
||||||
{
|
{
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
@@ -216,7 +226,7 @@ int up_progmem_write(uint32_t addr, const void *buf, size_t count)
|
|||||||
|
|
||||||
modifyreg32(STM32_FLASH_CR, 0, FLASH_CR_PG);
|
modifyreg32(STM32_FLASH_CR, 0, FLASH_CR_PG);
|
||||||
|
|
||||||
for (addr += STM32_FLASH_BASE; count; count--, hword++, addr+=2)
|
for (addr += STM32_FLASH_BASE; count; count-=2, hword++, addr+=2)
|
||||||
{
|
{
|
||||||
/* Write half-word and wait to complete */
|
/* Write half-word and wait to complete */
|
||||||
|
|
||||||
@@ -237,7 +247,6 @@ int up_progmem_write(uint32_t addr, const void *buf, size_t count)
|
|||||||
modifyreg32(STM32_FLASH_CR, FLASH_CR_PG, 0);
|
modifyreg32(STM32_FLASH_CR, FLASH_CR_PG, 0);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
modifyreg32(STM32_FLASH_CR, FLASH_CR_PG, 0);
|
modifyreg32(STM32_FLASH_CR, FLASH_CR_PG, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user