TCC7901 調試過程

首次接觸到TELECHIP的平臺,不得不感嘆一下,這個平臺的工具還真是好用,不得不說TELECHIP的工程師們想得周到。

本人這次用到的是TCC7901,具體調試過程如下:

一、基本開發流程

1、首先找到了一個官方的BSP包,本來是想去官方網站下載的,但可惜,只有TELECHIP的客服才能下載,所以通過了其它辦法拿到了一個2.2版的BSP包。

2、創建了一個基本工程,按默認的配置編譯了一下BSP包,驗證通過OK。

3、利用Config_120.exe工具配置了一下BSP參數;這裏主要設定RAM大小,屏大小,TP 用的I2C通道,LCD的時序參數。

4、重配置了一下telechips.bat,添加了一個設備驅動;雙擊這個BAT文件,選擇BULID BSP包。

5、利用FWDN_V5_120.exe工具,將生成的NK.ROM,tcboot.rom下載到設備板,

  這裏要設成USB BOOT模式,BM[2]腳接高NAND BOOT,接低USB BOOT。另外USB要設成DEVICE。

6、FWDN_V5_120.exe工具可以對NAND 分區配置,格式化NAND FLASH,下載LOGO等功能,非常方便。

二、具體調試

1、顯示驅動:由於每家用的屏都不一樣,所以屏的參數必須要調整的,一般來說改動的地方不多,由於我用到是3.5寸的屏,所以我做了如下改動:

#define IMAGE1_WIDTH     320
#define IMAGE1_HEIGHT    240

#define LCD_WIDTH       320
#define LCD_HEIGHT      240

 #define LCD_DEVIDE  12

 #define LCD_VPW   (1)
 #define LCD_VBP    (13)

 #define LCD_VFP    (9)

 #define LCD_HPW   (1)
 #define LCD_HBP    (70)

 #define LCD_HFP    (17)

另外背光控制IO做了調整。

由於我的屏是通過SPI方式初始化的,所以還在TCC_LCD.C裏面加了模擬SPI通訊函數。

2、TOUCHPANEL調試:

TOUCHPANEL用的是TSC2003,BSP包裏面有這個驅動,只要對一些參數稍做調整,

#define MAX_X   3810//3940
#define MIN_X   245
#define MAX_Y  3610//3870
#define MIN_Y   456 //

 

這些參數你在點屏的時候,可以通過驅動打印出來。

校驗完屏之後,讀取校屏的座標參數寫入註冊表。

"CalibrationData"="644,476 112,68 120,864 1168,864 1168,80 "

3、HOST USB

BSP包裏面已經實現了USB HOST,只要添加相關的組件即可。

我添加的USB組件有 
--> Core OS --> Core OS Services --> USB Host Support --> USB Storage Class Driver
--> Device Drivers --> USB Function --> USB Function Clients --> Mass Storage
--> Device Drivers --> USB Host --> USB Host Controllers --> OHCI

4、SD 卡、I2C、SPI:

這樣驅動BSP包已實現了,SD卡只要添加相關組件就可以用了。主要有兩個:SD Host Controller,SD Memory。

這裏主要要自己實現的可能就是插/拔卡通知了。可以採用事件。

另外就是大容量SD卡支持,將common.bib裏面做如下修改:

   sdbus.dll      $(_FLATRELEASEDIR)/sdbus2.dll                 NK  SH

拔卡出SD卡後,卸載文件系統時間修改。

[HKEY_LOCAL_MACHINE/System/StorageManager]
    "Dll"="fsdmgr.dll"
    "PNPUnloadDelay"=dword:12c //300MS

 

5、HIVE 注表的實現

(1)、在PLATFORM.reg裏面添加如下注項。

;HIVE BOOT SECTION

[HKEY_LOCAL_MACHINEinitBootVars]
"SYSTEMHIVE"="Documents and Settings/system.hv"       ;system.hv會保存到HDDDocuments and Settingssystem.hv
;"PROFILEDIR"="Documents and Settings"   ;user.hv會保存到HDDDocuments and Settingsdefaultuser.hv
"Start DevMgr"=dword:1     ;
"DefaultUser"="default"         ;咱們只有一個用戶default,基本上就是決定user.hv的路徑了
"Flags"=dword:3  ;這個應該是wince 5.0下決定在哪個階段啓動device.exe的表項
"RegistryFlags"=dword:1     ;這個就是設置註冊表每次改動後自動flush到system.hv

; END HIVE BOOT SECTION

 

(2)、在nand 的註冊表中加入到;HIVE BOOT SECTION 與; END HIVE BOOT SECTION之間。同時再添加句 

[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/Nand]

           "MountAsBootable"=dword:1   ;這個是wince 5.0下指定這個分區保存system.hv的關鍵

 

6、多語言的實現,

(1)菜單 Platform -> Settings,Locale中選擇中文,英語,默認選擇中文。

(2)在組件中添加:MUI的組件。中文字庫選擇SimSun & NSimSun250。

(3)sysgen 工程。

(4)運行createmui 0409 ,然後在release目錄中找到MultiUI.bib文件,將文件裏面的內容複製到COMMON.bib裏面。

(5)makeimg 。

 

7、CH7026調試

        通過CH7026將數字的RGB 編碼成,CVBS跟VGA輸出。這裏不作詳介紹。

8、字庫調整到NANDFLASH裏面:

將COMMON.REG 相關的註冊項註釋掉,同時將COMMON.BIB裏面的包含simsun.ttc行註釋掉。然後再在platform.reg裏面加入如下:

[HKEY_LOCAL_MACHINE/SYSTEM/GDI]
 "FontLinkMethods"=dword:1
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/FontPath]

    "FontPath"="//NAND FLASH"  ; 字庫文件所在目錄
; @CESYSGEN IF !GWES_DECOMPDRV
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/FontLink/SystemLink]
      "Tahoma"="//NAND FLASH//simsun.ttc,NSimSun"
      "Courier New"="//NADN FLASH//simsun.ttc,NSimSun"
      "Arial"="//NADN FLASH//simsun.ttc,NSimSun"
      "Times New Roman"="//NADN FLASH//simsun.ttc,NSimSun"
      "Symbol"="//NAND FALSH//simsun.ttc,NSimSun"

9、HIVE註冊表引起系統慢。

由於HIVE註冊表的註冊表文件是保存在NANDFLASH裏面的,同時RAM裏面會有一份副本,NK在運行的時候還是用到的是RAM裏面的註冊表,我們可能通過如下注冊項來設定是否每次改都更新到NANDFLASH裏面。

"RegistryFlags"=dword:1     ;這個就是設置註冊表每次改動後自動flush到system.hv

但這樣會有一個問題,就是在頻繁寫註冊表的時候,就會影響性能了。比如進入TCPMP播放器時會很慢。

解決辦法就是用手動刷新,將上面的註冊改成“0”,

方法一、在系統關機的時候將RAM保存到NANDFLASH。

方法二、更改刷新註冊表時間,比如說有改的時候3秒或5秒更新一次,這樣有利於掉電不丟失註冊表。這裏的時間可以自已定。

獲得註冊表更新事件:

[HKEY_LOCAL_MACHINE/System/ObjectStore/RegFlush]
; To monitor the flushing from an external process add "ActivityName" registry value.
; The activity name is a global named event that filesystem will signal on Registry Activity.
;   "ActivityName"=""
  "ActivityName"="RegFlushEvent"
; Create an thread in filesys to perform flushing
;    "SpawnThread"=dword:1
     "SpawnThread"=dword:0
; Make the thread IDLE priority
    "FlushPriority256"=dword:FF
; ActivityThreshold specifies the # of reg activity before we force a flush
;    "ActivityThreshold"=dword:100
    "ActivityThreshold"=dword:1
; Timeout period for a flush (flush occurs if there have been some changes during this period)
;    "FlushPeriod"=dword:3E8
;    "FlushPeriod"=dword:7530

在驅動裏面打開“RegFlushEvent”一個同名事件,然後創建一個線程,等待該事件,在線程裏面手動更新註冊表。

 

10、USB-HUB功能:

由於USB不夠用,所以用到硬件外擴,軟件方面不需要做任何事情,只要USB HOST 驅動OK,接上硬件就行了。

 

這中間還有一個USB插拔檢測的問題,因爲我通過USB HUB將HOST分成了兩個接口:一個USB口,另一個通過IC轉成了SDIO接口。這樣對於U盤的檢測帶來了麻煩,因爲SDIO接口的卡插拔的時候沒有WM_DEVICECHANGE消息,就不能通過這個消息來判斷了。
DBT_DEVICEARRIVAL:插入
DBT_DEVICEREMOVECOMPLETE:拔出。

只能自己創建一個消息隊列,然後RequestDeviceNotifications,然後再讀出消息,就OK了。

 

11、慮擬串口:

慮擬串口,我採用的方法比較簡單,就是在我的驅動裏面開一個線程接收串口來的數據,因爲我主要用到接收數據.其實我寫了兩種串口驅動,一種用於GPS的將COM慮擬成多個,一個給地圖軟件用,另外的給一些像時間同步,查看GPS模塊信息用等.

還有一種是用於MCU與ARM通訊用,主要是解析串口數據然後分發給不同的應用程序.

while( !pSerial->m_bExit )
 { 
  // 等待串口驅動通知
  WaitCommEvent( pSerial->m_hCOM, &dwCommModemStatus, NULL );

  // 稍候再去讀,等數據包到完整

  // 僅處理字符事件
  if( !(dwCommModemStatus & EV_RXCHAR) )
   continue;

  dwBytesRead = pSerial->Read( byRecvBuf, sizeof(byRecvBuf) );

    後面是對BUF的操作...將數據填到一個循環BUF裏面.

}

 

 

12、TVP5147 調試:

 

 這個主要是將CAMERA驅動調通就OK了,然後改一個下VP5147的初始化配置.

大概流程是這樣,攝像頭或者CVBS視頻信號輸入,通過TVP5147轉換成565的信號,通過CIF接口輸入到ARM ,然後通過CAMERA驅動讀取視頻信號,通過TCCCAMERAFILTER-->TCCVRENDERFILTER 顯示在LCD上,好像TCC7901輸入視頻最大支持320*240(如果過大爲造成畫面閃動,聽說好像沒有解),然後通過M2MSCALER拉伸到你想要的尺寸,也不知是真是假,但我目前還是用到320*240然後拉到800*240。

 

這裏有個問題,就是因爲TCC7901 用TSC2003 作爲TP A/D,這個IC有個特點,只有DOWN的中斷,沒有UP的中斷,中斷來了以後ARM通過I2C去讀取TP採樣讀據。UP的判斷爲DOWN中斷80MS後爲UP。如果你一直按着TP就會不停的有中斷產生,就會不停的通過I2C讀取AD數據,中間只有10MS作爲線程輪片。

 

如果在CAMERA預覽的情況下,一直按着TP就會發現畫面會閃動。但如果低於15幀就不會出現這個問題。

 

13、喚醒與待機:

 

14、更新NK,TCBOOT,APPS:

 更新NK 本來TELECHIP的工具就做得很不錯了,但是因爲我們內存只有64M還要求GPS後臺運行,如果前臺在播視頻,這樣就顯得內存嚴重不足了,所以我用了BIFS文件系統,將NK分成兩部分,每次啓動只將大約4M的NK裝入內存,其它的放入BINFS下面,這樣我們的可用內存64-1M顯存-6M硬解-4M NK=53M。

這一部分TELECHIP是沒有提供的,只能自己想辦法。我們現在NK升級,TCBOOT升級,LOGO升級,應用程序,全部通過SD卡一次性升級成功。

 

 待續。。。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章