Vastly simplified generating and flashing firmware.
Uses the new elf2image features of esptool.py to do away with the myriad of shell scripts and binaries. Fixed permissions on esptool.py
This commit is contained in:
parent
a0f5559a86
commit
a1e9e58a1e
2
Makefile
2
Makefile
|
@ -136,7 +136,7 @@ endef
|
|||
|
||||
$(BINODIR)/%.bin: $(IMAGEODIR)/%.out
|
||||
@mkdir -p $(BINODIR)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
../tools/esptool.py elf2image $< -o $(BINODIR)/
|
||||
|
||||
#############################################################
|
||||
# Rules base
|
||||
|
|
|
@ -159,8 +159,10 @@ sinclude $(PDIR)Makefile
|
|||
|
||||
$(BINODIR)/%.bin: $(IMAGEODIR)/%.out
|
||||
@mkdir -p $(BINODIR)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
../tools/esptool.py elf2image $< -o $(BINODIR)/
|
||||
|
||||
flash:
|
||||
../tools/esptool.py write_flash 0x00000 $(BINODIR)/0x00000.bin 0x10000 $(BINODIR)/0x10000.bin
|
||||
|
||||
.PHONY: FORCE
|
||||
FORCE:
|
||||
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
@echo off
|
||||
set BACKPATH=%PATH%
|
||||
set PATH=%BACKPATH%;%CD%\..\tools
|
||||
@echo on
|
||||
|
||||
rem gen_misc.bat
|
||||
rem eagle.app.v6.flash.bin: 0x00000
|
||||
rem eagle.app.v6.irom0text.bin: 0x10000
|
||||
rem esp_init_data_default.bin: 0x7c000
|
||||
rem blank.bin: 0x7e000
|
||||
|
||||
cd ..\bin
|
||||
esptool.py -p com1 write_flash 0x00000 eagle.app.v6.flash.bin 0x10000 eagle.app.v6.irom0text.bin 0x7c000 esp_init_data_default.bin 0x7e000 blank.bin
|
||||
echo ************************* flash end *************************************
|
||||
cd ..\app
|
||||
|
||||
@echo off
|
||||
set PATH=%BACKPATH%
|
||||
@echo on
|
11
app/flash.sh
11
app/flash.sh
|
@ -1,11 +0,0 @@
|
|||
#!/bin/bash -x
|
||||
### gen_misc.sh
|
||||
### eagle.app.v6.flash.bin: 0x00000
|
||||
### eagle.app.v6.irom0text.bin: 0x10000
|
||||
### esp_init_data_default.bin: 0x7c000
|
||||
### blank.bin: 0x7e000
|
||||
|
||||
cd ../bin
|
||||
../../../../../tools/esptool.py --port /dev/ttyUSB0 write_flash 0x00000 eagle.app.v6.flash.bin 0x10000 eagle.app.v6.irom0text.bin 0x7c000 esp_init_data_default.bin 0x7e000 blank.bin
|
||||
echo "************************* flash end *************************************"
|
||||
cd ../app
|
|
@ -1,41 +0,0 @@
|
|||
@echo off
|
||||
set BACKPATH=%PATH%
|
||||
set PATH=%BACKPATH%;%CD%\..\tools
|
||||
@echo on
|
||||
|
||||
make %1
|
||||
|
||||
del /F ..\bin\eagle.app.v6.flash.bin ..\bin\eagle.app.v6.irom0text.bin ..\bin\eagle.app.v6.dump ..\bin\eagle.app.v6.S
|
||||
|
||||
cd .output\eagle\debug\image
|
||||
|
||||
@echo off
|
||||
set OBJDUMP=xt-objdump
|
||||
set OBJCOPY=xt-objcopy
|
||||
if defined XTENSA_CORE (
|
||||
set OBJDUMP=xt-objdump
|
||||
set OBJCOPY=xt-objcopy
|
||||
) else (
|
||||
set OBJDUMP=xtensa-lx106-elf-objdump
|
||||
set OBJCOPY=xtensa-lx106-elf-objcopy
|
||||
)
|
||||
@echo on
|
||||
|
||||
%OBJDUMP% -x -s eagle.app.v6.out > ..\..\..\..\..\bin\eagle.app.v6.dump
|
||||
%OBJDUMP% -S eagle.app.v6.out > ..\..\..\..\..\bin\eagle.app.v6.S
|
||||
|
||||
%OBJCOPY% --only-section .text -O binary eagle.app.v6.out eagle.app.v6.text.bin
|
||||
%OBJCOPY% --only-section .data -O binary eagle.app.v6.out eagle.app.v6.data.bin
|
||||
%OBJCOPY% --only-section .rodata -O binary eagle.app.v6.out eagle.app.v6.rodata.bin
|
||||
%OBJCOPY% --only-section .irom0.text -O binary eagle.app.v6.out eagle.app.v6.irom0text.bin
|
||||
|
||||
gen_appbin.py eagle.app.v6.out v6
|
||||
|
||||
xcopy /y eagle.app.v6.irom0text.bin ..\..\..\..\..\bin\
|
||||
xcopy /y eagle.app.v6.flash.bin ..\..\..\..\..\bin\
|
||||
|
||||
cd ..\..\..\..\
|
||||
|
||||
@echo off
|
||||
set PATH=%BACKPATH%
|
||||
@echo on
|
|
@ -1,25 +0,0 @@
|
|||
#!/bin/bash -x
|
||||
make
|
||||
if [ $? == 0 ];then
|
||||
rm ../bin/eagle.app.v6.flash.bin ../bin/eagle.app.v6.irom0text.bin ../bin/eagle.app.v6.dump ../bin/eagle.app.v6.S
|
||||
|
||||
cd .output/eagle/debug/image
|
||||
|
||||
xtensa-lx106-elf-objdump -x -s eagle.app.v6.out > ../../../../../bin/eagle.app.v6.dump
|
||||
xtensa-lx106-elf-objdump -S eagle.app.v6.out > ../../../../../bin/eagle.app.v6.S
|
||||
|
||||
xtensa-lx106-elf-objcopy --only-section .text -O binary eagle.app.v6.out eagle.app.v6.text.bin
|
||||
xtensa-lx106-elf-objcopy --only-section .data -O binary eagle.app.v6.out eagle.app.v6.data.bin
|
||||
xtensa-lx106-elf-objcopy --only-section .rodata -O binary eagle.app.v6.out eagle.app.v6.rodata.bin
|
||||
xtensa-lx106-elf-objcopy --only-section .irom0.text -O binary eagle.app.v6.out eagle.app.v6.irom0text.bin
|
||||
|
||||
../../../../../tools/gen_appbin.py eagle.app.v6.out v6
|
||||
|
||||
cp eagle.app.v6.irom0text.bin ../../../../../bin/
|
||||
cp eagle.app.v6.flash.bin ../../../../../bin/
|
||||
|
||||
cd ../../../../../
|
||||
|
||||
else
|
||||
echo "make error"
|
||||
fi
|
|
@ -1,41 +0,0 @@
|
|||
@echo off
|
||||
set BACKPATH=%PATH%
|
||||
set PATH=%BACKPATH%;%CD%\..\tools
|
||||
@echo on
|
||||
|
||||
make APP=$1
|
||||
|
||||
rm ..\bin\upgrade\%1.bin
|
||||
|
||||
cd .output\eagle\debug\image\
|
||||
|
||||
@echo off
|
||||
set OBJDUMP=xt-objdump
|
||||
set OBJCOPY=xt-objcopy
|
||||
if defined XTENSA_CORE (
|
||||
set OBJDUMP=xt-objdump
|
||||
set OBJCOPY=xt-objcopy
|
||||
) else (
|
||||
set OBJDUMP=xtensa-lx106-elf-objdump
|
||||
set OBJCOPY=xtensa-lx106-elf-objcopy
|
||||
)
|
||||
@echo on
|
||||
|
||||
%OBJCOPY% --only-section .text -O binary eagle.app.v6.out eagle.app.v6.text.bin
|
||||
%OBJCOPY% --only-section .data -O binary eagle.app.v6.out eagle.app.v6.data.bin
|
||||
%OBJCOPY% --only-section .rodata -O binary eagle.app.v6.out eagle.app.v6.rodata.bin
|
||||
%OBJCOPY% --only-section .irom0.text -O binary eagle.app.v6.out eagle.app.v6.irom0text.bin
|
||||
|
||||
gen_appbin.py eagle.app.v6.out v6
|
||||
|
||||
gen_flashbin.py eagle.app.v6.flash.bin eagle.app.v6.irom0text.bin
|
||||
|
||||
cp eagle.app.flash.bin %1.bin
|
||||
|
||||
xcopy /y %1.bin ..\..\..\..\..\bin\upgrade\
|
||||
|
||||
cd ..\..\..\..\
|
||||
|
||||
@echo off
|
||||
set PATH=%BACKPATH%
|
||||
@echo on
|
|
@ -1,28 +0,0 @@
|
|||
#!/bin/bash -x
|
||||
touch user/user_main.c
|
||||
make APP=$1
|
||||
if [ $? == 0 ];then
|
||||
rm ../bin/upgrade/user$1.bin ../bin/upgrade/user$1.dump ../bin/upgrade/user$1.S
|
||||
|
||||
cd .output/eagle/debug/image/
|
||||
|
||||
xtensa-lx106-elf-objdump -x -s eagle.app.v6.out > ../../../../../bin/upgrade/user$1.dump
|
||||
xtensa-lx106-elf-objdump -S eagle.app.v6.out > ../../../../../bin/upgrade/user$1.S
|
||||
|
||||
xtensa-lx106-elf-objcopy --only-section .text -O binary eagle.app.v6.out eagle.app.v6.text.bin
|
||||
xtensa-lx106-elf-objcopy --only-section .data -O binary eagle.app.v6.out eagle.app.v6.data.bin
|
||||
xtensa-lx106-elf-objcopy --only-section .rodata -O binary eagle.app.v6.out eagle.app.v6.rodata.bin
|
||||
xtensa-lx106-elf-objcopy --only-section .irom0.text -O binary eagle.app.v6.out eagle.app.v6.irom0text.bin
|
||||
|
||||
../../../../../tools/gen_appbin.py eagle.app.v6.out v6
|
||||
|
||||
../../../../../tools/gen_flashbin.py eagle.app.v6.flash.bin eagle.app.v6.irom0text.bin
|
||||
|
||||
cp eagle.app.flash.bin user$1.bin
|
||||
cp user$1.bin ../../../../../bin/upgrade/
|
||||
|
||||
cd ../../../../../
|
||||
|
||||
else
|
||||
echo "make error"
|
||||
fi
|
|
@ -1,77 +0,0 @@
|
|||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) 2010 Espressif System
|
||||
#
|
||||
# grab user_start() address and pass it to genflashbin program
|
||||
#
|
||||
|
||||
import string
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
if len(sys.argv) != 3:
|
||||
print 'Usage: gen_appbin.py eagle.app.out version'
|
||||
sys.exit(0)
|
||||
|
||||
elf_file = sys.argv[1]
|
||||
ver = sys.argv[2]
|
||||
#print elf_file
|
||||
|
||||
if os.getenv('XTENSA_CORE')=='lx106':
|
||||
cmd = 'xt-nm -g ' + elf_file + ' > eagle.app.sym'
|
||||
else:
|
||||
cmd = 'xtensa-lx106-elf-nm -g ' + elf_file + ' > eagle.app.sym'
|
||||
#print cmd
|
||||
os.system(cmd)
|
||||
|
||||
fp = file('./eagle.app.sym')
|
||||
if fp is None:
|
||||
print "open sym file error\n"
|
||||
exit
|
||||
|
||||
lines = fp.readlines()
|
||||
|
||||
fp.close()
|
||||
|
||||
entry_addr = None
|
||||
p = re.compile('(\w*)(\sT\s)(call_user_start)$')
|
||||
for line in lines:
|
||||
m = p.search(line)
|
||||
if m != None:
|
||||
entry_addr = m.group(1)
|
||||
#entry_addr = int(entry_addr, 16)
|
||||
print entry_addr
|
||||
|
||||
if entry_addr is None:
|
||||
print 'no entry point!!'
|
||||
exit
|
||||
|
||||
data_start_addr = '0'
|
||||
p = re.compile('(\w*)(\sA\s)(_data_start)$')
|
||||
for line in lines:
|
||||
m = p.search(line)
|
||||
if m != None:
|
||||
data_start_addr = m.group(1)
|
||||
print data_start_addr
|
||||
|
||||
rodata_start_addr = '0'
|
||||
p = re.compile('(\w*)(\sA\s)(_rodata_start)$')
|
||||
for line in lines:
|
||||
m = p.search(line)
|
||||
if m != None:
|
||||
rodata_start_addr = m.group(1)
|
||||
print rodata_start_addr
|
||||
|
||||
if os.getenv('XTENSA_CORE')=='lx106':
|
||||
cmd = 'genflashbin%s eagle.app.%s.text.bin '%(ver, ver)+entry_addr+' eagle.app.%s.data.bin '%(ver)+ data_start_addr+' eagle.app.%s.rodata.bin '%(ver)+rodata_start_addr
|
||||
else:
|
||||
cmd = 'genflashbin%s eagle.app.%s.text.bin '%(ver, ver)+entry_addr+' eagle.app.%s.data.bin '%(ver)+ data_start_addr+' eagle.app.%s.rodata.bin '%(ver)+rodata_start_addr
|
||||
|
||||
print cmd
|
||||
os.system(cmd)
|
||||
|
||||
cmd = 'mv eagle.app.flash.bin eagle.app.%s.flash.bin'%(ver)
|
||||
|
||||
print cmd
|
||||
os.system(cmd)
|
|
@ -1,33 +0,0 @@
|
|||
#!/usr/bin/python
|
||||
import os
|
||||
import sys
|
||||
import binascii
|
||||
import string
|
||||
|
||||
if len(sys.argv) != 3:
|
||||
print 'Usage: gen_flashbin.py 1.bin 2.bin'
|
||||
sys.exit(0)
|
||||
|
||||
bin1_name = sys.argv[1]
|
||||
bin2_name = sys.argv[2]
|
||||
|
||||
bin1_file = open(bin1_name, 'rb')
|
||||
bin2_file = open(bin2_name, 'rb')
|
||||
|
||||
bin1_len = os.path.getsize(bin1_name)
|
||||
|
||||
bin1 = bin1_file.read()
|
||||
bin2 = bin2_file.read()
|
||||
|
||||
bitlist = ['FF']*(0x10000-bin1_len)
|
||||
bytes = binascii.a2b_hex(''.join(bitlist))
|
||||
|
||||
bitout = open('eagle.app.flash.bin', 'wb')
|
||||
bitout.write(bin1)
|
||||
bitout.write(bytes)
|
||||
bitout.write(bin2)
|
||||
bitout.close()
|
||||
|
||||
bin1_file.close()
|
||||
bin2_file.close()
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue