Difference between revisions of "Linuxstamp"
Linuxvolts (talk | contribs) m |
Linuxvolts (talk | contribs) |
||
Line 33: | Line 33: | ||
== Cross Compilier == | == Cross Compilier == | ||
− | In order to compile for the AT91RM9200 we need to build a cross compilier. Dan Kegel has created a very useful [http://kegel.com/crosstool/ tool] for building a cross compiliers. I am using Fedora 6 (x86_64) as my host system. After downloading and extracting crosstool I made two small changes. In the "demo-arm.sh" file I changed the eval line to | + | In order to compile for the AT91RM9200 we need to build a cross compilier. Dan Kegel has created a very useful [http://kegel.com/crosstool/ tool] for building a cross compiliers. I am using Fedora 6 (x86_64) as my host system. After downloading and extracting crosstool (I was using version 0.43) I made two small changes. In the "demo-arm.sh" file I changed the eval line to |
*"'''eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest'''"<br> | *"'''eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest'''"<br> | ||
In the "arm.dat" file I changed the TARGET to "arm-linux" (By default u-boot looks for arm-linux-* tools). Now if you run "demo-arm.sh" you should get a cross compilier. | In the "arm.dat" file I changed the TARGET to "arm-linux" (By default u-boot looks for arm-linux-* tools). Now if you run "demo-arm.sh" you should get a cross compilier. | ||
Line 41: | Line 41: | ||
== U-boot == | == U-boot == | ||
− | First we need the u-boot source found [http://sourceforge.net/project/showfiles.php?group_id=65938 here]. If you have not yet built a cross compilier now would be a good time to do so (See the cross compilier section below). Now you can do a test for the Atmel AT91RM9200 DK board. | + | First we need the u-boot source found [http://sourceforge.net/project/showfiles.php?group_id=65938 here] (I was using version 1.1.6). If you have not yet built a cross compilier now would be a good time to do so (See the cross compilier section below). Now you can do a test for the Atmel AT91RM9200 DK board. |
* $ '''make at91rm9200dk_config''' | * $ '''make at91rm9200dk_config''' | ||
* $ '''make''' | * $ '''make''' | ||
Line 47: | Line 47: | ||
== Busybox == | == Busybox == | ||
− | [http://www.busybox.net/ Busybox] provides the necessary utilties (e.g ls, cp, etc...). After you have downloaded and unpacked busybox we are ready to get started (I was using version 1.4.2 | + | [http://www.busybox.net/ Busybox] provides the necessary utilties (e.g ls, cp, etc...). After you have downloaded and unpacked busybox we are ready to get started (I was using version 1.4.2). |
* $ '''make defconfig''' | * $ '''make defconfig''' | ||
Now for a quick test we can make busybox for our host machine | Now for a quick test we can make busybox for our host machine | ||
Line 57: | Line 57: | ||
== Building the Kernel == | == Building the Kernel == | ||
− | If you have ever built the kernel for your desktop, then cross-compiling the kernel isn't that much harder. First get the latest kernel from kernel.org, then get the AT91RM9200 patch from [http://maxim.org.za/at91_26.html here]. After you unpack both of these you can apply the patch. | + | If you have ever built the kernel for your desktop, then cross-compiling the kernel isn't that much harder. First get the latest kernel from kernel.org (I was using 2.6.22.7), then get the AT91RM9200 patch from [http://maxim.org.za/at91_26.html here]. After you unpack both of these you can apply the patch. |
* $ '''patch -p1 < 2.6.22-at91.patch''' | * $ '''patch -p1 < 2.6.22-at91.patch''' | ||
Now lets take a look at the default configurations | Now lets take a look at the default configurations |
Revision as of 17:35, 22 September 2007
Contents
Description
The Linuxstamp is designed to be a general purpose processor module. It is designed to work as a stand alone module (SD card, ethernet and USB/Serial converter are all on the module). This allows all initial development to be done without a motherboard, but for integration into a specific project a motherboard with specific features could be designed. Check out the start of the first mother board for the linuxstamp, Mboard 1.
Features
- Atmel AT91RM9200 processor (Arm9 processor with MMU)
- 32MB SDRAM (Only limited by 1x 54-TSOP SDRAM chip)
- 8MB SPI Dataflash
- 1x 10/100 Ethernet
- 1x USB host port (allows wifi adapters, flash drives and other USB devices to be used)
- 1x SD card slot
- Serial debug port access through FTDI USB/Serial converter
- JTAG port
- 2-Layer PCB design
- POE capable (48v -> 5v Power supply can be implemented on a motherboard)
Licence
All files for this project are licensed under the GNU GPL V2
Project files
Warning!!! This is an untested design. As testing results are available I will post them on this site.
Power
The power supply for the board is based on the Linear LTC3407-3. This is a very compact high frequency switching power supply. It has both a 3.3v and a 1.8v output. It does have a very tight input range 3.3v-5.5v. The Micrel PHY also needs 2.5v, but this is provided by an internal regulator. Currently a regulated 5v must be used to power the board. Talking with Jeff from Jendy Labs it seems like POE (Power Over Ethernet) is a good idea. Wekipedia has a good general description of POE. The basic idea is that POE provides 48v and up to 13 watts, more than enough power for the Linuxstamp. The problem for the module is that a 48v -> 5v power supply is not small or cheap. In order to take advantage of POE without increasing the board size I found a part from Transtek Magnetics that is made for POE and has the rectifier built into the jack. The 48v lines are then connected to the pin header. This will allow a motherboard to integrate a POE power supply.
Status
Free DFM looks good for the design. We should order the boards any day now. Here are the links if anyone is interested.
Cross Compilier
In order to compile for the AT91RM9200 we need to build a cross compilier. Dan Kegel has created a very useful tool for building a cross compiliers. I am using Fedora 6 (x86_64) as my host system. After downloading and extracting crosstool (I was using version 0.43) I made two small changes. In the "demo-arm.sh" file I changed the eval line to
- "eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest"
In the "arm.dat" file I changed the TARGET to "arm-linux" (By default u-boot looks for arm-linux-* tools). Now if you run "demo-arm.sh" you should get a cross compilier.
Booting
The AT91RM9200 has several features the faciliate easy booting. There is a good description of the booting order here. Atmel provides a tiny program that lives in the Dataflash and loads u-boot (see next section).
U-boot
First we need the u-boot source found here (I was using version 1.1.6). If you have not yet built a cross compilier now would be a good time to do so (See the cross compilier section below). Now you can do a test for the Atmel AT91RM9200 DK board.
- $ make at91rm9200dk_config
- $ make
This should give you a "u-boot.bin" file. We will have to write a board specific configuration file for the Linuxstamp. We should be able to base it off the the Atmel DK board. If you look at "/u-boot-1.1.6/include/configs/at91rm9200dk.h" you can see the configuration for the DK board.
Busybox
Busybox provides the necessary utilties (e.g ls, cp, etc...). After you have downloaded and unpacked busybox we are ready to get started (I was using version 1.4.2).
- $ make defconfig
Now for a quick test we can make busybox for our host machine
- $ make
After you run this you should have a file 'busybox'. Now try
- $ ./busybox ls
But we want to build busybox for our embedded system so run
- $ make ARCH=arm CROSS_COMPILE=arm-linux-
Building the Kernel
If you have ever built the kernel for your desktop, then cross-compiling the kernel isn't that much harder. First get the latest kernel from kernel.org (I was using 2.6.22.7), then get the AT91RM9200 patch from here. After you unpack both of these you can apply the patch.
- $ patch -p1 < 2.6.22-at91.patch
Now lets take a look at the default configurations
- $ make ARCH=arm help
I don't know which will be the closest to the linuxstamp but lets try 'at91rm9200dk_defconfig'
- $ make ARCH=arm at91rm9200dk_defconfig
If we what to further customize the build we can use 'xconfig'
- $ make ARCH=arm xconfig
Now were are ready to build the kernel
- $ make ARCH=arm CROSS_COMPILE=arm-linux- zImage
Eagle Stuff
I will put tools and libaries here.
- I would post a cam job, but opencircuits won't let me upload a .cam file
Links
- Atmel: AT91RM9200 info on Atmel's site
- [1]: Up to date kernel patch for the AT91RM9200
- Cadsoft.de: Free (as in beer) tools for schematic and PCB design
- openhardware.wordpress.com: Here is my openhardware blog
- App notes: for Atmel arm processors
- Jendy Labs
- Mborad 1 for the linuxstamp
Pricing
The parts cost for qty 1 is $75 from digikey, and $55 for qty 100
I'm sure this can be greatly reduced with higher quantity
We will make a small run soon, and I will let you know when these are available.
Discussion
Can I plug a USB peripheral into the Linuxstamp, such as a USB Wifi adapter? --DavidCary 22:02, 17 April 2007 (PDT)
- Yes, any USB device that is supported by the kernel should work with the Linuxstamp. --Linuxvolts 23:15, 18 April 2007 (PDT)
This is not a true USB port is it? Its just a usb serial peripheral port, therefore USB stick will not work.
- Should be answered by the last answer, too. An USB stick is also USB peripheral^^ --SebDE
This is not a USB host....it (Linuxstamp)is seen as the peripheral surely?
- From the Features:
- 1x USB host port (allows wifi adapters, flash drives and other USB devices to be used)
- You can plug in any USB device that is supported by the kernel. The Linuxstamp is not supposed to be plugged via USB to a PC.
- --SebDE
The AT91RM9200 has 2x USB host ports and 1x device port. I bring out one of the USB host ports directly from the chip to a USB A connector. There is also a mini USB B connector on the board this is connected to the FT232RQ (USB/serial converter) which in turn is connected to the debug serial port on the AT91RM9200. So the linuxstamp can be both a USB host and a USB device. --Linuxvolts 20:10, 4 July 2007 (PDT)
Contact
For further questions or comments please contact Paul (pthomas8589 _at_ gmail _dot_ com)