U-Boot FAQ
How does U-Boot auto-detect the connected PDA on my board ?
A: U-Boot uses a specific GPIO pin to read a memory from the connected PDA. More information can be found on
this page.
How can I add another Device Tree overlay to my base Device Tree blob at runtime ?
A: U-boot allows the user to load a Device Tree Overlay and apply it on the base Device Tree Blob just before booting Linux, thus making it transparent for Linux (Linux will see just one Device Tree Blob like it expects). For more information, visit
this page.
My U-boot detects some screens but not mine. What can I do ?
A: U-boot
detects all PDAs that have the EEPROM properly pre-programmed. The U-boot environment loads a specific overlay for Linux for 4 possible screen types. Your screen might be detected, but the required overlay for Linux may not be loaded. There is a difference between detecting a screen and loading an overlay for a specific screen type. U-boot in our release comes with a pre-written U-boot environment script that loads the corresponding Device Tree Overlay for specific types of screens. You are free to manually override this behavior, add your own custom behavior, or force U-boot to do something else at boot time. For more information about the default environment and how to tweak it from U-boot prompt, visit
this page.
Which screens can be connected to my board? Does U-boot detect them all ?
A: For information about which screens you can connect, check
this page. For information about what screens can U-boot detect, check
this question.
I have a connected screen, but U-boot detects it wrong. Can I force U-boot to load another screen configuration?
A: Yes. Check
this page on how to force U-boot to load another screen type.
My screen is black, although it's a right screen, it is supposed to be detected. What can I do?
A:
- Check the hardware: ribbon cables, check that your board supports the 1Wire EEPROM connection. This page explains this mechanism.
- Check if the display is really detected: When U-boot boots, it should print "PDA TMXXXX detected" , according to which screen you have connected. If it does not print, then you either have a faulty hardware setup, or, you have an unknown screen.
- If you have an old variant of TM5000 screen, the EEPROM is not properly programmed. You need to force U-boot to load the TM5000 configuration. See this page on how to do that.
- If your screen is unknown, but is a correct hardware setup, then, U-boot will read the screen information and set an environment variable. Stop the U-boot autoboot and at the prompt issue 'printenv' . Look at the 'pda' variable. Debug further from there, if you need to load a specific Device Tree overlay for your screen. You can find information about how to tweak your U-boot environment script to cope with different situations here.
- If everything is fine in U-boot, then the Linux Kernel is to blame !
What is a FIT image and how does this work with U-boot?
A: A FIT image is like an archive, a collection of more images that can be used in the boot process, wrapped in a single file. It can contain Kernel images, Device tree Blobs, etc. More information is available
here.
I have a working setup with a specific PDA. I want to connect another PDA. Do I need to reflash my board or change any configuration ?
A: No. U-boot will automatically detect your new connected PDA and load the specific configuration, all is already present on your board. You do not need to change anything. Remove your PDA, connect the new PDA and replug your board !
How do I use U-Boot to store binaries in FLASH ?
A: One U-Boot available on the board, you can use it to flash binaries on storage media. The following examples can be used for Linux kernel, root filesystem or whatever you binary you want on your FLASH storage media :
JFFS2 in NAND FLASH
Following commands documentation is available in
the u-boot doc/README.nand documentation file.
1. erase the whole NAND FLASH
U-Boot> nand erase
NAND erase: device 0 whole chip
Skipping bad block at 0x000c0000
Skipping bad block at 0x009c0000
Erasing at 0xffe0000 -- 100% complete.
OK
2. download the JFFS2 filesystem
from TFTP to the board RAM (address 0x21400000
)
U-Boot> tftp 0x21400000 x11-image-demo-at91sam9263ek.jffs2
TFTP from server 10.159.240.137; our IP address is 10.159.245.170
Filename 'nferre/x11-image-demo-at91sam9263ek.jffs2'.
Load address: 0x21400000
Loading: T #################################################################
#######################################################T ##########
#################################################################
[..]
#########################
done
Bytes transferred = 26083328 (18e0000 hex)
remember the number of
Bytes transferred just indicated above. It will be useful for the
nand write.jffs2
command.
3. write the filesystem from RAM@0x21400000
to NAND FLASH at offset
0x400000
(Linux
/dev/mtdblock1
). Note the last parameter : it is the number of
Bytes transferred indicated in the previous command.
U-Boot> nand write.jffs2 0x21400000 0x400000 0x18e0000
NAND write: device 0 offset 0, size 26083328 ...
Bad block at 0xc0000 in erase block from 0xc0000 will be skipped
Bad block at 0x9c0000 in erase block from 0x9c0000 will be skipped
Writing data at 0x195f800 -- 100% complete.
OK
Note that
bad blocks just shown above are normal behavior of a NAND FLASH : they are skipped and the filesystem will not mind, it is designed to manage them.
Good, now you have a fresh JFFS2 filesystem you can boot on.
JFFS2 in NOR FLASH
Use U-Boot to write JFFS2 in NOR FLASH => use of the
cp.b
command applicable for
DataFlash and
any binary file.
Reference for the cp command
How do I access U-Boot environment while Linux is running ?
A: U-Boot provides little command line tool to access environment from Linux. It is located in U-Boot source code tree :
tools/env
directory. You will certainly have to tailor your MTD partitioning to identify the U-Boot environment in one MTD partition.
Have a look at the U-Boot
README documentation for
fw_env
.
I get a strange error when booting a FIT image Node name contains @ in 'kernel@1' image node
A: Please check
this page
Notes
,
: