System API of DA1458x Software Platform(三)

Serial Logging Interface API

系统提供了串行记录接口API。 可以将此接口用于记录目的,或通过UART与外部系统通信。 该API在arch_console.h头文件中定义。

void arch_puts(const char *s)

放字符串功能。 将字符串s推送到UART队列。

int arch_printf(const char *fmt, …)

Printf功能。 将格式化的输出放入UART队列。

void arch_printf_process(void)

定期从主循环调用此函数,以将队列的内容压入UART。

BLE Statistics API BLE统计API

系统提供了一个简单的API,以收集有关给定连接的统计信息。 与CFG_BLE_METRICS一起启用时,在接收中断中添加代码,该代码对设备与远程对等方通信期间的错误进行计数。 数据保存在以下类型的全局结构中:
类型定义结构

{
uint32_t rx_pkt;
uint32_t rx_err;
uint32_t rx_err_crc;
uint32_t rx_err_sync;
} arch_ble_metrics_t;

用户可以通过调用arch_ble_metrics_get()函数获得指向此结构的指针,并通过调用arch_ble_metrics_reset()函数来重置内容。

Development Mode API

为了跟踪常见错误并简化开发,SDK软件提供了一个配置标志,可以使用该配置标志来启用开发调试模式,称为CFG_DEVELOPMENT_DEBUG。
对于生产软件,应禁用此标志。 如果启用,则可以使用以下功能:
●SysRAM永远不会在深度睡眠模式下断电,从而使开发人员可以在深度睡眠模式下运行应用程序而无需对OTP进行编程。
●提供的验证是GPIO引脚不用于多个功能。
●硬件故障,NMI不可屏蔽中断和断言声明条件的断点会自动发出,以帮助开发人员连接调试器并跟踪错误原因。

GPIO Reservation

在开发调试模式下,在通过GPIO驱动程序发出操作之前,应用程序应使用RESERVE_GPIO(name,port,pin,func)函数保留GPIO引脚。 尝试保留已保留的引脚或尝试使用未保留的引脚将使应用程序断点。
GPIO保留功能在开发调试模式下也可以禁用,通过定义GPIO_DRV_PIN_ALLOC_MON_DISABLED标志,这样可以缩小内存消耗。

Assert, NMI and Hard Fault Handlers

在开发调试模式下,将ASSERT_ERROR()和ASSERT_WARNING()宏定义为断点。一旦检测到错误情况,程序将停止运行,用户可以连接调试器并找出导致错误的原因。在生产模式下(未定义CFG_DEVELOPMENT_DEBUG),ASSERT_WARNING()不执行任何操作,而ASSERT_ERROR()将使程序停留在while(1)循环中,以等待看门狗复位。
与ASSERT逻辑类似,硬故障和NMI处理程序都在开发模式下设置为断点,并且会在生产模式下引起复位。
在开发模式下,两个处理程序都将在发出断点之前在保留RAM中保留处理器状态的副本。
保存的状态信息包括以下内容:
寄存器值R0-R3,R12,LR,PC,PSR,SP,CFSR,HFSR,AFSR,MMAR,BFAR。
用户可以查看状态信息以尝试跟踪哪个命令已发出NMI或“硬故障”。NMI处理程序会将状态保存在地址0x81850中,硬件故障处理程序是保存在地址0x81800中。

Advanced Features API

Wake-Up and External Processor Configuration

在外部处理器应用程序中,设备应该能够在通过GTL发送消息时唤醒外部处理器,并在主机应用程序需要时从外部处理器唤醒。 此功能由两个配置标志控制:
●CFG_EXTERNAL_WAKEUP:定义该标志可使运行主机应用程序的外部处理器通过切换引脚的状态来唤醒DA1458x。
●CFG_WAKEUP_EXT_PROCESSOR:定义此标志可在GTL传输期间使引脚产生脉冲。
用于唤醒DA1458x的引脚和参数在user_periph_setup.h文件中定义,定义如下:EXTERNAL_WAKEUP_GPIO_PORT,EXTERNAL_WAKEUP_GPIO_PIN和EXTERNAL_WAKEUP_GPIO_POLARITY。 在同一头文件中,使用EXT_WAKEUP_PORT和EXT_WAKEUP_PIN定义定义了用于向外部主机发送GTL消息信号的引脚。

True Random Number Generator (TRNG)

程序员可以通过调用函数trng_acquire()来获得128位随机数,该函数的定义如下:void trng_acquire(uint8_t * trng_bits_ptr)在trng_bits_ptr指针中返回了128位(16字节)随机数。 要启用真随机数生成器,您需要定义CFG_TRNG标志。 系统初始化时会生成一个随机数,并将其用作C标准库随机数生成器的种子

Boost Output Voltage (DCDC_VBAT3V)

在升压电压配置的情况下,已提供函数syscntl_set_dcdc_vbat3v_level()来设置升压转换器的输出电压。 该函数定义如下:
void syscntl_set_dcdc_vbat3v_level(枚举SYSCNTL_DCDC_VBAT3V_LEVEL级别)此函数将根据以下枚举设置输出级别:

enum SYSCNTL_DCDC_VBAT3V_LEVEL
{
SYSCNTL_DCDC_VBAT3V_LEVEL_2V4 = 4// 2.4 V
SYSCNTL_DCDC_VBAT3V_LEVEL_2V5 = 5// 2.5 V
SYSCNTL_DCDC_VBAT3V_LEVEL_2V62 = 6// 2.62 V
SYSCNTL_DCDC_VBAT3V_LEVEL_2V76 = 7// 2.76 V
};
Near Field Control

可以控制所有活动连接的输出功率,以进一步降低功耗。 提供以下功能:
●void rf_nfm_enable(void):启用近场模式。
●void rf_nfm_disable(void):禁用近场模式。
●bool rf_nfm_is_enabled(void):检查是否启用近场模式,返回(true)或(false)

AES Crypto

DA1458x SoC带有AES加密硬件引擎。 该引擎是从堆栈中使用的,但是如果需要,也可以从用户中调用。 必须通过同步(通过消息)方式进行通信,以确保API的使用不会与从堆栈调用的操作冲突。 还提供了AES的纯软件实现,程序员可以将其用作替代方案。

Co-Existence

提供了一组功能来处理WLAN共存。 支持两个WLAN输入输入和BLE优先级输出。 提供的功能可处理每个连接的优先级和蓝牙状态。

DA1458x软件平台开发手册 DA1458x software platform Reference 3.2如何使用此文档 本文档的重点是作为参考,即开发人员不需要通读整个文档;读者的关键是熟悉本文中描述的概念,以便在开发过程中能够使用软件开发人员的指南,以获得所需的结果。 嵌入式,是新的和/或芯片对话框的da1458x系统软件开发平台(SOC)建议审查的内容,然后通过阅读从3.1节到4.8节,然后11节熟悉开发环境的支持。然后建议阅读和使用文档[ 15 ]。如果有人需要更好的理解,并且想深入研究某个特定的主题,他/她可以回到这个文档中,在这个引用中涉及这个主题的特定章节。为了更深入的分析,这个参考文件指向附录或其他文档中更深入的技术说明。 更详细地叙述具体的主题。 这个参考文档不打算提供对蓝牙低能耗的透彻理解,它既不包括内部数据的组织方式,也不涉及蓝牙设备如何相互通信以及设计支持的设计和应用时可能需要的关键设计决策和权衡。 它打算但是提供给软件开发商足够的理解对话的da1458x平台高级API的方法为BLE及其外围设备以及信心如何使发展更快、更好的应用程序时,使用da1458x SoC。蓝牙低能耗技术(2010)是蓝牙专用兴趣小组(SIG)发布的蓝牙4版核心规范的一部分。从4版本开始,蓝牙标准支持两种不同的无线技术系统:蓝牙低能量和基本利率(BR),通常被称为基本速率/增强数据率(BR / EDR)。 在蓝牙低功耗设计的早期阶段,SIG致力于以最小的功耗开发低复杂度的无线标准,并提供低带宽。 优化,从而使低成本应用。在这种情况下,蓝牙低能量被设计用来每次传输非常小的数据包,而消耗的功率明显少于 类似的BR / EDR设备。此外,它的设计还支持高效率的实现,具有严格的能源和硅预算,促进应用程序使用一个单一的硬币电池延长了一段时间。
### S32K144 Microcontroller AUTOSAR Configuration and Development Resources #### Overview of S32K144 with AUTOSAR Support The S32K144 microcontroller supports the AUTOSAR (Automotive Open System Architecture) standard, which facilitates modular software design for automotive applications. The integration of AUTOSAR on this platform allows developers to leverage standardized interfaces that abstract hardware-specific details through MCAL (Microcontroller Abstraction Layer). This abstraction simplifies portability across different platforms while ensuring efficient use of system resources. #### Key Components in AUTOSAR Configuration For configuring the S32K144 under an AUTOSAR environment, several key components are involved: - **MCU Initialization**: Proper initialization ensures all necessary peripherals operate correctly within specified parameters. - **Peripheral Drivers via MCAL**: Each peripheral such as GPIO, UART, I2C, SPI, CAN, ADC, etc., has corresponding driver modules provided by NXP or third-party vendors[^1]. - **Runtime Environment (RTE)**: Manages communication between application layers and lower-level drivers, enabling seamless interaction without direct manipulation of registers. - **Configuration Tools**: Utilizing tools like Vector's DaVinci Configurator Pro helps automate much of the setup process, reducing manual errors during configuration. #### Practical Example - GPIO Module Setup Using AUTOSAR To illustrate how one might set up a simple GPIO pin using AUTOSAR on the S32K144, consider the following steps encapsulated into code snippets: ```c // Define Pin Description Structure static const Port_PinType LedPin = { .portIndex = PORT_A, .pinNumber = 5u, }; // Initialize LED Pin During Startup Routine void InitLed(void){ /* Configure selected pin as output */ SchM_Enter_Mcal(); Port_SetPinMode(&LedPin, PORT_PIN_MODE_OUTPUT); SchM_Exit_Mcal(); } ``` This example demonstrates setting up a single GPIO pin as an output mode using the AUTOSAR-compliant API calls from the `Port` module[^2]. Note the usage of synchronization primitives (`SchM`) around critical sections where register access occurs directly. #### Additional Considerations When working with more complex systems involving multiple interconnected nodes communicating over various protocols, additional considerations include: - Ensuring consistent timing constraints throughout the network. - Implementing robust error handling mechanisms at both hardware and software levels. - Optimizing resource allocation based on real-time performance requirements. --related questions-- 1. What specific challenges arise when implementing low-power modes in S32K144-based designs? 2. How does integrating security features impact overall system architecture choices in AUTOSAR projects targeting S32K144? 3. Can you provide examples of best practices for debugging issues related to interrupt management in S32K144 devices running AUTOSAR stacks? 4. In what ways do diagnostic services play a role in maintaining reliability within distributed embedded networks built upon S32K144 processors? 5. Are there any particular guidelines recommended for optimizing memory footprint when deploying large-scale AUTOSAR configurations onto constrained environments like those found in S32K144?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydgd118

您的鼓励是我最大的动力!谢赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值