展訊平台如何除錯之打LOG 串列埠log

2021-06-05 12:59:40 字數 1498 閱讀 7359

公司最近做一款資料卡,還是用的展訊的8800,板子還沒回來,想先在8802上實驗一下!但是在移植到8802上的時候板子一直都跑不起來。以前出現問題的時候第一反映就是去打log,查異常,但是這次貌似死得很早,根本就認不出diag!怎麼辦呢?

在這種情況下就用串列埠來列印吧,選擇的理由是串列埠初始化簡單,列印工具普遍!

在確定了不是flash的問題後,就要確定boot是不是跑過去了,彙編跑過去後進入main裡面,在main.c裡面的main函式裡面把tf_main_nand.c裡面的對串列埠初始化的**考出來,

#define uart_base_clk 26000000

local void tf_uartinit(void)

好了,在main.c裡面加入tf_uartinit();串列埠初始化了,串列埠初始化完畢以後怎麼打串列埠log呢?當時也不知道,就全域性搜尋關於uarttrace之類的函式,結果在tf_main_nand.c裡面有這麼乙個函式,tf_uarttrace,好吧,移植一下,讓這個函式在main.c裡面就能用

#include "stdarg.h"

#define sio_tx_empty(s) ((s) & 0xff00)

#define wait_fifo_empty \

local void writechartouart(char c)

; *(volatile uint32*)0x84000000 = c;

}local void tf_sendmsgout(char * buf, int size)

writechartouart('\r');

writechartouart('\n');

}#define trace_log_msg \

va_start(args, x_format);\

nbuf = vsprintf(format_str, x_format, args);\

/* was there an error? */\

/* was the expanded string too long? */\

va_end(args);\

/* send message to serial buffer! */ \

tf_sendmsgout(format_str, nbuf + 1);

public void cg_tf_uarttrace(

const char *x_format, ...)

local void delay()

#define init_trace() cg_tf_uarttrace("%s,%d", __func__, __line__);\

delay()

ok,這樣加了自己的一些巨集,同時把這個列印函式所有要用的關聯巨集和函式拷貝出來,就好了。這樣的話就只要在程式裡面鋪滿 init_trace(),這樣在xp下自帶的串列埠輸出工具就可以知道程式到底走在**了!

展訊平台初步除錯筆記

local const nor flash config t s flash 64mbit 64kbyte cfg 如果bin檔案比較大,還有可以將各國語言的巨集關閉,只留下一國語言的巨集 英語或簡體中文 還可以刪掉一些開關機動畫,開關機動畫占用的大小比較大。還可以關掉一些其他應用的巨集 藍芽的巨集...

展訊平台 mimi教程

資源位置 要會看學習文件 先看目錄 在具體看內容 有重點的看 d l6 test ms mmi source resource mmi res 320x240 common mmi res default imag idle style black breey time 學習方法 注意跟蹤測試理論與...

展訊平台android display驅動分析

本文以展訊tshak平台的display controller為硬體模型,來說明android底層顯示驅動的實現原理。該硬體模型較基礎和簡單,目前大多soc平台的硬體設計都變得越來越複雜,實現功能也越來越全面,但基於此平台的設計更方便理解。下圖的結構即是顯示控制器的模組組成,它內部整合了lcd顯示相...