You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2023/07/23 11:56:48 UTC
[nuttx] 03/07: arch/nrf91: fix modem initialization
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit b3c5e05add9d0bf76a6e4021de971b6fa3c2c89d
Author: raiden00pl <ra...@railab.me>
AuthorDate: Sat Jul 22 14:17:16 2023 +0200
arch/nrf91: fix modem initialization
---
arch/arm/src/nrf91/nrf91_modem.c | 59 +++++++++++++++++++++++++++++-----------
arch/arm/src/nrf91/nrf91_modem.h | 8 +++++-
2 files changed, 50 insertions(+), 17 deletions(-)
diff --git a/arch/arm/src/nrf91/nrf91_modem.c b/arch/arm/src/nrf91/nrf91_modem.c
index 19a5dd5a52..90ebe45d81 100644
--- a/arch/arm/src/nrf91/nrf91_modem.c
+++ b/arch/arm/src/nrf91/nrf91_modem.c
@@ -47,6 +47,47 @@
# error NRF91 modem requires using LFXO as the LFCLK source
#endif
+/****************************************************************************
+ * Private Function Prototypes
+ ****************************************************************************/
+
+static void nrf91_modem_fault_handler(struct nrf_modem_fault_info *info);
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/* Modem library parameters - must be allocated in data segment */
+
+static const struct nrf_modem_init_params g_init_params =
+{
+ .shmem =
+ {
+ .ctrl =
+ {
+ .base = NRF91_SHMEM_CTRL_BASE,
+ .size = NRF91_SHMEM_CTRL_SIZE
+ },
+ .tx =
+ {
+ .base = NRF91_SHMEM_TX_BASE,
+ .size = NRF91_SHMEM_TX_SIZE
+ },
+ .rx =
+ {
+ .base = NRF91_SHMEM_RX_BASE,
+ .size = NRF91_SHMEM_RX_SIZE
+ },
+ .trace =
+ {
+ .base = NRF91_SHMEM_TRACE_BASE,
+ .size = NRF91_SHMEM_TRACE_SIZE
+ }
+ },
+ .ipc_irq_prio = NVIC_SYSH_PRIORITY_DEFAULT,
+ .fault_handler = nrf91_modem_fault_handler
+};
+
/****************************************************************************
* Private Functions
****************************************************************************/
@@ -71,25 +112,11 @@ static void nrf91_modem_fault_handler(struct nrf_modem_fault_info *info)
int nrf91_modem_initialize(void)
{
- struct nrf_modem_init_params init_params;
- int ret = OK;
-
- /* Modem parameters */
-
- init_params.shmem.ctrl.base = NRF91_SHMEM_CTRL_BASE;
- init_params.shmem.ctrl.size = NRF91_SHMEM_CTRL_SIZE;
- init_params.shmem.tx.base = NRF91_SHMEM_TX_BASE;
- init_params.shmem.tx.size = NRF91_SHMEM_TX_SIZE;
- init_params.shmem.rx.base = NRF91_SHMEM_RX_BASE;
- init_params.shmem.rx.size = NRF91_SHMEM_RX_SIZE;
- init_params.shmem.trace.base = NRF91_SHMEM_TRACE_BASE;
- init_params.shmem.trace.size = NRF91_SHMEM_TRACE_SIZE;
- init_params.ipc_irq_prio = NVIC_SYSH_PRIORITY_DEFAULT;
- init_params.fault_handler = nrf91_modem_fault_handler;
+ int ret = OK;
/* Initialize modem */
- ret = nrf_modem_init(&init_params);
+ ret = nrf_modem_init(&g_init_params);
if (ret < 0)
{
nerr("nrf_modem_init failed %d\n", ret);
diff --git a/arch/arm/src/nrf91/nrf91_modem.h b/arch/arm/src/nrf91/nrf91_modem.h
index 9dca967bbe..a4dfeda08d 100644
--- a/arch/arm/src/nrf91/nrf91_modem.h
+++ b/arch/arm/src/nrf91/nrf91_modem.h
@@ -24,6 +24,8 @@
#include <nuttx/config.h>
+#include <nuttx/mm/mm.h>
+
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
@@ -32,12 +34,16 @@
#define NRF91_SHMEM_CTRL_SIZE (0x4e8)
+/* REVISIT: heap overhead */
+
+#define HEAP_OVERHEAD (400)
+
/* Shared memory configuration */
#define NRF91_SHMEM_START_ADDR (CONFIG_RAM_START)
#define NRF91_SHMEM_CTRL_BASE (NRF91_SHMEM_START_ADDR)
#define NRF91_SHMEM_TX_BASE (NRF91_SHMEM_CTRL_BASE+NRF91_SHMEM_CTRL_SIZE)
-#define NRF91_SHMEM_TX_SIZE (CONFIG_NRF91_MODEM_SHMEM_TX_SIZE)
+#define NRF91_SHMEM_TX_SIZE (CONFIG_NRF91_MODEM_SHMEM_TX_SIZE-HEAP_OVERHEAD)
#define NRF91_SHMEM_RX_BASE (NRF91_SHMEM_TX_BASE+NRF91_SHMEM_TX_SIZE)
#define NRF91_SHMEM_RX_SIZE (CONFIG_NRF91_MODEM_SHMEM_RX_SIZE)
#define NRF91_SHMEM_TRACE_BASE (NRF91_SHMEM_RX_BASE+NRF91_SHMEM_RX_SIZE)