Makefile 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. # Assume newlib gcc toolchain
  2. ARMCC=arm-none-eabi-gcc
  3. OBJCOPY=arm-none-eabi-objcopy
  4. CPPFLAGS=-DSTM32F205xx -DUSE_HAL_DRIVER -Wall -Werror
  5. CFLAGS=-mcpu=cortex-m3 -mthumb -mslow-flash-data \
  6. -std=gnu11 \
  7. -specs=nosys.specs \
  8. -Os -g \
  9. LDFLAGS= \
  10. "-Tsrc/firmware/link.ld" \
  11. INCLUDE = -Iinclude
  12. STM32CubeMX_INCUDE = \
  13. -ISTM32CubeMX/SCSI2SD-V6/Inc \
  14. -ISTM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc \
  15. -ISTM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Core/Inc \
  16. -ISTM32CubeMX/SCSI2SD-V6/Drivers/CMSIS/Include \
  17. -ISTM32CubeMX/SCSI2SD-V6/Drivers/CMSIS/Device/ST/STM32F2xx/Include \
  18. -ISTM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Inc \
  19. -ISTM32CubeMX/SCSI2SD-V6/Middlewares/Third_Party/FatFs/src/ \
  20. -ISTM32CubeMX/SCSI2SD-V6/Middlewares/Third_Party/FatFs/src/drivers \
  21. -ISTM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Device_Library/Core/Inc \
  22. -Isrc/firmware/usb_device \
  23. all: build/firmware.dfu
  24. build/stm32cubemx/bsp_driver_sd.o: STM32CubeMX/SCSI2SD-V6/Src/bsp_driver_sd.c
  25. build/stm32cubemx/fsmc.o: STM32CubeMX/SCSI2SD-V6/Src/fsmc.c
  26. build/stm32cubemx/gpio.o: STM32CubeMX/SCSI2SD-V6/Src/gpio.c
  27. build/stm32cubemx/main.o: STM32CubeMX/SCSI2SD-V6/Src/main.c
  28. build/stm32cubemx/sdio.o: STM32CubeMX/SCSI2SD-V6/Src/sdio.c
  29. build/stm32cubemx/spi.o: STM32CubeMX/SCSI2SD-V6/Src/spi.c
  30. build/stm32cubemx/stm32f2xx_hal_msp.o: STM32CubeMX/SCSI2SD-V6/Src/stm32f2xx_hal_msp.c
  31. build/stm32cubemx/stm32f2xx_it.o: STM32CubeMX/SCSI2SD-V6/Src/stm32f2xx_it.c
  32. build/stm32cubemx/usart.o: STM32CubeMX/SCSI2SD-V6/Src/usart.c
  33. build/stm32cubemx/usbd_conf.o: STM32CubeMX/SCSI2SD-V6/Src/usbd_conf.c
  34. build/stm32cubemx/usbh_conf.o: STM32CubeMX/SCSI2SD-V6/Src/usbh_conf.c
  35. build/stm32cubemx/usb_host.o: STM32CubeMX/SCSI2SD-V6/Src/usb_host.c
  36. build/stm32cubemx/stm32f2xx_hal.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal.c
  37. build/stm32cubemx/stm32f2xx_hal_cortex.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_cortex.c
  38. build/stm32cubemx/stm32f2xx_hal_dma.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_dma.c
  39. build/stm32cubemx/stm32f2xx_hal_gpio.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_gpio.c
  40. build/stm32cubemx/stm32f2xx_hal_hcd.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_hcd.c
  41. build/stm32cubemx/stm32f2xx_hal_pcd.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_pcd.c
  42. build/stm32cubemx/stm32f2xx_hal_pcd_ex.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_pcd_ex.c
  43. build/stm32cubemx/stm32f2xx_hal_rcc.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_rcc.c
  44. build/stm32cubemx/stm32f2xx_hal_sd.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_sd.c
  45. build/stm32cubemx/stm32f2xx_hal_spi.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_spi.c
  46. build/stm32cubemx/stm32f2xx_hal_sram.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_sram.c
  47. build/stm32cubemx/stm32f2xx_hal_tim.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_tim.c
  48. build/stm32cubemx/stm32f2xx_hal_tim_ex.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_tim_ex.c
  49. build/stm32cubemx/stm32f2xx_hal_uart.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_uart.c
  50. build/stm32cubemx/stm32f2xx_ll_fsmc.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_ll_fsmc.c
  51. build/stm32cubemx/stm32f2xx_ll_sdmmc.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_ll_sdmmc.c
  52. build/stm32cubemx/stm32f2xx_ll_usb.o: STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_ll_usb.c
  53. build/stm32cubemx/usbd_core.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c
  54. build/stm32cubemx/usbd_ctlreq.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c
  55. build/stm32cubemx/usbd_ioreq.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c
  56. build/stm32cubemx/usbh_core.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c
  57. build/stm32cubemx/usbh_ctlreq.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c
  58. build/stm32cubemx/usbh_ioreq.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c
  59. build/stm32cubemx/usbh_pipes.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c
  60. build/stm32cubemx/usbh_msc.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c
  61. build/stm32cubemx/usbh_msc_bot.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c
  62. build/stm32cubemx/usbh_msc_scsi.o: STM32CubeMX/SCSI2SD-V6/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c
  63. build/stm32cubemx/system_stm32f2xx.o: STM32CubeMX/SCSI2SD-V6/Drivers/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c
  64. build/stm32cubemx/startup_stm32f205xx.o: STM32CubeMX/SCSI2SD-V6/Drivers/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc/startup_stm32f205xx.s
  65. STM32OBJS = \
  66. build/stm32cubemx/bsp_driver_sd.o \
  67. build/stm32cubemx/fsmc.o \
  68. build/stm32cubemx/gpio.o \
  69. build/stm32cubemx/main.o \
  70. build/stm32cubemx/sdio.o \
  71. build/stm32cubemx/spi.o \
  72. build/stm32cubemx/stm32f2xx_hal_msp.o \
  73. build/stm32cubemx/stm32f2xx_it.o \
  74. build/stm32cubemx/usart.o \
  75. build/stm32cubemx/usbd_conf.o \
  76. build/stm32cubemx/usbh_conf.o \
  77. build/stm32cubemx/usb_host.o \
  78. build/stm32cubemx/stm32f2xx_hal.o \
  79. build/stm32cubemx/stm32f2xx_hal_cortex.o \
  80. build/stm32cubemx/stm32f2xx_hal_dma.o \
  81. build/stm32cubemx/stm32f2xx_hal_gpio.o \
  82. build/stm32cubemx/stm32f2xx_hal_hcd.o \
  83. build/stm32cubemx/stm32f2xx_hal_pcd.o \
  84. build/stm32cubemx/stm32f2xx_hal_pcd_ex.o \
  85. build/stm32cubemx/stm32f2xx_hal_rcc.o \
  86. build/stm32cubemx/stm32f2xx_hal_sd.o \
  87. build/stm32cubemx/stm32f2xx_hal_spi.o \
  88. build/stm32cubemx/stm32f2xx_hal_sram.o \
  89. build/stm32cubemx/stm32f2xx_hal_tim.o \
  90. build/stm32cubemx/stm32f2xx_hal_tim_ex.o \
  91. build/stm32cubemx/stm32f2xx_hal_uart.o \
  92. build/stm32cubemx/stm32f2xx_ll_fsmc.o \
  93. build/stm32cubemx/stm32f2xx_ll_sdmmc.o \
  94. build/stm32cubemx/stm32f2xx_ll_usb.o \
  95. build/stm32cubemx/usbd_core.o \
  96. build/stm32cubemx/usbd_ctlreq.o \
  97. build/stm32cubemx/usbd_ioreq.o \
  98. build/stm32cubemx/usbh_core.o \
  99. build/stm32cubemx/usbh_ctlreq.o \
  100. build/stm32cubemx/usbh_ioreq.o \
  101. build/stm32cubemx/usbh_pipes.o \
  102. build/stm32cubemx/usbh_msc.o \
  103. build/stm32cubemx/usbh_msc_bot.o \
  104. build/stm32cubemx/usbh_msc_scsi.o \
  105. build/stm32cubemx/system_stm32f2xx.o \
  106. build/stm32cubemx/startup_stm32f205xx.o \
  107. # Modified versin from stm32cubemx for a composite class with both
  108. # mass-storage and HID interfaces
  109. USBCOMPOSITE_SRC= \
  110. src/firmware/usb_device/usb_device.c \
  111. src/firmware/usb_device/usbd_composite.c \
  112. src/firmware/usb_device/usbd_desc.c \
  113. src/firmware/usb_device/usbd_hid.c \
  114. src/firmware/usb_device/usbd_msc_bot.c \
  115. src/firmware/usb_device/usbd_msc.c \
  116. src/firmware/usb_device/usbd_msc_data.c \
  117. src/firmware/usb_device/usbd_msc_scsi.c \
  118. src/firmware/usb_device/usbd_msc_storage_sd.c \
  119. SRC = \
  120. src/firmware/bootloader.c \
  121. src/firmware/bsp.c \
  122. src/firmware/cdrom.c \
  123. src/firmware/config.c \
  124. src/firmware/disk.c \
  125. src/firmware/diagnostic.c \
  126. src/firmware/fpga.c \
  127. src/firmware/geometry.c \
  128. src/firmware/hidpacket.c \
  129. src/firmware/inquiry.c \
  130. src/firmware/led.c \
  131. src/firmware/main.c \
  132. src/firmware/mo.c \
  133. src/firmware/mode.c \
  134. src/firmware/scsiPhy.c \
  135. src/firmware/scsi.c \
  136. src/firmware/sd.c \
  137. src/firmware/spinlock.c \
  138. src/firmware/tape.c \
  139. src/firmware/time.c \
  140. src/firmware/trace.c \
  141. src/firmware/vendor.c \
  142. ${USBCOMPOSITE_SRC}
  143. build/firmware.elf: $(SRC) rtl/fpga_bitmap.o $(STM32OBJS)
  144. $(ARMCC) $(CPPFLAGS) $(CFLAGS) -o $@ $(STM32CubeMX_INCUDE) $(INCLUDE) $^ $(LDFLAGS)
  145. @EBSS=`arm-none-eabi-nm build/firmware.elf | grep _ebss | cut -f1 "-d "`; \
  146. echo HEAPSIZE = $$((0x2001C000 - 0x$${EBSS})) bytes
  147. @echo STACKSIZE = 16384 bytes
  148. build/firmware.bin: build/firmware.elf
  149. $(OBJCOPY) -O binary $< $@
  150. build/stm32cubemx/%.o:
  151. mkdir -p build/stm32cubemx
  152. $(ARMCC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(STM32CubeMX_INCUDE) $(INCLUDE) $^
  153. build/stm32cubemx/stm32f2xx_it.o:
  154. mkdir -p build/stm32cubemx
  155. $(ARMCC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(STM32CubeMX_INCUDE) $(INCLUDE) $^
  156. $(OBJCOPY) -N EXTI4_IRQHandler $@
  157. build/stm32cubemx/system_stm32f2xx.o:
  158. mkdir -p build/stm32cubemx
  159. $(ARMCC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(STM32CubeMX_INCUDE) $(INCLUDE) $^
  160. $(OBJCOPY) --redefine-sym SystemInit=OrigSystemInit $@
  161. build/scsiPhy.s: src/firmware/scsiPhy.c
  162. $(ARMCC) $(CPPFLAGS) $(CFLAGS) -S -o $@ $(STM32CubeMX_INCUDE) $(INCLUDE) $^
  163. build/firmware.dfu: build/firmware.bin
  164. python tools/dfu-convert.py -b 0x08000000:$< $@
  165. clean:
  166. rm -f build/firmware.elf build/firmware.bin
  167. program:
  168. dfu-util --download build/firmware.dfu --alt 0