You might want to try: mon reset halt
Some hardware seems to require the "halt" at the end. I am about the furthest one can get from being an OpenOCD expert, so I couldn't tell you what the difference is. Chris On Thu, Apr 19, 2018 at 03:52:39PM -0400, Niall Begley wrote: > Hi Marko, > > That's extremely useful information, thank you. "Mon reset" is exactly the > command I was looking for, although I seem to be out of luck as my board > (HiFive1) doesn't appear to like that command: > > (gdb) break main > Breakpoint 1 at 0x20000be2: file > repos/apache-mynewt-core/apps/boot/src/boot.c, line 42. > (gdb) mon reset > JTAG tap: riscv.cpu tap/device found: 0x10e31913 (mfg: 0x489 (SiFive, > Inc.), part: 0x0e31, ver: 0x1) > halted at 0x20000418 due to debug interrupt > Timed out waiting for state 1. Increase timeout with riscv > set_command_timeout_sec. > in procedure 'reset' > in procedure 'ocd_bouncer' > > Even increasing the command timeout to 2 minutes doesn't help, as it just > hangs instead: > > (gdb) b main > Breakpoint 1 at 0x20000be2: file > repos/apache-mynewt-core/apps/boot/src/boot.c, line 42. > (gdb) mon reset > JTAG tap: riscv.cpu tap/device found: 0x10e31913 (mfg: 0x489 (SiFive, > Inc.), part: 0x0e31, ver: 0x1) > halted at 0x2000041e due to debug interrupt > > I guess resorting to using the console with some print statements isn't the > end of the world. I did previously try and get some printing out to a > serial window but it wasn't working and I wasn't sure if it was just > because the bootloader couldn't support that functionality or if I had set > it up incorrectly. It's good to know it should work in theory so that I > can go back and focus on implementing it correctly. > > > > On Thu, Apr 19, 2018 at 2:27 PM, marko kiiskila <ma...@runtime.io> wrote: > > > > > Just reset the target; it’ll restart from the beginning. > > Presumably the bootloader will do the same work every time it runs? > > ‘mon reset’ is what you’d issue from gdb prompt. > > > > You can enable console within bootloader, if absolutely necessary. > > Replace the console/stub package with console/full, and call sysinit() > > from your main. > > Note that bootloader size might increase it’s size such that you’ll need > > to shift any subsequent data in the flash further away. > > > > Hope that helps, > > M > > > > > On Apr 19, 2018, at 5:14 PM, Niall Begley <nbeg...@gmail.com> wrote: > > > > > > Hi everyone, I'm new to mynewt (and RTOS's in general) and I'm looking to > > > do something that I think is a little outside the scope of a lot of the > > > documentation on the mynewt site (as far as I can tell) and I was hoping > > to > > > get some guidance. > > > > > > Basically, I'm interested in modifying the existing digital signature > > > systems in place for secure boot loading, but I'm running into a problem > > > actually debugging the changes I'm making. When I run "newt run" on my > > > bootloader, GDB appears to only load when the digital signature is > > already > > > halfway through validation. For example, here is what the stack looks > > like > > > immediately after breaking into GDB when the bootloader is set to perform > > > RSA signature validation: > > > > > > #0 memset (dst=0x80002d28, c=c@entry=0, n=<optimized out>) at > > > repos/apache-mynewt-core/libc/baselibc/src/memset.c:24 > > > #1 0x200025ca in mbedtls_mpi_lset (X=X@entry=0x80002fd0, z=z@entry=0) > > at > > > repos/apache-mynewt-core/crypto/mbedtls/src/bignum.c:295 > > > #2 0x20002f0c in mbedtls_mpi_mul_mpi (X=X@entry=0x80002fd0, > > A=0x80002f54, > > > A@entry=0x80002fd0, B=B@entry=0x80002f84) > > > at repos/apache-mynewt-core/crypto/mbedtls/src/bignum.c:1193 > > > #3 0x20002f5a in mbedtls_mpi_mul_int (X=X@entry=0x80002fd0, > > > A=A@entry=0x80002fd0, > > > b=<optimized out>) > > > at repos/apache-mynewt-core/crypto/mbedtls/src/bignum.c:1220 > > > #4 0x200031e4 in mbedtls_mpi_div_mpi (Q=Q@entry=0x0, R=R@entry > > =0x80003694, > > > A=A@entry=0x80003694, B=B@entry=0x80003cec) > > > at repos/apache-mynewt-core/crypto/mbedtls/src/bignum.c:1388 > > > #5 0x20003320 in mbedtls_mpi_mod_mpi (R=R@entry=0x80003694, > > > A=A@entry=0x80003694, > > > B=B@entry=0x80003cec) > > > at repos/apache-mynewt-core/crypto/mbedtls/src/bignum.c:1460 > > > #6 0x20003648 in mbedtls_mpi_exp_mod (X=X@entry=0x800036e4, > > > A=A@entry=0x800036e4, > > > E=E@entry=0x80003cf8, N=N@entry=0x80003cec, > > > _RR=_RR@entry=0x80003d4c) at > > > repos/apache-mynewt-core/crypto/mbedtls/src/bignum.c:1662 > > > #7 0x20003a00 in mbedtls_rsa_public (ctx=ctx@entry=0x80003ce4, > > > input=input@entry=0x80003e2c > > > "\002\005\256\024\350R\fV\214\207(\222\246>\016j\222t\ > > 200d2V\327\265h9F\005 > > > \305\030\312t\255\357\b\024\203\020C)Ң\f!\031\024\203\035* > > b\220b\f!\031N\225\265\356\061F2\232\016|\024\203\035*\ > > 203\230\327\301H1\004", > > > output=output@entry=0x80003714 "\n\001") at > > > repos/apache-mynewt-core/crypto/mbedtls/src/rsa.c:312 > > > #8 0x20001946 in bootutil_cmp_rsasig ( > > > sig=0x80003e2c > > > "\002\005\256\024\350R\fV\214\207(\222\246>\016j\222t\ > > 200d2V\327\265h9F\005 > > > \305\030\312t\255\357\b\024\203\020C)Ң\f!\031\024\203\035* > > b\220b\f!\031N\225\265\356\061F2\232\016|\024\203\035*\ > > 203\230\327\301H1\004", > > > hlen=32, > > > hash=0x80003e0c > > > "u\362~\202\361\245\"\206\204\370aD\241JC\304#\352\202Ҫ\247\ > > 216yA)\002\341\071wNN\002\005\256\024\350R\fV\214\207(\222\ > > 246>\016j\222t\200d2V\327\265h9F\005 > > > \305\030\312t\255\357\b\024\203\020C)Ң\f!\031\024\203\035* > > b\220b\f!\031N\225\265\356\061F2\232\016|\024\203\035*\ > > 203\230\327\301H1\004", > > > ctx=0x80003ce4) at repos/apache-mynewt-core/boot/ > > bootutil/src/image_rsa.c:91 > > > #9 bootutil_verify_sig ( > > > hash=hash@entry=0x80003e0c > > > "u\362~\202\361\245\"\206\204\370aD\241JC\304#\352\202Ҫ\247\ > > 216yA)\002\341\071wNN\002\005\256\024\350R\fV\214\207(\222\ > > 246>\016j\222t\200d2V\327\265h9F\005 > > > \305\030\312t\255\357\b\024\203\020C)Ң\f!\031\024\203\035* > > b\220b\f!\031N\225\265\356\061F2\232\016|\024\203\035*\ > > 203\230\327\301H1\004", > > > hlen=hlen@entry=32, > > > sig=sig@entry=0x80003e2c > > > "\002\005\256\024\350R\fV\214\207(\222\246>\016j\222t\ > > 200d2V\327\265h9F\005 > > > \305\030\312t\255\357\b\024\203\020C)Ң\f!\031\024\203\035* > > b\220b\f!\031N\225\265\356\061F2\232\016|\024\203\035*\ > > 203\230\327\301H1\004", > > > slen=slen@entry=256, key_id=<optimized out>) at > > > repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c:145 > > > #10 0x20001842 in bootutil_img_validate (hdr=hdr@entry=0x800007c4 > > > <boot_data>, fap=fap@entry=0x20005e84 <sysflash_map_dflt+12>, > > > tmp_buf=<optimized out>, tmp_buf_sz=tmp_buf_sz@entry=256, > > > seed=seed@entry=0x0, seed_len=seed_len@entry=0, > > > out_hash=out_hash@entry=0x0) at > > > repos/apache-mynewt-core/boot/bootutil/src/image_validate.c:215 > > > #11 0x20000e2e in boot_image_check (fap=0x20005e84 > > <sysflash_map_dflt+12>, > > > hdr=0x800007c4 <boot_data>) > > > at repos/apache-mynewt-core/boot/bootutil/src/loader.c:518 > > > #12 boot_validate_slot (slot=slot@entry=0) at > > > repos/apache-mynewt-core/boot/bootutil/src/loader.c:576 > > > #13 0x200011b4 in boot_go (rsp=rsp@entry=0x80003fd4) at > > > repos/apache-mynewt-core/boot/bootutil/src/loader.c:1054 > > > #14 0x20000bf2 in main () at > > > repos/apache-mynewt-core/apps/boot/src/boot.c:54 > > > > > > Is there a better way to do this with GDB? Is it possible to use one of > > > the logging or console packages to perform prints? Any tips in general? > > > > > > Thanks everyone > > > >