Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
Per Westermark
06/17/09 02:52
Read: 241 times
Sweden


 
#166172 - Versatility and diversification
Responding to: Richard Erlacher's previous message
You are still living in the 8-bit world. An embedded unit may have the capacity of a 100MHz i486 PC. If it already has a working Linux kernel, then it is quite likely that any code that needs to be written can be in C or C++ - even any new drivers required.

Next thing. If you need nanosecond delays between signal transitions, and know the existence of a __nop() intrinsic, you can manage a "at least long enough" loop without knowing more than the execution time of a nop instruction for the relevant processor. For longer delays, it is likely that you can use us-resolution delays already available in the kernel. Using hw timers or similar obviously does not require assembler knowledge to use.

Next step up - writing efficient C code requires a basic knowledge of what makes the processor tick - it does not require the knowledge to be able to write assembler code for that processor.

You still have to get out of your box and realize that the embedded world spans a huge range of target hardware, and that the requirements varies quite a lot dependong on where a specific product exists on this scale - both in type of hardware, and in production volume and in cost requirements.

You may take your 8051 10MIPS 8-bit processor and fit it with a bar-code reader containing a 32-bit 100+ MIPS processor. Or maybe connect it to a GPRS module with a 400MIPS processor having 32MB flash + 32MB of RAM. That GPRS module is also running embedded software, but developed under different requirements than your 8051 code. Or you may have a multimedia box having a GB of RAM and flash, and used with TB-sized disks.

So the company developed a multimedia box with a MIPS processor and then decides to switch to an ARM or a PPC or x86. You port the Linux kernel and recompiles the software and runs it on the new hardware. Then you decide that the developers who wrote the code should have o leave the company and be replaced with other developers because they don¨t know how to write in assembler for the new processor? That is basically your view - they wouldn't be competent unless they happened to know how to develop in assembler for the new processor (and I have to assume that you mean write really good assembler, and not just be able to scribble something that sneaks past the assembler).

The question I have to ask is of course how many bigger processors you know how to write efficient assembler for? being a competent assembler programmer for a small PIC, 8051 or AVR processor is quite easy compared to learning how to write efficient assembler code for some of the bigger 32-bit processors. In a world where you may need to produce a new model of a product every 6 months, you may have a situation where the assembler code is seen as bad programming - representing big costs to the company since you can't just recompile for a new target hardware.

In the end, it is vital to realize that the metrics to measure competence or code quality must be defined on a case-by-case basis. It isn't possible to live in a one-size-fits-all world. While an embedded developer should be very familiar with the instruction set for a number of different processor architectures, there will be many situations where there will be no need to know how to write in assembler for a specific processor.

Your delay loop example? locking down the code generated by the C compiler can be as simple as having the C compiler produce an assembler listing, and rip the assembler output and modify to a stand-alone assembler function. The C-generated code may possibly consume one or two instructions extra compared to hand-optimized code, but if the target hardware happens to have MB of flash, that would probably be irrelevant. If you need an extra byte at a later time, you would probably have 10 or 100 thousand lines of C code that would be quicker to look at for squeezing out that required byte.

I have situations where I have spent a day writing an optimized assembler routine for a time-critical function. Then spent 4 hours writing and testing 10 different variants in C and had 3 of the C implementations run within 3% of the time of my assembler code. For posterity, I could commit the assembler code just to have a backup of it. Then directly change the application to use the most readable/maintainable of the three fastest C alternatives. That C code may not have been the fastest alternative if moving the code to another processor, but it would be at least reasonably efficient, and it will compile. And after a platform change, the processor may possibly be changed to one where the code runs several times faster than needed, allowing basically zero maintainance cost for moving the code.

In the end, I would be a lousy embedded developer if I run around thinking that assembler is the big goal. That would be similar to having a hammer and thinking everything looks like a nail.

List of 95 messages in thread
TopicAuthorDate
What's wrong with gimme code?      Murray R. Van Luyn      06/15/09 23:24      
   Mainly        Jez Smith      06/16/09 00:33      
      I agree with Jez Smith        Kiran V. Sutar      06/16/09 01:49      
         Non academic gimme code?      Murray R. Van Luyn      06/16/09 02:41      
            This makes me very suspicious      Jez Smith      06/16/09 02:52      
            gimme code=my own time is too valuable      Per Westermark      06/16/09 03:34      
               Easy to see which is school assignment      David Prentice      06/16/09 03:54      
                  The wise student needs pointers, not complete solutions      Per Westermark      06/16/09 04:24      
            "Here's what I've come up with ...      Christoph Franck      06/16/09 04:56      
               But what's wrong in asking for an example implementaton?      Jan Waclawek      06/16/09 05:12      
                  The teacher recognises the good student      David Prentice      06/16/09 05:33      
                     Now there's a laugh if ever there was one ...      Richard Erlacher      06/16/09 13:35      
                  nothing IF ...      Erik Malund      06/16/09 08:50      
            children should do their own homework      Richard Erlacher      06/16/09 13:32      
   What's wrong with gimmee code.      Joseph Hebert      06/16/09 00:44      
   Sounds Like; Whats wrong with Spoon Feeding..?      Mahesh Joshi      06/16/09 06:05      
      perhaps it enables ...      David Prentice      06/16/09 06:28      
         Generic solutions applicable to more people      Per Westermark      06/16/09 07:28      
         Then they'll become expert at potty ...      Richard Erlacher      06/16/09 13:37      
   it makes you dumb!      Erik Malund      06/16/09 08:42      
   How'd you like ten of those guys working for you?        Richard Erlacher      06/16/09 13:39      
      But that's the point!      Kai Klaas      06/17/09 08:39      
         We agree in principle, Kai ... but ...      Richard Erlacher      06/17/09 10:16      
         Hiring & firing is expensive!      Andy Neil      06/18/09 01:42      
            and that's not all!      Richard Erlacher      06/18/09 07:41      
   As an example      Jez Smith      06/16/09 15:17      
      No-one is suggesting breach of copyright      David Prentice      06/16/09 15:37      
         arrogance?      Erik Malund      06/16/09 15:48      
            Examples of Erik's arrogance        Hans Heinz      06/17/09 08:52      
               no, I do not state any such,      Erik Malund      06/17/09 09:15      
                   A couple of corrections      Richard Erlacher      06/17/09 10:29      
                     more useful product?      Erik Malund      06/17/09 12:30      
         life is not B&W      Jan Waclawek      06/16/09 15:53      
            Good help _is_ to a big part to give hints        Per Westermark      06/16/09 16:47      
               Votes and freedom of speech?      Per Westermark      06/16/09 16:57      
               When I was a youngster ...      Richard Erlacher      06/17/09 02:01      
                  Returning to the original subject.      David Prentice      06/17/09 02:24      
                     same same but sometimes different      Per Westermark      06/17/09 02:57      
                     Since you like AVRFREAKS so much ...      Richard Erlacher      06/17/09 10:43      
                  Versatility and diversification      Per Westermark      06/17/09 02:52      
                     This is 8052.COM      Richard Erlacher      06/17/09 10:35      
                  and.....        Jez Smith      06/17/09 05:05      
         There's always help for those who can do their own work.      Richard Erlacher      06/17/09 01:40      
            There's the key!      Andy Neil      06/17/09 01:54      
         that is not the issue      Erik Malund      06/17/09 09:18      
            I'm with you 100% on that, Erik      Richard Erlacher      06/17/09 10:46      
               calm down Richard        Jez Smith      06/17/09 11:23      
                  support for more MCU's makes it more widely useful      Richard Erlacher      06/17/09 16:26      
                     it?      Erik Malund      06/18/09 08:44      
                        Which MCU's will KEIL support?      Richard Erlacher      06/18/09 13:22      
                           Irrelevant      Per Westermark      06/18/09 16:34      
                              Keil's blind spot      Andy Neil      06/18/09 17:33      
                                 Keil will probably get squeezed      Per Westermark      06/18/09 17:50      
                              If only that were the case      Richard Erlacher      06/18/09 22:49      
                                 Portable 'C' [edited]        Andy Neil      06/19/09 01:56      
                                 Write what you mean or mean what you write      Per Westermark      06/19/09 03:33      
                                    OK ... Here's the point      Richard Erlacher      06/19/09 16:13      
                                       If bugs is a big problem - consider your compiler choices      Per Westermark      06/19/09 17:37      
                                 C is not that difficult      David Prentice      06/19/09 04:20      
                                    I can't totally disagree ... it's a matter of degree      Richard Erlacher      06/19/09 19:27      
                                    Richard misses the point completely        Jez Smith      06/20/09 00:18      
                  The thing is...      Andy Neil      06/17/09 17:08      
                     I don't think thats true at all      Jez Smith      06/18/09 04:13      
                        Not what I meant      Andy Neil      06/18/09 05:15      
                           Andy's right!      Richard Erlacher      06/18/09 08:11      
         elders and betters would have given a helpful reply.      Andy Neil      06/28/09 19:15      
   If you think 8052.com is bad ...      Andy Peters      06/17/09 13:14      
   When was it the last time someone asked for code?      Jan Waclawek      06/17/09 15:56      
      oohhh      Jez Smith      06/17/09 16:04      
      Here?      Andy Neil      06/17/09 16:23      
      Latest example of "Gimme Code"      Andy Neil      06/28/09 19:01      
   What the forums are all about        CHARLES TOWNSEND      06/26/09 07:39      
      Progress        Steve M. Taylor      06/26/09 10:41      
         No, don't agree with "exhausted all the possibilities"        Per Westermark      06/26/09 11:22      
            patience      CHARLES TOWNSEND      06/27/09 08:28      
         inexperienced      CHARLES TOWNSEND      06/27/09 08:16      
            Well actually...      Steve M. Taylor      06/27/09 09:44      
               you must have a very smart wife      Erik Malund      06/27/09 09:59      
                  If you're a friend ;-)      Steve M. Taylor      06/28/09 04:30      
      arrogant?      Erik Malund      06/26/09 13:44      
         encouragement      CHARLES TOWNSEND      06/27/09 08:34      
            absolutely        Erik Malund      06/27/09 09:05      
            What you have to remember        Jez Smith      06/27/09 22:30      
               Tim Berners-Lee      Steve M. Taylor      06/28/09 04:33      
                  he only invented the web thingy      Jez Smith      06/28/09 10:49      
                     Exhausted all the possibilities...      Per Westermark      06/28/09 13:25      
                        this is just not fair      Jan Waclawek      06/28/09 13:47      
                           It's about attitude      Per Westermark      06/28/09 15:22      
                              on intentions etc.      Jan Waclawek      06/28/09 16:27      
                              98% of 100      Andy Neil      06/28/09 19:23      
                           good and bad      Erik Malund      06/28/09 15:24      
      OK Charles (et al), here's your chance!        Andy Neil      06/28/09 18:58      
         re: OK Charles here's your chance      CHARLES TOWNSEND      07/02/09 07:44      
            QED.      Andy Neil      07/02/09 08:58      
            Yet one more exhausted visitor      Per Westermark      07/03/09 02:40      

Back to Subject List