Skip to content

Instantly share code, notes, and snippets.

@lisovy lisovy/mars_board.txt
Last active Aug 29, 2015

Embed
What would you like to do?
http://www.embest-tech.com/shop/star/marsboard.html
U-boot
======
git clone git://git.denx.de/u-boot.git
cd u-boot
# Build U-boot
mkdir _build
make O=_build marsboard_defconfig
cd _build
CROSS_COMPILE=arm-linux-gnueabihf- make -j8
# Will be downloaded later to the device via TFTP
cp u-boot.imx /srv/tftp/
# Switch the SoC into the serial-load mode (SW1: D0: OFF, D1: ON)
# imx-usb-loader is distributed as part of the Barebox bootloader
barebox/_build$ sudo ./scripts/imx/imx-usb-loader -vvv -c ../../u-boot/_build/u-boot.imx
=> dhcp
*** ERROR: `ethaddr' not set
# Check fuses for proper MAC address (doc/README.imx6)
=> fuse read 4 2
Reading bank 4:
Word 0x00000002: 00000000
=> fuse read 4 3
Reading bank 4:
Word 0x00000003: 00000000
# Set your own MAC address, request IP address
=> setenv ethaddr "00:11:22:33:44:55"
=> setenv autoload no
=> dhcp
# Fetch new U-boot in DCD format
=> setenv serverip 192.168.0.10
=> tftpboot ${loadaddr} u-boot.imx
Using FEC device
TFTP from server 192.168.0.10; our IP address is 192.168.0.23
Filename 'u-boot.imx'.
Load address: 0x12000000
Loading: #################################################################
#######
5.9 MiB/s
done
Bytes transferred = 367616 (59c00 hex)
# Erase the SPI NOR FLash
=> sf erase 0 0x200000
SF: 2097152 bytes @ 0x0 Erased: OK
# Flash the new bootloader to the SPI NOR flash
# Why the 0x400 offset? See "Table 8-28. Image Vector Table
# Offset and Initial Load Region Size" in IMX6DQRM.pdf
=> sf write ${loadaddr} 0x400 ${filesize};
SF: 367616 bytes @ 0x400 Written: OK
# Check out the SPI NOR content
=> sf read ${loadaddr} 0x400 32
SF: 50 bytes @ 0x400 Read: OK
=> md ${loadaddr}
12000000: 402000d1 27800720 00000000 2780042c .. @ ..'....,..'
# Correct DCD header -- Tag = 0xD1, Len = 0x0020, Ver = 0x40
# Power cycle the board; Do not run "reset"
Control GPIO (user LEDs) through raw memory access in U-boot
============================================================
# See the following sections of IMX6DQRM.pdf to get more info on
# register values used in this examples:
# * Table 4-1 (page 264 and 268) -- Alternative functions of PINs
# * 36.4.30 and 36.4.45 -- PINMUX configuration (select ALT5 for GPIO)
# * 28.5 -- GPIO Memory Map/Register Definition
# EIM_D28 PINMUX, ALT5 (GPIO3_IO28)
md.l 0x020E00C4 1
mw.l 0x020E00C4 0x5 1
# GPIO3_IO28 direction OUT
mw.l 0x020A4004 0x10000000 1
md.l 0x020A4004 1
# GPIO3_IO28 output value
mw.l 0x020A4000 0x10000000 1
mw.l 0x020A4000 0x00000000 1
# EIM_A25 Pinmux, ALT5 (GPIO5_IO02)
md.l 0x020E0088 1
mw.l 0x020E0088 0x5 1
# GPIO5_02 direction OUT
mw.l 0x020ac004 0x4 1
# GPIO5_02 output value
mw.l 0x020ac000 0x4 1
mw.l 0x020ac000 0x0 1
# Automate application loading in U-boot
setenv ethaddr "00:11:22:33:44:55"
setenv autoload no
dhcp
setenv serverip 192.168.0.10
tftpboot ${loadaddr} gpio.bin
go ${loadaddr}
setenv loadprog "setenv ethaddr "00:11:22:33:44:55"; setenv autoload no; dhcp; setenv serverip 192.168.0.10; tftpboot ${loadaddr} gpio.bin; go ${loadaddr}"
setenv bootcmd "run loadprog"
saveenv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.