1. This forum section is a read-only archive which contains old newsgroup posts. If you wish to post a query, please do so in one of our main forum sections (here). This way you will get a faster, better response from the members on Motherboard Point.

Which CPU to choose?

Discussion in 'Embedded' started by aleksa, Jan 11, 2010.

  1. aleksa

    aleksa Guest

    I've looked at farnell, there are some 450 MPUs and thousands of MCUs,
    which one should I learn, considering:

    I'm currently using a standard x86-32 PC for my project,
    but would like to replace the whole motherboard with
    just two chips: cpu and memory.

    The code for x86 is written (by me) in ASM, about 64k in size.

    This is what I need:

    1. 32-bit CPU

    2. 128k of internal CODE memory, ISP and IAP.
    (in-system, in-application programmable)

    3. min 32MB of DATA memory.
    (maybe SDRAM, directly connected to CPU)

    4. embedded FPU (or a free, precise library).

    5. QFP package (not BGAs).

    6. price: under 30 EUR.

    7. free develepment tools.


    My knowledge is: Z80, C51 and x86, ASM only.
     
    aleksa, Jan 11, 2010
    #1
    1. Advertisements

  2. aleksa

    Rich Webb Guest

    Well, there's the LPC2105 from NXP (nee Philips). Under US$10 in
    quantity ones. Memory is onboard, so this is a one-chip solution.

    Does *not* have an FPU but there are C compilers available that support
    doubles, including gcc ports. Lots of commercial compilers, also.

    There are close relatives that have more code and data memory that you
    may want to look at for development, before slimming down to production
    code. The LPC210x chips are supported by several dev board vendors.

    Several other folks (Atmel, ST, AD, Oki, ...) also have ARM7 (more
    properly ARM7TDMI) chips with varying sized and flavors.
     
    Rich Webb, Jan 11, 2010
    #2
    1. Advertisements

  3. aleksa

    -jg Guest

    That's an unusual combination.
    ASM.X86+32MB SDRAM could point to the Atom, under e30,
    but not qfp.
    or http://www.pcengines.ch/platform.htm ?

    If you don't mind shifting all that asm, then look at
    http://ics.nxp.com/lpcxpresso/~LPC3130/#LPC3130
    These lpcxpresso modules are cheap, and make bga a
    don't-care - with luck, the 3130 module will have SDRAM?.

    The smaller LPCxpresso's use the LPC3130 as the USB interface!


    or even this ?
    http://www.embeddeddeveloper.com/group/1473/Zilog®,-Inc./Encore!-32™-Series-Z32AN.htm

    -jg
     
    -jg, Jan 11, 2010
    #3
  4. aleksa

    Rich Webb Guest

    To quote Homer Simpson (in honor of his 20th anniversary): D'Oh!

    You wanted >M< B not >K< B... Fortunately, NXP (et al.) does have
    inexpensive ($12-15) microcontrollers that do support external SDRAM.
    Their parametric search is the place to look (several options) but one
    example is the LPC2292.
     
    Rich Webb, Jan 11, 2010
    #4
  5. It's got 23MB of RAM on-chip?
     
    Grant Edwards, Jan 11, 2010
    #5
  6. aleksa

    Bob Guest

    ARM meets most of your requirements apart from FPU. I would look at
    AT91SAM9260, There is a LQFP part but Farnell don't appear to sell it.
    I assume you are looking for low quantities, and you didn't mention
    CPU speed. I would also look at using a system module.

    Personally I would start with one of the many ARM eval/SBC boards
    (several low cost options) and take it from there. I have been working
    with a Mini2440 board recently.
     
    Bob, Jan 11, 2010
    #6
  7. aleksa

    aleksa Guest

    ARM meets most of your requirements apart from FPU. I would look at AT91SAM9260.

    I knew I'll have to learn ARM someday!

    On the first look, ARM has some pretty strange instructions,
    (what, no CALL, only one-deep BL?) don't know yet if conversion
    from x86 to ARM is doable...? (did a Z80 > x86, it was simple)

    AT91SAM9260 looks good, thanks.

    I've downloaded SAM-BA app from atmel,
    but found no schematics for programming cable.
    (haven't read the FAQs yet)

    '9260 must have at least two external components:
    1. dataflash (holds the code for booting only)
    2. sdram (holds code and data for normal operation)
    right?
    Schukat does:
    http://www2.schukat.com/schukat/sch...16&refDoc=CMS4973C58BAA4AC604C12570DE0037E4FA
     
    aleksa, Jan 13, 2010
    #7
  8. aleksa

    aleksa Guest

    That's an unusual combination.
    None of your suggestions use QFP.
     
    aleksa, Jan 13, 2010
    #8
  9. aleksa

    aleksa Guest

    Floating point libraries for the 32-bitters have,
    Honestly, I don't know anything about gnu.

    I am now overloaded with information, so w/o searching
    for gnu libraries, I have two questions:

    How many bytes are used to represent a number?
    (8 bytes is what I use now)

    I suppose it is written in C, can it be linked with asm?
     
    aleksa, Jan 13, 2010
    #9
  10. aleksa

    aleksa Guest

    Thank you, but for some unknown reason, I prefer Atmel.
     
    aleksa, Jan 13, 2010
    #10
  11. aleksa

    David Brown Guest

    In most cases, single-precision floating point is 4 bytes and double is
    8 bytes - that's the IEEE standards. Some hardware (and some software
    libraries) support extended floats at 12 bytes, or long doubles at 16
    bytes, and some libraries for small devices only support singles.
    Floating point libraries are almost always provided as part of a
    compiler toolchain - thus they come with your C compiler (or other
    compiler). It is certainly possible to use software floating point
    libraries with assembly, but I doubt if many people do so. Presumably
    you are now going to program in C rather than assembly - your original
    decision to program in x86 assembly and then move away from the x86
    platform means that all your source code must be written anew. You
    would not want to make that same mistake twice - program in C, and the
    compiler will handle hardware floating point or software floating point
    according to the capabilities of the device.
     
    David Brown, Jan 13, 2010
    #11
  12. aleksa

    rickman Guest

    Dude,

    If you are going to pick processors based on unknown reasons, why are
    you asking for help from us? Everyone has their personal preferences,
    usually based on what they are familiar with. But it sounds like you
    are not familiar with any processors other than the x86 devices. Why
    would you have a preference for Atmel??? Oh, I forgot, "unknown"
    reasons...

    It's a big CPU world out there. No reason to limit yourself to one
    manufacturer.

    Rick
     
    rickman, Jan 13, 2010
    #12
  13. aleksa

    rickman Guest

    "Those who cannot remember the past are condemned to repeat it".
    There is a reason that your conversion between the Z80 and the x86
    processor assembly code was easy... they are both in the same
    processor family. The Z80 was designed by a competitor to the 8080 to
    be upward compatible and the x86 was the 16/32 bit upgrade from
    Intel.

    Where do you plan to store your code to load into the ram? Most
    systems use dataflash for storing boot code and parallel Flash for the
    full application, although there is no reason why you can't use the
    dataflash for the full application if it is not too large. 64 KB
    shouldn't be a problem.

    You haven't said anything about the requirements of your project. It
    may well be that the 9260 is overkill or underpowered for your needs.
    This part has a pin count of 208 (which also has a very large
    footprint). You might find another part that will do the job in a
    smaller package. The requirement for a large memory does tend to push
    up the pin count, but I have seen parts with an external memory bus in
    128 or 144 pins which is significantly smaller. Is size an issue?

    Rick
     
    rickman, Jan 13, 2010
    #13
  14. aleksa

    Stef Guest

    In comp.arch.embedded,
    Dataflashes are available in much larger sizes and since he wants SDRAM,
    I suspect that will be at least several MB large. So booting from dataflash
    and copying code to SDRAM should also not be a problem for >MB apps.
    (you may have to write some second level loader code yourself, the standard
    loader may only load a few KB to get you started).

    We use an AT91RM9200 booting from 1MB dataflash with 16MB SDRAM for code and
    data.
     
    Stef, Jan 13, 2010
    #14
  15. The bootloader built in to the AT91SAM9 parts will only load
    into internal SRAM (typically 8 or 16KB). That means you need
    a small second-stage bootloader than enables/configures SDRAM
    and copys either your application or a larger bootloader (e.g.
    U-Boot) into SDRAM and executes. Atmel provieds a sample
    bootloader than is set up to load U-Boot from dataflash,
    nand-flash, nor-flash, SD-Card, etc.
     
    Grant Edwards, Jan 13, 2010
    #15
  16. aleksa

    aleksa Guest

    It's a big CPU world out there. No reason to limit yourself to one
    You are absolutely right, thanks.
     
    aleksa, Jan 13, 2010
    #16
  17. aleksa

    aleksa Guest

    Where do you plan to store your code to load into the ram?

    In a 2MB dataflash (which already is on-board)

    I really forgot that, and it's important.

    The original code runs well on PI @ 166MHz, so I need something close to that.
    Big part of x86 code uses FPU.

    Besides SDRAM pins, I need some 30 I/O pins.
    (5V tolerance is always good, but not required)
     
    aleksa, Jan 13, 2010
    #17
  18. aleksa

    Stef Guest

    In comp.arch.embedded,
    Ah yes, now I remember (amazing how soon you forget that stuff if
    you're not working on it anymore). The one we use has 16KB of
    internal SRAM. But make sure you limit the first load to somewhere
    around 12K. The ROM bootloader uses the upper part of the SRAM for
    it's variables and other stuff. If you get in that area the result
    gets 'unpredictable'. (mostly just hangs up).
     
    Stef, Jan 13, 2010
    #18
  19. aleksa

    aleksa Guest

    Dataflashes are available in much larger sizes and since he wants SDRAM,
    Actually, my code is some 64k, but the dataflash is already on-board,
    so making it a boot device for '9260 is a logical step.

    Run-time data can be some 16MB, that's why I need SDRAM.
     
    aleksa, Jan 13, 2010
    #19
  20. FWIW, there are parts in the AT91SAM9 family with enough
    internal flash to eliminate the need for the dataflash.
     
    Grant Edwards, Jan 13, 2010
    #20
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.