Microcontrollers, USB and Linux

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View
Hi all,

Simple question, I hope :-)

What's a good architecture for embedded/microcontroller software
development (in C) _under Linux_, with respect to the toolchain (C
cross-compiler, assembler, linker, etc.); nativly without using things
like Wine) ?

Background info:

I would like to develop a _simple_ and low-cost microcontroller hard-
and software platform for study/training purposes, for my colleagues
(and myself :-) ). The focus is software and the hardware should be as
simple/breadboardable as possible, i.e. DIP packages instead of QFP or
BGA. Just basic I/O, perhaps add simple SPI/I2C peripherals, etc. at
some point. I would also like to include USB in it, which is available
on plenty 8-bit controller (and an interesting challenge I've seen).

I would like to use/program USB directly so no FTDI converter IC's to
simulate RS232 ports (what's the point of USB when you simulate RS-232
anyway? Just the option of using a USB hub?).

I've looked at _many_ websites (see below) but I haven't been able to
find what I'm looking for. Does anybody already have any experience in
this area? How active is SDDC for example?

ARM or AVR(32) look nice but they all have QFP or similar packages so
that's not really an option. The Freescale Blackfin controllers start at
BGA packages. Even the Atmel 8051's with USB are QFP packages. The
starter-kits or experiment boards all start at 40+ euros on pre-built
rather large boards with extra peripherals which make them unsuitable
for real simple experiments or applications (e.g. a simple switch
controlled via USB; which is <1 euro when using RS-232).

The Microchip PIC 18F4550 looks great, and only costs a few dollars, but
I don't believe it's possible to develop under Linux (in C), or is it?
The SDDC site says "under construction". The PIC seems to be the only
one that supports USB on a DIP package...
How difficult would it be to solder a QFP or SOIC package to a DIP
connector (for an electronics no-no like me), or get them pre-soldered;
is that a common thing to do or buy? Ah, I just found
http://www.schmartboard.com/index.asp?page=products_qfp .

Perhaps QFP-32 is doable, but are there QFP-32 or smaller ARM IC's for
example? We currently have an embedded ARM Linux board and it would be
nice if we could stick to a single architecture so we can re-use code,
tools, hardware and most importantly knowledge (assembly, architecture,
etc.).

I would appreciate reading your advice and experiences.

Kind regards,
Joost Leeuwesteijn

Websites:
=========

Microchip PIC:
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID11%1&mid10%&lang=en&pageId74%
http://www.embedds.com/pic18f4550-usb-prototyping-board /

gcc:
http://gcc.gnu.org/backends.html

CREATE interface (PIC) [ SEEMS TO BE OFFLINE AT THE MOMENT? ]:
http://www.create.ucsb.edu/~dano/CUI/

SDDC (Small Device C Compiler)
http://sdcc.sourceforge.net/
(AVR no longer supported? What's the link between SDDS and gcc?):

Freescale (Motorola, 68HC, HCS08, etc.):
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=S08JM&nodeId01%624684491437

ARM 7:
http://www.embeddedartists.com/products/boards/lpc2148.php

Atmel 8-bit AVR:
http://www.atmel.com/dyn/products/devices.asp?family_id60%7#1761

Atmel AVR32:
http://www.atmel.com/dyn/products/devices.asp?family_id68%2

Atmel 8051:
http://www.atmel.com/dyn/products/devices.asp?family_id60%4#1686

Simulated USB:
http://obdev.at/products/avrusb/index.html
http://obdev.at/products/avrusb/powerswitch.html

Arduino:
http://www.arduino.cc/

Cypres CY7C637xx (DIP or SOIC package):
http://www.cypress.com/portal/server.pt?space=CommunityPage&control=SetCommunity&CommunityID20%9&PageID25%9&fid16%&rpn=CY7C637xx

USB Micro:
http://usbmicro.com/products.html

Re: Microcontrollers, USB and Linux
Hi all,

Simple question, I hope :-)

What's a good architecture for embedded/microcontroller software
development (in C) _under Linux_, with respect to the toolchain (C
cross-compiler, assembler, linker, etc.); nativly without using things
like Wine) ?

Background info:

I would like to develop a _simple_ and low-cost microcontroller hard-
and software platform for study/training purposes, for my colleagues
(and myself :-) ). The focus is software and the hardware should be as
simple/breadboardable as possible, i.e. DIP packages instead of QFP or
BGA. Just basic I/O, perhaps add simple SPI/I2C peripherals, etc. at
some point. I would also like to include USB in it, which is available
on plenty 8-bit controller (and an interesting challenge I've seen).

I would like to use/program USB directly so no FTDI converter IC's to
simulate RS232 ports (what's the point of USB when you simulate RS-232
anyway? Just the option of using a USB hub?).

I've looked at _many_ websites (see below) but I haven't been able to
find what I'm looking for. Does anybody already have any experience in
this area? How active is SDDC for example?

ARM or AVR(32) look nice but they all have QFP or similar packages so
that's not really an option. The Freescale Blackfin controllers start at
BGA packages. Even the Atmel 8051's with USB are QFP packages. The
starter-kits or experiment boards all start at 40+ euros on pre-built
rather large boards with extra peripherals which make them unsuitable
for real simple experiments or applications (e.g. a simple switch
controlled via USB; which is <1 euro when using RS-232).

The Microchip PIC 18F4550 looks great, and only costs a few dollars, but
I don't believe it's possible to develop under Linux (in C), or is it?
The SDDC site says "under construction". The PIC seems to be the only
one that supports USB on a DIP package...
How difficult would it be to solder a QFP or SOIC package to a DIP
connector (for an electronics no-no like me), or get them pre-soldered;
is that a common thing to do or buy? Ah, I just found
http://www.schmartboard.com/index.asp?page=products_qfp .

Perhaps QFP-32 is doable, but are there QFP-32 or smaller ARM IC's for
example? We currently have an embedded ARM Linux board and it would be
nice if we could stick to a single architecture so we can re-use code,
tools, hardware and most importantly knowledge (assembly, architecture,
etc.).

I would appreciate reading your advice and experiences.

Kind regards,
Joost Leeuwesteijn

Websites:
=========

Microchip PIC:
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID11%1&mid10%&lang=en&pageId74%
http://www.embedds.com/pic18f4550-usb-prototyping-board /

gcc:
http://gcc.gnu.org/backends.html

CREATE interface (PIC) [ SEEMS TO BE OFFLINE AT THE MOMENT? ]:
http://www.create.ucsb.edu/~dano/CUI/

SDDC (Small Device C Compiler)
http://sdcc.sourceforge.net/
(AVR no longer supported? What's the link between SDDS and gcc?):

Freescale (Motorola, 68HC, HCS08, etc.):
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=S08JM&nodeId01%624684491437

ARM 7:
http://www.embeddedartists.com/products/boards/lpc2148.php

Atmel 8-bit AVR:
http://www.atmel.com/dyn/products/devices.asp?family_id60%7#1761

Atmel AVR32:
http://www.atmel.com/dyn/products/devices.asp?family_id68%2

Atmel 8051:
http://www.atmel.com/dyn/products/devices.asp?family_id60%4#1686

Simulated USB:
http://obdev.at/products/avrusb/index.html
http://obdev.at/products/avrusb/powerswitch.html

Arduino:
http://www.arduino.cc/

Cypres CY7C637xx (DIP or SOIC package):
http://www.cypress.com/portal/server.pt?space=CommunityPage&control=SetCommunity&CommunityID20%9&PageID25%9&fid16%&rpn=CY7C637xx

USB Micro:
http://usbmicro.com/products.html


Re: Microcontrollers, USB and Linux
Hi all,

Simple question, I hope :-)

What's a good architecture for embedded/microcontroller software
development (in C) _under Linux_, with respect to the toolchain (C
cross-compiler, assembler, linker, etc.); nativly without using things
like Wine) ?

Background info:

I would like to develop a _simple_ and low-cost microcontroller hard-
and software platform for study/training purposes, for my colleagues
(and myself :-) ). The focus is software and the hardware should be as
simple/breadboardable as possible, i.e. DIP packages instead of QFP or
BGA. Just basic I/O, perhaps add simple SPI/I2C peripherals, etc. at
some point. I would also like to include USB in it, which is available
on plenty 8-bit controller (and an interesting challenge I've seen).

I would like to use/program USB directly so no FTDI converter IC's to
simulate RS232 ports (what's the point of USB when you simulate RS-232
anyway? Just the option of using a USB hub?).

I've looked at _many_ websites (see below) but I haven't been able to
find what I'm looking for. Does anybody already have any experience in
this area? How active is SDDC for example?

ARM or AVR(32) look nice but they all have QFP or similar packages so
that's not really an option. The Freescale Blackfin controllers start at
BGA packages. Even the Atmel 8051's with USB are QFP packages. The
starter-kits or experiment boards all start at 40+ euros on pre-built
rather large boards with extra peripherals which make them unsuitable
for real simple experiments or applications (e.g. a simple switch
controlled via USB; which is <1 euro when using RS-232).

The Microchip PIC 18F4550 looks great, and only costs a few dollars, but
I don't believe it's possible to develop under Linux (in C), or is it?
The SDDC site says "under construction". The PIC seems to be the only
one that supports USB on a DIP package...
How difficult would it be to solder a QFP or SOIC package to a DIP
connector (for an electronics no-no like me), or get them pre-soldered;
is that a common thing to do or buy? Ah, I just found
http://www.schmartboard.com/index.asp?page=products_qfp .

Perhaps QFP-32 is doable, but are there QFP-32 or smaller ARM IC's for
example? We currently have an embedded ARM Linux board and it would be
nice if we could stick to a single architecture so we can re-use code,
tools, hardware and most importantly knowledge (assembly, architecture,
etc.).

I would appreciate reading your advice and experiences.

Kind regards,
Joost Leeuwesteijn

Websites:
=========

Microchip PIC:
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID11%1&mid10%&lang=en&pageId74%
http://www.embedds.com/pic18f4550-usb-prototyping-board /

gcc:
http://gcc.gnu.org/backends.html

CREATE interface (PIC) [ SEEMS TO BE OFFLINE AT THE MOMENT? ]:
http://www.create.ucsb.edu/~dano/CUI/

SDDC (Small Device C Compiler)
http://sdcc.sourceforge.net/
(AVR no longer supported? What's the link between SDDS and gcc?):

Freescale (Motorola, 68HC, HCS08, etc.):
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=S08JM&nodeId01%624684491437

ARM 7:
http://www.embeddedartists.com/products/boards/lpc2148.php

Atmel 8-bit AVR:
http://www.atmel.com/dyn/products/devices.asp?family_id60%7#1761

Atmel AVR32:
http://www.atmel.com/dyn/products/devices.asp?family_id68%2

Atmel 8051:
http://www.atmel.com/dyn/products/devices.asp?family_id60%4#1686

Simulated USB:
http://obdev.at/products/avrusb/index.html
http://obdev.at/products/avrusb/powerswitch.html

Arduino:
http://www.arduino.cc/

Cypres CY7C637xx (DIP or SOIC package):
http://www.cypress.com/portal/server.pt?space=CommunityPage&control=SetCommunity&CommunityID20%9&PageID25%9&fid16%&rpn=CY7C637xx

USB Micro:
http://usbmicro.com/products.html


Re: Microcontrollers, USB and Linux
Quoted text here. Click to load it


I'm using these ones and I'm happy with them. Complete toolchain and
programming tools available under Linux.

Quoted text here. Click to load it

Very nice project. I tried it here and it works with my Atmega8 and
Atmega16.

JB

Re: Microcontrollers, USB and Linux
Quoted text here. Click to load it

(If there are no additional prerequisites) you should first investigate
what functionality you expect from the target device. Then you should
decide what OS you want to use _on_the_target_. After that you should
decide what processor you want to use on the target and at last what
toolchain you use for development

If you don't want to use Linux on the target processor you picked the
wrong forum here.

I suppose you can't do Linux on a PIC or other processors aiming for
extreme low cost.

-Michael

Re: Microcontrollers, USB and Linux
It might be a good tart to use just the development PC as a target for
developing a Linux based device. You can port it to any other Linux
based architecture once you decided which one to use.

-Michael

Re: Microcontrollers, USB and Linux

Quoted text here. Click to load it

Most AVRs are also avaliable in as DIP - unfortunately not the
USB ones, but there's a solution for that problem: Ever heard of
the term "dead bug"? You glue the chip bottom up on a piece of
hole matrix PCB, in which you've soldered pins beforehand. Then
connect the QFP's pins with the board pins using thin laque
isolated wire.

I got a *large* stockpile of AVRs here, as they are a really nice
design, the ATMegas are also quite robust (both ESD and
electrically). So far I accidently roasted only one ATMega8,
with a surge coming from a powerfull DC motor, that also killed
the Power-MOSFETs and driver circuits - I had to replace half of
the semiconductors on the motor controller, but I also found
out, what went wrong and now this is probably the most robust
part of my current robot project:


http://youtube.com/watch?v=kQi3aihMW_4


http://youtube.com/watch?v=BX-NKgbPIpk


http://youtube.com/watch?v=y-I-BbvXA0A


You mentioned you want to use USB directly. The problem is, that
USB is a tedious interface, and honestly: Before going for that
you should familiarize with the architecture beforehand. RS232
is much easier to use AND a lot more reliable in my experience.

To develop software for the AVRs there's a large assortment of
tools running under Linux:

* avr-gcc, avr-lib make a nice C programming environment.

* avra <http://avra.sourceforce.net is a assembler compatible to
  Atmels original AVR assembler, with a few goodies added.

* UISP <http://savannah.nongnu.org/projects/uisp is the tool of
  choice, if you want to flash/program your AVRs with the STK500
  developer board (IMHO the 150 bucks for the STK500 are worth
  every penny)

* PonyProg <http://www.lancos.com/ppwin95.html> is your tool of
  choice if you want to flash/program your AVRs with a cheapo
  parallel port adaptor. Works quite well, if the machine you use
  for programing is running nothing else, when using PonyProg.
  Disabling dynamic CPU clock adjustment (power management)
  while programming highly recommended. Start ponyprog with
  nice -19

Wolfgang Draxinger
--
E-Mail address works, Jabber: snipped-for-privacy@jabber.org, ICQ: 134682867


Thanks

Thanks for the AVR and "dead bug" info!
I'll do a re-post in comp.arch.embedded.

--
J

Site Timeline