2014年4月21日 星期一

bootchart in busybox .

最近在檢視開機時間 , 記憶中有一個 bootchart 可用.

先來看看目前 bootchart 發展到如何 , 有哪些 tools 可使用.下列網站說明的很清楚,也有很多資源可以使用.

http://elinux.org/Bootchart

A. 觀看一下目前工作的機器.發現使用的 busybox 已經有內建 bootchart 了.
    事情好辦多了 , 接著開始產生 bootchart 資料吧.

B.基本上應該將kernel command line 的 init=./init 改為 init=/sbin/bootchart .
   不過我只想觀看一下rcS 啟動後有哪些 task 號時間.
   所以就在 rcS 的第一行加上 "/sbin/bootchart init & " 這樣就可以了.

 C.產生的資料為 bootchart.gz , 並且放在 /var/log 中.
    解開 bootchart.gz 會發現一堆文字檔案,很難關看booting 過程中的訊息.

 D.下列網址(bootchart2) 提供了一個可以將這些文字檔案轉成 png file 的 utility.
     來安裝吧 ..... ! 

 https://github.com/mmeeks/bootchart

   1. 下載 source code.
   2. 依照說明文件, 只要進行 " make "  即可 (Fedora 20 i686 ).
   3. 將 target 上的 /var/log/bootchart.gz 上傳回 Fedora (我慣用 fedora )
   4. [jeff@...]$ /home/<your bootchart dir>/bootchart-master/pybootchartgui.py bootchart.tgz
    5. 就會產生 bootchart.png file 了.

 E. bootchart 圖片就不在上傳了, 網路上都有很多 .



2014年4月11日 星期五

Printf 不能輸出到 console ....

最近工作上發現 , 有使用者的程式使用 printf 來 debug , 不過卻沒有輸出 .
網路上有說使用 fprintf + stdout or stderr 等方式 . 不過在我們的環境下卻沒有辦法 .

最後 , 我使用 暴力方式 解決了 !!

首先 , 先了解 console 是哪個 tty . 然後在 程式內 直接 fopen  tty , 接著用 fprointf 的方式直接寫過去就可以了 !!

雖然這樣的方式不好 , 不過先可以用 , 有時間在研究一下正規方式 .


============================

#define AP_DEBUG_ON

#if defined (AP_DEBUG_ON)

 #define    DEBUG_MSG(S,A...)        fprintf(ttyfd,"==== [%s]:[%d]:" S "\n",__FUNCTION__,__LINE__,## A)

#else

 #define    DEBUG_MSG(S,A...)        do {} while (0)

#endif


FILE *ttyfd ;

int main(int argc, char **argv)

{   
    ttyfd = fopen("/dev/ttyS0", "w");

...................................
DEBUG_MSG("flag:%d -> %d ",flag,flag ? 0 : 1 ); 
}