Does anyone have any thoughts on this? I can start implementing the changes and set up a PR.
John Rippetoe Software Engineer Robotic Research, LLC (240) 631-0008 ----- Original Message ----- From: "John Rippetoe" <jrippe...@roboticresearch.com> To: "dev" <dev@nuttx.apache.org> Sent: Monday, March 23, 2020 6:17:05 PM Subject: Re: Build errors with inline functions On 3/20/20 5:40 PM, David Sidrane wrote: >> the error will crop back up if MPU support is enabled without also >> performing a protected build since up_mpu.c is only included in a >> protected build. > Just a heads up there are some case on some HW (imxrt, maybe the K66 for the > DMA) were the MPU is needed to enable the proper access but not in protected > build. > I've dug through the arm portion of the repo and there appear to be a wide array of platforms affected. The solution consiss 1. For each chip, files that include mpu support need to add a conditional to two included files #ifdef CONFIG_ARM_MPU # include "mpu.h" # include "<chip>_mpuinit.h" #endif 2. Edit the Make.defs for each chip ifeq ($(CONFIG_ARM_MPU),y) CMN_CSRCS += up_mpu.c CHIP_CSRCS += stm32_mpuinit.c endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CHIP_CSRCS += stm32_userspace.c endif An alternative form I found in the imxrt Make.defs (thanks for pointing me in this direction David) ifeq ($(CONFIG_ARM_MPU),y) ifneq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += up_mpu.c endif CHIP_CSRCS += imxrt_mpuinit.c ifeq ($(CONFIG_BUILD_PROTECTED),y) CHIP_CSRCS += imxrt_userspace.c endif endif I personally think this is harder to read, but wanted to get other's opinions. Wrapping the <chip>_userspace.c inclusion feels unnecessary since a protected build can only be enabled when the mpu is enabled anyways. This block can also be split up so the inclusion of CMN and CHIP sources don't happen together if that is preferred. - John CONFIDENTIALITY NOTICE: This communication may contain private, confidential and privileged material for the sole use of the intended recipient. If you are not the intended recipient, please delete this e-mail and any attachments permanently.