Which CPU to choose?

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

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

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

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

  2. QFP package (not BGAs).

  1. price: under 30 EUR.

  2. free develepment tools.

My knowledge is: Z80, C51 and x86, ASM only.

Reply to
aleksa
Loading thread data ...

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     Norfolk, VA
Reply to
Rich Webb

Price, package, and the ability to directly interface to SDRAM should narrow things down considerably.

I suspect (but others will chime in) that your best bet for free development tools is to use the ARM processor. Floating point libraries for the 32-bitters have, in my experience, become quite reliable; I think that the gnu library should work just fine for you.

Lay those requirements on the 450 chips in Farnell, and see how many are left.

--
www.wescottdesign.com
Reply to
Tim Wescott

That's an unusual combination. ASM.X86+32MB SDRAM could point to the Atom, under e30, but not qfp. or

formatting link
?

If you don't mind shifting all that asm, then look at

formatting link
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 ?

formatting link
%84%A2-Series-Z32AN.htm

-jg

Reply to
-jg

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     Norfolk, VA
Reply to
Rich Webb

It's got 23MB of RAM on-chip?

--
Grant Edwards                   grante             Yow! I own seven-eighths of
                                  at               all the artists in downtown
 Click to see the full signature
Reply to
Grant Edwards

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.

Reply to
Bob

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:

formatting link

Reply to
aleksa

formatting link

None of your suggestions use QFP.

Reply to
aleksa

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?

Reply to
aleksa

Thank you, but for some unknown reason, I prefer Atmel.

Reply to
aleksa

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.

Reply to
David Brown

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

Reply to
rickman

1SAM9260.

"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

Reply to
rickman

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    (remove caps, dashes and .invalid from e-mail address to reply by mail)

If Robert Di Niro assassinates Walter Slezak, will Jodie Foster marry Bonzo??
Reply to
Stef

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                   grante             Yow! I am having FUN...
                                  at               I wonder if it's NET FUN or
 Click to see the full signature
Reply to
Grant Edwards

You are absolutely right, thanks.

Reply to
aleksa

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)

Reply to
aleksa

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    (remove caps, dashes and .invalid from e-mail address to reply by mail)

Freedom of the press is for those who happen to own one.
Reply to
Stef

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.

Reply to
aleksa

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.