rtconfig.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. # Copyright 2021-2023 HPMicro
  2. # SPDX-License-Identifier: BSD-3-Clause
  3. import os
  4. import sys
  5. # toolchains options
  6. ARCH='risc-v'
  7. CPU='hpmicro'
  8. CHIP_NAME='HPM6280'
  9. CROSS_TOOL='gcc'
  10. # bsp lib config
  11. BSP_LIBRARY_TYPE = None
  12. # Fallback toolchain info
  13. FALLBACK_TOOLCHAIN_VENDOR='RISC-V'
  14. FALLBACK_TOOLCHAIN_PKG='RISC-V-GCC-RV32'
  15. FALLBACK_TOOLCHAIN_VER='2022-04-12'
  16. if os.getenv('RTT_CC'):
  17. CROSS_TOOL = os.getenv('RTT_CC')
  18. RTT_EXEC_PATH = os.getenv('RTT_EXEC_PATH')
  19. if RTT_EXEC_PATH != None:
  20. folders = RTT_EXEC_PATH.split(os.sep)
  21. # If the `RT-Thread Env` is from the RT-Thread Studio, generate the RTT_EXEC_PATH using `FALLBACK_TOOLCHAIN_INFO`
  22. if 'arm_gcc' in folders and 'platform' in folders:
  23. RTT_EXEC_PATH = ''
  24. for path in folders:
  25. if path != 'platform':
  26. RTT_EXEC_PATH = RTT_EXEC_PATH + path + os.sep
  27. else:
  28. break
  29. RTT_EXEC_PATH = os.path.join(RTT_EXEC_PATH, 'repo', 'Extract', 'ToolChain_Support_Packages', FALLBACK_TOOLCHAIN_VENDOR, FALLBACK_TOOLCHAIN_PKG, FALLBACK_TOOLCHAIN_VER, 'bin')
  30. # Override the 'RTT_RISCV_TOOLCHAIN' only if the `RT-Thread ENV` is from the RT-Thread Studio
  31. if 'platform' in folders:
  32. os.environ['RTT_RISCV_TOOLCHAIN'] = RTT_EXEC_PATH
  33. # cross_tool provides the cross compiler
  34. # EXEC_PATH is the compiler path, for example, GNU RISC-V toolchain, IAR
  35. if CROSS_TOOL == 'gcc':
  36. PLATFORM = 'gcc'
  37. if os.getenv('RTT_RISCV_TOOLCHAIN'):
  38. EXEC_PATH = os.getenv('RTT_RISCV_TOOLCHAIN')
  39. else:
  40. EXEC_PATH = r'/opt/riscv-gnu-gcc/bin'
  41. else:
  42. print("CROSS_TOOL = {} not yet supported" % CROSS_TOOL)
  43. BUILD = 'flash_debug'
  44. if PLATFORM == 'gcc':
  45. PREFIX = 'riscv32-unknown-elf-'
  46. CC = PREFIX + 'gcc'
  47. CXX = PREFIX + 'g++'
  48. AS = PREFIX + 'gcc'
  49. AR = PREFIX + 'ar'
  50. LINK = PREFIX + 'gcc'
  51. GDB = PREFIX + 'gdb'
  52. TARGET_EXT = 'elf'
  53. SIZE = PREFIX + 'size'
  54. OBJDUMP = PREFIX + 'objdump'
  55. OBJCPY = PREFIX + 'objcopy'
  56. STRIP = PREFIX + 'strip'
  57. ARCH_ABI = ' -mcmodel=medlow '
  58. DEVICE = ARCH_ABI + ' -DUSE_NONVECTOR_MODE=1 ' + ' -ffunction-sections -fdata-sections -fno-common '
  59. CFLAGS = DEVICE
  60. AFLAGS = CFLAGS
  61. LFLAGS = ARCH_ABI + ' --specs=nano.specs --specs=nosys.specs -u _printf_float -u _scanf_float -nostartfiles -Wl,--gc-sections '
  62. CPATH = ''
  63. LPATH = ''
  64. if BUILD == 'ram_debug':
  65. CFLAGS += ' -gdwarf-2'
  66. AFLAGS += ' -gdwarf-2'
  67. CFLAGS += ' -O0'
  68. LFLAGS += ' -O0'
  69. LINKER_FILE = 'board/linker_scripts/ram_rtt.ld'
  70. elif BUILD == 'ram_release':
  71. CFLAGS += ' -O2 -Os'
  72. LFLAGS += ' -O2 -Os'
  73. LINKER_FILE = 'board/linker_scripts/ram_rtt.ld'
  74. elif BUILD == 'flash_debug':
  75. CFLAGS += ' -gdwarf-2'
  76. AFLAGS += ' -gdwarf-2'
  77. CFLAGS += ' -O0'
  78. LFLAGS += ' -O0'
  79. CFLAGS += ' -DFLASH_XIP=1'
  80. LINKER_FILE = 'board/linker_scripts/flash_rtt.ld'
  81. elif BUILD == 'flash_release':
  82. CFLAGS += ' -O2 -Os'
  83. LFLAGS += ' -O2 -Os'
  84. CFLAGS += ' -DFLASH_XIP=1'
  85. LINKER_FILE = 'board/linker_scripts/flash_rtt.ld'
  86. else:
  87. CFLAGS += ' -O2 -Os'
  88. LFLAGS += ' -O2 -Os'
  89. LINKER_FILE = 'board/linker_scripts/flash_rtt.ld'
  90. LFLAGS += ' -T ' + LINKER_FILE
  91. POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
  92. # module setting
  93. CXXFLAGS = CFLAGS + ' -Woverloaded-virtual -fno-exceptions -fno-rtti '
  94. CFLAGS = CFLAGS + ' -std=gnu11'