Makefile 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # PROJECT_NAME must contain the name of the quartus project
  2. PROJECT_NAME=gettoknow
  3. SOPC_FILE=../quartus/$(PROJECT_NAME).sopcinfo
  4. BSP_SETTINGS_FILE=./settings.bsp
  5. BSP_DIR=./bsp
  6. QUARTUS_PROJECT_DIR=../quartus
  7. APPLICATION_BUILD_DIR=./build
  8. APPLICATION_MAKEFILE=$(APPLICATION_BUILD_DIR)/Makefile
  9. ELF_FILE=$(APPLICATION_BUILD_DIR)/$(PROJECT_NAME).elf
  10. #info: The application makefile automatically runs the bsp makefile
  11. SRC_DIR=./src
  12. #NIOS2_APP_GEN_ARGS=--elf-name ${PROJECT_NAME}.elf --set APP_CFLAGS_OPTIMIZATION -Os --set OBJDUMP_INCLUDE_SOURCE 1 --src-rdir ${SRC_DIR}
  13. NIOS2_APP_GEN_ARGS=--elf-name ${PROJECT_NAME}.elf --set APP_CFLAGS_OPTIMIZATION -O3 --set OBJDUMP_INCLUDE_SOURCE 1 --src-rdir ${SRC_DIR}
  14. NIOS2_CMD_SHELL=$$(dirname $$(which quartus))/../../nios2eds/nios2_command_shell.sh
  15. RPA_SHELL=../rpa_shell.py
  16. REMOTE_LAB_NIOS2_CMD_SHELL=/opt/quartus_18.1/nios2eds/nios2_command_shell.sh
  17. ifeq ($(shell quartus_sh --version | grep -c Lite),1)
  18. SOF_FILE=$(QUARTUS_PROJECT_DIR)/output_files/$(PROJECT_NAME)_time_limited.sof
  19. else
  20. SOF_FILE=$(QUARTUS_PROJECT_DIR)/output_files/$(PROJECT_NAME).sof
  21. endif
  22. all: $(ELF_FILE)
  23. $(APPLICATION_MAKEFILE): $(BSP_DIR) src/*
  24. $(NIOS2_CMD_SHELL) nios2-app-generate-makefile --app-dir ${APPLICATION_BUILD_DIR} --bsp-dir ${BSP_DIR} --set QUARTUS_PROJECT_DIR=${QUARTUS_PROJECT_DIR} ${NIOS2_APP_GEN_ARGS}
  25. run: $(ELF_FILE)
  26. $(NIOS2_CMD_SHELL) nios2-download -g $(ELF_FILE) && nios2-terminal
  27. remote_run: $(ELF_FILE)
  28. $(RPA_SHELL) "killall quartus_pgm nios2-terminal"
  29. $(RPA_SHELL) --scp $(ELF_FILE) .rpa_shell/fw.elf
  30. $(RPA_SHELL) --no-master "$(REMOTE_LAB_NIOS2_CMD_SHELL) nios2-download -g .rpa_shell/fw.elf && $(REMOTE_LAB_NIOS2_CMD_SHELL) nios2-terminal"
  31. download:
  32. $(NIOS2_CMD_SHELL) nios2-download -g $(ELF_FILE)
  33. remote_download:
  34. $(RPA_SHELL) --scp $(ELF_FILE) .rpa_shell/fw.elf
  35. $(RPA_SHELL) --no-master "$(REMOTE_LAB_NIOS2_CMD_SHELL) nios2-download -g .rpa_shell/fw.elf"
  36. remote_download_sof:
  37. $(RPA_SHELL) -p $(SOF_FILE) -n
  38. term:
  39. $(NIOS2_CMD_SHELL) nios2-terminal
  40. remote_term:
  41. $(RPA_SHELL) --no-master "$(REMOTE_LAB_NIOS2_CMD_SHELL) nios2-terminal"
  42. edit_bsp:
  43. $(NIOS2_CMD_SHELL) nios2-bsp-editor &
  44. $(ELF_FILE): $(APPLICATION_MAKEFILE)
  45. $(NIOS2_CMD_SHELL) make -C $(APPLICATION_BUILD_DIR)
  46. $(BSP_DIR): $(SOPC_FILE) $(BSP_SETTINGS_FILE)
  47. echo $(NIOS2_CMD_SHELL)
  48. mkdir -p $(BSP_DIR)
  49. $(NIOS2_CMD_SHELL) nios2-bsp-update-settings --settings $(BSP_SETTINGS_FILE) --sopc $(SOPC_FILE)
  50. $(NIOS2_CMD_SHELL) nios2-bsp-generate-files --settings $(BSP_SETTINGS_FILE) --bsp-dir $(BSP_DIR)
  51. check: $(ELF_FILE)
  52. make -C checker
  53. make clean_app all
  54. make download
  55. ./checker/check.py
  56. remote_check: $(ELF_FILE)
  57. $(RPA_SHELL) "killall quartus_pgm nios2-terminal"
  58. make -C checker
  59. $(RPA_SHELL) --scp $(SOF_FILE) .rpa_shell/hw.sof
  60. $(RPA_SHELL) --scp $(ELF_FILE) .rpa_shell/fw.elf
  61. ./checker/check.py remote
  62. clean:
  63. rm -rf $(BSP_DIR)
  64. rm -rf $(APPLICATION_BUILD_DIR)
  65. make clean -C checker
  66. rm -f instructions
  67. rm -f remote_output
  68. clean_app:
  69. rm -rf $(APPLICATION_BUILD_DIR)
  70. .PHONY: edit_bsp
  71. .PHONY: term
  72. .PHONY: download
  73. .PHONY: run