Address Copilot remarks

pull/714/head
Mattia Moffa 2026-03-13 17:59:47 +01:00 committed by Daniele Lacamera
parent 087b251208
commit 39d1507f06
4 changed files with 64 additions and 35 deletions

View File

@ -22,6 +22,7 @@
#ifdef TARGET_nrf54l
#include <stdint.h>
#include <inttypes.h>
#include <string.h>
@ -67,8 +68,8 @@ static void uart_init_device(int device, uint32_t bitrate, uint8_t data, char pa
((port << UART_PSEL_RXD_PORT_Pos) & UART_PSEL_RXD_PORT_Msk);
UART_PSEL_CTS(device) = UART_PSEL_CTS_CONNECT_Disconnected;
UART_PSEL_RTS(device) = UART_PSEL_RTS_CONNECT_Disconnected;
UART_BAUDRATE(device) = UART_BAUDRATE_BAUDRATE_Baud115200;
UART_CONFIG(device) = UART_CONFIG_8N1; /* 8N1, no HW flow control */
UART_BAUDRATE(device) = UART_BAUDRATE_VALUE(bitrate);
UART_CONFIG(device) = UART_CONFIG_VALUE(data, parity, stop);
UART_ENABLE(device) = UART_ENABLE_ENABLE_Enabled;
}
@ -99,6 +100,12 @@ void uart_write_raw(int device, const char* buffer, unsigned int sz)
(UART_EVENTS_DMA_TX_BUSERROR(device) == 0))
;
if (UART_EVENTS_DMA_TX_BUSERROR(device) != 0) {
UART_TASKS_DMA_TX_STOP(device) =
UART_TASKS_DMA_TX_STOP_STOP_Trigger;
break;
}
sz -= xfer;
buffer += xfer;
}
@ -109,13 +116,18 @@ void uart_write_device(int device, const char* buf, unsigned int sz)
static char buffer[UART_WRITE_BUF_SIZE];
int bufsz = 0;
for(int i=0; i<(int)sz && bufsz < UART_WRITE_BUF_SIZE; i++)
{
for (int i = 0; i < (int)sz && bufsz < UART_WRITE_BUF_SIZE; i++) {
char ch = (char) buf[i];
if(ch == '\r')
if (ch == '\r')
continue;
if(ch == '\n')
if (ch == '\n') {
if (bufsz >= (UART_WRITE_BUF_SIZE - 1))
break;
buffer[bufsz++] = '\r';
}
buffer[bufsz++] = ch;
}
uart_write_raw(device, buffer, bufsz);
@ -299,6 +311,9 @@ void uart_init(void)
static uintptr_t ext_flash_addr_calc(uintptr_t address)
{
/* offset external flash addresses by the update partition address */
if (address < WOLFBOOT_PARTITION_UPDATE_ADDRESS) {
return 0;
}
address -= WOLFBOOT_PARTITION_UPDATE_ADDRESS;
return address;
}
@ -307,7 +322,8 @@ int ext_flash_write(uintptr_t address, const uint8_t *data, int len)
{
#ifdef DEBUG_FLASH
uintptr_t addr = ext_flash_addr_calc(address);
wolfBoot_printf("Ext Write: Len %d, Addr 0x%x (off 0x%x) -> 0x%x\n",
wolfBoot_printf("Ext Write: Len %d, Addr 0x%" PRIxPTR " (off 0x%" PRIxPTR
") -> %p\n",
len, address, addr, data);
#endif
return 0;
@ -317,7 +333,8 @@ int ext_flash_read(uintptr_t address, uint8_t *data, int len)
{
#ifdef DEBUG_FLASH
uintptr_t addr = ext_flash_addr_calc(address);
wolfBoot_printf("Ext Read: Len %d, Addr 0x%x (off 0x%x) -> %p\n",
wolfBoot_printf("Ext Read: Len %d, Addr 0x%" PRIxPTR " (off 0x%" PRIxPTR
") -> %p\n",
len, address, addr, data);
#endif
memset(data, FLASH_BYTE_ERASED, len);
@ -328,7 +345,8 @@ int ext_flash_erase(uintptr_t address, int len)
{
#ifdef DEBUG_FLASH
uintptr_t addr = ext_flash_addr_calc(address);
wolfBoot_printf("Ext Erase: Len %d, Addr 0x%x (off 0x%x)\n",
wolfBoot_printf("Ext Erase: Len %d, Addr 0x%" PRIxPTR " (off 0x%" PRIxPTR
")\n",
len, address, addr);
#endif
return 0;

View File

@ -379,9 +379,13 @@ static inline int hal_uart_pin_num_rx(int device)
#define UART_PSEL_CTS_CONNECT_Disconnected (0x1UL << 31)
#define UART_PSEL_RTS_CONNECT_Disconnected (0x1UL << 31)
#define UART_CONFIG_FRAMESIZE_Pos 9UL
#define UART_CONFIG_FRAMESIZE_8bit 0x8UL
#define UART_CONFIG_8N1 (UART_CONFIG_FRAMESIZE_8bit << UART_CONFIG_FRAMESIZE_Pos)
#define UART_CONFIG_VALUE(framesize, parity, stop) \
((framesize << 9UL) | \
((parity == 'E') ? 0x00E : \
(parity == 'O') ? 0x10E : \
0x000) | \
((stop == 2) ? 0x10 : \
0x00))
#define UART_TASKS_DMA_TX_START_START_Trigger 0x1UL
#define UART_TASKS_DMA_TX_STOP_STOP_Trigger 0x1UL
@ -389,9 +393,24 @@ static inline int hal_uart_pin_num_rx(int device)
#define UART_TASKS_DMA_RX_START_START_Trigger 0x1UL
#define UART_TASKS_DMA_RX_STOP_STOP_Trigger 0x1UL
#define UART_BAUDRATE_BAUDRATE_Baud115200 0x01D60000UL
#define BAUD_115200 UART_BAUDRATE_BAUDRATE_Baud115200
#define UART_BAUDRATE_VALUE(rate) (rate == 1200) ? 0x0004F000 : \
(rate == 2400) ? 0x0009D000 : \
(rate == 4800) ? 0x0013B000 : \
(rate == 9600) ? 0x00275000 : \
(rate == 14400) ? 0x003AF000 : \
(rate == 19200) ? 0x004EA000 : \
(rate == 28800) ? 0x0075C000 : \
(rate == 31250) ? 0x00800000 : \
(rate == 38400) ? 0x009D0000 : \
(rate == 56000) ? 0x00E50000 : \
(rate == 57600) ? 0x00EB0000 : \
(rate == 76800) ? 0x013A9000 : \
(rate == 115200) ? 0x01D60000 : \
(rate == 230400) ? 0x03B00000 : \
(rate == 250000) ? 0x04000000 : \
(rate == 460800) ? 0x07400000 : \
(rate == 921600) ? 0x0F000000 : \
(rate == 1000000) ? 0x10000000 : 0
/* Nordic PMIC */
#define PMIC_TWIM_PORT 1

View File

@ -27,7 +27,7 @@
#ifdef TARGET_nrf54l
#if defined(SPI_FLASH) || defined(WOLFBOOT_TPM)
#if defined(SPI_FLASH)
#include "hal/nrf54l.h"
#include "hal/spi/spi_drv_nrf54l.h"
@ -85,10 +85,14 @@ void RAMFUNCTION spi_write(const char byte)
SPI_DMA_TX_LIST = 0;
SPI_TASKS_START = SPIM_TASKS_START_TASKS_START_Trigger;
while (SPI_EVENTS_END == 0)
while (SPI_EVENTS_END == 0 &&
SPI_EVENTS_DMA_RX_BUSERROR == 0 &&
SPI_EVENTS_DMA_TX_BUSERROR == 0)
;
SPI_TASKS_STOP = SPIM_TASKS_STOP_TASKS_STOP_Trigger;
while (SPI_EVENTS_STOPPED == 0)
while (SPI_EVENTS_STOPPED == 0 &&
SPI_EVENTS_DMA_RX_BUSERROR == 0 &&
SPI_EVENTS_DMA_TX_BUSERROR == 0)
;
SPI_EVENTS_STOPPED = 0;
spi_rx_ready = 1;
@ -144,21 +148,5 @@ void spi_release(void)
}
#ifdef WOLFBOOT_TPM
int spi_xfer(int cs, const uint8_t* tx, uint8_t* rx, uint32_t sz, int flags)
{
uint32_t i;
spi_cs_on(SPI_CS_TPM_PIO_BASE, cs);
for (i = 0; i < sz; i++) {
spi_write((const char)tx[i]);
rx[i] = spi_read();
}
if (!(flags & SPI_XFER_FLAG_CONTINUE)) {
spi_cs_off(SPI_CS_TPM_PIO_BASE, cs);
}
return 0;
}
#endif /* WOLFBOOT_TPM */
#endif /* SPI_FLASH || WOLFBOOT_TPM */
#endif /* SPI_FLASH */
#endif /* TARGET_nrf54l */

View File

@ -48,6 +48,10 @@
#define SPI_MISO_PIN 27
#endif
#ifndef SPI_CS_TPM
#define SPI_CS_TPM SPI_CS_PIN
#endif
#define SPI_CS_FLASH SPI_CS_PIN
#define SPI_CS_PIO_BASE SPI_CS_PORT
#define SPI_CS_TPM_PIO_BASE SPI_CS_PORT