From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by sourceware.org (Postfix) with ESMTPS id AF1CD3858CDB for ; Sat, 25 Nov 2023 16:42:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AF1CD3858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AF1CD3858CDB Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::431 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700930533; cv=none; b=vUKQWeErvr7PcEaMO5QD7XAVRUgevaBlOdifaDECqdtfoi5s1pcgfgU1W+onyJJGWuYdaJM1fm/1GxVuzU+H2ALZt9cASM+UPIbRP1Igggh4pVOoIP/1zUNiCZiaMK8u3OukS6UTnRoRTTwKxTTGn1yZswlJ3K/wT9F78mM7/nA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700930533; c=relaxed/simple; bh=wGjiIAXsuQvUHDUu3u982sMr04ockeNFRo4ETyq7peQ=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=jKJKn7eW1DA64eAU36KBsRxnqniAn2EVBV//7urIF8aW5GFWMNxrRu5b4dEgGYeCGUjsvSkFeTOBWR4VhKawwcQtBtiVNJOmwwnxw6vvCKMMCmPe+EEXK00c+51rcxJLTxiweeKBevy04is+a4FVSxcLZO0iJBCyHZIbNu4H4co= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-332c0c32d19so1930832f8f.3 for ; Sat, 25 Nov 2023 08:42:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700930528; x=1701535328; darn=gcc.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=InsmlF2vd9iMD5ViimDoEnmhXckzlM963Qy7vRKvcuU=; b=QxwmIcerG+Ei9O6vzRpJANLxh2bAgF8shsQLmMV+RkSkQ5cFMTK5U65R6+o9NMuO6F EvOLC5Uh61IVWCsqGhU1AwDDjQYNa31bwcoHCD84pXtWyBgXKA3gwcT+B+F+nc1jCBas Bt9sdYP2sz3Fxm44UeK+B4yhoB9u+5yKw3/U0WgIh1EUHc5cVgdRnnAjd3YCLNttQ+yX dd3gkwFsBv/p54XX8U/vTcFIHofNdxPjBEckjv+I7xpG4ZCChAnnY/5AI3I1/CcgW54k WWu5LsXET2J8dpvgiJc57M70ocnYYVIyIBWCVw239an84xYOA/aDq/kGtz/O8wEMigjd bWBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700930528; x=1701535328; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=InsmlF2vd9iMD5ViimDoEnmhXckzlM963Qy7vRKvcuU=; b=LF0YRJBFrpi55h5bZSfYVGxqnKEq1edzx8fFv/ckZwNvGcugEP4WA5pD4j+v3Hgknj o/pMXzGJWyO8Q4UA4A9qH2h9c9iCu9rNmkRHGQ5a3ER2EliqSpwc0MLsmffveW8if2Se SPhGRXJ3S1//y4iDE5HosELkZX814HlfX46iK13ivDEJyKUh5rMO/96h9wvWfGP6q5jL 9AAmVUxhCARIwcEaYryYqkWh03jibjrSz9pSr+9+nOBuLuiOij9Y4M9HWZ9d0nHLzv5J 6Hg14PqLwCy2rzzIDAuhkUHV+3SBXy3WLmABTgyviyH8/tIPZIaZ+ghUa28DAIECLcJJ E5AA== X-Gm-Message-State: AOJu0YwMLVPca0hHDsiOsTg5dbLulZwkRlWkdi36e9APPU1RsBEYQExI E3rCUDXSA7lqSsAmun4GW7nQRXHsOcHW/aSYzoyVHtIpz+4= X-Google-Smtp-Source: AGHT+IE81RRwcThvYWi3MdHc9c1EuNYktcgFrqnW9kq6hFvA8YnWpSutCQkRpr0oynfTy1FPHfEVuYF5jl0jLC90P0Q= X-Received: by 2002:adf:f2c7:0:b0:332:c331:fb0b with SMTP id d7-20020adff2c7000000b00332c331fb0bmr4749832wrp.44.1700930528217; Sat, 25 Nov 2023 08:42:08 -0800 (PST) MIME-Version: 1.0 From: Massimiliano Cialdi Date: Sat, 25 Nov 2023 17:41:57 +0100 Message-ID: Subject: Guidance on Tools for Implementing Dynamic Plugin System in Firmware To: gcc-help Content-Type: multipart/alternative; boundary="000000000000ec0e44060afcbf82" X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000ec0e44060afcbf82 Content-Type: text/plain; charset="UTF-8" Hello, I am engaged in a firmware project with Cortex-M microcontrollers, focusing on implementing dynamic plugin functionality. My setup includes FreeRTOS, LittleFS, and gcc-arm-none-eabi. I'm exploring creating a dynamic linker/loader for plugins. My queries are: 1. *File Format and Loading:* Recommendations for file formats and loading strategies in a dynamic linker/loader system? 2. *Function Entry Points:* Best practices for managing function entry points in non-PIC firmware for plugins? 3. *Memory Management:* Managing different memory types (DTCM and SRAM) for plugin code and data. 4. *Compilation and Linking:* Specific parameters or considerations for compiling and linking, including post-linking steps. 5. *Security and Stability:* Ensuring safety and reliability when loading plugins dynamically. 6. *Toolchain Adequacy:* Are the standard tools in the gcc-arm-none-eabi toolchain sufficient for this task, or is there a need for third-party tools or custom solutions? Any advice, experiences, or references to similar projects would be immensely helpful. Thank you! best regards -- Et nunc, auxilium solis, vincam! Oppugnatio solaris! VIS! Massimiliano Cialdi --000000000000ec0e44060afcbf82--