From fe7faf701e69a70896901961a9c9ae2eb31a56d0 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Wed, 29 Jan 2020 13:05:59 -0800 Subject: [PATCH] Added dependencies for eboot.ld and Makefile to Makefile. Updated eboot.ld to not fill with zeros through the CS field on its way to the CRC. Added size test to elf2bin.py --- bootloaders/eboot/Makefile | 11 ++++++----- bootloaders/eboot/eboot.elf | Bin 34820 -> 34956 bytes bootloaders/eboot/eboot.ld | 24 ++++++++++++++++++------ tools/elf2bin.py | 2 ++ 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/bootloaders/eboot/Makefile b/bootloaders/eboot/Makefile index dc28219b6..ff4489e47 100644 --- a/bootloaders/eboot/Makefile +++ b/bootloaders/eboot/Makefile @@ -29,13 +29,13 @@ CFLAGS += $(INC) CFLAGS += $(UZLIB_FLAGS) -LDFLAGS += -nostdlib -Wl,--no-check-sections -Wl,--gc-sections -umain +LDFLAGS += -nostdlib -Wl,--no-check-sections -Wl,--gc-sections -umain -Wl,-Map,$(@:.elf=.map) LD_SCRIPT := -Teboot.ld -APP_OUT:= eboot.elf -APP_AR := eboot.a -APP_FW := eboot.bin +APP_OUT := eboot.elf +APP_AR := eboot.a +APP_FW := eboot.bin all: $(APP_OUT) @@ -49,13 +49,14 @@ tinfgzip.o: $(UZLIB_PATH)/tinfgzip.c $(UZLIB_PATH)/uzlib.h $(UZLIB_PATH)/uzlib_c $(APP_AR): $(TARGET_OBJ_PATHS) tinflate.o tinfgzip.o $(AR) cru $@ $^ -$(APP_OUT): $(APP_AR) +$(APP_OUT): $(APP_AR) eboot.ld | Makefile $(LD) $(LD_SCRIPT) $(LDFLAGS) -Wl,--start-group -Wl,--whole-archive $(APP_AR) -Wl,--end-group -o $@ clean: rm -f *.o rm -f $(APP_AR) rm -f $(APP_OUT) + rm -f *.map .PHONY: all clean default diff --git a/bootloaders/eboot/eboot.elf b/bootloaders/eboot/eboot.elf index 7ef036b4d7e9219dc4b5b617df91807ec0043f85..0d862f6a9f6bf2b014610c46d4ba14d4eb088fc0 100755 GIT binary patch delta 4083 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 delta 3931 zcmZ`+3vg8B75@Lb|J{3+B(Mnq@&c0GY~D-WFY?+&6h$lwu@C|Tgn-gw0)$tEEo&ZFjnDMwv|IEZJA zNUB4GZQjgB7>(I^v)pLCP7HP?avC*F zPebG1f{@CzS|n8VbO5W3qOcobwW5@j{g(c7a6(I%)|vG%`t3us-t;2mbo+7YXH(9w zPc!l@lymG{j8;4Ox%M)hmp@_YK6=gP85Y^oXzid}X16oK0x~P?GIBbpud#2&TC9bP z)?ojG`bFe4+sDaYOgUnEDKGgCtkcs5^x^zkIZMBqe{J^5(8vtNd2PTS>A+ha`4ZV> zd6X^>70W%kBh*pcj~Qf%lf`*|yEZgWd4w^ubp{olz33v@g}ElvX#<_sL7DX? z7;+=wLxj94aucBeULZ`kjW7t9e;)!gQeVY*{fsx8u#dFu2N9}=aEV8h3VAnEKSw;1 z<{gB|h%~togWSpZo&&#LA9!CMEqqaK)?GzsWRIR!Tqu8~R~47YgZfbM6pSx9_EaWp-5waE^0vQsp_ z>Q1(RiyvP)hDnbrNru^*NAnl-=75I40t}A^(Hop7#2Ijun8#5%P3&PZo-q4? zCliBuonEHXE6mgx#{s-fv+xc#3(IL1X688<6Rqrr5Fuk_W;Snz+bql+hk|CYCp^i^ z#+Y#}crMH%6$DB>P9(%@3%)k_UuEYIF?BP{6 z&f{*JV*fX?xZta9oO5=b@b!+}Y51Ty4PQZc32LuT@g8E5PMuqk?sQ1i_ySbI*QKKs zZiiG&4?>aRc1YFo31;=NL#j54!p9D&qLh{IE&Wi%gcv)dn#sicK6XfT(>;*Wee95G zHsuT-JEXdWa*i(-qiQEV*SCzETlYiGAKl%vLa6ViLKE__XR7&8=!<;Q$nT(B=3~!P z3+P+nW6xBb(K>({ADgCH$O#&JY?^8jNzFbsO|_VE#K)$omV5wt`j`Rzy~q8PRR&il+eOXa^&9oY*o49QQ1)d`bk0e& z;nJ`yL~TH~HB_dseB=YJy-9Cv$dp_3eGP@OGX8wSB`LS-XQ$T7TK&b;C*>Obv!>i& zGS@aWA4!^?I{#o>>nKKO@i>aLRIJozn{v~5Kr*t@Q3s%Io2th*Pm)jR+U5ecEMEbG zWw{$`;Zv73Txf0wOBCW&YgMJ=Uyw1r436LIXNLRnm8iu;C7Oy`%R*#XsBpD(JBqOiL3SIyxVKVMYSAt;iDit`L|wcO&Qi0>VYDoR;dZ*iQ#|8912 z-_n&r-4FsL*>cO3vfpycbt~j_%Pm*R8J1hFlyj_HjH*3^?Gd@wGW|r0`$ePXS3^@| zO{2Mka+&2;Cqq|QZgo;$W4Xo2a1EAQoa8iHZgEnMSZ;B?4S9OXfDW~~#hLoKUeX$s zNPj1wgTBF9GSGTmiF6YM6BI_nv%aE5LPU^jjvdr$KYro&E`+J-9$BV*OP`h5$ zJLU?yHU9qM@uu}Iw#5(+e8cTqME%}!?-e(OER4_YzE@hGqGAm(MZeQibH)5k*9Gwp zSDv%1Db5`Kml*Hwl}1we?LDiz%ZD-#>Dmox@$GBZ%ebd+P$u2Be#MIJwO#A(_(6C4 zx(zct@x7ZLm-2#cylbC)MZbJkmwZ|mZ#fxD%L@dsbHXpq5B?I;JokstDkE%a@>5p8%${6sUz`Oq@B4lv~2Y^rEW3?EVc6~@`oo}4=mu%7guyIgk$By_MzEKwwxuR$!WV|JNV6511>O2t4!yg18iT=<}Vp1~?Z< z@WGCy4SolTg*fvpC`ecyKM^}(Xx*P0@7aEvjK6btsnn@EgYnj#GYxsW-m@!cezpcl t>f^hDGFiW|t58nVmv (17 + (. - _stext))), "Error: No space for CS and CRC in bootloader sector."); + ASSERT((_crc_size > _cs_here), "Error: CRC must be located after CS."); } >iram1_0_seg :iram1_0_phdr .lit4 : ALIGN(4) diff --git a/tools/elf2bin.py b/tools/elf2bin.py index 607d07405..9c4a1b2ce 100755 --- a/tools/elf2bin.py +++ b/tools/elf2bin.py @@ -93,6 +93,8 @@ def write_bin(out, elf, segments, to_addr, flash_mode, flash_size, flash_freq, p out.write(bytearray([0])) out.write(bytearray([checksum])) if to_addr != 0: + if total_size + 8 > to_addr: + raise Exception('Bin image of ' + elf + ' is too big, actual size ' + str(total_size + 8) + ', target size ' + str(to_addr) + '.') while total_size < to_addr: out.write(bytearray([0xaa])) total_size += 1