Reply by Bob Smith August 6, 20062006-08-06
ssubbarayan wrote:
> I am working in a consumer electronics device related software > development where I was asked to reduce the bootup time.
Boot time is becoming more of a problem as more and more appliances take "off" to mean zero current flow, not just suspend. Here are two related ideas. Off-load as much of the UI as possible to a single chip controller. They boot in a blink and as long as the UI is mostly useable, the consumer won't notice the actual boot time of the appliance. For example, you could have the displays and buttons on a DVD player controlled by an AVR. Immediately on power-on, the consumer can press the Open-Drawer button and have the drawer open. By the time the consumer gets the DVD in and spun up, the rest of the appliance is up and ready to go. The second idea is just the first but carve out a piece of the main processor to do the UI. Say you're using Linux and an ARM processor. Immediately after boot you can allocate a timer and its interrupt to poll the UI hardware and respond to the user. You need to "hide" this timer and interrupt from the Linux boot process until Linux is fully up and can take over the full UI. "Hiding" a timer and interrupt from Linux is NOT a trivial task and, sad to say, I don't know of anyone who's tried this approach. Good luck with your project and don't forget to post your approach so we can all learn from it. Bob Smith
Reply by Terje Mathisen August 5, 20062006-08-05
Jim Stewart wrote:
> me wrote: >> Jim Stewart wrote: >>> Step 1: Find the processor clock crystal >>> Step 2: Unsolder it. >>> Step 3: Solder in a new one 20% faster. >>> Step 4: Profit. >> >> >> Long ago, I had to solder in 20% slower crystals into a PCs that >> didn't work >> reliability at 10 MHz. They were absolutely reliable at 8 MHz. > > I wondered for a long time if anyone would > take the post seriously and actually do it... > > About 25 years ago I had an Epson MX80 printer. > I was able to use this trick and get it to > print about 25% faster.
Year: 1984 PC: IBM AT Original speed: 6 MHz (12 MHz crystal ?) This particular PC model was strongly rumored to have been designed to run at 8 MHz, but internal IBM problems (this upstart PC division cannot be allowed to compete with our proper machines!) made sure that it was downclocked to 6 MHz. Every single 6 MHz AT that I tried to speedup ran stably at 8 MHz, most of them handled 9 MHz and a few would even handle 10 MHz. :-) One small company even sold a variable frequency replacement for the original (socketed) crystal, where a small pot allowed you to set any desired CPU frequency up to 12 MHz or so. Terje -- - <Terje.Mathisen@hda.hydro.com> "almost all programming can be viewed as an exercise in caching"
Reply by Scott Seidman August 4, 20062006-08-04
Jim Stewart <jstewart@jkmicro.com> wrote in news:WeidndZ-
9MlfI07ZnZ2dnUVZ_u6dnZ2d@omsoft.com:

> I wondered for a long time if anyone would > take the post seriously and actually do it...
I was wondering if anyone would get the underpants gnome reference -- Scott Reverse name to reply
Reply by Jim Stewart August 4, 20062006-08-04
me wrote:
> Jim Stewart wrote: > > >>ssubbarayan wrote: >> >> >>>Gurus, >>> >>>I would like to know what all areas we should be looking into to >>>increase or improve the performance of an embedded system software >>>dealing with rtos mainly.I am aware am asking a too much generic >>>topic,but I believe the performance enhancement techniques can be >>>generic to a extent.When I say performance I mean the speed with which >>>the device functionalities work and also reduce memory consumption(I >>>mean use memory in a optimised way). >>>One such example of performance improvement will be to speed up the >>>bootup time of the device,the channel switching time in a TV like this. >>>I am working in a consumer electronics device related software >>>development where I was asked to reduce the bootup time.I am clueless >>>where to look into.Only one tip came to my mind,thats use uncompressed >>>binary image for booting so I can reduce the uncompressing time.But >>>thats too much less to achieve the result in improving the booting >>>time. >>>I am looking farward for some tips for enhancing performance and memory >>>optimisation with respect to embedded softwares involving RTOS. >>>Looking farward for all your replys and advanced thanks for the same, >>>Regards, >>>s.subbarayan >> >>Step 1: Find the processor clock crystal >>Step 2: Unsolder it. >>Step 3: Solder in a new one 20% faster. >>Step 4: Profit. > > > Long ago, I had to solder in 20% slower crystals into a PCs that didn't work > reliability at 10 MHz. They were absolutely reliable at 8 MHz.
I wondered for a long time if anyone would take the post seriously and actually do it... About 25 years ago I had an Epson MX80 printer. I was able to use this trick and get it to print about 25% faster.
Reply by me August 4, 20062006-08-04
Jim Stewart wrote:

> ssubbarayan wrote: > >> Gurus, >> >> I would like to know what all areas we should be looking into to >> increase or improve the performance of an embedded system software >> dealing with rtos mainly.I am aware am asking a too much generic >> topic,but I believe the performance enhancement techniques can be >> generic to a extent.When I say performance I mean the speed with which >> the device functionalities work and also reduce memory consumption(I >> mean use memory in a optimised way). >> One such example of performance improvement will be to speed up the >> bootup time of the device,the channel switching time in a TV like this. >> I am working in a consumer electronics device related software >> development where I was asked to reduce the bootup time.I am clueless >> where to look into.Only one tip came to my mind,thats use uncompressed >> binary image for booting so I can reduce the uncompressing time.But >> thats too much less to achieve the result in improving the booting >> time. >> I am looking farward for some tips for enhancing performance and memory >> optimisation with respect to embedded softwares involving RTOS. >> Looking farward for all your replys and advanced thanks for the same, >> Regards, >> s.subbarayan > > Step 1: Find the processor clock crystal > Step 2: Unsolder it. > Step 3: Solder in a new one 20% faster. > Step 4: Profit.
Long ago, I had to solder in 20% slower crystals into a PCs that didn't work reliability at 10 MHz. They were absolutely reliable at 8 MHz.
Reply by Darin Johnson August 4, 20062006-08-04
Hans-Bernhard Broeker wrote:
> 1) Don't do it. > 2) Don't do it just yet. > 3) If you still think you must do, *measure* first, before you begin.
You don't even have to do a full and detailed measurement or keep accurate notes. Sometimes it's just enough to print out a line and time to the console at the start of every major operation and eyeballing it. If you see a long delay between two lines, then its a good bet that this is the area to focus on. I think some people avoid this step because it seems like it is hard to do, or hard to do accurately, or that they need to attach a lot of probe lines to an oscilloscope. Rules of thumb: - Understand the code. Don't do anything else until this is done. - Measure and know where the slowdowns are. - Use the above two concepts to identify the paths and startup dependencies. - Start by reducing the longest paths. - Prefer polling for a device to be ready instead of delaying a fixed amount of time. - Prefer interrupts to polling. - If you've got interrupts or an RTOS, then do things in parallel. Shuffle around the paths to help this. - If some component is optional, then don't initialize it until it is needed. - Make sure caching is turned on :-) -- Darin Johnson
Reply by Hans-Bernhard Broeker August 4, 20062006-08-04
In comp.arch.embedded ssubbarayan <ssubba@gmail.com> wrote:

> I would like to know what all areas we should be looking into to > increase or improve the performance of an embedded system software > dealing with rtos mainly.
You should look in only *one* area: at the actual system in question. Your question is impossibly generic because you're trying to do the third step before the first. The rules of "optimization" remain: 1) Don't do it. 2) Don't do it just yet. 3) If you still think you must do, *measure* first, before you begin. If you want to reduce boot-up time, e.g., you can't even start to optimize before you know what's taking the system so long in the first place. So find out. You need to run a measurement campaign or some simulation/analysis to find out what exactly happens during that time, and how long each bit of it takes. -- Hans-Bernhard Broeker (broeker@physik.rwth-aachen.de) Even if all the snow were burnt, ashes would remain.
Reply by Jim Stewart August 4, 20062006-08-04
ssubbarayan wrote:

> Gurus, > > I would like to know what all areas we should be looking into to > increase or improve the performance of an embedded system software > dealing with rtos mainly.I am aware am asking a too much generic > topic,but I believe the performance enhancement techniques can be > generic to a extent.When I say performance I mean the speed with which > the device functionalities work and also reduce memory consumption(I > mean use memory in a optimised way). > One such example of performance improvement will be to speed up the > bootup time of the device,the channel switching time in a TV like this. > I am working in a consumer electronics device related software > development where I was asked to reduce the bootup time.I am clueless > where to look into.Only one tip came to my mind,thats use uncompressed > binary image for booting so I can reduce the uncompressing time.But > thats too much less to achieve the result in improving the booting > time. > I am looking farward for some tips for enhancing performance and memory > optimisation with respect to embedded softwares involving RTOS. > Looking farward for all your replys and advanced thanks for the same, > Regards, > s.subbarayan
Step 1: Find the processor clock crystal Step 2: Unsolder it. Step 3: Solder in a new one 20% faster. Step 4: Profit. (:
Reply by Ico August 4, 20062006-08-04
In comp.arch.embedded ssubbarayan <ssubba@gmail.com> wrote:

> I would like to know what all areas we should be looking into to > increase or improve the performance of an embedded system software > dealing with rtos mainly.I am aware am asking a too much generic > topic,but I believe the performance enhancement techniques can be > generic to a extent.When I say performance I mean the speed with which > the device functionalities work and also reduce memory consumption(I > mean use memory in a optimised way). One such example of performance > improvement will be to speed up the bootup time of the device,the > channel switching time in a TV like this. I am working in a consumer > electronics device related software development where I was asked to > reduce the bootup time.I am clueless where to look into.
Here you put your finger on the problem: you are clueless where to look into. Like with all optimization issues, you can't do it unless you know *exactly* where the time is spent. So before doing anything else - reading books, posting usenet messages, etc - start with measuring what your code is doing. See if you can hook up a profiler or try to do some tricks with spare I/O lines and a logical analizer. Your first task is to get a good understanding of what part of your code is taking most of the time.
> Only one tip came to my mind,thats use uncompressed > binary image for booting so I can reduce the uncompressing time.But > thats too much less to achieve the result in improving the booting > time.
I can't tell from here. Maybe decompressing your image takes 5 msecs, while polling your bus takes half a minute. That's something only you can tell. -- :wq ^X^Cy^K^X^C^C^C^C
Reply by Vivekanandan M August 4, 20062006-08-04
Hello ,

> ssubbarayan wrote: > Gurus, > > One such example of performance improvement will be to speed up the > bootup time of the device,the channel switching time in a TV like this. > I am working in a consumer electronics device related software
Here is some list of techniques to reduce the boot time. http://tree.celinuxforum.org/CelfPubWiki/BootupTimeResources Best Regards, Vivekanandan M