mirror of
https://github.com/MiyooCFW/buildroot.git
synced 2025-09-27 22:24:19 +03:00
Merge from bittboy/buildroot@db180c0
This commit is contained in:
151
board/boundarydevices/common/boot.cmd
Normal file
151
board/boundarydevices/common/boot.cmd
Normal file
@@ -0,0 +1,151 @@
|
||||
setenv bootargs ''
|
||||
|
||||
setenv initrd_high 0xffffffff
|
||||
m4=''
|
||||
kernelimage=zImage
|
||||
bootcommand=bootz
|
||||
a_base=0x10000000
|
||||
if itest.s x51 == "x${imx_cpu}" ; then
|
||||
a_base=0x90000000
|
||||
elif itest.s x53 == "x${imx_cpu}"; then
|
||||
a_base=0x70000000
|
||||
elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
|
||||
a_base=0x80000000
|
||||
elif itest.s x8MQ == "x${imx_cpu}"; then
|
||||
a_base=0x40000000
|
||||
kernelimage=Image
|
||||
bootcommand=booti
|
||||
fi
|
||||
if itest.s "x1" == "x${m4enabled}" ; then
|
||||
run m4boot;
|
||||
m4='-m4';
|
||||
fi
|
||||
|
||||
setexpr a_script ${a_base} + 0x00800000
|
||||
setexpr a_zImage ${a_base} + 0x00800000
|
||||
setexpr a_fdt ${a_base} + 0x03000000
|
||||
setexpr a_ramdisk ${a_base} + 0x03800000
|
||||
setexpr a_initrd ${a_base} + 0x03a00000
|
||||
setexpr a_reset_cause_marker ${a_base} + 0x80
|
||||
setexpr a_reset_cause ${a_base} + 0x84
|
||||
|
||||
if itest.s "x" == "x${board}" ; then
|
||||
echo "!!!! Error: Your u-boot is outdated. Please upgrade.";
|
||||
exit;
|
||||
fi
|
||||
|
||||
if itest.s "x" == "x${fdt_file}" ; then
|
||||
if itest.s x6SOLO == "x${imx_cpu}" ; then
|
||||
fdt_file=imx6dl-${board}.dtb;
|
||||
elif itest.s x6DL == "x${imx_cpu}" ; then
|
||||
fdt_file=imx6dl-${board}.dtb;
|
||||
elif itest.s x6QP == "x${imx_cpu}" ; then
|
||||
fdt_file=imx6qp-${board}.dtb;
|
||||
elif itest.s x6SX == "x${imx_cpu}" ; then
|
||||
fdt_file=imx6sx-${board}${m4}.dtb;
|
||||
elif itest.s x7D == "x${imx_cpu}" ; then
|
||||
fdt_file=imx7d-${board}${m4}.dtb;
|
||||
elif itest.s x8MQ == "x${imx_cpu}" ; then
|
||||
fdt_file=imx8mq-${board}${m4}.dtb;
|
||||
elif itest.s x51 == "x${imx_cpu}" ; then
|
||||
fdt_file=imx51-${board}.dtb;
|
||||
elif itest.s x53 == "x${imx_cpu}" ; then
|
||||
fdt_file=imx53-${board}.dtb;
|
||||
else
|
||||
fdt_file=imx6q-${board}.dtb;
|
||||
fi
|
||||
fi
|
||||
|
||||
if itest.s x${distro_bootpart} == x ; then
|
||||
distro_bootpart=1
|
||||
fi
|
||||
|
||||
if load ${devtype} ${devnum}:${distro_bootpart} ${a_script} uEnv.txt ; then
|
||||
env import -t ${a_script} ${filesize}
|
||||
fi
|
||||
|
||||
setenv bootargs ${bootargs} console=${console},115200 vmalloc=400M consoleblank=0 rootwait fixrtc cpu=${imx_cpu} board=${board}
|
||||
|
||||
if load ${devtype} ${devnum}:${distro_bootpart} ${a_fdt} ${prefix}${fdt_file} ; then
|
||||
fdt addr ${a_fdt}
|
||||
setenv fdt_high 0xffffffff
|
||||
else
|
||||
echo "!!!! Error loading ${prefix}${fdt_file}";
|
||||
exit;
|
||||
fi
|
||||
|
||||
fdt resize
|
||||
if itest.s "x" != "x${cmd_custom}" ; then
|
||||
run cmd_custom
|
||||
fi
|
||||
if itest.s "x" != "x${cmd_hdmi}" ; then
|
||||
run cmd_hdmi
|
||||
if itest.s x == x${allow_noncea} ; then
|
||||
setenv bootargs ${bootargs} mxc_hdmi.only_cea=1;
|
||||
echo "only CEA modes allowed on HDMI port";
|
||||
else
|
||||
setenv bootargs ${bootargs} mxc_hdmi.only_cea=0;
|
||||
echo "non-CEA modes allowed on HDMI, audio may be affected";
|
||||
fi
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${cmd_lcd}" ; then
|
||||
run cmd_lcd
|
||||
fi
|
||||
if itest.s "x" != "x${cmd_lcd2}" ; then
|
||||
run cmd_lcd2
|
||||
fi
|
||||
if itest.s "x" != "x${cmd_lvds}" ; then
|
||||
run cmd_lvds
|
||||
fi
|
||||
if itest.s "x" != "x${cmd_lvds2}" ; then
|
||||
run cmd_lvds2
|
||||
fi
|
||||
if itest.s "x" != "x${cmd_mipi}" ; then
|
||||
run cmd_mipi
|
||||
fi
|
||||
|
||||
if test "sata" = "${devtype}" ; then
|
||||
setenv bootargs "${bootargs} root=/dev/sda${distro_bootpart}" ;
|
||||
elif test "usb" = "${devtype}" ; then
|
||||
setenv bootargs "${bootargs} root=/dev/sda${distro_bootpart}" ;
|
||||
else
|
||||
setenv bootargs "${bootargs} root=/dev/mmcblk${devnum}p${distro_bootpart}"
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${disable_msi}" ; then
|
||||
setenv bootargs ${bootargs} pci=nomsi
|
||||
fi;
|
||||
|
||||
if itest.s "x" != "x${disable_giga}" ; then
|
||||
setenv bootargs ${bootargs} fec.disable_giga=1
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${wlmac}" ; then
|
||||
setenv bootargs ${bootargs} wlcore.mac=${wlmac}
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${gpumem}" ; then
|
||||
setenv bootargs ${bootargs} galcore.contiguousSize=${gpumem}
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${cma}" ; then
|
||||
setenv bootargs ${bootargs} cma=${cma}
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${loglevel}" ; then
|
||||
setenv bootargs ${bootargs} loglevel=${loglevel}
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${show_fdt}" ; then
|
||||
fdt print /
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${show_env}" ; then
|
||||
printenv
|
||||
fi
|
||||
|
||||
if load ${devtype} ${devnum}:${distro_bootpart} ${a_zImage} ${prefix}${kernelimage} ; then
|
||||
${bootcommand} ${a_zImage} - ${a_fdt}
|
||||
fi
|
||||
echo "Error loading kernel image"
|
||||
18
board/boundarydevices/common/genimage.cfg
Normal file
18
board/boundarydevices/common/genimage.cfg
Normal file
@@ -0,0 +1,18 @@
|
||||
# Minimal SD card image for Boundary Devices platforms
|
||||
#
|
||||
# It does not need a boot section for a bootloader since it is booted
|
||||
# from its NOR flash memory.
|
||||
#
|
||||
# To update the bootloader, execute the following from U-Boot prompt:
|
||||
# => run upgradeu
|
||||
|
||||
image sdcard.img {
|
||||
hdimage {
|
||||
}
|
||||
|
||||
partition rootfs {
|
||||
partition-type = 0x83
|
||||
image = "rootfs.ext4"
|
||||
size = 512M
|
||||
}
|
||||
}
|
||||
29
board/boundarydevices/common/post-build.sh
Executable file
29
board/boundarydevices/common/post-build.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
# post-build fixups
|
||||
# for further details, see
|
||||
#
|
||||
# http://boundarydevices.com/u-boot-on-i-mx6/
|
||||
#
|
||||
|
||||
BOARD_DIR="$(dirname $0)"
|
||||
UBOOT_DEFCONFIG="$(grep BR2_TARGET_UBOOT_BOARD_DEFCONFIG ${BR2_CONFIG} | sed 's/.*\"\(.*\)\"/\1/')"
|
||||
|
||||
if grep -Eq "^BR2_aarch64=y$" ${BR2_CONFIG}; then
|
||||
MKIMAGE_ARCH=arm64
|
||||
UBOOT_BINARY=imx8-boot-sd.bin
|
||||
else
|
||||
MKIMAGE_ARCH=arm
|
||||
UBOOT_BINARY=u-boot.imx
|
||||
fi
|
||||
|
||||
# bd u-boot looks for standard bootscript
|
||||
$HOST_DIR/bin/mkimage -A $MKIMAGE_ARCH -O linux -T script -C none -a 0 -e 0 \
|
||||
-n "boot script" -d $BOARD_DIR/boot.cmd $TARGET_DIR/boot/boot.scr
|
||||
|
||||
# u-boot / update script for bd upgradeu command
|
||||
if [ -e $BINARIES_DIR/$UBOOT_BINARY ]; then
|
||||
install -D -m 0644 $BINARIES_DIR/$UBOOT_BINARY \
|
||||
$TARGET_DIR/u-boot.$UBOOT_DEFCONFIG
|
||||
$HOST_DIR/bin/mkimage -A $MKIMAGE_ARCH -O linux -T script -C none -a 0 -e 0 \
|
||||
-n "upgrade script" -d $BOARD_DIR/upgrade.cmd $TARGET_DIR/upgrade.scr
|
||||
fi
|
||||
16
board/boundarydevices/common/post-image.sh
Executable file
16
board/boundarydevices/common/post-image.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
BOARD_DIR="$(dirname $0)"
|
||||
GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
|
||||
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
|
||||
|
||||
rm -rf "${GENIMAGE_TMP}"
|
||||
|
||||
genimage \
|
||||
--rootpath "${TARGET_DIR}" \
|
||||
--tmppath "${GENIMAGE_TMP}" \
|
||||
--inputpath "${BINARIES_DIR}" \
|
||||
--outputpath "${BINARIES_DIR}" \
|
||||
--config "${GENIMAGE_CFG}"
|
||||
|
||||
exit $?
|
||||
30
board/boundarydevices/common/readme.txt
Normal file
30
board/boundarydevices/common/readme.txt
Normal file
@@ -0,0 +1,30 @@
|
||||
Buildroot for Boundary Devices platforms:
|
||||
|
||||
https://boundarydevices.com/product-category/popular-sbc-and-som-modules/
|
||||
|
||||
Here is the list of targeted platforms per defconfig:
|
||||
|
||||
- nitrogen6x_defconfig
|
||||
- BD-SL-i.MX6 (SABRE-Lite)
|
||||
- Nitrogen6X
|
||||
- Nitrogen6_Lite
|
||||
- Nitrogen6_MAX
|
||||
- Nitrogen6_VM
|
||||
- Nitrogen6_SOM
|
||||
- Nitrogen6_SOMv2
|
||||
|
||||
- nitrogen6sx_defconfig
|
||||
- Nitrogen6_SoloX
|
||||
|
||||
- nitrogen7_defconfig
|
||||
- Nitrogen7
|
||||
|
||||
To install, simply copy the image to a uSD card:
|
||||
|
||||
$ sudo dd if=output/images/sdcard.img of=/dev/sdX
|
||||
|
||||
Where 'sdX' is the device node of the uSD partition.
|
||||
|
||||
To upgrade u-boot, cancel autoboot and type:
|
||||
|
||||
> run upgradeu
|
||||
211
board/boundarydevices/common/upgrade.cmd
Normal file
211
board/boundarydevices/common/upgrade.cmd
Normal file
@@ -0,0 +1,211 @@
|
||||
if itest.s a$uboot_defconfig == a; then
|
||||
echo "Please set uboot_defconfig to the appropriate value"
|
||||
exit
|
||||
fi
|
||||
|
||||
offset=0x400
|
||||
erase_size=0xC0000
|
||||
qspi_offset=0x0
|
||||
a_base=0x12000000
|
||||
block_size=0x200
|
||||
|
||||
if itest.s x51 == "x${imx_cpu}"; then
|
||||
a_base=0x92000000
|
||||
elif itest.s x53 == "x${imx_cpu}"; then
|
||||
a_base=0x72000000
|
||||
elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
|
||||
a_base=0x82000000
|
||||
elif itest.s x8MQ == "x${imx_cpu}"; then
|
||||
a_base=0x42000000
|
||||
offset=0x8400
|
||||
fi
|
||||
|
||||
qspi_match=1
|
||||
setexpr a_qspi1 ${a_base}
|
||||
setexpr a_qspi2 ${a_qspi1} + 0x400000
|
||||
setexpr a_uImage1 ${a_qspi1} + 0x400
|
||||
setexpr a_uImage2 ${a_qspi2} + 0x400
|
||||
setexpr a_script ${a_base}
|
||||
|
||||
setenv stdout serial,vga
|
||||
|
||||
if itest.s "x${sfname}" == "x" ; then
|
||||
# U-Boot resides in (e)MMC
|
||||
if itest.s "x${env_dev}" == "x" || itest.s "x${env_part}" == "x"; then
|
||||
echo "Please set env_dev/part to the appropriate values"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Load bootloader binary for this board
|
||||
if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_uImage1} u-boot.$uboot_defconfig ; then
|
||||
else
|
||||
echo "File u-boot.$uboot_defconfig not found on SD card" ;
|
||||
exit
|
||||
fi
|
||||
|
||||
# Compute block count for filesize and offset
|
||||
setexpr cntoffset ${offset} / ${block_size}
|
||||
setexpr cntfile ${filesize} / ${block_size}
|
||||
# Add 1 in case the $filesize is not a multiple of $block_size
|
||||
setexpr cntfile ${cntfile} + 1
|
||||
|
||||
# Select media partition (if different from main partition)
|
||||
mmc dev ${env_dev} ${env_part}
|
||||
|
||||
# Read and compare current U-Boot
|
||||
mmc read ${a_uImage2} ${cntoffset} ${cntfile}
|
||||
if cmp.b ${a_uImage1} ${a_uImage2} ${filesize} ; then
|
||||
echo "------- U-Boot versions match" ;
|
||||
exit ;
|
||||
fi
|
||||
|
||||
echo "Need U-Boot upgrade" ;
|
||||
echo "Program in 5 seconds" ;
|
||||
for n in 5 4 3 2 1 ; do
|
||||
echo $n ;
|
||||
sleep 1 ;
|
||||
done
|
||||
mmc write ${a_uImage1} ${cntoffset} ${cntfile}
|
||||
|
||||
# Make sure to boot from the proper partition
|
||||
if itest ${env_part} != 0 ; then
|
||||
mmc partconf ${env_dev} 1 ${env_part} 0
|
||||
fi
|
||||
|
||||
# Switch back to main eMMC partition (to avoid confusion)
|
||||
mmc dev ${env_dev}
|
||||
|
||||
else
|
||||
# U-Boot resides in NOR flash
|
||||
if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000 ; then
|
||||
echo "probed SPI ROM" ;
|
||||
else
|
||||
echo "Error initializing EEPROM"
|
||||
exit
|
||||
fi
|
||||
|
||||
if itest.s "x${sfname}" == "xat45db041d" ; then
|
||||
erase_size=0x7e000
|
||||
fi
|
||||
|
||||
if itest.s x7D == "x${imx_cpu}"; then
|
||||
echo "check qspi parameter block" ;
|
||||
if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_qspi1} qspi-${sfname}.${uboot_defconfig} ; then
|
||||
else
|
||||
echo "parameter file qspi-${sfname}.${uboot_defconfig} not found on SD card"
|
||||
exit
|
||||
fi
|
||||
if itest ${filesize} != 0x200 ; then
|
||||
echo "------- qspi-${sfname}.${uboot_defconfig} 0x${filesize} != 0x200 bytes" ;
|
||||
exit
|
||||
fi
|
||||
setexpr a_marker ${a_qspi1} + 0x1fc
|
||||
if itest *${a_marker} != c0ffee01 ; then
|
||||
echo "------- qspi-${sfname}.${uboot_defconfig} c0ffee01 marker missing" ;
|
||||
exit
|
||||
fi
|
||||
if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then
|
||||
else
|
||||
echo "Error reading qspi parameter from EEPROM"
|
||||
exit
|
||||
fi
|
||||
if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then
|
||||
echo "------- qspi parameters match"
|
||||
else
|
||||
echo "------- qspi parameters mismatch"
|
||||
qspi_match=0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "check U-Boot" ;
|
||||
|
||||
if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_uImage1} u-boot.$uboot_defconfig ; then
|
||||
else
|
||||
echo "File u-boot.$uboot_defconfig not found on SD card" ;
|
||||
exit
|
||||
fi
|
||||
echo "read $filesize bytes from SD card" ;
|
||||
if sf read ${a_uImage2} $offset $filesize ; then
|
||||
else
|
||||
echo "Error reading boot loader from EEPROM" ;
|
||||
exit
|
||||
fi
|
||||
|
||||
if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then
|
||||
echo "------- U-Boot versions match" ;
|
||||
if itest.s "${qspi_match}" == "1" ; then
|
||||
echo "------- upgrade not needed" ;
|
||||
if itest.s "x" != "x${next}" ; then
|
||||
if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then
|
||||
source ${a_script}
|
||||
else
|
||||
echo "${next} not found on SD card"
|
||||
fi
|
||||
fi
|
||||
exit
|
||||
fi
|
||||
erase_size=0x1000
|
||||
if itest.s xMX25L6405D == "x${sfname}"; then
|
||||
erase_size=0x10000
|
||||
fi
|
||||
setexpr filesize ${erase_size} - ${offset}
|
||||
fi
|
||||
|
||||
echo "Need U-Boot upgrade" ;
|
||||
echo "Program in 5 seconds" ;
|
||||
for n in 5 4 3 2 1 ; do
|
||||
echo $n ;
|
||||
sleep 1 ;
|
||||
done
|
||||
echo "erasing" ;
|
||||
sf erase 0 ${erase_size} ;
|
||||
|
||||
# two steps to prevent bricking
|
||||
echo "programming" ;
|
||||
setexpr a1 ${a_uImage1} + 0x400
|
||||
setexpr o1 ${offset} + 0x400
|
||||
setexpr s1 ${filesize} - 0x400
|
||||
sf write ${a1} ${o1} ${s1} ;
|
||||
sf write ${a_uImage1} $offset 0x400 ;
|
||||
|
||||
if itest.s x7D == "x${imx_cpu}"; then
|
||||
sf write ${a_qspi1} ${qspi_offset} 0x200
|
||||
fi
|
||||
|
||||
echo "verifying" ;
|
||||
if sf read ${a_uImage2} $offset $filesize ; then
|
||||
else
|
||||
echo "Error re-reading EEPROM" ;
|
||||
exit
|
||||
fi
|
||||
if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then
|
||||
else
|
||||
echo "Read verification error" ;
|
||||
exit
|
||||
fi
|
||||
|
||||
if itest.s x7D == "x${imx_cpu}"; then
|
||||
if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then
|
||||
else
|
||||
echo "Error re-reading qspi" ;
|
||||
exit
|
||||
fi
|
||||
if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then
|
||||
else
|
||||
echo "qspi parameter block verification error" ;
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
if itest.s "x" != "x${next}" ; then
|
||||
if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then
|
||||
source ${a_script}
|
||||
else
|
||||
echo "${next} not found on ${devtype} ${devnum}:${distro_bootpart}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
while echo "---- U-Boot upgraded. Please reset the board" ; do
|
||||
sleep 120
|
||||
done
|
||||
Reference in New Issue
Block a user