| 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. |
| Topic | Author | Date |
| 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 |



