Aceinna / platform-aceinna_imu

Aceinna Navigation Studio: open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware
https://marketplace.visualstudio.com/items?itemName=platformio.aceinna-ide
36 stars 26 forks source link

IMU383 debugging can be done only with old OOCD driver #11

Closed AndreyBondarev closed 4 years ago

AndreyBondarev commented 5 years ago
  1. IMU383 debugging can be done only with old OOCD driver. Workaround - debug in OpenIMU330 mode.
  2. OpenIMU330 direct code loading via ST-Link probe fails with old OOCD. Only works with debugger.
valeros commented 5 years ago

Hi @AndreyBondarev !

IMU383 debugging can be done only with old OOCD driver. Workaround - debug in OpenIMU330 mode.

Can you please describe the problem in more detail? What does OpenIMU330 mode mean? If I recall correctly we downgraded the OOCD package because L432 target didn't work with the latest OOCD on your machine.

OpenIMU330 direct code loading via ST-Link probe fails with old OOCD. Only works with debugger.

Does this board have a bootloader? Because according to the linker script the firmware is uploaded at address ORIGIN = 0x08000000 but at the same time, there is an offset specified in the board manifest. Which one is correct?

AndreyBondarev commented 5 years ago

Hi Valerii.

OpenIMU330 and IMU383 is essentially same platform but different applications. IMU383 has bootloader and OpenIMU330 does not since application size is big and bootloader just does not fit. Potentially IMU383 can be debugged without bootloader (code relocated to 0x08000000) and then built for bootloader configuration but it’s not optimal solution since application interacts with bootloader and this part cannot be debugged. Downgraded OOCD driver allows to debug with bootloader. But If I’m not mistaken downgraded version is not part of the standard installation (unless it changed).

Thank you.

Andrey

From: Valerii Koval [mailto:notifications@github.com] Sent: Monday, October 7, 2019 5:01 AM To: Aceinna/platform-aceinna_imu platform-aceinna_imu@noreply.github.com Cc: Andrey Bondarev abondarev@aceinna.com; Mention mention@noreply.github.com Subject: Re: [Aceinna/platform-aceinna_imu] IMU383 debugging can be done only with old OOCD driver (#11)

Hi @AndreyBondarevhttps://github.com/AndreyBondarev !

IMU383 debugging can be done only with old OOCD driver. Workaround - debug in OpenIMU330 mode.

Can you please describe the problem in more detail? What does OpenIMU330 mode mean? If I recall correctly we downgraded the OOCD package because L432 target didn't work with the latest OOCD on your machine.

OpenIMU330 direct code loading via ST-Link probe fails with old OOCD. Only works with debugger.

Does this board have a bootloader? Because according to the linker scripthttps://github.com/Aceinna/platform-aceinna_imu/blob/develop/examples/OpenIMU330BI/IMU/ldscripts/stm32l431cb.ld the firmware is uploaded at address ORIGIN = 0x08000000 but at the same time, there is an offset specified in the board manifesthttps://github.com/Aceinna/platform-aceinna_imu/blob/develop/boards/OpenIMU330.json#L28. Which one is correct?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/Aceinna/platform-aceinna_imu/issues/11?email_source=notifications&email_token=AIOSZ3RUTCA3OC3FJXSK2HLQNMQG5A5CNFSM4I5SSZG2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAQB3SA#issuecomment-538975688, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AIOSZ3QKPZG6CJXYSYH6FGTQNMQG5ANCNFSM4I5SSZGQ.

valeros commented 5 years ago

I deleted the flash_offset field from the OpenIMU330BI manifest (now the firmware is uploaded to the correct location), but the application still doesn't start. Experimentally I found that if I compile the firmware in debug mode (simply with flags -Og, -ggdb) it works as expected. Is it possible that there is undefined behavior somewhere in the code or maybe the compiler optimized something out?

AndreyBondarev commented 5 years ago

Looks like compiler optimizes things the way that code does not properly start (somwhere on low level). -Og optimization works well.

m5horton commented 4 years ago

Working now