Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
Microcontrollers, USB and Linux
- 12-27-2007
- Joost Leeuwesteijn
December 27, 2007, 11:00 am

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
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
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
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

(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

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
E-Mail address works, Jabber: snipped-for-privacy@jabber.org, ICQ: 134682867
Site Timeline
- » Embedded Linux and PCI (over AT91?)
- — Next thread in » Embedded Linux
-
- » Recommendation for ext2 or ext3 with CompactFlash
- — Previous thread in » Embedded Linux
-
- » Crosscompiling for ARM: reloc type R_ARM_ABS32 is not supported for PIC - ...
- — Newest thread in » Embedded Linux
-
- » OpenGL Application: FrameNumber for examining display monitors !
- — The site's Newest Thread. Posted in » Electronics Design
-
- » Rules
- — The site's Last Updated Thread. Posted in » Microcontrollers (Russian)
-