diff --git a/base_external/Config.in b/base_external/Config.in index e69de29..d759111 100644 --- a/base_external/Config.in +++ b/base_external/Config.in @@ -0,0 +1 @@ +source "$BR2_EXTERNAL_assignment_base_PATH/package/aesd-assignments/Config.in" diff --git a/base_external/configs/aesd_rpi_defconfig b/base_external/configs/aesd_rpi_defconfig index 67b0f1b..9a998f3 100644 --- a/base_external/configs/aesd_rpi_defconfig +++ b/base_external/configs/aesd_rpi_defconfig @@ -4,9 +4,10 @@ BR2_ARM_FPU_NEON_VFPV4=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="../base_external/rootfs_overlay/" BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh ../base_external/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay --add-SPI" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,5eeff139ea9135db6e01a58ef613338f1d0899d8)/linux-5eeff139ea9135db6e01a58ef613338f1d0899d8.tar.gz" @@ -14,7 +15,9 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_SPIDEV_TEST=y BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_SPI_TOOLS=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="120M" diff --git a/base_external/external.desc b/base_external/external.desc index 5ba2552..e593238 100644 --- a/base_external/external.desc +++ b/base_external/external.desc @@ -1,2 +1,2 @@ name: assignment_base -description: Base customization for assignment +description: Base customization for assignment \ No newline at end of file diff --git a/base_external/external.mk b/base_external/external.mk index 7a8c21f..5f05dcb 100644 --- a/base_external/external.mk +++ b/base_external/external.mk @@ -1 +1 @@ -include $(sort $(wildcard $(BR2_EXTERNAL_assignment_base_PATH)/package/*/*.mk)) +include $(sort $(wildcard $(BR2_EXTERNAL_assignment_base_PATH)/package/*/*.mk)) \ No newline at end of file diff --git a/base_external/post-image.sh b/base_external/post-image.sh new file mode 100755 index 0000000..4a33d97 --- /dev/null +++ b/base_external/post-image.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -e + +#BOARD_DIR="$(dirname $0)" +BOARD_DIR="../buildroot/board/raspberrypi3" +BOARD_NAME="$(basename ${BOARD_DIR})" +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +for arg in "$@" +do + case "${arg}" in + + # SPI/I2C + --add-SPI) + if ! grep -qE '^dtparam=spi=on' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" +# enable SPi +dtparam=spi=on +__EOF__ + fi + ;; + + --gpu_mem_256=*|--gpu_mem_512=*|--gpu_mem_1024=*) + # Set GPU memory + gpu_mem="${arg:2}" + sed -e "/^${gpu_mem%=*}=/s,=.*,=${gpu_mem##*=}," -i "${BINARIES_DIR}/rpi-firmware/config.txt" + ;; + esac + +done + +# Pass an empty rootpath. genimage makes a full copy of the given rootpath to +# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk +# space. We don't rely on genimage to build the rootfs image, just to insert a +# pre-built one in the disk image. + +trap 'rm -rf "${ROOTPATH_TMP}"' EXIT +ROOTPATH_TMP="$(mktemp -d)" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${ROOTPATH_TMP}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? \ No newline at end of file diff --git a/base_external/rootfs_overlay/etc/init.d/S99lddmodules b/base_external/rootfs_overlay/etc/init.d/S99lddmodules new file mode 100755 index 0000000..27d7e45 --- /dev/null +++ b/base_external/rootfs_overlay/etc/init.d/S99lddmodules @@ -0,0 +1,19 @@ +#! /bin/sh + + +case "$1" in +start) +echo "Starting init script for I2C module" +modprobe spidev +modprobe spi-bcm2835 +;; +stop) +echo "Removing user modules" +rmmod spi-bcm2835 +rmmo spidev +;; +*) +echo "Usage: $0 {start|stop}" +exit 1 +esac +exit 0 diff --git a/clean.sh b/clean.sh new file mode 100755 index 0000000..d1ef9d9 --- /dev/null +++ b/clean.sh @@ -0,0 +1,7 @@ +#!/bin/bash +#Script to clean buildroot configuration. +#Author: Siddhant Jajoo. + + +make -C buildroot distclean + diff --git a/screenshots/spi_defconfig.PNG b/screenshots/spi_defconfig.PNG new file mode 100644 index 0000000..e697c82 Binary files /dev/null and b/screenshots/spi_defconfig.PNG differ diff --git a/screenshots/spi_make_menuconfig.PNG b/screenshots/spi_make_menuconfig.PNG new file mode 100644 index 0000000..cc7d71f Binary files /dev/null and b/screenshots/spi_make_menuconfig.PNG differ