1. Sarge – single board computer

UPDATE (29.04.2007)

„JTAG interface is solution for your problems”

Yesterday I’ve bring back sarge to boot the kernel again. Thanks to JTAG interface ,DDD and OpenOCD.

Using DDD I’ve confirmed some missaligments with gcc 4.1.1 compiler (at least it looks like this way) – I’ve compiled loader and u-boot 1.1.6 with crosstools-43 (gcc 3.4.5) and it helped. It seems that the CPU was initialized in wrong way (in loader on u-boot) and that caused memory missaligments later (I wrote about it before – LC0 label in arch/arm/boot/compressed/head.S).

So, now the kernel 2.6.17 to 2.6.20 boots but 2.6.20 doesn’t mount the MMC card. Its time to setup the root file system and move on.

UPDATE (01.05.2007)

„Sarge booting, initilizing … ready”

Now, when I got the kernel back working I had a greater motivation to write STE100P PHY kernel module. It’s working and ready for download in the Downloads section. and here booting logs:

U-Boot> bootp
BOOTP broadcast 1
DHCP client bound to address 192.168.0.220
TFTP from server 192.168.0.200; our IP address is 192.168.0.220
Filename ‚sarge_at91.img’.
Load address: 0x21000000
Loading: #################################################################
#################################################################
#################################################################
##################################
done
Bytes transferred = 1172404 (11e3b4 hex)
U-Boot> bootm
## Booting image at 21000000 …
Image Name: sarge_at91
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1172340 Bytes = 1.1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum … OK
OK

Starting kernel …

kernel address is 0x20008000
Uncompressing Linux…………………………………………………………………. done, booting the kernel.
Linux version 2.6.17.14 (mcgregor@tank) (gcc version 4.1.1) #36 PREEMPT Sat May 12 00:39:06 CEST 2007
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
Machine: Sarge AT91RM9200 SBC
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 179 MHz, master 59 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists
Kernel command line: mem=32M rootfstype=ext2 root=/dev/mmcblk0p1 console=ttyS0,115200n8 rootdelay=5 init=/bin/init
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80×30
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 29992KB available (1904K code, 423K data, 96K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
AT91: Power Management
Generic PHY: Registered new driver
SCSI subsystem initialized
NET: Registered protocol family 2
IP route cache hash table entries: 256 (order: -2, 1024 bytes)
TCP established hash table entries: 1024 (order: 2, 16384 bytes)
TCP bind hash table entries: 512 (order: 1, 10240 bytes)
TCP: Hash tables configured (established 1024 bind 512)
TCP reno registered
NetWinder Floating Point Emulator V0.97 (double precision)
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Initializing Cryptographic API
io scheduler noop registered
io scheduler anticipatory registered (default)
at91_spi: Baud rate set to 5990400
AT91 SPI driver loaded
AT91 Watchdog Timer enabled (5 seconds, nowayout)
at91_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL
at91_usart.1: ttyS1 at MMIO 0xfffc4000 (irq = 7) is a AT91_SERIAL
at91_usart.2: ttyS2 at MMIO 0xfffc0000 (irq = 6) is a AT91_SERIAL
at91_usart.3: ttyS3 at MMIO 0xfffc8000 (irq = 8) is a AT91_SERIAL
at91_usart.4: ttyS4 at MMIO 0xfffcc000 (irq = 9) is a AT91_SERIAL
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:01:20:38:00:5b)
eth0: STE100P PHY
Linux video capture interface: v1.00
at91_cf: irqs det #88, io #0
mice: PS/2 mouse device common for all mice
at91_rtc at91_rtc: rtc intf: sysfs
at91_rtc at91_rtc: rtc intf: proc
at91_rtc at91_rtc: rtc intf: dev (253:0)
at91_rtc at91_rtc: rtc core: registered at91_rtc as rtc0
AT91 Real Time Clock driver.
MMC: 4 wire bus mode not supported by this driver – using 1 wire
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
at91_rtc at91_rtc: setting the system clock to 1998-01-01 00:00:37 (883612837)
mmc0: card is read-write
mmcblk0: mmc0:ffff SD256 247040KiB
mmcblk0: p1 p2
Waiting 5sec before mounting root device…
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 96K
Failed to execute /bin/init. Attempting defaults…
INIT: version 2.86 booting
.udev/ already exists on the static /dev!
Starting the hotplug events dispatcher udevd
Synthesizing the initial hotplug events
Waiting for /dev to be fully populated
Remounting root file system…
Bluetooth: Core ver 2.8
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP ver 2.8
Bluetooth: L2CAP socket layer initialized
Bluetooth: BNEP (Ethernet Emulation) ver 1.2
Bluetooth: BNEP filters: protocol multicast
usbcore: registered new driver usbfs
usbcore: registered new driver hub
Bluetooth: HCI USB driver ver 2.9
usbcore: registered new driver hci_usb
at91_i2c at91_i2c: AT91 i2c bus driver.
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 23, io mem 0x00300000
usb usb1: Product: AT91 OHCI
usb usb1: Manufacturer: Linux 2.6.17.14 ohci_hcd
usb usb1: SerialNumber: at91
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM ver 1.7
STE100P: Registered new driver
usb 1-2: new low speed USB device using at91_ohci and address 2
usb 1-2: device descriptor read/64, error -110
usb 1-2: device descriptor read/64, error -110
usb 1-2: new low speed USB device using at91_ohci and address 3
usb 1-2: device descriptor read/64, error -110
usb 1-2: device descriptor read/64, error -110
usb 1-2: new low speed USB device using at91_ohci and address 4
Setting up IP spoofing protection: rp_filter.
Configuring network interfaces… usb 1-2: device not accepting address 4, error -110
done.
Starting portmap daemon:usb 1-2: new low speed USB device using at91_ohci and address 5
portmap.
usb 1-2: device not accepting address 5, error -110
Nothing to be done
INIT: Entering runlevel: 5
Starting Dropbear SSH server: dropbear.
starting Busybox UDHCP Server: udhcpd… error: /etc/udhcpd.conf is missing.
Starting system message bus: dbus.
Starting syslogd/klogd: done
Starting Bluetooth subsystem: hcidCan’t open HIDP control socket: Protocol not supported
hidd.
Setting up IP spoofing protection: rp_filter.
Configuring network interfaces… done.
Starting NTP Client.

Angstrom-sarge test-20070422 sarge_at91 ttyS0

sarge_at91 login: root
root@sarge_at91:~$ ifconfig eth0 192.168.0.220 up
eth0: Link now 100-FullDuplex
eth0: Link now 100-FullDuplex
root@sarge_at91:~$ route add default gw 192.168.0.200
root@sarge_at91:~$ ping www.blackmesaeast.com.pl
PING blackmesaeast.com.pl (87.230.5.181): 56 data bytes
64 bytes from 87.230.5.181: icmp_seq=0 ttl=48 time=513.5 ms
64 bytes from 87.230.5.181: icmp_seq=1 ttl=48 time=547.7 ms
64 bytes from 87.230.5.181: icmp_seq=2 ttl=48 time=489.6 ms
64 bytes from 87.230.5.181: icmp_seq=3 ttl=48 time=510.3 ms
64 bytes from 87.230.5.181: icmp_seq=4 ttl=48 time=527.4 ms

— blackmesaeast.com.pl ping statistics —
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 489.6/517.7/547.7 ms

 
Sarge ver 1.0 release(14.05.2007)

After few months of work we have finally a fully working Sarge SBC board and decided to put in public some schematics, kernel driver sources and openembedded bitbake recipes.

Schematics (divided into 6 sheets):

Sheet 1/6

Sheet 2/6

Sheet 3/6

Sheet 4/6

Sheet 5/6

Sheet 6/6

board PCB :

Board full

Board top

Board bottom

The board contains few bugs like:

– SD/MMC card slot is rotated, so the card is inserted from the side of CPU,

– ground signal is not contigous in one point of PCB,

– supply signal wiring width for 3.3V is too thin in few cases.

This bugs shall be removed in the next version, in meantime we can do our development with current working board.

In the Download section I’ve added source code for the loader, U-Boot 1.1.6 and ste100p driver.

U-boot and linux kernel modification for Sarge board can be also downloaded as recipes for bitbake build system.

„Sarge ver 1.0 summary”

The Sarge board is ready an working so here is a little summary for the current version:

  • U-Boot 1.1.6 works, boots from dataflash and STE100P PHY via bootp
  • linux 2.6.17 boots, added board definition/initialization code
  • SD/MMC works with write protect detection, needs to be rotated in future boards
  • USB Host works under linux, tested with bluetooth dongle
  • Ethernet STE100P module works with my kernel module
  • width of wires for 3.3V supply should be corrected for higher current rate
  • supply for 3.3V should be changed to impulse switcher with higher current rate or divided into two LDO’s CPU/SDRAM and the rest peripherals

What’s next ?
I’m going to develop an extension board with I2S DAC for audio signaling, buffered I2C for external measurements circuits, RTC, buffered I/O registers etc.

Related sites:

I2C bus up and running(15.06.2007)

I haven’t managed to run the I2C on the board before so I’ve decided to spent some time to resolve the problem.
After closer investigation it appeared that I have misswired the SCL and SDA line on the board so no wonder that I2C chips weren’t detected properly by the lm-sensors applications. After another de-beautifying my SBC development board I’ve been able to interact with I2C chips (one eeprom AT24C256 onboard, and one DS1621 wired via extension connectors).

here comes simple log from sensors application:

root@sarge_at91:~$ sensors
ds1621-i2c-0-48
Adapter: AT91
temp: +27.00 C (low = +15.0 C, high = +0.0 C) ALARM (HIGH)

It’s hot down here ;).

Please keep in mind that SCL/SDA lines should be corrected on the 1-st sheet of schematic’s (PA25(PIN71) / SDA, PA26(PIN72) /SCL).

Pages: 1 2 3 4 5

12 Responses to “1. Sarge – single board computer”

  1. […] 1. Sarge – single board computer […]

  2. […] 1. Sarge – single board computer […]

  3. […] 1. Sarge – single board computer […]

  4. […] Durring last few weeks I’ve tried to bring the 2.6.17 kernel back to run – with no success.  Why isn’t it booting anymore ? – read […]

  5. […] Using  DDD debugger with OpenOCD and JTAG interface I’ve found why […]

  6. […] My friend made a project of own device based on AT91 ARM cpu with few peripherials. Total cost was less then 100 EUR and it can be used to different tasks and also give possibility to learn how to write kernel code (to handle all addons). […]

  7. […] 1. Sarge – single board computer […]

  8. hoodia…

    How add your site to technorats?…

  9. You mean technorati.com ? I’ve tried but only got the fancy message: „Doh! The Technorati Monster escaped again.We’re scouring the blogosphere attempting to find it. Back in a flash!”

  10. Garage Door Hardware…

    Many of the sites that come up in the search engines just don\’t have exactly what you need. This one does….

  11. Seminarium iMod 22-02-2011 – sprawozdanie…

    Wstęp Relacja w miarę na świeĹźo z prezentacji komputerĂłw przemysłowych iMod, w ktĂłrej wziąłem udział w tym tygodniu. Spisuję, Ĺźeby „nie umknęło”, moĹźe przydać się w przyszłości. Na ‚imprezę’ trafiłem z powodu firmy TechBase,……

  12. Komputer sterujący…

    Wstęp Relacja w miarę na świeĹźo z prezentacji komputerĂłw przemysłowych iMod, w ktĂłrej wziąłem udział w tym tygodniu. Spisuję, Ĺźeby „nie umknęło”, moĹźe przydać się w przyszłości. Na ‚imprezę’ trafiłem z powodu firmy TechBase…

Leave a Reply

You must be logged in to post a comment.