Sie sind hier : Homepage →  > Linux (12) Technik des NAS-540→  > Einblick in ein NAS-542 OS→  Das "u-boot" im embedded System

Diese Seiten sind unsere internen Protokolle aus dem Labor.

Aufgrund der fortlaufenden Protokollierung der Ergänzungen sowie der Verbesserungen ist die Reihenfolge / Chronologie der Seiten aus dem Ruder gelaufen - leicht durcheinander geraten.

.

Um in einem embedded Linux System zu verstehen, wie ......

das System startet, muß man ganz schön lange suchen. Irgendwann findet man diese Seite :
https://www.deditec.de/media/manuals/de/manual_linux_for_embedded/index.html?u_boot_befehle.htm
und dort findet man :
.

Die "u-boot"-loader Befehle (alphabetisch sortiert)

Ich habe die Optionen mal 1:1 übernommen samt Kommentar. Mit dem U-BOOT Kommand ”help” bekommt man eine Befehlsliste. Doch im Zyxel NAS-540 gibt es den Befehl nicht. Das wiederum bedeutet, dort werkelt gar kein u-boot, sondern ein "barebox".
.

? - alias for 'help'
autoscr - run script from memory
base - print or set address offset
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
echo - echo args to console
erase - erase FLASH memory
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
flinfo - print FLASH memory information
go - start application at address 'addr'
help - print online help
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
mm - memory modify (auto-incrementing)
mtest - simple RAM test
mw - memory write (fill)
nand - NAND sub-system
nboot - boot from NAND device
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
tftpboot - boot image via network using TFTP protocol
usb - USB sub-system
usbboot - boot from USB device
version - print monitor version

.

die Befehle ..... jedoch viel besser nach Funktionen sortiert

Below the list of all commands extracted from U-Boot Manual (not-exhaustive):

.
Information Commands
.

  • bdinfo - prints Board Info structure
  • coninfo - prints console devices and information
  • flinfo - prints Flash memory information
  • iminfo - prints header information for application image
  • help - prints online help

.
Memory Commands
.

  • base - prints or sets the address offset
  • crc32 - checksum calculation
  • cmp - memory compare
  • cp - memory copy
  • md - memory display
  • mm - memory modify (auto-incrementing)
  • mtest - simple RAM test
  • mw - memory write (fill)
  • nm - memory modify (constant address)
  • loop - infinite loop on address range

.
Flash Memory Commands
.

  • cp - memory copy
  • flinfo - prints Flash memory information
  • erase - erases Flash memory
  • protect - enables or disables Flash memory write protection
  • mtdparts - defines a Linux compatible MTD partition scheme

.
Execution Control Commands
.

  • source - runs a script from memory
  • bootm - boots application image from memory
  • go - starts application at address 'addr'

.
Download Commands
.

  • bootp - boots image via network using BOOTP/TFTP protocol
  • dhcp - invokes DHCP client to obtain IP/boot params
  • loadb - loads binary file over serial line (kermit mode)
  • loads - loads S-Record file over serial line
  • rarpboot- boots image via network using RARP/TFTP protocol
  • tftpboot- boots image via network using TFTP protocol

.
Environment Variables Commands
.

  • printenv- prints environment variables
  • saveenv - saves environment variables to persistent storage
  • setenv - sets environment variables
  • run - runs commands in an environment variable
  • bootd - default boot, that is run 'bootcmd'

.
Flattened Device Tree support
.

  • fdt addr - selects the FDT to work on
  • fdt list - prints one level
  • fdt print - recursive printing
  • fdt mknode - creates new nodes
  • fdt set - sets node properties
  • fdt rm - removes nodes or properties
  • fdt move - moves FDT blob to new address
  • fdt chosen - fixup dynamic information

.
Special Commands
.

  • i2c - I2C sub-system

.
Miscellaneous Commands
.

  • echo - echoes args to console
  • reset - performs a CPU reset
  • sleep - delays the execution for a predefined time

.

Halbwissen about "u-boot" (in der Standard Version)

.

  • Start von U-BOOT

.
Nach dem Einschalten der Versorgungsspannung wird der (oder ein) Bootloader U-BOOT aus dem spi-flash geladen und auch gestartet. Er wartet 3 Sekunden auf eine Tasteneingabe vom Benutzer, um den weiteren Boot-Vorgang abzubrechen. (Das stimmt natürlichnur teilweise, weil voher noch 2 weietere Mini-Loader durchlaufen, der PPL und der SPL.) Wird keine Taste gedrückt, startet dieser dritte Bootloader direkt den Linux Kernel und beginnt sofort mit der Ausführung.

Woher weiß der Bootloader, welchen Kernel der Bootloader laden "soll", wenn es zwei Kernels gibt ?

  • U-BOOT Einführung


Hauptaufgabe ist das Starten eines Linux-Kernels. Voreingestellt (in den Environment-Variablen) holt U-BOOT den Linux-Kernel aus dem Flash-Baustein des CPU-Moduls. Über ein serielles Nullmodemkabel (das ist eine DEBUG-Serielle Schnittstelle, 115200 Baud) kann man U-BOOT-Kommandos eingeben.

  • Vorgefertigte Kommandos in den Environment-Variablen


Sie sehen eine Auflistung aller Umgebungsvariablen im Auslieferungszustand.

stdin=serial
stdout=serial
stderr=serial
ethaddr=00:c0:d5:00:00:01
bootdelay=3
baudrate=115200
ethact=macb0
ipaddr=192.168.1.9
serverip=192.168.1.20
filename_rootfs=rootfs_ecpu800.jffs2
filename_kernel=kernel-2.6.30_ecpu800.bin
tftpload_kernel=tftpboot 0x22200000 ${filename_kernel}
tftpload_rootfs=tftpboot 0x22200000 ${filename_rootfs}
nand_update_kernel=nand erase 0x00100000 0x00f00000;nand write 0x22200000 0x00100000 0x00F00000
nand_update_rootfs=nand erase 0x01000000 0x01000000;nand write 0x22200000 0x01000000 $(filesize)
nand_erase_partition2=nand erase 0x04000000 0x0C000000
update_kernel=run tftpload_kernel;run nand_update_kernel
update_rootfs=run tftpload_rootfs;run nand_update_rootfs
update_rootfs2=run tftpload_rootfs2;run nand_update_rootfs
boot_nfs=setenv bootargs ${bootargs_nfs};saveenv;boot
boot_nand=setenv bootargs ${bootargs_nand};saveenv;boot
bootargs_nand=mem=64M console=ttyS0,115200 root=/dev/mtdblock0 rw rootfstype=jffs2
bootargs_nfs=mem=64M console=ttyS0,115200 root=/dev/nfs rw nfsroot=/nfs/rootfs_ecpu800 ip=192.168.1.9:192.168.1.20::::eth0: init=/sbin/init
bootargs=mem=64M console=ttyS0,115200 root=/dev/nfs rw nfsroot=/nfs/rootfs_ecpu800 ip=192.168.1.9:192.168.1.20::::eth0: init=/sbin/init
bootcmd=ping 192.168.1.20;nand read 0x22200000 0x00100000 0x00200000;bootm 0x22200000

Diese Variablen sind beim Zyxel-NAS 540 mit Sicherheit angepaßt.

  • Start des Dateisystems über NFS


Auf einem ARM7 (cortex-A9) Board kann im U-BOOT per Kommando umgestellt werden, dass die nächsten Boot-Vorgänge per NFS erfolgen sollen > run boot_nf

Hierbei werden in der Umgebungsvariablen ”bootargs” die Einstellungen für das Starten über NFS eingestellt und dann die geänderten Umgebungsvariablen im Flash gespeichert.

Soll wieder umgestellt werden, dass U-BOOT das Root-Filesystem aus dem NAND-FLASH Speicher holt, muss folgendes eingegeben werden: > run boot_nand

Wie gehts weiter ...... ?????? Das kann doch nicht alles gewesen sein ??????
.

Startseite -- © 2001/2022 - Copyright by Dipl.-Ing. Gert Redlich / Germany - D-65191 Wiesbaden - Telefon-Nummer - Impressum