1 # $NetBSD: armv7.conf,v 1.17 2017/10/07 23:40:00 jmcneill Exp $ 2 # ARMv7 customization script used by mkimage 3 # 4 board=armv7 5 console=fb 6 resize=true 7 8 . ${DIR}/conf/evbarm.conf 9 10 kernels_beagle="BEAGLEBOARD BEAGLEBONE" 11 kernels_awin="BPI CUBIEBOARD CUBIETRUCK" 12 kernels_rpi="RPI2" 13 kernels_amlogic="ODROID-C1" 14 kernels_tegra="TEGRA" 15 kernels_sunxi="SUNXI" 16 17 make_label() { 18 make_label_evbarm 19 } 20 21 make_fstab() { 22 make_fstab_evbarm 23 } 24 25 customize() { 26 customize_evbarm 27 cat >> "${mnt}/etc/rc.conf" << EOF 28 mdnsd=YES 29 wscons=YES 30 devpubd=YES 31 EOF 32 } 33 34 populate_common() { 35 # Install boot script 36 cp ${DIR}/files/armv7_boot.cmd ${mnt}/boot/boot.cmd 37 "${MKUBOOTIMAGE}" -A arm -C none -O netbsd -T script -a 0 -n "NetBSD/armv7 boot" "${mnt}/boot/boot.cmd" "${mnt}/boot/boot.scr" 38 } 39 40 populate_beagle() { 41 bboard_kernelimg=netbsd-BEAGLEBOARD.ub 42 bboard_loadaddr=81000000 43 bbone_kernelimg=netbsd-BEAGLEBONE.ub 44 bbone_loadaddr=82000000 45 46 # Create a uEnv.txt to auto boot the correct kernel 47 cat >> "${mnt}/boot/uEnv.txt" << EOF 48 loaduimage=if test \$board = am335x; then fatload mmc 0 ${bbone_loadaddr} ${bbone_kernelimg}; bootm ${bbone_loadaddr} root=ld0a; else fatload mmc 0 ${bboard_loadaddr} ${bboard_kernelimg}; bootm ${bboard_loadaddr} root=ld0a; fi 49 EOF 50 } 51 52 populate_awin() { 53 : 54 } 55 56 populate_rpi() { 57 firmwaredir="${src}/external/broadcom/rpi-firmware/dist" 58 firmwarefiles="LICENCE.broadcom bootcode.bin fixup.dat fixup_cd.dat start.elf start_cd.elf" 59 60 # RPI2 kernel needs to be installed as kernel7.img 61 if [ -f "${mnt}/boot/netbsd-RPI2.bin" ]; then 62 echo "${bar} renaming netbsd-RPI2.bin to kernel7.img ${bar}" 63 mv "${mnt}/boot/netbsd-RPI2.bin" "${mnt}/boot/kernel7.img" 64 65 cat > "${mnt}/boot/cmdline.txt" << EOF 66 root=ld0a console=${console} 67 #fb=1280x1024 # to select a mode, otherwise try EDID 68 #fb=disable # to disable fb completely 69 EOF 70 71 cat > ${mnt}/boot/config.txt << EOF 72 # UART settings, see https://www.raspberrypi.org/documentation/configuration/uart.md 73 enable_uart=1 74 force_turbo=0 75 EOF 76 77 echo "${bar} installing firmware files ${bar}" 78 (cd "${mnt}/boot" && 79 for f in ${firmwarefiles}; do 80 echo " $f" 81 cp "${firmwaredir}/${f}" . 82 done 83 ) 84 85 fi 86 87 # 88 # If arm_freq is specified in config.txt, set CPU frequency 89 # to match at boot time. 90 # 91 cp ${release}/etc/rc.local ${mnt}/etc/rc.local 92 cat >> ${mnt}/etc/rc.local << EOF 93 if /sbin/sysctl -q machdep.cpu.frequency.max; then 94 cpufreq_max=\$(/sbin/sysctl -n machdep.cpu.frequency.max) 95 cpufreq_cur=\$(/sbin/sysctl -n machdep.cpu.frequency.current) 96 if [ ! "\$cpufreq_max" = "\$cpufreq_cur" ]; then 97 /sbin/sysctl -w machdep.cpu.frequency.target=\$cpufreq_max 98 fi 99 fi 100 EOF 101 echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" \ 102 >> "$tmp/selected_sets" 103 } 104 105 populate_amlogic() { 106 odroidc1_kernelimg=netbsd-ODROID-C1.ub 107 108 # Create a boot.ini for Amlogic U-Boot 109 cat >> "${mnt}/boot/boot.ini" << EOF 110 ODROIDC-UBOOT-CONFIG 111 112 setenv bootargs "root=ld0a awge0.mac-address=\${ethaddr} console=${console}" 113 setenv bootcmd "fatload mmc 0:1 0x21000000 ${odroidc1_kernelimg}; bootm 0x21000000" 114 run bootcmd 115 EOF 116 } 117 118 populate_sunxi() { 119 : 120 } 121 122 populate_tegra() { 123 : 124 } 125 126 populate() { 127 echo "${bar} looking for kernels in ${kernel} ${bar}" 128 kernels="" 129 # .ub kernels 130 for k in $kernels_beagle $kernels_awin $kernels_sunxi $kernels_amlogic $kernels_tegra; do 131 f="${kernel}/netbsd-${k}.ub.gz" 132 test -f "${f}" && kernels="${kernels} ${f}" 133 done 134 # .bin kernels 135 for k in $kernels_rpi; do 136 f="${kernel}/netbsd-${k}.bin.gz" 137 test -f "${f}" && kernels="${kernels} ${f}" 138 done 139 # .dtb files 140 for k in $kernels_sunxi $kernels_tegra; do 141 test -d "${KERNOBJDIR}/${k}" && \ 142 dtbs="$(${MAKE} -C ${KERNOBJDIR}/${k} -v DTB)" || \ 143 dtbs= 144 for dtb in $dtbs; do 145 f="${kernel}/${dtb}.gz" 146 test -f "${f}" && kernels="${kernels} ${f}" 147 done 148 done 149 150 # install kernels to /boot partition 151 for k in ${kernels}; do 152 tgt="$(basename ${k} | sed 's/\.gz$//')" 153 echo "${bar} installing ${k} to /boot/${tgt} ${bar}" 154 case "${k}" in 155 *.gz) 156 ${GZIP_CMD} -dc "${k}" > "${mnt}/boot/${tgt}" 157 ;; 158 *) 159 cp "${k}" "${mnt}/boot/${tgt}" 160 ;; 161 esac 162 done 163 164 # board specific configuration 165 populate_beagle 166 populate_awin 167 populate_rpi 168 populate_amlogic 169 populate_tegra 170 populate_sunxi 171 172 # common configuration 173 populate_common 174 } 175