Time of Update: 2018-12-05
MTK記憶體動態申請釋放1. OslMalloc OslMfree 為一個般的程式分配記憶體,用來儲存一般性的資料,效率高,不能分配太大記憶體,否則程式會掛掉 這兩個函數就是直接define 的 ctrl buffer的函數 作用分配記憶體和malloc free功能類似 實際上是用一塊記憶體池中分配和釋放記憶體,具體實現是在ctrl_buff_pool.c裡面做的2. media_get_ext_buffer
Time of Update: 2018-12-05
MTK異常LOG深入探討 開篇序言:此篇意在對異常LOG有一個總體上面的瞭解。異常的LOG有很多資訊,但是對不同的異常,需要看的LOG卻不一樣。剛接觸MTK平台之時,我也犯過這樣的錯誤:就是這麼多的異常LOG,我應該怎樣看?非把自己弄得昏頭轉向不可。待此篇結束之後,小弟會根據不同的異常情況,選取一些典型的例子,給大家示範怎樣去看異常LOG。小弟不才,希望能拋磚引玉,望各位高手多多指教。出現異常的時候,正如上一篇小弟寫的《MTK異常流程處理》所述,會把異常資訊寫在一個structure中。這個s
Time of Update: 2018-12-05
MTK系統錯誤類型 系統錯誤中有兩種典型的分類,一種是CPU觸發的系統錯誤,另外一種是軟體觸發的系統錯誤。(其實我覺得這兩種錯誤沒什麼區別。靠!什麼叫CPU觸發?什麼叫軟體觸發?這兩種分類有意義嗎?對我們調試有協助嗎?答案是一點協助都沒有!我debug了這麼多年,不覺得分類有什麼用。其實“觸發”不如換成用“檢測”,一種是CPU檢測到的,另外一種是軟體中檢測到的。管它是CPU觸發還是軟體觸發,魔擋殺魔,佛擋殺佛!) 1.CPU觸發(檢測到)的系統錯誤Undefined
Time of Update: 2018-12-05
MTK異常處理流程 異常處理流程裡面,需要做的事情是:產生異常資訊輸出到螢幕或catcher中,並儲存到NVRAM裡面。最後根據工程模式的設定,機器會凍屏(選擇凍屏是為了抓memory dump),或者重啟。 1、CPU觸發的異常處理當CPU觸發異常時,會觸發Exception中斷,然後跳到中斷子程式。中斷子程式會調用System Stack Error函數,然後再調用Fatal Error Handler處理。 Undef Exception--|SWI
Time of Update: 2018-12-05
MTK timer 小結 MTK tiemr有很多種,從最底層的KAL到MMI,都有timer的身影。KAL 的 timer KAL timer是非常底層的timer,它的實現是直接封裝MTK的RTOS(nuleus)的timer,實現方式是HISR,從而這種timer具有很高的優先順序,也就是說當這個timer逾時時,就會觸發一個HISR(進階中斷),這個中斷會回調註冊函數。所以這種timer使用時,要比較小心,它的優先順序很高,在回呼函數運行時,
Time of Update: 2018-12-05
1. To design an application one must follow the sequence as described: A. Write an Initialization function to register the various event handlers. B. Write a populate function to register various string and image elements for the
Time of Update: 2018-12-05
MTK筆記L4是MMI/AT和協議棧的適配層。ATCI是AT命令解析器。UEM是用於抽象如鍵盤、LED、通用輸入/輸出等基本裝置,是使用者裝置模組。PHB就是電話本。SMU是安全嵌入式管理單元(SIM、STK)。CSM是呼叫服務管理。RAC是登記存取控制。SMSAL是SMS應用程式層。核心服務包括定時器、任務管理和處理序間通訊、資源和記憶體管理、日誌和異常處理。OSL是封裝OS API的層,而KAL則是封裝核心的層,應當在OSL以上來開發。資料類型定義(VRE的頭會比MTK更亂嗎?)*
Time of Update: 2018-12-05
1、記憶體配置方面: 堆:一般由程式員分配釋放, 若程式員不釋放,程式結束時可能由OS回收 。注意它與資料結構中的堆是兩回事,分配方式是類似於鏈表。可能用到的關鍵字如下:new、malloc、delete、free等等。 棧:由編譯器(Compiler)自動分配釋放,存放函數的參數值,局部變數的值等。其操作方式類似於資料結構中的棧。2、申請方式方面: 堆:需要程式員自己申請,並指明大小。在c中malloc函數如p1 = (char
Time of Update: 2018-12-05
################################################################################# Copyright (c) 2008 XuYizhu(xuyizhu@live.cn)# All rights reserved.################################################################################# Description:
Time of Update: 2018-12-05
在沒有MMU的時代,為了最大的利用記憶體空間,堆和棧被設計為從兩端相向生長。那麼哪一個向上,哪一個向下呢? 人們對資料訪問是習慣於向上的,比如你在堆中new一個數組,是習慣於把低元素放到低地址,把高位放到高地址,所以堆向上生長比較符合習慣。而棧則對方向 不敏感,一般對棧的操作只有push和pop,無所謂向上向下,所以就把堆放在了低端,把棧放在了高端。MMU出來後就無所謂了,只不過也沒必要改了。
Time of Update: 2018-12-05
6:30 起床(睜開眼睛,首先要檢查眼睛是不是保持乾淨,頭髮是不是柔順,整理過後輕輕地親吻老公,動作雖輕,但目的是把他弄醒) 華商,陝西,西安,古城,美女,娛樂,交友,情感7J|Yq/Dz 6:35--7:00 煆煉身體(如果老公有“性致”就再來一次,如果老公沒性質,就告訴他再睡一會就該起床了,問問他想吃點什麼,今天穿哪套衣服?細緻到襯衫的顏色,領帶的圖案) 華商論壇5m9r1`D&e1x 7:00--7:30 做早餐(按照老公的要求做早飯,但基本上老公不會有什麼要求,雖然
Time of Update: 2018-12-05
/*********************************************************************** 函數名稱: CheckCPU** 函數原型: int CheckCPU( void )** 功能描述: 鑒別CPU大小端類型** 輸 入: 無** 輸 出: 1 -- 大端** 2 -- 小端** 0 -- 異常錯誤** 說 明: 著作權,轉載請說明來自
Time of Update: 2018-12-05
__cdecl __fastcall與 __stdcall __cdecl __fastcall與 __stdcall 呼叫慣例: __cdecl __fastcall與 __stdcall,三者都是呼叫慣例(Calling convention),它決定以下內容: 1)函數參數的壓棧順序, 2)由調用者還是被調用者把參數彈出棧, 3)以及產生函數修飾名的方法。
Time of Update: 2018-12-05
DM模板的一般使用方法見某牛人所著<<MMI執行個體培訓教程>>,這裡僅討論一些零碎的使用心得1. 很多ShowCategoryXXXScreen函數都調用ShowListCategoryScreen,使用改函數可簡化模板的繪製工作, 現在分析一下ShowListCategoryScreen到底做了什麼工作: (1) 設定Title
Time of Update: 2018-12-05
A. 菜單ID: MENU_ID_MYAPP_TEXT 螢幕ID: SCR_ID_MYAPP_TEXT 字串ID: STR_ID_MYAPP_TEXT 圖片ID: ICON_ID_MYAPP_TEXTB. MyAppDef.h MyAppProt.h MyAppGprot.h Res_MyAppRes.c1. GlobalMenuItem.h 在GLOBALMENUITEMSID中添加1個菜單: MENU_ID_MYAPP
Time of Update: 2018-12-05
MTK定時器訊息機制分析 1. 資料結構 (1). stack_timer_struct 定時器類型的資訊結構( 其主要作用似乎是用以裝載待發送的定時器訊息資料 ) (2). TIMERTABLE 定時器隊列節點結構( 其由主要元素mmi_frm_timer_type結構及鏈表指標兩個元素組成 ) (3). event_scheduler 隊列資訊結構 (4). mmi_frm_timer_type
Time of Update: 2018-12-05
MTK平台是非常優秀的一個平台,曾經的山寨機之父,下面我將介紹下在MTK平台下如何去建立自己的任務。一、基礎知識 在學習如何建立任務之前,我們需要瞭解一些基本概念,以及一些和任務相關的資料結構,瞭解了這些之後,我們就能更好的理解如何去建立任務了。MTK中關於任務的概念有兩個,一個是TASK,另外一個則是MODULE,這兩個有什麼區別呢,task是作業系統層面的概念,MTK使用的是nucleus
Time of Update: 2018-12-05
主要簡單分析一下左右軟體的事件,以左軟鍵事件為例牽涉到的常用函數: void SetKeyHandler( FuncPtr funcPtr, U16 keyCode, U16 keyType ); void SetLeftSoftkeyFunction( void (*f)(void), MMI_key_event_type k ); void ChangeLeftSoftkey( U16 s, U16 i ); 1.
Time of Update: 2018-12-05
轉載 MTK儲存系統相關 NOR和NAND都是flash, 掉電資料不丟失的,掉電資料丟失的叫RAM flash上分兩塊,code地區和檔案系統地區(又分系統硬碟和使用者盤)。 NVRAM是一套機制,它的資料部分:default存在flash的code區,NARAM檔案存在檔案系統地區(系統硬碟)phone的電話本資料是以NVRAM檔案的形式儲存在檔案系統地區的(系統硬碟),SIM卡的電話本就在SIM卡上了T卡是擴充的flash,都是檔案系統區。 NAND
Time of Update: 2018-12-05
簡單的分析一下History管理機制與EntryNewScreen的關係1. 與EntryNewScreen函數有關的全域變數: currEntryFuncPtr, currExitScrnID, currTopScrnID, currExitFuncPtr2. EntryNewScreen函數部分流程: Step1: 儲存新螢幕ID(函數第一參數)-->currTopScrnID ; Step2: