This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
how to measure time from within flash_program_buf
- From: "Neundorf, Alexander" <Alexander dot Neundorf at jenoptik dot com>
- To: <ecos-discuss at ecos dot sourceware dot org>
- Date: Tue, 23 May 2006 09:32:03 +0200
- Subject: [ECOS] 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