sdmmc 0.1.0

A no_std SD/MMC/eMMC driver library for ARM64 platforms
Documentation
APP ?= sdmmc
COUNT ?= 1024
ARCH ?= aarch64
TARGET ?= aarch64-unknown-none
DIR ?= ./firmware
KERNEL ?= $(DIR)/kernel.bin
DISK ?= $(DIR)/uboot.disk
DTB ?= $(DIR)/qemu.dtb

dtb: 
	@echo "Building device tree binary"
	@rm -f $(DTB)
	@qemu-system-$(ARCH) -M virt,dumpdtb=$(DIR)/qemu.dtb \
		-smp 1 -cpu cortex-a72 -nographic \
		-drive file=$(DISK),format=raw,if=none,id=sdmmc \
		-device sdhci-pci,id=sdhci \
		-device sd-card,drive=sdmmc
	@dtc -I dts -O dtb -o $(DTB) $(DIR)/qemu.dts

disk_img: 
	@echo "Creating disk image"
	@rm -f $(DISK)
	@if [ ! -d $(DIR) ]; then \
		mkdir $(DIR); \
	fi;
	@dd if=/dev/zero of=$(DISK) bs=1M count=$(COUNT)
	@mkfs.ext4 $(DISK)

build: 
	@echo "Building $(APP)"
	@cargo build --release
	@rust-objcopy --binary-architecture=$(ARCH) ./target/$(TARGET)/release/$(APP) --strip-all -O binary $(KERNEL)

uboot: 
	@echo "Running tests" 
	@cargo test --test test -- --show-output uboot

clean:
	@echo "Cleaning up"
	@cargo clean

PHONY: build run disk_img clean dtb test