公司最近做一款資料卡,還是用的展訊的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顯示相...