mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-01-15 20:59:22 +08:00
a8828eee89
1. Add IAR project template and link scripts. Add missing CXX configuration for IAR tool chain in rtconfg.py. 2. Modify all link scripts, Using ITCM interface.(Changing flash start address from 0x0800_0000 to 0x0020_0000).
145 lines
4.2 KiB
Python
145 lines
4.2 KiB
Python
import os
|
|
|
|
# toolchains options
|
|
ARCH='arm'
|
|
CPU='cortex-m7'
|
|
CROSS_TOOL='gcc'
|
|
|
|
if os.getenv('RTT_CC'):
|
|
CROSS_TOOL = os.getenv('RTT_CC')
|
|
if os.getenv('RTT_ROOT'):
|
|
RTT_ROOT = os.getenv('RTT_ROOT')
|
|
|
|
# cross_tool provides the cross compiler
|
|
# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
|
|
if CROSS_TOOL == 'gcc':
|
|
PLATFORM = 'gcc'
|
|
EXEC_PATH = r'C:/Program Files/CodeSourcery/Sourcery G++ Lite/bin'
|
|
elif CROSS_TOOL == 'keil':
|
|
PLATFORM = 'armcc'
|
|
EXEC_PATH = r'C:/Keil_v5'
|
|
elif CROSS_TOOL == 'iar':
|
|
PLATFORM = 'iar'
|
|
IAR_PATH = 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.2'
|
|
|
|
if os.getenv('RTT_EXEC_PATH'):
|
|
EXEC_PATH = os.getenv('RTT_EXEC_PATH')
|
|
|
|
BUILD = 'debug'
|
|
STM32_TYPE = 'STM32F756xx'
|
|
|
|
if PLATFORM == 'gcc':
|
|
# toolchains
|
|
PREFIX = 'arm-none-eabi-'
|
|
CC = PREFIX + 'gcc'
|
|
CXX = PREFIX + 'g++'
|
|
AS = PREFIX + 'gcc'
|
|
AR = PREFIX + 'ar'
|
|
LINK = PREFIX + 'gcc'
|
|
TARGET_EXT = 'axf'
|
|
SIZE = PREFIX + 'size'
|
|
OBJDUMP = PREFIX + 'objdump'
|
|
OBJCPY = PREFIX + 'objcopy'
|
|
STRIP = PREFIX + 'strip'
|
|
|
|
DEVICE = ' -mcpu=cortex-m7 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -ffunction-sections -fdata-sections'
|
|
CFLAGS = DEVICE + ' -g -Wall -DSTM32F756xx -DUSE_HAL_DRIVER -D__ASSEMBLY__ -D__FPU_USED -eentry'
|
|
AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
|
|
LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread_stm32f7xx.map,-cref,-u,Reset_Handler -T rtthread-stm32f7xx.ld'
|
|
|
|
CPATH = ''
|
|
LPATH = ''
|
|
|
|
if BUILD == 'debug':
|
|
CFLAGS += ' -O0 -gdwarf-2'
|
|
AFLAGS += ' -gdwarf-2'
|
|
else:
|
|
CFLAGS += ' -O2 -Os'
|
|
|
|
POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
|
|
|
|
# module setting
|
|
CXXFLAGS = ' -Woverloaded-virtual -fno-exceptions -fno-rtti '
|
|
M_CFLAGS = CFLAGS + ' -mlong-calls -fPIC '
|
|
M_CXXFLAGS = CXXFLAGS + ' -mlong-calls -fPIC'
|
|
M_LFLAGS = DEVICE + CXXFLAGS + ' -Wl,--gc-sections,-z,max-page-size=0x4' +\
|
|
' -shared -fPIC -nostartfiles -static-libgcc'
|
|
M_POST_ACTION = STRIP + ' -R .hash $TARGET\n' + SIZE + ' $TARGET \n'
|
|
|
|
elif PLATFORM == 'armcc':
|
|
# toolchains
|
|
CC = 'armcc'
|
|
CXX = 'armcc'
|
|
AS = 'armasm'
|
|
AR = 'armar'
|
|
LINK = 'armlink'
|
|
TARGET_EXT = 'axf'
|
|
|
|
DEVICE = ' --cpu Cortex-M7.fp.sp --fpu=FPv4-SP'
|
|
CFLAGS = DEVICE + ' --apcs=interwork -DUSE_HAL_DRIVER -DSTM32F756xx'
|
|
AFLAGS = DEVICE
|
|
LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread-stm32f7xx.map --scatter rtthread-stm32f7xx.sct'
|
|
|
|
CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC'
|
|
LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB'
|
|
|
|
EXEC_PATH += '/arm/bin40/'
|
|
|
|
if BUILD == 'debug':
|
|
CFLAGS += ' -g -O0'
|
|
AFLAGS += ' -g'
|
|
else:
|
|
CFLAGS += ' -O2 -Otime'
|
|
|
|
CXXFLAGS = CFLAGS
|
|
POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
|
|
|
|
elif PLATFORM == 'iar':
|
|
# toolchains
|
|
CC = 'iccarm'
|
|
CXX = 'iccarm'
|
|
AS = 'iasmarm'
|
|
AR = 'iarchive'
|
|
LINK = 'ilinkarm'
|
|
TARGET_EXT = 'out'
|
|
|
|
DEVICE = ' -D DUSE_HAL_DRIVER' + ' -D STM32F756xx'
|
|
|
|
CFLAGS = DEVICE
|
|
CFLAGS += ' --diag_suppress Pa050'
|
|
CFLAGS += ' --no_cse'
|
|
CFLAGS += ' --no_unroll'
|
|
CFLAGS += ' --no_inline'
|
|
CFLAGS += ' --no_code_motion'
|
|
CFLAGS += ' --no_tbaa'
|
|
CFLAGS += ' --no_clustering'
|
|
CFLAGS += ' --no_scheduling'
|
|
CFLAGS += ' --debug'
|
|
CFLAGS += ' --endian=little'
|
|
CFLAGS += ' --cpu=Cortex-M7'
|
|
CFLAGS += ' -e'
|
|
CFLAGS += ' --fpu=None'
|
|
CFLAGS += ' --dlib_config "' + IAR_PATH + '/arm/INC/c/DLib_Config_Normal.h"'
|
|
CFLAGS += ' -Ol'
|
|
CFLAGS += ' --use_c++_inline'
|
|
CFLAGS += ' --silent'
|
|
|
|
AFLAGS = ''
|
|
AFLAGS += ' -s+'
|
|
AFLAGS += ' -w+'
|
|
AFLAGS += ' -r'
|
|
AFLAGS += ' --cpu Cortex-M7'
|
|
AFLAGS += ' --fpu None'
|
|
AFLAGS += ' -S'
|
|
|
|
LFLAGS = ' --config rtthread-stm32f7xx.icf'
|
|
LFLAGS += ' --redirect _Printf=_PrintfTiny'
|
|
LFLAGS += ' --redirect _Scanf=_ScanfSmall'
|
|
LFLAGS += ' --entry __iar_program_start'
|
|
LFLAGS += ' --silent'
|
|
|
|
CXXFLAGS = CFLAGS
|
|
|
|
EXEC_PATH = IAR_PATH + '/arm/bin/'
|
|
POST_ACTION = ''
|