xref: /openbmc/u-boot/board/sandbox/README.sandbox (revision bf6d76b84ae13b463c0dca556118047e2d046f33)
12dabac13SMasahiro Yamada/*
22dabac13SMasahiro Yamada * Copyright (c) 2014 The Chromium OS Authors.
32dabac13SMasahiro Yamada *
42dabac13SMasahiro Yamada * SPDX-License-Identifier:	GPL-2.0+
52dabac13SMasahiro Yamada */
62dabac13SMasahiro Yamada
72dabac13SMasahiro YamadaNative Execution of U-Boot
82dabac13SMasahiro Yamada==========================
92dabac13SMasahiro Yamada
102dabac13SMasahiro YamadaThe 'sandbox' architecture is designed to allow U-Boot to run under Linux on
112dabac13SMasahiro Yamadaalmost any hardware. To achieve this it builds U-Boot (so far as possible)
122dabac13SMasahiro Yamadaas a normal C application with a main() and normal C libraries.
132dabac13SMasahiro Yamada
142dabac13SMasahiro YamadaAll of U-Boot's architecture-specific code therefore cannot be built as part
152dabac13SMasahiro Yamadaof the sandbox U-Boot. The purpose of running U-Boot under Linux is to test
162dabac13SMasahiro Yamadaall the generic code, not specific to any one architecture. The idea is to
172dabac13SMasahiro Yamadacreate unit tests which we can run to test this upper level code.
182dabac13SMasahiro Yamada
192dabac13SMasahiro YamadaCONFIG_SANDBOX is defined when building a native board.
202dabac13SMasahiro Yamada
219b250ac4SSimon GlassThe board name is 'sandbox' but the vendor name is unset, so there is a
229b250ac4SSimon Glasssingle board in board/sandbox.
232dabac13SMasahiro Yamada
242dabac13SMasahiro YamadaCONFIG_SANDBOX_BIG_ENDIAN should be defined when running on big-endian
252dabac13SMasahiro Yamadamachines.
262dabac13SMasahiro Yamada
27226b50bbSBin MengBy default sandbox builds and runs on 64-bit hosts. If you are going to build
28226b50bbSBin Mengand run sandbox on a 32-bit host, select CONFIG_SANDBOX_32BIT.
29226b50bbSBin Meng
302dabac13SMasahiro YamadaNote that standalone/API support is not available at present.
312dabac13SMasahiro Yamada
322dabac13SMasahiro Yamada
332dabac13SMasahiro YamadaBasic Operation
342dabac13SMasahiro Yamada---------------
352dabac13SMasahiro Yamada
362dabac13SMasahiro YamadaTo run sandbox U-Boot use something like:
372dabac13SMasahiro Yamada
386b1978f8SJagannadha Sutradharudu Teki   make sandbox_defconfig all
392dabac13SMasahiro Yamada   ./u-boot
402dabac13SMasahiro Yamada
412dabac13SMasahiro YamadaNote:
422dabac13SMasahiro Yamada   If you get errors about 'sdl-config: Command not found' you may need to
432dabac13SMasahiro Yamada   install libsdl1.2-dev or similar to get SDL support. Alternatively you can
442dabac13SMasahiro Yamada   build sandbox without SDL (i.e. no display/keyboard support) by removing
452dabac13SMasahiro Yamada   the CONFIG_SANDBOX_SDL line in include/configs/sandbox.h or using:
462dabac13SMasahiro Yamada
476b1978f8SJagannadha Sutradharudu Teki      make sandbox_defconfig all NO_SDL=1
482dabac13SMasahiro Yamada      ./u-boot
492dabac13SMasahiro Yamada
502dabac13SMasahiro YamadaU-Boot will start on your computer, showing a sandbox emulation of the serial
512dabac13SMasahiro Yamadaconsole:
522dabac13SMasahiro Yamada
532dabac13SMasahiro Yamada
542dabac13SMasahiro YamadaU-Boot 2014.04 (Mar 20 2014 - 19:06:00)
552dabac13SMasahiro Yamada
562dabac13SMasahiro YamadaDRAM:  128 MiB
572dabac13SMasahiro YamadaUsing default environment
582dabac13SMasahiro Yamada
592dabac13SMasahiro YamadaIn:    serial
602dabac13SMasahiro YamadaOut:   lcd
612dabac13SMasahiro YamadaErr:   lcd
622dabac13SMasahiro Yamada=>
632dabac13SMasahiro Yamada
642dabac13SMasahiro YamadaYou can issue commands as your would normally. If the command you want is
652dabac13SMasahiro Yamadanot supported you can add it to include/configs/sandbox.h.
662dabac13SMasahiro Yamada
672dabac13SMasahiro YamadaTo exit, type 'reset' or press Ctrl-C.
682dabac13SMasahiro Yamada
692dabac13SMasahiro Yamada
702dabac13SMasahiro YamadaConsole / LCD support
712dabac13SMasahiro Yamada---------------------
722dabac13SMasahiro Yamada
732dabac13SMasahiro YamadaAssuming that CONFIG_SANDBOX_SDL is defined when building, you can run the
742dabac13SMasahiro Yamadasandbox with LCD and keyboard emulation, using something like:
752dabac13SMasahiro Yamada
762dabac13SMasahiro Yamada   ./u-boot -d u-boot.dtb -l
772dabac13SMasahiro Yamada
782dabac13SMasahiro YamadaThis will start U-Boot with a window showing the contents of the LCD. If
792dabac13SMasahiro Yamadathat window has the focus then you will be able to type commands as you
802dabac13SMasahiro Yamadawould on the console. You can adjust the display settings in the device
812dabac13SMasahiro Yamadatree file - see arch/sandbox/dts/sandbox.dts.
822dabac13SMasahiro Yamada
832dabac13SMasahiro Yamada
842dabac13SMasahiro YamadaCommand-line Options
852dabac13SMasahiro Yamada--------------------
862dabac13SMasahiro Yamada
872dabac13SMasahiro YamadaVarious options are available, mostly for test purposes. Use -h to see
882dabac13SMasahiro Yamadaavailable options. Some of these are described below.
892dabac13SMasahiro Yamada
902dabac13SMasahiro YamadaThe terminal is normally in what is called 'raw-with-sigs' mode. This means
912dabac13SMasahiro Yamadathat you can use arrow keys for command editing and history, but if you
922dabac13SMasahiro Yamadapress Ctrl-C, U-Boot will exit instead of handling this as a keypress.
932dabac13SMasahiro Yamada
942dabac13SMasahiro YamadaOther options are 'raw' (so Ctrl-C is handled within U-Boot) and 'cooked'
952dabac13SMasahiro Yamada(where the terminal is in cooked mode and cursor keys will not work, Ctrl-C
962dabac13SMasahiro Yamadawill exit).
972dabac13SMasahiro Yamada
982dabac13SMasahiro YamadaAs mentioned above, -l causes the LCD emulation window to be shown.
992dabac13SMasahiro Yamada
1002dabac13SMasahiro YamadaA device tree binary file can be provided with -d. If you edit the source
1012dabac13SMasahiro Yamada(it is stored at arch/sandbox/dts/sandbox.dts) you must rebuild U-Boot to
1022dabac13SMasahiro Yamadarecreate the binary file.
1032dabac13SMasahiro Yamada
1042dabac13SMasahiro YamadaTo execute commands directly, use the -c option. You can specify a single
1052dabac13SMasahiro Yamadacommand, or multiple commands separated by a semicolon, as is normal in
1062dabac13SMasahiro YamadaU-Boot. Be careful with quoting as the shall will normally process and
1072dabac13SMasahiro Yamadaswallow quotes. When -c is used, U-Boot exists after the command is complete,
1082dabac13SMasahiro Yamadabut you can force it to go to interactive mode instead with -i.
1092dabac13SMasahiro Yamada
1102dabac13SMasahiro Yamada
1112dabac13SMasahiro YamadaMemory Emulation
1122dabac13SMasahiro Yamada----------------
1132dabac13SMasahiro Yamada
1142dabac13SMasahiro YamadaMemory emulation is supported, with the size set by CONFIG_SYS_SDRAM_SIZE.
1152dabac13SMasahiro YamadaThe -m option can be used to read memory from a file on start-up and write
1162dabac13SMasahiro Yamadait when shutting down. This allows preserving of memory contents across
1172dabac13SMasahiro Yamadatest runs. You can tell U-Boot to remove the memory file after it is read
1182dabac13SMasahiro Yamada(on start-up) with the --rm_memory option.
1192dabac13SMasahiro Yamada
1202dabac13SMasahiro YamadaTo access U-Boot's emulated memory within the code, use map_sysmem(). This
1212dabac13SMasahiro Yamadafunction is used throughout U-Boot to ensure that emulated memory is used
1222dabac13SMasahiro Yamadarather than the U-Boot application memory. This provides memory starting
1232dabac13SMasahiro Yamadaat 0 and extending to the size of the emulation.
1242dabac13SMasahiro Yamada
1252dabac13SMasahiro Yamada
1262dabac13SMasahiro YamadaStoring State
1272dabac13SMasahiro Yamada-------------
1282dabac13SMasahiro Yamada
1292dabac13SMasahiro YamadaWith sandbox you can write drivers which emulate the operation of drivers on
1302dabac13SMasahiro Yamadareal devices. Some of these drivers may want to record state which is
1312dabac13SMasahiro Yamadapreserved across U-Boot runs. This is particularly useful for testing. For
1322dabac13SMasahiro Yamadaexample, the contents of a SPI flash chip should not disappear just because
1332dabac13SMasahiro YamadaU-Boot exits.
1342dabac13SMasahiro Yamada
1352dabac13SMasahiro YamadaState is stored in a device tree file in a simple format which is driver-
1362dabac13SMasahiro Yamadaspecific. You then use the -s option to specify the state file. Use -r to
1372dabac13SMasahiro Yamadamake U-Boot read the state on start-up (otherwise it starts empty) and -w
1382dabac13SMasahiro Yamadato write it on exit (otherwise the stored state is left unchanged and any
1392dabac13SMasahiro Yamadachanges U-Boot made will be lost). You can also use -n to tell U-Boot to
1402dabac13SMasahiro Yamadaignore any problems with missing state. This is useful when first running
1412dabac13SMasahiro Yamadasince the state file will be empty.
1422dabac13SMasahiro Yamada
1432dabac13SMasahiro YamadaThe device tree file has one node for each driver - the driver can store
1442dabac13SMasahiro Yamadawhatever properties it likes in there. See 'Writing Sandbox Drivers' below
1452dabac13SMasahiro Yamadafor more details on how to get drivers to read and write their state.
1462dabac13SMasahiro Yamada
1472dabac13SMasahiro Yamada
1482dabac13SMasahiro YamadaRunning and Booting
1492dabac13SMasahiro Yamada-------------------
1502dabac13SMasahiro Yamada
1512dabac13SMasahiro YamadaSince there is no machine architecture, sandbox U-Boot cannot actually boot
1522dabac13SMasahiro Yamadaa kernel, but it does support the bootm command. Filesystems, memory
1532dabac13SMasahiro Yamadacommands, hashing, FIT images, verified boot and many other features are
1542dabac13SMasahiro Yamadasupported.
1552dabac13SMasahiro Yamada
1562dabac13SMasahiro YamadaWhen 'bootm' runs a kernel, sandbox will exit, as U-Boot does on a real
1572dabac13SMasahiro Yamadamachine. Of course in this case, no kernel is run.
1582dabac13SMasahiro Yamada
1592dabac13SMasahiro YamadaIt is also possible to tell U-Boot that it has jumped from a temporary
1602dabac13SMasahiro Yamadaprevious U-Boot binary, with the -j option. That binary is automatically
1612dabac13SMasahiro Yamadaremoved by the U-Boot that gets the -j option. This allows you to write
1622dabac13SMasahiro Yamadatests which emulate the action of chain-loading U-Boot, typically used in
1632dabac13SMasahiro Yamadaa situation where a second 'updatable' U-Boot is stored on your board. It
1642dabac13SMasahiro Yamadais very risky to overwrite or upgrade the only U-Boot on a board, since a
1652dabac13SMasahiro Yamadapower or other failure will brick the board and require return to the
1662dabac13SMasahiro Yamadamanufacturer in the case of a consumer device.
1672dabac13SMasahiro Yamada
1682dabac13SMasahiro Yamada
1692dabac13SMasahiro YamadaSupported Drivers
1702dabac13SMasahiro Yamada-----------------
1712dabac13SMasahiro Yamada
1722dabac13SMasahiro YamadaU-Boot sandbox supports these emulations:
1732dabac13SMasahiro Yamada
1742dabac13SMasahiro Yamada- Block devices
1752dabac13SMasahiro Yamada- Chrome OS EC
1762dabac13SMasahiro Yamada- GPIO
1772dabac13SMasahiro Yamada- Host filesystem (access files on the host from within U-Boot)
1783ea143abSJoe Hershberger- I2C
1792dabac13SMasahiro Yamada- Keyboard (Chrome OS)
1802dabac13SMasahiro Yamada- LCD
1813ea143abSJoe Hershberger- Network
1822dabac13SMasahiro Yamada- Serial (for console only)
1832dabac13SMasahiro Yamada- Sound (incomplete - see sandbox_sdl_sound_init() for details)
1842dabac13SMasahiro Yamada- SPI
1852dabac13SMasahiro Yamada- SPI flash
1862dabac13SMasahiro Yamada- TPM (Trusted Platform Module)
1872dabac13SMasahiro Yamada
1882dabac13SMasahiro YamadaA wide range of commands is implemented. Filesystems which use a block
1892dabac13SMasahiro Yamadadevice are supported.
1902dabac13SMasahiro Yamada
19189b199c3SSimon GlassAlso sandbox supports driver model (CONFIG_DM) and associated commands.
1922dabac13SMasahiro Yamada
1932dabac13SMasahiro Yamada
194a346ca79SJoe HershbergerLinux RAW Networking Bridge
195a346ca79SJoe Hershberger---------------------------
196a346ca79SJoe Hershberger
197a346ca79SJoe HershbergerThe sandbox_eth_raw driver bridges traffic between the bottom of the network
198a346ca79SJoe Hershbergerstack and the RAW sockets API in Linux. This allows much of the U-Boot network
199a346ca79SJoe Hershbergerfunctionality to be tested in sandbox against real network traffic.
200a346ca79SJoe Hershberger
201a346ca79SJoe HershbergerFor Ethernet network adapters, the bridge utilizes the RAW AF_PACKET API.  This
202a346ca79SJoe Hershbergeris needed to get access to the lowest level of the network stack in Linux. This
203a346ca79SJoe Hershbergermeans that all of the Ethernet frame is included. This allows the U-Boot network
204a346ca79SJoe Hershbergerstack to be fully used. In other words, nothing about the Linux network stack is
205a346ca79SJoe Hershbergerinvolved in forming the packets that end up on the wire. To receive the
206a346ca79SJoe Hershbergerresponses to packets sent from U-Boot the network interface has to be set to
207a346ca79SJoe Hershbergerpromiscuous mode so that the network card won't filter out packets not destined
208a346ca79SJoe Hershbergerfor its configured (on Linux) MAC address.
209a346ca79SJoe Hershberger
210a346ca79SJoe HershbergerThe RAW sockets Ethernet API requires elevated privileges in Linux. You can
211a346ca79SJoe Hershbergereither run as root, or you can add the capability needed like so:
212a346ca79SJoe Hershberger
213a346ca79SJoe Hershbergersudo /sbin/setcap "CAP_NET_RAW+ep" /path/to/u-boot
214a346ca79SJoe Hershberger
215a346ca79SJoe HershbergerThe default device tree for sandbox includes an entry for eth0 on the sandbox
216a346ca79SJoe Hershbergerhost machine whose alias is "eth1". The following are a few examples of network
217a346ca79SJoe Hershbergeroperations being tested on the eth0 interface.
218a346ca79SJoe Hershberger
219a346ca79SJoe Hershbergersudo /path/to/u-boot -D
220a346ca79SJoe Hershberger
221a346ca79SJoe HershbergerDHCP
222a346ca79SJoe Hershberger....
223a346ca79SJoe Hershberger
224a346ca79SJoe Hershbergerset autoload no
225a346ca79SJoe Hershbergerset ethact eth1
226a346ca79SJoe Hershbergerdhcp
227a346ca79SJoe Hershberger
228a346ca79SJoe HershbergerPING
229a346ca79SJoe Hershberger....
230a346ca79SJoe Hershberger
231a346ca79SJoe Hershbergerset autoload no
232a346ca79SJoe Hershbergerset ethact eth1
233a346ca79SJoe Hershbergerdhcp
234a346ca79SJoe Hershbergerping $gatewayip
235a346ca79SJoe Hershberger
236a346ca79SJoe HershbergerTFTP
237a346ca79SJoe Hershberger....
238a346ca79SJoe Hershberger
239a346ca79SJoe Hershbergerset autoload no
240a346ca79SJoe Hershbergerset ethact eth1
241a346ca79SJoe Hershbergerdhcp
242a346ca79SJoe Hershbergerset serverip WWW.XXX.YYY.ZZZ
243a346ca79SJoe Hershbergertftpboot u-boot.bin
244a346ca79SJoe Hershberger
24522f68524SJoe HershbergerThe bridge also support (to a lesser extent) the localhost inderface, 'lo'.
24622f68524SJoe Hershberger
24722f68524SJoe HershbergerThe 'lo' interface cannot use the RAW AF_PACKET API because the lo interface
24822f68524SJoe Hershbergerdoesn't support Ethernet-level traffic. It is a higher-level interface that is
24922f68524SJoe Hershbergerexpected only to be used at the AF_INET level of the API. As such, the most raw
25022f68524SJoe Hershbergerwe can get on that interface is the RAW AF_INET API on UDP. This allows us to
25122f68524SJoe Hershbergerset the IP_HDRINCL option to include everything except the Ethernet header in
25222f68524SJoe Hershbergerthe packets we send and receive.
25322f68524SJoe Hershberger
25422f68524SJoe HershbergerBecause only UDP is supported, ICMP traffic will not work, so expect that ping
25522f68524SJoe Hershbergercommands will time out.
25622f68524SJoe Hershberger
25722f68524SJoe HershbergerThe default device tree for sandbox includes an entry for lo on the sandbox
25822f68524SJoe Hershbergerhost machine whose alias is "eth5". The following is an example of a network
25922f68524SJoe Hershbergeroperation being tested on the lo interface.
26022f68524SJoe Hershberger
26122f68524SJoe HershbergerTFTP
26222f68524SJoe Hershberger....
26322f68524SJoe Hershberger
26422f68524SJoe Hershbergerset ethact eth5
26522f68524SJoe Hershbergertftpboot u-boot.bin
26622f68524SJoe Hershberger
267a346ca79SJoe Hershberger
2682dabac13SMasahiro YamadaSPI Emulation
2692dabac13SMasahiro Yamada-------------
2702dabac13SMasahiro Yamada
2712dabac13SMasahiro YamadaSandbox supports SPI and SPI flash emulation.
2722dabac13SMasahiro Yamada
2732dabac13SMasahiro YamadaThis is controlled by the spi_sf argument, the format of which is:
2742dabac13SMasahiro Yamada
2752dabac13SMasahiro Yamada   bus:cs:device:file
2762dabac13SMasahiro Yamada
2772dabac13SMasahiro Yamada   bus    - SPI bus number
2782dabac13SMasahiro Yamada   cs     - SPI chip select number
2792dabac13SMasahiro Yamada   device - SPI device emulation name
2802dabac13SMasahiro Yamada   file   - File on disk containing the data
2812dabac13SMasahiro Yamada
2822dabac13SMasahiro YamadaFor example:
2832dabac13SMasahiro Yamada
2842dabac13SMasahiro Yamada dd if=/dev/zero of=spi.bin bs=1M count=4
2852dabac13SMasahiro Yamada ./u-boot --spi_sf 0:0:M25P16:spi.bin
2862dabac13SMasahiro Yamada
2872dabac13SMasahiro YamadaWith this setup you can issue SPI flash commands as normal:
2882dabac13SMasahiro Yamada
2892dabac13SMasahiro Yamada=>sf probe
2902dabac13SMasahiro YamadaSF: Detected M25P16 with page size 64 KiB, total 2 MiB
2912dabac13SMasahiro Yamada=>sf read 0 0 10000
2922dabac13SMasahiro YamadaSF: 65536 bytes @ 0x0 Read: OK
2932dabac13SMasahiro Yamada=>
2942dabac13SMasahiro Yamada
2952dabac13SMasahiro YamadaSince this is a full SPI emulation (rather than just flash), you can
2962dabac13SMasahiro Yamadaalso use low-level SPI commands:
2972dabac13SMasahiro Yamada
2982dabac13SMasahiro Yamada=>sspi 0:0 32 9f
2992dabac13SMasahiro YamadaFF202015
3002dabac13SMasahiro Yamada
3012dabac13SMasahiro YamadaThis is issuing a READ_ID command and getting back 20 (ST Micro) part
3022dabac13SMasahiro Yamada0x2015 (the M25P16).
3032dabac13SMasahiro Yamada
3042dabac13SMasahiro YamadaDrivers are connected to a particular bus/cs using sandbox's state
3052dabac13SMasahiro Yamadastructure (see the 'spi' member). A set of operations must be provided
3062dabac13SMasahiro Yamadafor each driver.
3072dabac13SMasahiro Yamada
3082dabac13SMasahiro Yamada
3092dabac13SMasahiro YamadaConfiguration settings for the curious are:
3102dabac13SMasahiro Yamada
3112dabac13SMasahiro YamadaCONFIG_SANDBOX_SPI_MAX_BUS
3122dabac13SMasahiro Yamada	The maximum number of SPI buses supported by the driver (default 1).
3132dabac13SMasahiro Yamada
3142dabac13SMasahiro YamadaCONFIG_SANDBOX_SPI_MAX_CS
3152dabac13SMasahiro Yamada	The maximum number of chip selects supported by the driver
3162dabac13SMasahiro Yamada	(default 10).
3172dabac13SMasahiro Yamada
3182dabac13SMasahiro YamadaCONFIG_SPI_IDLE_VAL
3192dabac13SMasahiro Yamada	The idle value on the SPI bus
3202dabac13SMasahiro Yamada
3212dabac13SMasahiro Yamada
3222945eb73SStefan BrünsBlock Device Emulation
3232945eb73SStefan Brüns----------------------
3242945eb73SStefan Brüns
3252945eb73SStefan BrünsU-Boot can use raw disk images for block device emulation. To e.g. list
3262945eb73SStefan Brünsthe contents of the root directory on the second partion of the image
3272945eb73SStefan Brüns"disk.raw", you can use the following commands:
3282945eb73SStefan Brüns
3292945eb73SStefan Brüns=>host bind 0 ./disk.raw
3302945eb73SStefan Brüns=>ls host 0:2
3312945eb73SStefan Brüns
3322945eb73SStefan BrünsA disk image can be created using the following commands:
3332945eb73SStefan Brüns
3342945eb73SStefan Brüns$> truncate -s 1200M ./disk.raw
3356b20c347SAlison Chaiken$> echo -e "label: gpt\n,64M,U\n,,L" | /usr/sbin/sgdisk  ./disk.raw
3362945eb73SStefan Brüns$> lodev=`sudo losetup -P -f --show ./disk.raw`
3372945eb73SStefan Brüns$> sudo mkfs.vfat -n EFI -v ${lodev}p1
3382945eb73SStefan Brüns$> sudo mkfs.ext4 -L ROOT -v ${lodev}p2
3392945eb73SStefan Brüns
340*bf6d76b8SAlison Chaikenor utilize the device described in test/py/make_test_disk.py:
341*bf6d76b8SAlison Chaiken
342*bf6d76b8SAlison Chaiken   #!/usr/bin/python
343*bf6d76b8SAlison Chaiken   import make_test_disk
344*bf6d76b8SAlison Chaiken   make_test_disk.makeDisk()
3452945eb73SStefan Brüns
3462dabac13SMasahiro YamadaWriting Sandbox Drivers
3472dabac13SMasahiro Yamada-----------------------
3482dabac13SMasahiro Yamada
3492dabac13SMasahiro YamadaGenerally you should put your driver in a file containing the word 'sandbox'
3502dabac13SMasahiro Yamadaand put it in the same directory as other drivers of its type. You can then
3512dabac13SMasahiro Yamadaimplement the same hooks as the other drivers.
3522dabac13SMasahiro Yamada
3532dabac13SMasahiro YamadaTo access U-Boot's emulated memory, use map_sysmem() as mentioned above.
3542dabac13SMasahiro Yamada
3552dabac13SMasahiro YamadaIf your driver needs to store configuration or state (such as SPI flash
3562dabac13SMasahiro Yamadacontents or emulated chip registers), you can use the device tree as
3572dabac13SMasahiro Yamadadescribed above. Define handlers for this with the SANDBOX_STATE_IO macro.
3582dabac13SMasahiro YamadaSee arch/sandbox/include/asm/state.h for documentation. In short you provide
3592dabac13SMasahiro Yamadaa node name, compatible string and functions to read and write the state.
3602dabac13SMasahiro YamadaSince writing the state can expand the device tree, you may need to use
3612dabac13SMasahiro Yamadastate_setprop() which does this automatically and avoids running out of
3622dabac13SMasahiro Yamadaspace. See existing code for examples.
3632dabac13SMasahiro Yamada
3642dabac13SMasahiro Yamada
3652dabac13SMasahiro YamadaTesting
3662dabac13SMasahiro Yamada-------
3672dabac13SMasahiro Yamada
3682dabac13SMasahiro YamadaU-Boot sandbox can be used to run various tests, mostly in the test/
3692dabac13SMasahiro Yamadadirectory. These include:
3702dabac13SMasahiro Yamada
3712dabac13SMasahiro Yamada  command_ut
3722dabac13SMasahiro Yamada     - Unit tests for command parsing and handling
3732dabac13SMasahiro Yamada  compression
3742dabac13SMasahiro Yamada     - Unit tests for U-Boot's compression algorithms, useful for
3752dabac13SMasahiro Yamada       security checking. It supports gzip, bzip2, lzma and lzo.
3762dabac13SMasahiro Yamada  driver model
3777b3dc45eSJagan Teki     - Run this pytest
3787b3dc45eSJagan Teki	  ./test/py/test.py --bd sandbox --build -k ut_dm -v
3792dabac13SMasahiro Yamada  image
3802dabac13SMasahiro Yamada     - Unit tests for images:
3812dabac13SMasahiro Yamada          test/image/test-imagetools.sh - multi-file images
3822dabac13SMasahiro Yamada          test/image/test-fit.py        - FIT images
3832dabac13SMasahiro Yamada  tracing
3842dabac13SMasahiro Yamada     - test/trace/test-trace.sh tests the tracing system (see README.trace)
3852dabac13SMasahiro Yamada  verified boot
3862dabac13SMasahiro Yamada      - See test/vboot/vboot_test.sh for this
3872dabac13SMasahiro Yamada
3882dabac13SMasahiro YamadaIf you change or enhance any of the above subsystems, you shold write or
3892dabac13SMasahiro Yamadaexpand a test and include it with your patch series submission. Test
3902dabac13SMasahiro Yamadacoverage in U-Boot is limited, as we need to work to improve it.
3912dabac13SMasahiro Yamada
3922dabac13SMasahiro YamadaNote that many of these tests are implemented as commands which you can
3932dabac13SMasahiro Yamadarun natively on your board if desired (and enabled).
3942dabac13SMasahiro Yamada
3952dabac13SMasahiro YamadaIt would be useful to have a central script to run all of these.
3962dabac13SMasahiro Yamada
3972dabac13SMasahiro Yamada--
3982dabac13SMasahiro YamadaSimon Glass <sjg@chromium.org>
3992dabac13SMasahiro YamadaUpdated 22-Mar-14
400