Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mips calculation for embedded software

I have been recently (and repeatedly) asked by customers about MIPS needed to run our software. Usually we was able to get rid of this questions by explaining the customer that this is really depend on the cpu/os/hw (our software is highly portable) and/or use case (i.e. how our software is used).

But I have a last one not only very stubborn but in addition provides good reasons to be stubborn. :) He wants an estimate because he is not sure he has enough power to run our software, so buying the software before this estimate is not logical. (We can't provide the demo/evaluation since it will require significant amount of work to run on this specific platform.)

And now the the question: Does somebody have an experience with such task on any piece of hw with any software? Any real life example will be really helpful. I have an option to run our software on many OS and many hardware. So if you know any tool for such estimate on any hardware there is a chance I can use it or at least get an idea. For know I only know how to measure CPU load on eCosPro OS.

Edit:

Using probe is actually a good idea, assuming that i can create a control environment where only my software is running all instruction i can count is mine, and i guess probe has an interface to do it. Actually i have a few different hardware debuggers and if somebody have experience how to do it will be really good, any way I'm going to read some documentation tomorrow and hopefully will find something in this direction.

like image 265
Ilya Avatar asked Nov 17 '08 21:11

Ilya


1 Answers

OK you realize that this is fraught with disclaimers & warnings -- CPU speeds, memory speeds, cache hits, MMU page tables flushes, bus contention, etc... (if it's a heavy-duty embedded system) all factor significantly into the decision....

Having said that.... what I would do is this. Get a real-time operating system (stay with me), perhaps something like FreeRTOS (free, what a surprise) or u/C-OS-II (not free for commercial use, maybe $3K). These kernels allow you to instrument the code to count idle CPU cycles (idle task spin loop).

So run your whole application (or the customer's application) as the only (non-idle) task on a board that you guys agree on (e.g. MPC860 board, ARM7 board, etc...). Measure the % CPU on the board via the RTOS. (e.g. "on the Flibber board running at 60 MHz, our application used 12% of the CPU.")

Without them giving you more, or vice versa, that sounds like a pretty reasonable length to go to for them.

The good thing is that once you've done this, you can re-use the work for other targets and/or boards, maybe the figures will help you increase sales and/or tune/optimize your software.

Good luck!

like image 80
Dan Avatar answered Oct 01 '22 21:10

Dan