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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
03/05/09 16:46
Read: times


 
#163100 - Always start each project by scanning the market
Responding to: ???'s previous message
First off, I think every project should be started without bias when looking for a processor to use. And in the same way, the requirements of the project should decide if assembler or C (or possibly something else) is the best choice.

I haven't had the time to reach that final state of guru for any processor for the simple reason that the processor deemed "best" has always varied from project to project. I have done embedded work with 8051, Z80, AVR, PIC, PPC, ARM, x86, 68xx, 68xxx, ...

This means that I always need the assembler reference very close at hand when writing assembler, but can manage quite well with just the user manual/datasheet when the project is using C.

In some projects, there have only been one or two processors fulfilling the requirements so there hasn't been any possibilty of selecting family. In some projects, one processor has been significantly cheaper which is the major factor in high-volume products. In other projects, the over-capacity of some processors has allowed significant reductions in development and maintainance time and cost leading to lower life-cycle costs even for 10k+ volumes/year.

In the end, I normally end up with well-working software that manages the task and normally have space and time to spare for a couple of bonus features. Once or twice, the project has needed to switch processor - either because the customer has decided to suddenly change the requirements (this is a good time to pray that the project selected C) or the chip manufacturer haven't been able to supply the chips at their promised date or have possibly "forgotten" to mention some little damaging "gotcha" in the datasheet or errata.

But a note about 8-bit operation. It is not so simple as to think a 32-bit one-clocker and a 8-bit one-clocker will have the same speed when solving 8-bit problems. Richard was happy about being able to load and increment in a single instruction. I responded by noting that all "real" processors can. But better processors can do better than that. They may be able to increment the pointer by arbitrary values for example. So if you have an array of 34-byte large structs, and pick up one byte from each array entry with just a single load and increment instruction.

Some 8051 can alternate between two pointers, but what if you have a huge LED display that needs to read data from two bitmaps and merge into a third? Where do you get the third index pointer from? A more GP processor core can just select a (any) third register and use (with auto-increment).

How about accessing fields in a struct, by processing data with pointer + offset? A bigger processor can do the offset fetch and add without a single extra clock cycle by reserving offset bits in the bigger instruction.

Shifting 8-bit data halfway into another register? With 16-bit or 32-bit register width, there will not be any need to do multiple shift into carry, shift from carry - instead a single barrel-shift can jump-shift multiple steps in a single clock cycle.

I think the 8051 will be heavily used 10 years from now too, but I do not think anyone should select processor just because it belongs to family "x".

List of 76 messages in thread
TopicAuthorDate
NXP P89LPC936 Auxilary RAM            01/01/70 00:00      
   Compiler Cannot Save the Day At Runtime            01/01/70 00:00      
      I found it.....            01/01/70 00:00      
         Incorrect!            01/01/70 00:00      
            To be fair,...            01/01/70 00:00      
               Its good info to know...            01/01/70 00:00      
   how is it done in C?            01/01/70 00:00      
   Maybe you should try doing it ASM!            01/01/70 00:00      
      You should start a new thread on that!            01/01/70 00:00      
      Not in this case!            01/01/70 00:00      
         A compiler should support ALL MCU features ...            01/01/70 00:00      
            A compiler should translate the language            01/01/70 00:00      
               Still C - just not strict.            01/01/70 00:00      
            I didn't say that!            01/01/70 00:00      
               It is not that clean and clear            01/01/70 00:00      
                  Deviants are deviant            01/01/70 00:00      
                     Keil and SDCC need no macros ...            01/01/70 00:00      
                        Are you sure?            01/01/70 00:00      
                     That's probably correct, but ...            01/01/70 00:00      
                        A C compiler can map the hardware quite well            01/01/70 00:00      
                           compiler vendors are looking at the new processors            01/01/70 00:00      
                              I once mentioned that ...            01/01/70 00:00      
                           It's not what I'd choose, but it is a matter of perefernce            01/01/70 00:00      
                              As flash gets bigger, the code steps do too.            01/01/70 00:00      
                              Still not needed for other architectures            01/01/70 00:00      
                                 We will have to agree to disagree ... I guess            01/01/70 00:00      
                                    Which single-clocker is cheaper than an ARM?            01/01/70 00:00      
                                       RE: Which single-clocker is cheaper than an ARM?            01/01/70 00:00      
                                       differs considerably from the classic microcontroller?            01/01/70 00:00      
                                       Horses for courses            01/01/70 00:00      
                                          Always start each project by scanning the market            01/01/70 00:00      
                                             On that we can agree            01/01/70 00:00      
                                          Maybe, but what are they comparing?            01/01/70 00:00      
                                             Did you actually look?            01/01/70 00:00      
                                                Yes, I did.            01/01/70 00:00      
                                       it's a tradeoff            01/01/70 00:00      
                                          Is it 2006 already?            01/01/70 00:00      
                                             Really?            01/01/70 00:00      
                                                that's outright silly            01/01/70 00:00      
                                                   Maybe ... which is why it is not yet the case            01/01/70 00:00      
                                                      the eyes of the beholder            01/01/70 00:00      
                                                         Look at it from another viewpoint for a moment            01/01/70 00:00      
                                          RE: I'm not the one to ask about IC prices            01/01/70 00:00      
                                             doesn't mean I'm totally in the dark            01/01/70 00:00      
                                                Richard Erlacher has left the planet            01/01/70 00:00      
                                                   Maybe Andy's the one who's lost            01/01/70 00:00      
                                                      I cannot believe you even looked at ARM            01/01/70 00:00      
                                                         It's all relative            01/01/70 00:00      
                                                            Price doesn't directly follow processor size            01/01/70 00:00      
                                                            What about performance?            01/01/70 00:00      
                                                         Be specific please.            01/01/70 00:00      
                                                            You can use your own supplier            01/01/70 00:00      
                                                               Your test simulates as 41.04us            01/01/70 00:00      
                                                                  RE: ARM compiles do not like byte-addressing            01/01/70 00:00      
                                                                     A typo on my part            01/01/70 00:00      
                                                                        Case of full unroll            01/01/70 00:00      
                                                                           ... and what does THAT ARM MCU cost?            01/01/70 00:00      
                                                                              WHO CARES            01/01/70 00:00      
                                                                                 Absolutely true!            01/01/70 00:00      
                                                                              $5 or lower            01/01/70 00:00      
                                                                                 My Simulation times were wrong.            01/01/70 00:00      
                                                                                    67% of your loop was your loop            01/01/70 00:00      
                                                                                    re-written the loop in C            01/01/70 00:00      
                                                                                       Try without loop counter            01/01/70 00:00      
                                                                                          You're right!            01/01/70 00:00      
                                                                                             Similar trick with ARM7 would require 66.67MHz            01/01/70 00:00      
                                                                                             60ns with no store instruction.            01/01/70 00:00      
                                                                                                25% speedup            01/01/70 00:00      
                                                                                                   Actually, I found the for loop faster.            01/01/70 00:00      
                                                                                                      Compiler setting?            01/01/70 00:00      
                                                                                                         I made NO optimisation            01/01/70 00:00      
                                                                                                            Avoid variable aliasing if you like high optimization levels            01/01/70 00:00      
                                                                                                               The RealView compiler is very competent            01/01/70 00:00      
                                                                                                                  Yes, caching            01/01/70 00:00      
                                                                                                                  Yes, caching            01/01/70 00:00      
                                                                                                It's much easier with the 8-bit single-clocker            01/01/70 00:00      

Back to Subject List