2011年1月3日 星期一

MTK雜記

1.判斷手機中是否插入 SIM卡:


方法 1 :判斷標誌 gInsertSimAppFlag 是否為 1 ,為 1 時,有 SIM 卡,為 0 時,無 SIM 卡
方法 2 : if(g_pwr_context.PowerOnSIMStatus & MMI_SIM_STATUS_NOT_INSERT) return FALSE;
          else return TRUE;

方法 3 : IsSATPresent ();為 0 時無 SIM 卡,為 1 時有 SIM 卡
方法 4 :判斷 DRV_Reg(SIM_CTRL) 的值,為 1 時有 SIM 卡,為 0 時,無 SIM 卡。

方法 5 : MTPNP_BOOL MTPNP_PFAL_Is_Card1Absent(void);
                 MTPNP_BOOL MTPNP_PFAL_Is_Card2Absent(void)

2010年12月29日 星期三

MTK TASK 筆記

1.開機後要跑幾個task:Syscomp_config.c (MCU\config\src)
sys_comp_config_tbl是一個task的initial table,裡面define了許多task的XXXX_create function名稱,例如nvram_create、mmi_create、l4_create。


透過載入這個table,執行各個task的「建立」(應該是有生出task的意思存在),接著各個task再有自己的main,再去做其初始化的動作、handler這一類的。


2.以l4_create function為例,function內容如下:(MCU\ps\l4\src\L4_create.c)


kal_bool l4_create(comptask_handler_struct **handle) { static const comptask_handler_struct l4_handler_info = { layer4_task_main, /* task entry function */ layer4_init, /* task initialization function */ NULL, /* task configuration function */ l4_reset, /* task reset handler */ NULL, /* task termination handler */ }; *handle = (comptask_handler_struct *)&l4_handler_info; return KAL_TRUE; }


在l4_create()裡面,建立了一個資料型態為comptask_handler_struct的變數l4_handler_info,
裡面指定了一個task的對應行為function。


layer4_task_main()是layer 4的main function,裡面跑著一個while (1)的 infinite loop,來處理各種的message,透過process_ilm(),再去執行對應message 的main。

2010年12月22日 星期三

MTK UART筆記

1. 跟PC tool溝通是透過UART下command,格式跟AT command一樣,解析輸入的command type,再執行對應的handler。
     dt_create()->dt_task_main()->dt_process_one_cmd ()->dt_cmd_processor ()->
    檔案:

Dt_create.c (MCU\ps\dt\src)

Dt_analyzer.c (MCU\ps\dt\src)

2010年11月29日 星期一

switch case and watchdog

1.如果在switch case中,需等候I/O腳位變化,而決定是否往下執行,
可以把while(status)改寫成if (! status) then step++,避免程式卡在while loop,浪費時間,step中的watchdog也可以不需要去控制。

2.避免有以下寫法:

switch (step)
{
    case 0:
        WDT_stop();
        .......
        step++;
        break;
  
    case 1:
       .......
       step++;
       break;

    case 2:
      ......
      WDT_restart();
      break;
}

在step0到1的過程當中,WDT已經在main()又被開啟了,因此程式容易有不可預期的情形產生。

2010年11月17日 星期三

malloc使用注意

malloc使用時,要注意是否會超過heap size,尤其是function call function時,很容易超過,造成程式死當。

2010年11月7日 星期日

掃塵除垢

今天宅在家中沒出門,下午花了一些時間整理房間,雖然常常都會做整理,但是每次整理時,還是會掃出一些灰塵來,隨著打掃的時間愈久,灰塵就愈多。

不過大部分的物品並不會常常移動,但是還是會染上塵垢,因此一段時間就要打掃一下,維持房間清潔,住起來才會舒適、衛生。同理,我們接觸這花花世界,形形色色的人、事、物,那我們的心一定更容易沾染到不乾淨、不好的東西。

因此更常常需要掃塵除垢、調整自己的念頭、想法、迴光返照,讓自己清靜靈明的本心作用,才能時時保持快樂!