EmbeddedRelated.com
Forums
Memfault Beyond the Launch

Looking for suggestions for processor/module/sbc with ethernet

Started by Stephen August 24, 2004
Hello

I'm looking for suggestions for an embedded microcontroller (processor,
module or SBC all under consideration). I don't necessarily expect to get
everything on one chip or module, we will be supplying our own motherboard
either way, but the more we can get from the cpu/module then the less we
need on the motherboard. The ideal list of requirements are roughly:

- A fast 8-bitter, equivalent in performance to a theoretical 100MHz 8051
with hardware multiply/divide unit, or a medium sized 16-bitter or a low
end 32-bitter.

- 5V technology, or 3V with 5V compliant inputs/outputs. Surface mount.

- 512KB code space. At least eprom, preferably ISP flash (serial onchip
bootloader). Code estimate based on our current 8051 code which is 60000+
lines in around 150KB using Keil C51.

- 1MB battery backed up SRAM, although might consider 512KB SRAM if we can
cost effectively also have an additional 512KB+ of flash, possibly compact
flash.

- Preferably a flat address space, but paging would be acceptable if we
can get a "nice" page layout such as 32KB fixed + 32KB paged, and
providing the development environment's requirements didn't steal lots of
common page memory from us.

- Ethernet. 10BaseT minimal, 100BaseT would be nice. Would consider a
software solution or a single-chip solution, but either way, don't have
time to write the TCP/IP stack.

- 50 to 60 general I/O pins.

- 4 external interrupts. Multi-priority interrupt system.

- 2 CPU driven PWM channels.

- 6 serial ports, one of which can run in synchronous mode. (Suspect we'll
end up with 2 plus a quad UART or 4 plus a dual).

- SPI channel, although I'm happy to bit-bang that. Likewise I2C.

- 8x 10-bit ADC (multiplexing acceptable), although I suspect we'll
probably need to add a chip for this.

- Enough CPU internal programmable timers that we have at least 2 free for
our own private use after any other CPU components (e.g. serial + pwm) are
driven from timers.

- Realtime Clock, preferably a real hardware clock with programmable
minute interrupts and alarm times, and not a software based interrupt
driven clock off a simple "realtime counter".

- Watchdog timer.

- Power supervisor for RTC/SRAM protection and early power fail detection.

- Low cost (of course!) at 100 off quantities (500/year max). Difficult to
quantify given that our target is an overall price including our custom
motherboard, the complexity of which depends on what the cpu/module/sbc
gives us, but as a guide, a module with the processor/flash/sram should be
under $50.


We are currently considering either a fast top of the range 8051, the
C166/167, or the Rabbit 3000 modules, but all of which have "issues".

A top of the range 8051 seems to be prone to poor longevity. Not currently
sure about the longevity of a C166 or the availability of non-royalty
TCP/IP or how widely used the C166 is.

The rabbit, although nicely priced with ethernet, currently looks like it
hasn't got the horsepower. Dynamic C seems to suggest (in several
documents) around 50000 lines of C takes 1MB, which compared to our 8051
running 60000 lines in around 150KB makes it around 6 to 8 times less
efficient. Even accounting for the move to softools compiler (which we
would definitely be doing), we are assuming some of the inefficiency comes
about due to the Z80 architecture. Not only does this force up the code
size, but we wonder how much gain the 44MHz really is when the code is
this inefficient.

Software-only based TCP/IP on a 8 bit is also a concern, not having done
this before.

So, if anyone has any alternative suggestions we can look into, I'd
greatly appreciate it. I accept we are probably trying to get more out of
a small 8 bit micro than most others would attempt, hence we're now
considering 16/32 bit too.

Stephen
Stephen <spambox42@yahoo.co.uk> wrote:

> We are currently considering either a fast top of the range 8051, the > C166/167, or the Rabbit 3000 modules, but all of which have "issues". > > A top of the range 8051 seems to be prone to poor longevity. Not currently > sure about the longevity of a C166 or the availability of non-royalty > TCP/IP or how widely used the C166 is.
The C166 is a dead duck, the 161/3/4/7 are viable and fairly popular especially in automotive. Quite nice parts, although Infineon seem to have some problems with Flash. I would suggest you look also at the Renesas (nee Hitachi) H8S range, it's a fairly scaleable family with a good dense instruction set. Terrible flash, not too good for in-system programming, but otherwise very nice. You might just find an H8/Tiny that does the job at a very attractive price, but I'm a year or so behind the curve on that range. pete -- pete@fenelon.com "there's no room for enigmas in built-up areas"
Pete Fenelon said...
> Stephen <spambox42@yahoo.co.uk> wrote: > > > We are currently considering either a fast top of the range 8051, the > > C166/167, or the Rabbit 3000 modules, but all of which have "issues". > > > > A top of the range 8051 seems to be prone to poor longevity. Not currently > > sure about the longevity of a C166 or the availability of non-royalty > > TCP/IP or how widely used the C166 is. > > The C166 is a dead duck, the 161/3/4/7 are viable and fairly popular > especially in automotive. Quite nice parts, although Infineon seem to > have some problems with Flash.
I used the C165 for years and squeezed the most I could out of it. I managed to get it to do an awful lot in 125 usecs and I'm rather fond of it. I would still be using the C165 if Infineon had ever made any movement toward an on-board Ethernet controller. I've always thought they missed a large segment of the market by not doing so. Casey
Stephen wrote:

> Hello
<snip>
> - Low cost (of course!) at 100 off quantities (500/year max). Difficult to > quantify given that our target is an overall price including our custom > motherboard, the complexity of which depends on what the cpu/module/sbc > gives us, but as a guide, a module with the processor/flash/sram should be > under $50. > > > We are currently considering either a fast top of the range 8051, the > C166/167, or the Rabbit 3000 modules, but all of which have "issues". > > A top of the range 8051 seems to be prone to poor longevity.
Examples ?
> Not currently sure about the longevity of a C166 or the availability of non-royalty > TCP/IP or how widely used the C166 is. > > The rabbit, although nicely priced with ethernet, currently looks like it > hasn't got the horsepower. Dynamic C seems to suggest (in several > documents) around 50000 lines of C takes 1MB, which compared to our 8051 > running 60000 lines in around 150KB makes it around 6 to 8 times less > efficient. Even accounting for the move to softools compiler (which we > would definitely be doing), we are assuming some of the inefficiency comes > about due to the Z80 architecture. Not only does this force up the code > size, but we wonder how much gain the 44MHz really is when the code is > this inefficient.
Lots of supposition there: you probably should get one, and try it. [ Sounds a reasonably close fit to what you want... ]
> > Software-only based TCP/IP on a 8 bit is also a concern, not having done > this before. > > So, if anyone has any alternative suggestions we can look into, I'd > greatly appreciate it. I accept we are probably trying to get more out of > a small 8 bit micro than most others would attempt, hence we're now > considering 16/32 bit too.
Given that the FLASH.RAM.Ethernet will be the dominant silicon, then the CPU core can be almost anything. Missing from your list are ** TINI modules from Dallas, these use the DS80C400 CPU ** STm uPSD series ** eZ80 Modules from Zilog ** New ARM Microcontrollers from just about everyone. -jg
Stephen,

Wow, a very comprehensive shopping list indeed.  Someone replied and
suggested one of our (TERN)'s boards, but our website's a tad out of
date so I wanted to follow up with a specific recommendation.

Bad news first, with your aggressive price point ($50, 100 units) we'd
certainly be able to supply the processor core w/ memory and bus for
your motherboard.  The good news is that we can probably provide you
an "ideal" solution that's also pretty affordable.

The "ideal" board I have in mind for you would be our R-Engine-L
controller, a 16-bit 186-generation single-board controller
integrating many of the features you specify.  Specifically, here's
what we have to offer:

- with a pipelined RISC core, 80 MHz clock, and 16-bit memory access,
I think we'll be ok performance wise.

- 512 KB (16-bit) SRAM, 512 KB (16-bit) Flash ROM (we run in x86
real-mode, max 1 MB memory space)

- 5 onboard RS232 serial; (no sync serial)

- a mixed-bag of I/Os: 20 TTL-level, 35 high-voltage sinking outputs,
and 20 opto-coupler inputs.

- integrated (or expansion) CompactFlash interface for mass data
storage (2 GB w/ FAT filesystem support),

- and maybe of most interest for you, it's available with the plug-in
i2chip 100 base-T Ethernet module; offloads a lot of the
buffering/ethernet MAC handling, but the TCP stack is processor level
(code supplied),

- real-time clock (w/ alarm interrupt), 3 16-bit hardware timers,
multiple external interrupts, watchdog, supervisor, etc, etc...

This isn't an exact match for your requirements, (no ADC on this board
for example, and you will need to bit-bang your i2c), but it's close. 
We do offer more expansion boards if you'd like, but we also expose
the data/address bus with the idea that OEM customers could easily
integrate additional peripherals into your own motherboard design.

Price wise, if you take us up on all the features discussed above, I'd
expect these units to be (very approximate until we get the
configuration finalized) to run around $270 in single quantities
(including the 100-baseT ethernet module), and probably $190 in
quantities of 100+.

The RL isn't featured on the website as of yet, but if you drop me an
email I'll be glad to send you more info!

Stephen <spambox42@yahoo.co.uk> wrote in message news:<LKVniIATZ4KBFwPw@rtsoft.demon.co.uk>...
> Hello > > I'm looking for suggestions for an embedded microcontroller (processor, > module or SBC all under consideration). I don't necessarily expect to get > everything on one chip or module, we will be supplying our own motherboard > either way, but the more we can get from the cpu/module then the less we > need on the motherboard. The ideal list of requirements are roughly: > > - A fast 8-bitter, equivalent in performance to a theoretical 100MHz 8051 > with hardware multiply/divide unit, or a medium sized 16-bitter or a low > end 32-bitter. > > - 5V technology, or 3V with 5V compliant inputs/outputs. Surface mount. > > - 512KB code space. At least eprom, preferably ISP flash (serial onchip > bootloader). Code estimate based on our current 8051 code which is 60000+ > lines in around 150KB using Keil C51. > > - 1MB battery backed up SRAM, although might consider 512KB SRAM if we can > cost effectively also have an additional 512KB+ of flash, possibly compact > flash. > > - Preferably a flat address space, but paging would be acceptable if we > can get a "nice" page layout such as 32KB fixed + 32KB paged, and > providing the development environment's requirements didn't steal lots of > common page memory from us. > > - Ethernet. 10BaseT minimal, 100BaseT would be nice. Would consider a > software solution or a single-chip solution, but either way, don't have > time to write the TCP/IP stack. > > - 50 to 60 general I/O pins. > > - 4 external interrupts. Multi-priority interrupt system. > > - 2 CPU driven PWM channels. > > - 6 serial ports, one of which can run in synchronous mode. (Suspect we'll > end up with 2 plus a quad UART or 4 plus a dual). > > - SPI channel, although I'm happy to bit-bang that. Likewise I2C. > > - 8x 10-bit ADC (multiplexing acceptable), although I suspect we'll > probably need to add a chip for this. > > - Enough CPU internal programmable timers that we have at least 2 free for > our own private use after any other CPU components (e.g. serial + pwm) are > driven from timers. > > - Realtime Clock, preferably a real hardware clock with programmable > minute interrupts and alarm times, and not a software based interrupt > driven clock off a simple "realtime counter". > > - Watchdog timer. > > - Power supervisor for RTC/SRAM protection and early power fail detection. > > - Low cost (of course!) at 100 off quantities (500/year max). Difficult to > quantify given that our target is an overall price including our custom > motherboard, the complexity of which depends on what the cpu/module/sbc > gives us, but as a guide, a module with the processor/flash/sram should be > under $50. > > > We are currently considering either a fast top of the range 8051, the > C166/167, or the Rabbit 3000 modules, but all of which have "issues". > > A top of the range 8051 seems to be prone to poor longevity. Not currently > sure about the longevity of a C166 or the availability of non-royalty > TCP/IP or how widely used the C166 is. > > The rabbit, although nicely priced with ethernet, currently looks like it > hasn't got the horsepower. Dynamic C seems to suggest (in several > documents) around 50000 lines of C takes 1MB, which compared to our 8051 > running 60000 lines in around 150KB makes it around 6 to 8 times less > efficient. Even accounting for the move to softools compiler (which we > would definitely be doing), we are assuming some of the inefficiency comes > about due to the Z80 architecture. Not only does this force up the code > size, but we wonder how much gain the 44MHz really is when the code is > this inefficient. > > Software-only based TCP/IP on a 8 bit is also a concern, not having done > this before. > > So, if anyone has any alternative suggestions we can look into, I'd > greatly appreciate it. I accept we are probably trying to get more out of > a small 8 bit micro than most others would attempt, hence we're now > considering 16/32 bit too. > > Stephen
Stephen <spambox42@yahoo.co.uk> wrote in message news:<LKVniIATZ4KBFwPw@rtsoft.demon.co.uk>...
> Hello > > I'm looking for suggestions for an embedded microcontroller (processor, > module or SBC all under consideration). I don't necessarily expect to get > everything on one chip or module, we will be supplying our own motherboard > either way, but the more we can get from the cpu/module then the less we > need on the motherboard. The ideal list of requirements are roughly: > > - A fast 8-bitter, equivalent in performance to a theoretical 100MHz 8051 > with hardware multiply/divide unit, or a medium sized 16-bitter or a low > end 32-bitter. > > - 5V technology, or 3V with 5V compliant inputs/outputs. Surface mount. > > - 512KB code space. At least eprom, preferably ISP flash (serial onchip > bootloader). Code estimate based on our current 8051 code which is 60000+ > lines in around 150KB using Keil C51. > > - 1MB battery backed up SRAM, although might consider 512KB SRAM if we can > cost effectively also have an additional 512KB+ of flash, possibly compact > flash. > > - Preferably a flat address space, but paging would be acceptable if we > can get a "nice" page layout such as 32KB fixed + 32KB paged, and > providing the development environment's requirements didn't steal lots of > common page memory from us. > > - Ethernet. 10BaseT minimal, 100BaseT would be nice. Would consider a > software solution or a single-chip solution, but either way, don't have > time to write the TCP/IP stack. > > - 50 to 60 general I/O pins. > > - 4 external interrupts. Multi-priority interrupt system. > > - 2 CPU driven PWM channels. > > - 6 serial ports, one of which can run in synchronous mode. (Suspect we'll > end up with 2 plus a quad UART or 4 plus a dual). > > - SPI channel, although I'm happy to bit-bang that. Likewise I2C. > > - 8x 10-bit ADC (multiplexing acceptable), although I suspect we'll > probably need to add a chip for this. > > - Enough CPU internal programmable timers that we have at least 2 free for > our own private use after any other CPU components (e.g. serial + pwm) are > driven from timers. > > - Realtime Clock, preferably a real hardware clock with programmable > minute interrupts and alarm times, and not a software based interrupt > driven clock off a simple "realtime counter". > > - Watchdog timer. > > - Power supervisor for RTC/SRAM protection and early power fail detection. > > - Low cost (of course!) at 100 off quantities (500/year max). Difficult to > quantify given that our target is an overall price including our custom > motherboard, the complexity of which depends on what the cpu/module/sbc > gives us, but as a guide, a module with the processor/flash/sram should be > under $50. > > > We are currently considering either a fast top of the range 8051, the > C166/167, or the Rabbit 3000 modules, but all of which have "issues". > > A top of the range 8051 seems to be prone to poor longevity. Not currently > sure about the longevity of a C166 or the availability of non-royalty > TCP/IP or how widely used the C166 is. > > The rabbit, although nicely priced with ethernet, currently looks like it > hasn't got the horsepower. Dynamic C seems to suggest (in several > documents) around 50000 lines of C takes 1MB, which compared to our 8051 > running 60000 lines in around 150KB makes it around 6 to 8 times less > efficient. Even accounting for the move to softools compiler (which we > would definitely be doing), we are assuming some of the inefficiency comes > about due to the Z80 architecture. Not only does this force up the code > size, but we wonder how much gain the 44MHz really is when the code is > this inefficient.
This is a sketchy way to measure efficiency. Does it include code inside libraries functions? Does it include comments and whitespace? I just looked at a small Rabbit/DC program I'm working on and counted 68 lines of code including whitespace and comments for the four functions I wrote generating 506 bytes of code. This is much better than the 20 bytes per "line of code" some old fluff statements in some hardware manuals might imply. Library functions are called that make the overall program much bigger, of course. It would be ashame if you wrote Rabbit off so quickly considering how closely the processor fits the needs you specified. I suggest buying an RCM3300 dev kit and trying it first. If you prefer the Softools compiler, there is a free, full, time-limited demo version available. http://www.rabbitsemiconductor.com/products/rcm3200/index.shtml
> Software-only based TCP/IP on a 8 bit is also a concern, not having done > this before.
You don't want to stream video, but you might be surprised how well it handles TCP/IP. Here are some live demos running HTTP servers on 22MHz boards: http://69.104.38.49:8146 http://69.104.38.49:8147 The total code footprint on these is about 185K and 135K, and this includes all of the web pages and GIFs that are served and all the libraries functions that are brought in.
Brian Murtha wrote:
> It would be ashame if you wrote Rabbit off so quickly considering how > closely the processor fits the needs you specified. I suggest buying > an RCM3300 dev kit and trying it first. If you prefer the Softools > compiler, there is a free, full, time-limited demo version available.
Gee Brian, maybe you could comp the guy a dev kit seeing as your product is such a close fit? Kelly
Stephen wrote:
>
... snip ...
> > The rabbit, although nicely priced with ethernet, currently looks > like it hasn't got the horsepower. Dynamic C seems to suggest (in > several documents) around 50000 lines of C takes 1MB, which > around 6 to 8 times less compared to our 8051 running 60000 lines > in around 150KB makes it efficient. Even accounting for the move > to softools compiler (which we would definitely be doing), we are > assuming some of the inefficiency comes about due to the Z80 > architecture. Not only does this force up the code size, but we > wonder how much gain the 44MHz really is when the code is this > inefficient.
The underlying architecture of the Rabbit is almost that of the Z80, but not quite (which makes all Z80 software useless on it). However it is much more conducive to good code generation than the 8051 architecture, if you need languages that meet their specifications. Of course when you cut the language back to the architecture capabilities things can be much different. -- Chuck F (cbfalconer@yahoo.com) (cbfalconer@worldnet.att.net) Available for consulting/temporary embedded and systems. <http://cbfalconer.home.att.net> USE worldnet address!
Kelly Hall wrote:
> Brian Murtha wrote: > >> It would be ashame if you wrote Rabbit off so quickly considering how >> closely the processor fits the needs you specified. I suggest buying >> an RCM3300 dev kit and trying it first. If you prefer the Softools >> compiler, there is a free, full, time-limited demo version available. > > Gee Brian, maybe you could comp the guy a dev kit seeing as your product > is such a close fit?
While he could use a sig spelling out his relationship, his 'from' address makes that fairly obvious. And who else can more accurately spot the suitability of his product? -- Chuck F (cbfalconer@yahoo.com) (cbfalconer@worldnet.att.net) Available for consulting/temporary embedded and systems. <http://cbfalconer.home.att.net> USE worldnet address!
"Stephen" <spambox42@yahoo.co.uk> wrote in message
news:LKVniIATZ4KBFwPw@rtsoft.demon.co.uk...
> > Hello > > I'm looking for suggestions for an embedded microcontroller (processor, > module or SBC all under consideration). I don't necessarily expect to get > everything on one chip or module, we will be supplying our own motherboard > either way, but the more we can get from the cpu/module then the less we > need on the motherboard. The ideal list of requirements are roughly: > > - A fast 8-bitter, equivalent in performance to a theoretical 100MHz 8051 > with hardware multiply/divide unit, or a medium sized 16-bitter or a low > end 32-bitter. >
I think you'd make your development life a lot easier by going for a cheap 32-bit chip - it will give you proper linear addressing over the whole range, plenty of speed for fast ethernet, and access to more ready-made network stacks and os'es. There are some very integrated ARM chips from Atmel (I've not used them, but our distributer keeps recommending them...), or something like the ColdFire MCF5234 (it has 100MB ethernet, a TPU unit which can easily give you 6 uarts and your pwms).
> - 5V technology, or 3V with 5V compliant inputs/outputs. Surface mount. >
Forget 5V for the chip itself - you won't find many modern mcus with that sort of power that run directly from 5V. 5V tolerance is easy enough to make when needed, and 3V external memories are much cheaper and more available.
> - 512KB code space. At least eprom, preferably ISP flash (serial onchip > bootloader). Code estimate based on our current 8051 code which is 60000+ > lines in around 150KB using Keil C51. >
Most chips in your range should have jtag or on-chip debug, which can be used for programming. Unless space is at a premium, there are a lot of advantages in external flash when you are looking at this size. Compare the prices of 32-bit micros with and without flash to see the cost of internal flash - you might pay five times as much for the internal flash. The situation is a bit different for manufacturers who are expert flash manufacturers who added a cpu, rather than expert cpu manufacturers who added a flash. If you can get cheap ram (for example, the ColdFire supports sdram), then you can use the cheapest, slowest flash you can find - copy the program to sdram on start-up and run it from there.
> - 1MB battery backed up SRAM, although might consider 512KB SRAM if we can > cost effectively also have an additional 512KB+ of flash, possibly compact > flash. > > - Preferably a flat address space, but paging would be acceptable if we > can get a "nice" page layout such as 32KB fixed + 32KB paged, and > providing the development environment's requirements didn't steal lots of > common page memory from us. > > - Ethernet. 10BaseT minimal, 100BaseT would be nice. Would consider a > software solution or a single-chip solution, but either way, don't have > time to write the TCP/IP stack. > > - 50 to 60 general I/O pins.
That's a lot of extra pins. If you can afford the board space, there is a lot to be said for something as simple as 74573 latches, or serial-to-parallel 74 logic chips.
> > - 4 external interrupts. Multi-priority interrupt system. > > - 2 CPU driven PWM channels. > > - 6 serial ports, one of which can run in synchronous mode. (Suspect we'll > end up with 2 plus a quad UART or 4 plus a dual). >
Or a ColdFire with TPU, which works fine as UARTs.
> - SPI channel, although I'm happy to bit-bang that. Likewise I2C. > > - 8x 10-bit ADC (multiplexing acceptable), although I suspect we'll > probably need to add a chip for this. >
External is normally best for accuracy - you don't want to mix your high-speed digital signals and the analogue signals.
> - Enough CPU internal programmable timers that we have at least 2 free for > our own private use after any other CPU components (e.g. serial + pwm) are > driven from timers. > > - Realtime Clock, preferably a real hardware clock with programmable > minute interrupts and alarm times, and not a software based interrupt > driven clock off a simple "realtime counter". > > - Watchdog timer. > > - Power supervisor for RTC/SRAM protection and early power fail detection. > > - Low cost (of course!) at 100 off quantities (500/year max). Difficult to > quantify given that our target is an overall price including our custom > motherboard, the complexity of which depends on what the cpu/module/sbc > gives us, but as a guide, a module with the processor/flash/sram should be > under $50. > > > We are currently considering either a fast top of the range 8051, the > C166/167, or the Rabbit 3000 modules, but all of which have "issues". > > A top of the range 8051 seems to be prone to poor longevity. Not currently > sure about the longevity of a C166 or the availability of non-royalty > TCP/IP or how widely used the C166 is. > > The rabbit, although nicely priced with ethernet, currently looks like it > hasn't got the horsepower. Dynamic C seems to suggest (in several > documents) around 50000 lines of C takes 1MB, which compared to our 8051 > running 60000 lines in around 150KB makes it around 6 to 8 times less > efficient. Even accounting for the move to softools compiler (which we > would definitely be doing), we are assuming some of the inefficiency comes > about due to the Z80 architecture. Not only does this force up the code > size, but we wonder how much gain the 44MHz really is when the code is > this inefficient. > > Software-only based TCP/IP on a 8 bit is also a concern, not having done > this before. > > So, if anyone has any alternative suggestions we can look into, I'd > greatly appreciate it. I accept we are probably trying to get more out of > a small 8 bit micro than most others would attempt, hence we're now > considering 16/32 bit too. > > Stephen

Memfault Beyond the Launch