2
from SCons.Script import *
5
def espToolTargets(target, source, env):
6
src_base = os.path.basename(source[0].abspath)
7
return ['%s-0x00000.bin' % (src_base), '%s-0x01010.bin' % (src_base)], source
9
def flashImage(target, source, env):
10
command = '$ESPTOOL -p $ESPPORT -b $BAUD write_flash 0x00000 "%s" 0x01010 "%s"' % (source[0].abspath, source[1].abspath)
11
return env.Execute(command)
13
def generate(env, **kw):
15
env.PrependENVPath('PATH', os.path.join(env['ESP8266_TOOLCHAIN'], bin))
16
if env.Detect('xtensa-lx106-elf-gcc'):
17
env['TOOL_PREFIX'] = 'xtensa-lx106-elf-'
19
raise Exception('Unable to find build tools xtensa-lx106-elf')
22
if not 'IDF_PATH' in env:
23
sdkPath = glob.glob(env['ESP8266_RTOS_SDK'] + '/ESP8266*SDK')[0]
24
print ("SDK path = ", sdkPath)
25
env['IDF_PATH'] = sdkPath
27
if not 'ESPPORT' in env:
28
env['ESPPORT'] = "COM1"
31
env['BAUD'] = "230400"
35
action = '$OBJCOPY -O ihex --only-section .isr_vectors --only-section .text --only-section .rodata --only-section .ctors --only-section .dtors --only-section .data --only-section .crc_section $SOURCE $TARGET',
39
env.Append(BUILDERS = {'Hex': hexBuilder})
52
"-Wl,-EL --longcalls --text-section-literals",
53
"-fno-inline-functions",
56
"-mtext-section-literals",
57
"-mno-serialize-volatile",
66
libpath = env.Dir(env['SDK'] + 'components/esp8266/lib').srcnode().abspath
68
env.Append(LIBPATH=[libpath])
70
sdkLibs = ['c', 'gcc', 'phy', 'pp', 'net80211', 'lwip', 'wpa', 'main', 'espnow', 'crypto']
72
env.Append(LINKFLAGS=[
77
'-Wl,--no-check-sections',
102
env['ESPTOOL'] = env.File('#/esptool/esptool.py').srcnode().abspath
104
binImageBuilder = Builder(
105
action = '$ESPTOOL elf2image $SOURCE',
108
emitter = espToolTargets )
110
flasherBuilder = Builder(
112
src_suffix = ".bin" )
114
env.Append(BUILDERS = {
115
'MakeFlashImage': binImageBuilder,
116
'Flash': flasherBuilder})
120
return env.Detect('xtensa-lx106-elf-gcc')