A VexRiscv with AES128 on the memory mapped bus. Works in simulation and on the ULX3S.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
3.3 KiB

4 years ago
  1. # Color definitions -------------------------------
  2. NO_COLOR="\033[0m"
  3. RED="\033[38;5;009m"
  4. GREEN="\033[38;5;010m"
  5. YELLOW="\033[38;5;011m"
  6. ORANGE="\033[38;5;214m"
  7. LIGHTPURPLE="\033[38;5;177m"
  8. PURPLE="\033[38;5;135m"
  9. CYAN="\033[38;5;014m"
  10. LIGHTBLUE="\033[38;5;39m"
  11. BLUE="\033[38;5;75m"
  12. DARKBLUE="\033[38;5;33m"
  13. LIGHTGRAY="\033[38;5;252m"
  14. DARKGRAY="\033[38;5;242m"
  15. BRIGHTRED="\033[91m"
  16. BOLD="\033[1m"
  17. # PLATFORM definition, if not given ----------------
  18. PLATFORM ?= pqvexriscvsim
  19. # PATHS (adapt to your system)----------------------
  20. PATH_RISCV=/opt/riscv/
  21. PATH_RISC_BIN=$(PATH_RISCV)bin/
  22. PREFIX?=$(PATH_RISC_BIN)riscv64-unknown-elf
  23. # Project DIRS -------------------------------------
  24. LD_DIR=ld/
  25. BSP_DIR=bsp/
  26. SRC_DIR=src/
  27. INC_DIR=inc/
  28. OBJ_DIR=obj/
  29. # TOOLS --------------------------------------------
  30. AR?=$(PREFIX)-ar
  31. GCC?=$(PREFIX)-gcc
  32. CLANG=clang
  33. GDB?=$(PREFIX)-gdb
  34. OBJDUMP?=$(PREFIX)-objdump
  35. OBJCOPY?=$(PREFIX)-objcopy
  36. RISCVPATH=$(PATH_RISCV)riscv64-unknown-elf
  37. ECHO?=echo
  38. # GCC FLAGS ---------------------------------------
  39. CC=$(GCC)
  40. GCC_CFLAGS_COMMON := -g \
  41. -Os \
  42. -fno-builtin-printf \
  43. -Wno-unused-parameter \
  44. -Wall -Wextra -Wredundant-decls \
  45. -Wshadow -Wno-unused-function \
  46. -fno-common \
  47. -I$(RISCVPATH)/include \
  48. -I$(INC_DIR)
  49. GCC_CFLAGS_MURAX=-fstrict-volatile-bitfields --specs=nosys.specs
  50. RISCV_ARCH?=rv32im
  51. RISCV_ABI?=ilp32
  52. RISCV_CMODEL?=medany
  53. RISCV_ARCHFLAGS +=-march=$(RISCV_ARCH)
  54. RISCV_ARCHFLAGS +=-mabi=$(RISCV_ABI)
  55. RISCV_ARCHFLAGS +=-mcmodel=$(RISCV_CMODEL)
  56. GCC_RISCV_ARCHFLAGS=$(RISCV_ARCHFLAGS)
  57. CFLAGS += $(GCC_CFLAGS_COMMON) \
  58. $(GCC_CFLAGS_MURAX) \
  59. $(GCC_RISCV_ARCHFLAGS)
  60. # Linker flags --------------------------------------
  61. LDSCRIPT = $(LD_DIR)$(PLATFORM).ld
  62. LDFLAGS = $(GCC_RISCV_ARCHFLAGS)
  63. LDFLAGS += --specs=nosys.specs
  64. LDFLAGS += -Wl,-T$(LDSCRIPT)
  65. LDFLAGS += -nostartfiles -ffreestanding -Wl,--gc-sections
  66. LDFLAGS += -L$(BSP_DIR)
  67. LDFLAGS += -Wl,--start-group -l$(PLATFORM)bsp -lc -lm -Wl,--end-group
  68. # Object files --------------------------------------
  69. SDK_ASM_SRCS := $(wildcard $(SRC_DIR)*.S)
  70. SDK_C_SRCS := $(wildcard $(SRC_DIR)*.c)
  71. SDK_ASM_OBJS := $(SDK_ASM_SRCS:$(SRC_DIR)%.S=$(OBJ_DIR)%.o)
  72. SDK_C_OBJS := $(SDK_C_SRCS:$(SRC_DIR)%.c=$(OBJ_DIR)%.o)
  73. SDK_OBJS := $(SDK_C_OBJS) $(SDK_ASM_OBJS)
  74. # Target all ----------------------------------------
  75. .PHONY: all
  76. all: $(BSP_DIR)lib$(PLATFORM)bsp.a main.hex main.bin
  77. # Targets --------------------------------------------
  78. main.bin: main.elf
  79. @$(ECHO) $(PURPLE)"obj "$@""$(LIGHTGRAY)
  80. $(OBJCOPY) -O binary $< $@
  81. main.hex: main.elf
  82. @$(ECHO) $(PURPLE)"obj "$@""$(LIGHTGRAY)
  83. $(OBJCOPY) -O ihex $< $@
  84. main.elf: $(LIBWRAP) $(SDK_OBJS) $(LDSCRIPT)
  85. @$(ECHO) $(LIGHTPURPLE)"building "$@""$(LIGHTGRAY)
  86. $(GCC) $(GCC_RISCV_ARCHFLAGS) $(GCC_CFLAGS_COMMON) $(SDK_OBJS) -o $@ $(LDFLAGS)
  87. $(SDK_ASM_OBJS): $(OBJ_DIR)%.o: $(SRC_DIR)%.S
  88. @$(ECHO) $(ORANGE)"building "$@" (.S)"$(LIGHTGRAY)
  89. $(CC) $(CFLAGS) -c -o $@ $^
  90. $(SDK_C_OBJS): $(OBJ_DIR)%.o: $(SRC_DIR)%.c
  91. @$(ECHO) $(ORANGE)"building "$@" (.c)"$(LIGHTGRAY)
  92. $(CC) $(CFLAGS) -c -o $@ $^
  93. $(BSP_DIR)lib$(PLATFORM)bsp.a:
  94. @$(ECHO) $(ORANGE)"building "$@" (.a)"$(LIGHTGRAY)
  95. cd $(BSP_DIR) && $(MAKE)
  96. .PHONY: clean
  97. clean:
  98. @$(ECHO) $(RED)"cleaning..."$(LIGHTGRAY)
  99. rm -f main.elf main.bin main.hex $(SDK_OBJS)
  100. cd $(BSP_DIR) && $(MAKE) clean