flash/nrf5: time-based timeout waiting for flash controller
Change-Id: Id214df154dc359ca130c8d8fe1554d106621b9cd Signed-off-by: Kai Geissdoerfer <kai.geissdoerfer@tu-dresden.de> Reviewed-on: http://openocd.zylin.com/4648 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
parent
8c67115c7b
commit
ad41246cf6
|
@ -26,6 +26,7 @@
|
|||
#include <target/algorithm.h>
|
||||
#include <target/armv7m.h>
|
||||
#include <helper/types.h>
|
||||
#include <helper/time_support.h>
|
||||
|
||||
enum {
|
||||
NRF5_FLASH_BASE = 0x00000000,
|
||||
|
@ -240,7 +241,8 @@ static int nrf5_wait_for_nvmc(struct nrf5_info *chip)
|
|||
{
|
||||
uint32_t ready;
|
||||
int res;
|
||||
int timeout = 100;
|
||||
int timeout_ms = 200;
|
||||
int64_t ts_start = timeval_ms();
|
||||
|
||||
do {
|
||||
res = target_read_u32(chip->target, NRF5_NVMC_READY, &ready);
|
||||
|
@ -252,8 +254,9 @@ static int nrf5_wait_for_nvmc(struct nrf5_info *chip)
|
|||
if (ready == 0x00000001)
|
||||
return ERROR_OK;
|
||||
|
||||
alive_sleep(1);
|
||||
} while (timeout--);
|
||||
keep_alive();
|
||||
|
||||
} while ((timeval_ms()-ts_start) < timeout_ms);
|
||||
|
||||
LOG_DEBUG("Timed out waiting for NVMC_READY");
|
||||
return ERROR_FLASH_BUSY;
|
||||
|
|
Loading…
Reference in New Issue