Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ else
OBJDUMP = xt-objdump
endif

PYTHON?=python2
PYTHON?=python
BOOT?=none
APP?=0
SPI_SPEED?=40
Expand Down
2 changes: 1 addition & 1 deletion examples/gen_patch_bin/gen_bin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ xtensa-lx106-elf-objcopy --only-section .data -O binary eagle.app.v6.out eagle.a
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

python2 ../../../../tools/gen_appbin_user.py eagle.app.v6.out 0
python ../../../../tools/gen_appbin_user.py eagle.app.v6.out 0
cp eagle.app.v6.irom0text.bin ../../../../bin/
cp eagle.app.flash.bin ../../../../bin/eagle.app.v6.flash.bin

Expand Down
20 changes: 16 additions & 4 deletions examples/gen_patch_bin/gen_patch_bin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
from __future__ import print_function

import sys
import os

PY3 = sys.version_info[0] == 3

if os.path.exists("./patch_array.h"):
os.remove("./patch_array.h")

Expand All @@ -11,7 +16,13 @@
print("Run gen_bin.sh failed")
exit(-1)

with open("bin/eagle.app.v6.flash.bin","r") as fd:
def get_byte_value(data_item):
if PY3:
return data_item
else:
return ord(data_item)

with open("bin/eagle.app.v6.flash.bin","rb") as fd:
with open("./patch_array.h","w+") as patch_fd:
patch_fd.write("// This file is a patch for th25q16\r\n\r\n")
patch_fd.write("#include \"os_type.h\"\r\n\r\n")
Expand All @@ -21,16 +32,17 @@
Hex_Str = ""
offset = 0
for i in range(0, len1,1):
Hex_Str += "0x"+(hex(ord(mystr[i])).replace('0x','').zfill(2)).upper()+ ","
byte_value = get_byte_value(mystr[i])
Hex_Str += "0x{:02X},".format(byte_value)
offset += 1
if offset == 16:
print Hex_Str
print(Hex_Str)
patch_fd.write(" {}\r\n".format(Hex_Str))
Hex_Str = ""
offset = 0

if Hex_Str != "":
print Hex_Str
print(Hex_Str)
patch_fd.write(" {}\r\n".format(Hex_Str))
patch_fd.write("};\r\n")

74 changes: 42 additions & 32 deletions examples/gen_patch_bin/tools/gen_appbin_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
argv[1] is elf file name
argv[2] is version num"""

from __future__ import print_function

import string
import sys
import os
Expand All @@ -38,10 +40,11 @@

chk_sum = CHECKSUM_INIT
blocks = 0
PY3 = sys.version_info[0] == 3

def write_file(file_name,data):
if file_name is None:
print 'file_name cannot be none\n'
print('file_name cannot be none\n')
sys.exit(0)

fp = open(file_name,'ab')
Expand All @@ -51,53 +54,60 @@ def write_file(file_name,data):
fp.write(data)
fp.close()
else:
print '%s write fail\n'%(file_name)
print('%s write fail\n'%(file_name))

def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk):
global chk_sum
global blocks
if dest_file_name is None:
print 'dest_file_name cannot be none\n'
print('dest_file_name cannot be none\n')
sys.exit(0)

if file_name:
fp = open(file_name,'rb')
if fp:
########## write text ##########
########## write text ##########
fp.seek(0,os.SEEK_END)
data_len = fp.tell()
if data_len:
if need_chk:
if need_chk:
tmp_len = (data_len + 3) & (~3)
else:
tmp_len = (data_len + 15) & (~15)
else:
tmp_len = (data_len + 15) & (~15)
data_bin = struct.pack('<II',start_offset_addr,tmp_len)
write_file(dest_file_name,data_bin)
fp.seek(0,os.SEEK_SET)
data_bin = fp.read(data_len)
write_file(dest_file_name,data_bin)
if need_chk:
for loop in range(len(data_bin)):
chk_sum ^= ord(data_bin[loop])
print '%s size is %d(0x%x),align 4 bytes,\nultimate size is %d(0x%x)'%(file_name,data_len,data_len,tmp_len,tmp_len)
if need_chk:
if need_chk:
for byte_val in data_bin:
if PY3:
chk_sum ^= byte_val
else:
chk_sum ^= ord(byte_val)
print('%s size is %d(0x%x),align 4 bytes,\nultimate size is %d(0x%x)'%(file_name,data_len,data_len,tmp_len,tmp_len))
tmp_len = tmp_len - data_len
if tmp_len:
data_str = ['00']*(tmp_len)
data_bin = binascii.a2b_hex(''.join(data_str))
write_file(dest_file_name,data_bin)
if need_chk:
for loop in range(len(data_bin)):
chk_sum ^= ord(data_bin[loop])
if need_chk:
for byte_val in data_bin:
if PY3:
chk_sum ^= byte_val
else:
chk_sum ^= ord(byte_val)
blocks = blocks + 1
fp.close()
fp.close()
else:
print '!!!Open %s fail!!!'%(file_name)
print('!!!Open %s fail!!!'%(file_name))

def gen_appbin():
global chk_sum
global blocks
if len(sys.argv) != 3:
print 'Usage: gen_appbin.py eagle.app.out mode'
print('Usage: gen_appbin.py eagle.app.out mode')
sys.exit(0)

elf_file = sys.argv[1]
Expand All @@ -122,51 +132,51 @@ def gen_appbin():

fp = file('./eagle.app.sym')
if fp is None:
print "open sym file error\n"
print("open sym file error\n")
sys.exit(0)

lines = fp.readlines()
fp.close()

entry_addr = None
p = re.compile('(\w*)(\sT\s)(call_user_start1)$')
p = re.compile('(\\w*)(\\sT\\s)(call_user_start1)$')
for line in lines:
m = p.search(line)
if m != None:
entry_addr = m.group(1)
print entry_addr
print(entry_addr)

if entry_addr is None:
print 'no entry point!!'
print('no entry point!!')
sys.exit(0)

data_start_addr = '0'
p = re.compile('(\w*)(\sA\s)(_data_start)$')
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
print(data_start_addr)

rodata_start_addr = '0'
p = re.compile('(\w*)(\sA\s)(_rodata_start)$')
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
print(rodata_start_addr)

if mode == '2':
# write irom bin head
data_bin = struct.pack('<BBHI',BIN_MAGIC_IROM,4,0,long(entry_addr,16))
data_bin = struct.pack('<BBHI',BIN_MAGIC_IROM,4,0,int(entry_addr,16))
sum_size = len(data_bin)
write_file(flash_bin_name,data_bin)

# irom0.text.bin
combine_bin(irom0text_bin_name,flash_bin_name,0x0,0)

# write flash bin header
data_bin = struct.pack('<BBHI',BIN_MAGIC_FLASH,3,0,long(entry_addr,16))
data_bin = struct.pack('<BBHI',BIN_MAGIC_FLASH,3,0,int(entry_addr,16))
sum_size = len(data_bin)
write_file(flash_bin_name,data_bin)

Expand All @@ -175,10 +185,10 @@ def gen_appbin():

# data.bin
if data_start_addr:
combine_bin(data_bin_name,flash_bin_name,long(data_start_addr,16),1)
combine_bin(data_bin_name,flash_bin_name,int(data_start_addr,16),1)

# rodata.bin
combine_bin(rodata_bin_name,flash_bin_name,long(rodata_start_addr,16),1)
combine_bin(rodata_bin_name,flash_bin_name,int(rodata_start_addr,16),1)

# write checksum header
sum_size = os.path.getsize(flash_bin_name) + 1
Expand All @@ -187,7 +197,7 @@ def gen_appbin():
data_str = ['00']*(sum_size)
data_bin = binascii.a2b_hex(''.join(data_str))
write_file(flash_bin_name,data_bin)
write_file(flash_bin_name,chr(chk_sum & 0xFF))
write_file(flash_bin_name,bytearray([chk_sum & 0xFF]))

if mode == '1':
sum_size = os.path.getsize(flash_bin_name)
Expand All @@ -201,8 +211,8 @@ def gen_appbin():
write_file(flash_bin_name,data_bin)
fp.close()
else :
print '!!!Open %s fail!!!'%(flash_bin_name)
sys.exit(0)
print('!!!Open %s fail!!!'%(flash_bin_name))
sys.exit(0)

cmd = 'rm eagle.app.sym'
os.system(cmd)
Expand Down
6 changes: 3 additions & 3 deletions include/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

#define ESP_SDK_VERSION_MAJOR 3
#define ESP_SDK_VERSION_MINOR 0
#define ESP_SDK_VERSION_PATCH 4
#define ESP_SDK_VERSION_PATCH 7

#define ESP_SDK_VERSION_NUMBER 0x030004
#define ESP_SDK_VERSION_STRING "3.0.4"
#define ESP_SDK_VERSION_NUMBER 0x030007
#define ESP_SDK_VERSION_STRING "3.0.7"

#endif
Loading