ZHCADN6 January   2024 DRA821U , DRA821U-Q1 , TDA4AL-Q1 , TDA4VH-Q1 , TDA4VL-Q1 , TDA4VM , TDA4VM-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1UART 简介
    1. 1.1 Jacinto 7 UART 概述
    2. 1.2 Jacinto 7 UART 特性
    3. 1.3 Jacinto 7 UART 功能简介
  5. 2UART 使用概述
    1. 2.1 WKUP_UART0 用法
    2. 2.2 MCU_UART0 用法
    3. 2.3 MAIN_UARTx 用法
  6. 3软件模块上的日志级设计
  7. 4更改 UART 实例
    1. 4.1 更改 MAIN 域的 MAIN_UARTx
    2. 4.2 为 DSP/MCU 设置独立 UART 端口
  8. 5总结
  9. 6参考资料

MAIN_UARTx 用法

  1. 默认 SDK 将使用 MAIN_UARTx 来打印 HLOS 的引导日志。
  2. 对于 TDA4X 系列处理器,MAIN_UARTx 用于打印 APP 日志以及 A72、R5F 和 DSP 内核的引导日志。

将多核日志打印到串行端口的软件级设计是一个复杂的过程。了解此多核日志输出系统有助于自定义自有系统输出的设计。默认情况下,U-BOOT 和内核会初始化一个串行端口用于日志输出。有关驱动程序和其他相关信息的详情,请参阅此 U-BOOT/内核文档。该串行端口始终在 A72 侧进行控制。A72 内核的日志将直接通过此串行端口而打印。但是,其他内核的日志首先被放入共享存储器中,然后由 A72 应用程序读取。具体过程如下:

  1. 除 A72 内核之外,每个内核的 OS 引导都将调用 appInit 函数来初始化图 2-3 中所示的 256KB 共享存储器,用于存储日志。
    GUID-45C279F6-79FC-4011-99C1-72CDDD6E77F8-low.png图 2-3 代码上的日志共享存储器定义
  2. 此共享存储器将分为 16 个部分。每个部分总共有 16KB,并且每个部分的前 32 个字节用来存储一个显示了以下代码块的结构。此结构分别用于显示指针在读取和写入中的位置。此共享存储器的其余部分用于日志输出。
    typedef struct {
    
     /**< Init by reader to 0 */
    
        uint32_t log_rd_idx;/**< Init by writer to 0 */
        uint32_t log_wr_idx;
    
    /**<  Init by writer to APP_LOG_AREA_VALID_FLAG.
     reader will ignore this CPU shared mem log
     until the writer sets this
     to APP_LOG_AREA_VALID_FLAG */ 
    
        uint32_t log_area_is_valid;
     
     /**< CPU sync state */
        uint32_t log_cpu_sync_state;   
    
    /**< Init by writer to CPU name, used by reader to add a prefix when writing to console device */
        uint8_t  log_cpu_name[APP_LOG_MAX_CPU_NAME]; 
        
        /**< memory into which logs are written by this CPU */
    
        uint8_t  log_mem[APP_LOG_PER_CPU_MEM_SIZE]; 
    } app_log_cpu_shared_mem_t;
  3. 除了 A72 内核之外,无论是使用 printf 还是 UART_print,其他内核的日志都将通过 appLogPrintf 写入此共享存储器。同时,此输出日志的时间戳也将写入此共享存储器,如图 2-4 所示。
    GUID-2A7E4BA8-FF74-432B-A67A-3D14CB28766C-low.png图 2-4 MCU/DSP 内核写入日志至共享存储器
  4. A72 应用程序 vx_app_arm_remote_log.out 将从 Linux 映射此共享存储器。它每秒读取存储器以提取除 A72 内核之外的每个内核的日志,并添加相应内核的名称并将其输出到图 2-5 中所示的串行端口。
    GUID-270A2A48-98CB-47D0-9989-1E8AF8D5687E-low.png图 2-5 A72 内核从共享存储器中读取日志