Hi Matias,

Yes, it could be a nice idea.

I need to re-test and write the documentation!

BR,

Alan

On 8/27/20, Matias N. <mat...@imap.cc> wrote:
> It would be cool to add a guide for this in the documentation (could be
> under "guides" in principle).
>
> Best,
> Matias
>
> On Thu, Aug 27, 2020, at 18:29, Alan Carvalho de Assis wrote:
>> Hi John,
>>
>> On 8/27/20, John Rippetoe <jrippe...@roboticresearch.com> wrote:
>> > Hi everyone,
>> >
>> > I recently jumped back into working on the FDCAN driver for the STM32H7
>> > and have something working which I would like to test further. In doing
>> > so, I was hoping to easily debug with GDB through OpenOCD, but am
>> > having
>> > some issues with the necessary setup. So far I have compiled and tested
>> > the upstream master of OpenOCD, master of the Sony OpenOCD fork, and a
>> > third build that merged the latest upstream OpenOCD commits into the
>> > Sony fork. With all three, I am only ever able to see the currently
>> > running thread (nearly always IDLE) when running the "info threads"
>> > command.
>> >
>> > So my question is, does anyone have any experience getting this
>> > working?
>> > I looked through the mailing list and saw a few messages regarding this
>> > very thing for different architectures. I've also dug around on the
>> > internet to help me piece together what needed to be done to get this
>> > working. I initially got the impression that as long as OpenOCD
>> > supports
>> > your chip, thread aware-debugging should be possible, but now I'm not
>> > so
>> > sure. I modified nuttx_header.h within OpenOCD with the correct offset
>> > values as noted here
>> >
>> > https://micro-ros.github.io/docs/tutorials/advanced/nuttx/debugging/
>> >
>> > That didn't change anything, unfortunately. I also thought it was
>> > possible this step was no longer needed based on the Sony fork's wiki
>> > page
>> >
>> > https://github.com/sony/openocd-nuttx/wiki
>> >
>> > The monitor commands listed there gave me "invalid command name" errors
>> > when loading my nuttx binary.
>> >
>> > Any help on this would be greatly appreciated.
>> >
>>
>> I tested it some years ago and Masayuki gave me some important
>> instructions:
>>
>> 1) You need to include "-rtos nuttx" in the target create line of the
>> /usr/local/share/openocd/scripts/target/stm32f4x.cfg to use with
>> stm32f4discovery board:
>>
>> target create $_TARGETNAME cortex_m -endian $_ENDIAN -dap
>> $_CHIPNAME.dap -rtos nuttx
>>
>> 2) Add this code to your .gdbinit
>>
>> define print-offset
>>   print /x &((struct tcb_s *)(0))->pid
>>   print /x &((struct tcb_s *)(0))->xcp.regs
>>   print /x &((struct tcb_s *)(0))->task_state
>>   print /x &((struct tcb_s *)(0))->name
>>   print /x sizeof(((struct tcb_s *)(0))->name)
>> end
>>
>> Then start gdb with nuttx to load the symbol.
>>
>> $ arm-none-eabi-gdb ./nuttx
>>
>> Before connecting to the target, obtain the symbol offsets in tcb.
>>
>> (gdb) print-offset
>> $1 = 0xc
>> $2 = 0x80
>> $3 = 0x1a
>> $4 = 0xcc
>> $5 = 0x20
>> (gdb)
>>
>> Then you need to put those value inside the header file:
>> openocd/src/rtos/nuttx_header.h replacing the existing value:
>>
>> /* default offset */
>> #define PID  0xc
>> #define XCPREG  0x70
>> #define STATE 0x19
>> #define NAME 0xb8
>> #define NAME_SIZE 32
>>
>> Compile and install again openocd with the right values.
>>
>> I hope it help you!
>>
>> BR,
>>
>> Alan
>>
>

Reply via email to