1. Sarge - single board computer

UPDATE (08.03.2007)

“first run day”

Today I’ve managed to cross-compile simple 2nd level loader from Pelos site. It’s main features is board specific functions initialization and then download/save loader or u-boot into DATAFLASH memory - from which can be booted later. The loader can also perform SDRAM testing. It’s first result was a memory failure - there was a few “cold joints” created during second SDRAM chip soldering process. After re-soldering the SDRAM test passed and We can go to the next, more important point.

UPDATE (11.03.2007)

Last few day was a really hard time. Using modified loader I was unable to write it into DATAFLASH chip and boot from it. After few hours it turned outs that the AT45DB161 chip is defective - there was no problem with communication but the written data was corrupted after reading. I’m going to replace the defective chip in few days.

In mean time I have modified the loader to upload 3rd level loader directly into SDRAM and boot from it.

“3rd level bootloader”

First level loader is limited to the size of internal SRAM - 12KB for code and 3KB for stack. That’s why we need to upload second level loader - it can upload another loader to the SDRAM and boot from there. Choosing 3rd level loader is a simple task, for linux the choice is obvious - “U-boot loader”.

Yesterday I’ve cross-complied U-boot ver 1.1.6 - the first run result was a strange characters in the console. Few hours of analyze brought the answer. There is an assembler code for arm920t in start.S file. It is the only assembler code in the entire u-boot project (in relation to specific CPU). It contains main CPU intialization after reset/boot - and it is really unnecessary if the CPU was initialized before 3rd level bootloader was loaded. The initialization somehow corrupts the stack settings and the code run causes exceptions after few routines calls, so I’ve modified it to skip initialization optionally. Finnally I get the u-boot loader booting on my AT91RM9200 board. Here comes a simple log:

U-Boot 1.1.6 (May 11 2007 - 23:45:43)
DRAM: 32 MB
Atmel: Flash: 0 kB
DataFlash:AT45DB161
Nb pages: 4096
Page Size: 528
Size= 2162688 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C0007FFF (RO)
Area 1: C0008000 to C001FFFF (RO)
Area 2: C0020000 to C0027FFF
Area 3: C0028000 to C020FFFF
In: serial
Out: serial
Err: serial
eth_initialize
Hit any key to stop autoboot: 0
U-Boot> ?
? - alias for ‘help’
base - print or set address offset
bdinfo - print Board Info structure
boot - boot default, i.e., run ‘bootcmd’
bootd - boot default, i.e., run ‘bootcmd’
bootm - boot application image from memory
bootp - boot image via network using BootP/TFTP protocol
cmp - memory compare
coninfo - print console devices and information
cp - memory copy
crc32 - checksum calculation
dhcp - invoke DHCP client to obtain IP/boot params
echo - echo args to console
eeprom - EEPROM sub-system
erase - erase FLASH memory
flinfo - print FLASH memory information
go - start application at address ‘addr’
help - print online help
icrc32 - checksum calculation
iloop - infinite loop on address range
imd - i2c memory display
imls - list all images found in flash
imm - i2c memory modify (auto-incrementing)
imw - memory write (fill)
inm - memory modify (constant address)
iprobe - probe to discover valid I2C chip addresses
isdram - print SDRAM configuration information
itest - return true/false on integer compare
loadb - load binary file over serial line (kermit mode)
loady - load binary file over serial line (ymodem mode)
loop - infinite loop on address range
md - memory display
mii - MII utility commands
mm - memory modify (auto-incrementing)
mtest - simple RAM test
mw - memory write (fill)
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset - Perform RESET of the CPU
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv - set environment variables
sleep - delay execution for some time
tftpboot- boot image via network using TFTP protocol
usb - USB sub-system
version - print monitor version
U-Boot>

Next task is to implement the STE100P MAC driver.

Pages: 1 2 3 4 5

10 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….

Leave a Reply

You must be logged in to post a comment.