Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Freedom U540 / HiFive Unleashed development board support #3

Merged
merged 9 commits into from
Mar 20, 2018
29 changes: 29 additions & 0 deletions conf/machine/freedom-u540.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#@TYPE: Machine
#@NAME: freedom-u540
#@SOC: Freedom U540
#@DESCRIPTION: Machine configuration for the HiFive Unleashed development board

require conf/machine/include/tune-riscv.inc

MACHINE_FEATURES = "screen keyboard ext2 ext3 serial"
MACHINE_ARCH = "riscv64"

KERNEL_IMAGETYPE = "vmlinux"

PREFERRED_PROVIDER_virtual/kernel = "linux-riscv"
PREFERRED_VERSION_linux-riscv = "4.15%"

GDBVERSION = "riscv"
QEMUVERSION = "riscv"

EXTRA_IMAGEDEPENDS += "riscv-pk"

SERIAL_CONSOLE = "115200 ttyS0"

MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"

RISCV_BBL_PAYLOAD ?= "${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin"

INITRAMFS_IMAGE_BUNDLE = "1"
INITRAMFS_IMAGE = "riscv-initramfs-image"
KERNEL_INITRAMFS = '-initramfs'
2 changes: 2 additions & 0 deletions conf/machine/qemuriscv64.conf
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ SERIAL_CONSOLES = "38400;ttyS0 38400;hvc0"
MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
EXTRA_IMAGEDEPENDS += "riscv-pk"

RISCV_BBL_PAYLOAD ?= "${KERNEL_IMAGETYPE}"

# qemuboot options
QB_MACHINE = "-machine virt"
QB_DEFAULT_KERNEL = "bbl"
Expand Down
18 changes: 18 additions & 0 deletions recipes-core/images/riscv-initramfs-image.bb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
DESCRIPTION = "initramfs image to be used together with SiFive Unleashed board \
as the board currently only supports booting from a ramdisk image"

# Do not pollute the initrd image with rootfs features
IMAGE_FEATURES = ""

export IMAGE_BASENAME = "${MLPREFIX}riscv-initramfs-image"
IMAGE_LINGUAS = ""

LICENSE = "MIT"

IMAGE_FSTYPES += "${INITRAMFS_FSTYPES}"
inherit core-image

IMAGE_ROOTFS_SIZE = "8192"
IMAGE_ROOTFS_EXTRA_SPACE = "0"

BAD_RECOMMENDATIONS += "busybox-syslog"
22 changes: 11 additions & 11 deletions recipes-devtool/riscv-tools/riscv-pk.bb
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,13 @@ LDFLAGS_append = " -Wl,--build-id=none"

inherit autotools

EXTRA_OECONF += "--enable-logo --with-payload=${DEPLOY_DIR_IMAGE}/vmlinux"

#DEPENDS = "riscv-fesvr-native riscv-spike-native"
EXTRA_OECONF += "--enable-logo --with-payload=${DEPLOY_DIR_IMAGE}/${RISCV_BBL_PAYLOAD}"

INHIBIT_PACKAGE_STRIP = "1"

S = "${WORKDIR}/git"

do_configure[depends] = "virtual/kernel:do_deploy"
DEPENDS = "virtual/kernel"

do_install_prepend () {
install -d ${D}${datadir}/riscv-pk
Expand All @@ -32,18 +30,20 @@ do_install_append() {
rm -rf ${D}${exec_prefix}/riscv64-unknown-elf
}

do_install_append_freedom-u540() {
${OBJCOPY} -S -O binary --change-addresses -0x80000000 \
${WORKDIR}/build/bbl ${WORKDIR}/build/bbl.bin
}

do_deploy () {
install -d ${DEPLOY_DIR_IMAGE}
install -m 755 ${WORKDIR}/build/bbl ${DEPLOY_DIR_IMAGE}/bbl
}

addtask deploy before do_build after do_compile
do_deploy[depends] = "${PN}:do_compile"
do_deploy_append_freedom-u540() {
install -m 755 ${WORKDIR}/build/bbl.bin ${DEPLOY_DIR_IMAGE}/bbl.bin
}
addtask deploy before do_build after do_install

SECURITY_CFLAGS = "${SECURITY_NOPIE_CFLAGS}"
SECURITY_LDFLAGS = ""

do_configure[nostamp] = "1"
do_compile[nostamp] = "1"
do_install[nostamp] = "1"
do_deploy[nostamp] = "1"
98 changes: 98 additions & 0 deletions recipes-kernel/linux/files/freedom-u540/defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
CONFIG_SMP=y
# CONFIG_COMPACTION is not set
CONFIG_HZ_100=y
CONFIG_PCI=y
CONFIG_PCI_DEBUG=y
CONFIG_PCIE_XILINX=y
CONFIG_CROSS_COMPILE=""
CONFIG_DEFAULT_HOSTNAME="ucbvax"
# CONFIG_CROSS_MEMORY_ATTACH is not set
CONFIG_NAMESPACES=y
CONFIG_BLK_DEV_INITRD=y
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
# CONFIG_RD_XZ is not set
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_EMBEDDED=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_PARTITION_ADVANCED=y
# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_MTD=y
CONFIG_MTD_BLOCK_RO=y
CONFIG_MTD_M25P80=y
CONFIG_MTD_SPI_NOR=y
CONFIG_VIRTIO_BLK=y
CONFIG_EEPROM_AT24=y
CONFIG_BLK_DEV_SD=y
CONFIG_ATA=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_SIL24=y
CONFIG_NETDEVICES=y
CONFIG_VIRTIO_NET=y
CONFIG_MACB=y
CONFIG_E1000E=y
CONFIG_R8169=y
CONFIG_MICROSEMI_PHY=y
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_VT is not set
CONFIG_SERIAL_SIFIVE=y
CONFIG_SERIAL_SIFIVE_CONSOLE=y
# CONFIG_HVC_RISCV_SBI is not set
CONFIG_VIRTIO_CONSOLE=y
# CONFIG_HW_RANDOM is not set
CONFIG_I2C=y
CONFIG_I2C_OCORES=y
CONFIG_SPI=y
CONFIG_SPI_SIFIVE=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_SIFIVE=y
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_GPIO_RESTART=y
CONFIG_PMBUS=y
CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_STORAGE=y
CONFIG_MMC=y
CONFIG_MMC_SPI=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_PWM=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_VIRTIO_MMIO=y
CONFIG_CLK_U54_PRCI=y
CONFIG_CLK_GEMGXL_MGMT=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_PWM=y
CONFIG_PWM_SIFIVE=y
CONFIG_NVMEM_SIFIVE_U500_OTP=y
CONFIG_EXT3_FS=y
# CONFIG_PROC_PAGE_MONITOR is not set
CONFIG_TMPFS=y
# CONFIG_MISC_FILESYSTEMS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="earlyprintk"
CONFIG_PRINTK_TIME=y
CONFIG_STRIP_ASM_SYMS=y
CONFIG_DEBUG_SECTION_MISMATCH=y
CONFIG_STACKTRACE=y
# CONFIG_CRYPTO_HW is not set
32 changes: 32 additions & 0 deletions recipes-kernel/linux/linux-riscv-common.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
DESCRIPTION = "RISC-V Linux Kernel"
SECTION = "kernel"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"

inherit kernel
require recipes-kernel/linux/linux-yocto.inc

SRC_URI = "\
git://github.com/riscv/riscv-linux.git;branch=${BRANCH} \
file://earlyprintk.cfg \
"

# qemu uses in-tree defconfig
# freedom-u540 uses out-of-tree defconfig
SRC_URI_append_freedom-u540 = " file://defconfig"

LINUX_VERSION_EXTENSION = "-riscv"

PV = "${LINUX_VERSION}+git${SRCPV}"

DEPENDS_append = " libgcc"

KBUILD_DEFCONFIG_qemuriscv64 = "defconfig"
KCONFIG_MODE="--alldefconfig"

KERNEL_CC_append = " ${TOOLCHAIN_OPTIONS} ${SECURITY_NOPIE_CFLAGS}"
KERNEL_LD_append = " -no-pie"

COMPATIBLE_MACHINE = "(qemuriscv64|freedom-u540)"

KERNEL_FEATURES_remove = "features/debug/printk.scc"
41 changes: 2 additions & 39 deletions recipes-kernel/linux/linux-riscv_4.15.bb
Original file line number Diff line number Diff line change
@@ -1,43 +1,6 @@
DESCRIPTION = "RISC-V Linux Kernel"
SECTION = "kernel"
LICENSE = "GPLv2"
require recipes-kernel/linux/linux-riscv-common.inc

LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"

COMPATIBLE_MACHINE = "(qemuriscv64)"

LINUX_KERNEL_TYPE ?= "standard"
# patch version
PV_append = ".0"

KBRANCH ?= "${BRANCH}"
KMACHINE ?= "${MACHINE}"
KMETA = "meta"
KBUILD_DEFCONFIG_qemuriscv64 = "defconfig"
KCONFIG_MODE="--alldefconfig"

DEPENDS_append = " libgcc"

KERNEL_CC_append = " ${TOOLCHAIN_OPTIONS} ${SECURITY_NOPIE_CFLAGS}"
KERNEL_LD_append = " -no-pie"

#KERNEL_FEATURES_append_riscv += " cfg/smp.scc"

#KERNEL_ALT_IMAGETYPE = ""

#KERNEL_OUTPUT = "vmlinux"
#KERNEL_IMAGETYPE = "vmlinux"

inherit kernel siteinfo
LINUX_VERSION ?= "4.15"

BRANCH = "riscv-linux-4.15"

SRCREV = "2b0aa1de45f63535f6d26757aa22b48515289302"
SRCREV_machine = "2b0aa1de45f63535f6d26757aa22b48515289302"

SRC_URI = "git://github.com/riscv/riscv-linux.git;branch=${BRANCH} \
file://earlyprintk.cfg \
"

require recipes-kernel/linux/linux-yocto.inc
KERNEL_FEATURES_remove = "features/debug/printk.scc"
34 changes: 2 additions & 32 deletions recipes-kernel/linux/linux-riscv_4.16.bb
Original file line number Diff line number Diff line change
@@ -1,36 +1,6 @@
DESCRIPTION = "RISC-V Linux Kernel"
SECTION = "kernel"
LICENSE = "GPLv2"
require recipes-kernel/linux/linux-riscv-common.inc

LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"

COMPATIBLE_MACHINE = "(qemuriscv64)"

LINUX_KERNEL_TYPE ?= "standard"
# patch version
PV_append = "-rc5"

KBRANCH ?= "${BRANCH}"
KMACHINE ?= "${MACHINE}"
KMETA = "meta"
KBUILD_DEFCONFIG_qemuriscv64 = "defconfig"
KCONFIG_MODE="--alldefconfig"

DEPENDS_append = " libgcc"

KERNEL_CC_append = " ${TOOLCHAIN_OPTIONS} ${SECURITY_NOPIE_CFLAGS}"
KERNEL_LD_append = " -no-pie"

inherit kernel siteinfo
LINUX_VERSION ?= "4.16-rc5"

BRANCH = "riscv-all"

SRCREV = "7f82cffaad50273eedb654b58167c662383eac99"
SRCREV_machine = "7f82cffaad50273eedb654b58167c662383eac99"

SRC_URI = "git://github.com/riscv/riscv-linux.git;branch=${BRANCH} \
file://earlyprintk.cfg \
"

require recipes-kernel/linux/linux-yocto.inc
KERNEL_FEATURES_remove = "features/debug/printk.scc"