ZHCADN6 January 2024 AM67 , AM67A , AM68 , AM68A , AM69A , DRA821U , DRA821U-Q1 , DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4AEN-Q1 , TDA4AH-Q1 , TDA4AL-Q1 , TDA4AP-Q1 , TDA4APE-Q1 , TDA4VE-Q1 , TDA4VEN-Q1 , TDA4VH-Q1 , TDA4VL-Q1 , TDA4VM , TDA4VM-Q1 , TDA4VP-Q1 , TDA4VPE-Q1
將多核日志打印到串行端口的軟件級設(shè)計是一個復(fù)雜的過程。了解此多核日志輸出系統(tǒng)有助于自定義自有系統(tǒng)輸出的設(shè)計。默認(rèn)情況下,U-BOOT 和內(nèi)核會初始化一個串行端口用于日志輸出。有關(guān)驅(qū)動程序和其他相關(guān)信息的詳情,請參閱此 U-BOOT/內(nèi)核文檔。該串行端口始終在 A72 側(cè)進(jìn)行控制。A72 內(nèi)核的日志將直接通過此串行端口而打印。但是,其他內(nèi)核的日志首先被放入共享存儲器中,然后由 A72 應(yīng)用程序讀取。具體過程如下:
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;