This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

how to measure time from within flash_program_buf


Hi,

in the Intel 28fxxx flash driver there is a timeout used, and this timeout is specified as a simple loop which is executed 5000000 times.
Now we have a fast processor and a slow flash, so for us this timeout isn't big enough. We could simply increase the count, but this still depends on flash and processor speed.

Ideally we'd like to use HAL_CLOCK_READ() to measure the time, but this isn't possible since hal_clock_read() is located in the section .text which is in the flash, but flash_program_buf() is located in the section .data which is located in RAM. When calling hal_clock_read() the linker complains and more importantly it won't work since the flash is busy while it is being programmed.

So we see the following options:
-just increase the loop counter (ugly)
-use some ifdefs and access the timer registers directly (slightly less ugly)
-remove the timeout completely and just wait until it has finished (still ugly)
-make hal_clock_read() inline -> changes behaviour everywhere (also not too nice)

So, how do you deal with this problem or do you have a better suggestion ?

Bye
Alex

--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]