Skip to content

Commit 2fdbf65

Browse files
create loadable binary as *.ulp
the binary is not practically tested, but looks good at first glance.
1 parent 446736d commit 2fdbf65

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

esp32_ulp/__main__.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,27 @@
11
import sys
22

33
from .assemble import Assembler
4+
from .link import make_binary
5+
6+
7+
def src_to_binary(lines):
8+
assembler = Assembler()
9+
assembler.assemble(lines)
10+
assembler.dump()
11+
text, data, bss_len = assembler.fetch()
12+
return make_binary(text, data, bss_len)
413

514

615
def main(fn):
716
with open(fn) as f:
817
lines = f.readlines()
918

10-
assembler = Assembler()
11-
assembler.assemble(lines)
12-
assembler.dump()
19+
binary = src_to_binary(lines)
20+
21+
if fn.endswith('.s') or fn.endswith('.S'):
22+
fn = fn[:-2]
23+
with open(fn + '.ulp', 'wb') as f:
24+
f.write(binary)
1325

1426

1527
main(sys.argv[1])

esp32_ulp/assemble.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ def dump(self):
7878
print("%s section:" % BSS)
7979
print("size: %d" % self.offsets[BSS])
8080

81+
def fetch(self):
82+
def get_bytes(section):
83+
return b''.join(self.sections[section])
84+
85+
return get_bytes(TEXT), get_bytes(DATA), self.offsets[BSS]
86+
8187
def d_text(self):
8288
self.section = TEXT
8389

0 commit comments

Comments
 (0)