星期四, 8月 28, 2008

DDR2 BUS Impedance

一、透過Xmodem 上傳檔案開機模式

  Soc 內帶有 16k sram, xmodem Loader程序,在上電時,透過Uart 提示 “CCCC... ”等待PC端使用者以Xmodem通訊方式上傳Bootloader 檔案,然後將上傳後的Bootloader 放到 TCM 上執行,然後Bootloader做下列的動作。

  • DDR Ram Init

  • Uart Init

  • SOC register Init

  • Flash Init

  • Uart Init

  • 啟動Bootloader內的Xmodem等待使用者載入檔案。

    • Xmodem booloaderCode內約350行,Object670 byte

二、讀寫Ram 錯誤( Ram 32M )

  寫一個測試MemoryBootloader,對每個位置的記憶體寫入0xff00ff00再將其讀回比對,發現有些位置的資料是錯誤的,規則如下。

  • Memory Address 5M 幾乎都是好的。

  • 後面 0xAAAA AAAAB ( A = 任意, B = 0 or 4 ),會隨機發生錯誤,並不是每個4結尾的Address 都會錯。

經修改了幾次bootloader、跟Hardware後,發現原因發生在 SOC DDR 之間的阻抗匹配問題導致。

三、Questions
  1. SOC xmodem 如何實作,內嵌ROM or NOR Flash,由SOC啟動?亦或是Hardware可以達到?

    1. Q:原則上猜測應該是Nor。
  2. SOC的某隻腳位是用來調整組抗匹配,這隻腳再我們寫 Pin Define同樣有使用?因為這看起來是調整阻抗,數位電路設計時也須考量這個問題?還是這是在Transistor Level 所考量的層次?

  3. 經詢問Hardware 人員,通常SOC內有Register可調整Pin Fanout,這問題同上,是不是在Gate Level 之上不需要考量這個問題,只在Transistor Level以後才兜那塊電路?

星期三, 8月 27, 2008

可以讓compiler 出來的exe 檔在沒有灌BCB的電腦裡run

可以讓compiler 出來的exe 檔在沒有灌BCB的電腦裡run ( Borland C)
*你必須把你的 project compiler 成 standalone
以下是設定的方法:
(1) 選擇 Project/Options 顯示 Project Options 的 dialog
(2) 選擇 Packages TAB 把 build with runtime packages 這個打勾取消

(3) 選擇 Linker TAB 把 Use dynamic RTL 這個打勾取消

按ok後重新 compiler 就可以了,但是~~如果有你自己寫的 dll 的話在 deploy 的時候,就必須一起複製到使用者的電腦裡

星期二, 8月 19, 2008

JPEG

  • DHT
    • 0xff 0xc4 (2 byte)
    • 0x?? 0x?? ( 2byte length)
    • 0x??( 1byte )
      • bit 0-3 :
        • must <>
      • bit 4:
        • 0 = DC
        • 1 = AC
        • other = unknow
      • bit 5-7: must 0.
    • (16 byte )

Reference:

星期二, 8月 12, 2008

Syslog

基本用法:
  • 不用openlog 也行,syslog 會自動呼叫,但用了後再message 會比較清楚。
  • openlog( "test", LOG_PID | LOG_CONS, LOG_USER );
  • syslog( LOG_USER | LOG_INFO , "[%d] "format, level, ## args);

LOG_EMERG system is unusable
LOG_ALERT action must be taken immediately
LOG_CRIT critical conditions
*LOG_ERR error conditions
*LOG_WARNING warning conditions
LOG_NOTICE normal, but significant, condition
*LOG_INFO informational message
*LOG_DEBUG debug-level message

Reference: