Archive for the Hardware Category

Note: Test build Legato Platform of Sierra on Ubuntu 14.04

Posted in Hardware, Works, 未分類 with tags on 2015 年 12 月 29 日 by Kun-Yi

只需要在Sierra Wireless 上註冊帳號就可以下載他的 Source code
它現在採主流 Embedded Linux 的開發環境 Yocto Project,解開後很簡單只需下 make 就可以完成 喔對了網頁上會寫要裝哪些套件成功 build code

但是如果按照這樣的步驟會發現有兩個 package 會出現問題 原因是他在bb 的function 中呼叫了 bash 的內建函式 而bb是呼叫/bin/sh 在 Ubuntu 上預設的 sh 是dash 所以會不能正確執行, 需要做一個work around 當然你也可以手動砍掉symolically 在重新建立連到 bash 的link 也是可行的

 

  • Check that /bin/sh (ls -l /bin/sh) is not symbolically linked to dash. “dash" is a POSIX compliant shell that is much smaller than “bash" — however some broken shell scripts still make use of bash extensions while calling into /bin/sh. To work around this issue call “sudo dpkg-reconfigure dash" and select No when it asks you to install dash as /bin/sh.

 

廣告

Work note: eMenlow Bring Up

Posted in Hardware on 2009 年 06 月 30 日 by Kun-Yi

最近終於拿到第一版 Atom Z530 + Poulsbo US15W(SCH, System Control Hub, 即傳統的南北橋合一版) board,但是卻卡關在Power sequence 很久一直進不到BIOS.

該版預計Power Sequence control 最後會由 EC(Embedded controller)實做這部份, 但是一開始同樣使用 intel refernce design 的 CPLD code. 也實際量測各種信號的時序, 皆如同參考設計, 但是一直不會跑完整個流程, 每次都是發出RST_N, 換SCH本身要發 CPU Power Good and CPU Reset 給Atom processor這里發不出來, 跟據Intel 的不齊全文件, 得知當 RST_N 發出來後, SCH 會去ROM/BIOS space 讀 CMC(Chipset Microcode Code), 將SCH本身做正確的初始化.

SCH  透過GPIO 3/0 的狀態去引導, 從那個 address讀 CMC, 這檢查過很多遍, 最後HW連 LA都搬出來, 確認過確實有讀到CMC, Intel 參考設計是 0xFFFD0000

最後發現因為該版是DRAM 直接Mount 在板上, 其SPD 的資料未寫, 導致SCH無法正確初始化, 這個問題有兩個選擇, 透過寫入正確的SPD資料, 或是使用Intel 的 SoftStraps tools 可以去modify 對應的設定!

這是跟傳統平台, 進入BIOS才初始Memory controller 有很大的不同, 導致一開始Debug 方向錯誤, 多花一兩週工作時間.

Bookmark:I2C/SMBus 的異同

Posted in Hardware on 2008 年 06 月 21 日 by Kun-Yi

http://tech.digitimes.com.tw/ShowNews.aspx?zCatId=113&zNotesDocId=0595C9970549D37248256FF900461B44

http://www.maxim-ic.com/appnotes.cfm/an_pk/476

大部分情況下大家都把SMBus 等效 I2C Bus, 實際上還是有些許差異性, 系統規劃時需要有所注意

Intel 主導的 Open NAND Flash Interface & Read Unique ID

Posted in Hardware on 2007 年 10 月 26 日 by Kun-Yi

Read Unique ID by NAND Flash 結果發現這個是需要NDA license 的指令,真是一整個不懂Device 提供一個Read Unique ID Commnad 就要簽NDA? 檯面上得說法是為了讓透過NAND做安全性的應用時得到更大的安全保証,像是增加被破解難度之類的理由。不過個人深深覺得這是爛理由XD,畢竟真的搞Crack/Hack 的都有其他管道可以得到更多Information ,只是徒增一般人使用困擾而已。(很多Device都需要有Unique ID,尤其在手機上面)

不過也發現了 Intel 主導的 Open NAND Flash Interface 聯盟已經出了ONFI v1.0 的spec. 其中Block Abstracted NAND Specificaiton 中已經制定了一個標準Command 可以讀到 NAND Flash 本身的Unique ID。

目前加入這個聯盟的廠商有

  • Hynix
  • Intel
  • Micron
  • Phison
  • Sony
  • STMicroelelctronics

雖然在NAND 供應商市佔率的角度來看還是遠不及 Toshiba & Samsung 不過也許還是有機會變成Standard Interface of NAND Flash吧?

NAND Unique ID – 128bit Length

(WM6 目前的UniqueID Length要求也從WM5之前的 48bits提升到128bits)

48bits 同Ethernet MAC address length

東芝、三星將聯抗英特爾 LBA陣營崛起 ONFI陣營拉警報

這則新聞提到 Toshiba 自訂 LBA 規格,目前跟ONFI 2.0要競爭,不知道最後誰勝誰負,不過 ONFI v2.0 目前好像還在草案階段。不過NAND Flash 導入45nm 以下製程是2008年勢在必行的吧。這樣看來沒有規格依循還真是大問題。

難怪MDOC 一直改版 😥

並聯 AC to DC Bridge 的方法

Posted in Hardware on 2007 年 05 月 13 日 by Kun-Yi

上圖是將兩個 Bridge 並聯成一個大電流的Bridge使用

要是兩個還是不夠 依然可以一此方法並聯成為一個 4, 8, …顆 的大型Bridge這樣設計的優點是不需要特別去找大容量的 Bridge,而且比較容易不會受到大電流的Bridge的體積限制 可以比較有彈性的擺置在電路板上。

這是昨天看到 交換式電源供應器設計與最佳化中譯版,書中的一圖。


原書

Switching Power Supply Design & Optimization

NVidia GoForce 4800 and GFSDK API

Posted in Hardware on 2007 年 05 月 11 日 by Kun-Yi

GoForce 4800 有提供一個 GFSDK Api for Software Development

但是 有些東西 GFSDK 並未提供 Hardware controller mapping

例如 下列的程式是將 Flat plan 的的幾隻接腳(FGP2/Reset, FGP3/PWDN) 設成程式可以控制 , 用來產生OmniVision 2640 的 Initial signal

const UINT32 G4800_BASE_ADDR = 0x14000000;
const UINT32 G4800_FPGPIO_OFFSET = 0xB40;
const UINT32 G4800_FPGPIO_PA_ADDR = G4800_BASE_ADDR + G4800_FPGPIO_OFFSET;

typedef struct {
UINT32 FP10;
UINT32 FP11;
UINT32 FP12;
UINT32 FP13;
UINT32 FP14; // Read Only
UINT32 FP15;
UINT32 FP16;
} G4800_FPGPIO, *P_G4800_FPGPIO;

PHYSICAL_ADDRESS liAddr;
P_G4800_FPGPIO pFPGPIO = NULL;
liAddr.QuadPart = G4800_FPGPIO_PA_ADDR;

pFPGPIO = (P_G4800_FPGPIO) MmMapIoSpace(liAddr, sizeof(G4800_FPGPIO), FALSE);

// Configuration FP_GPIO
pFPGPIO->FP11 &= (~((1<<3) | (1<<2))); // active-high
pFPGPIO->FP15 &= (~((1<<6) | (1<<7)));
// setting FGP2 and FGP3 using FP13 output, FP12 is output select
pFPGPIO->FP12 &= ( ~((1<<4) | (1<<5) | (1<<6) | (1<<7)) );
// setting PWDN to Low““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““
pFPGPIO->FP13 &= (~(1<<3)); // output data

//setting Reset to High
pFPGPIO->FP13 |= (1<<2); // output data
Sleep(100);
//setting Reset to low
pFPGPIO->FP13 &= (~(1<<2)); // output data
Sleep(100);
//setting Reset to High
pFPGPIO->FP13 |= (1<<2); // output data

 

OmniVision OV2640 Check list and App Note.

Posted in Hardware on 2007 年 05 月 11 日 by Kun-Yi

1. Get a laster datasheet from Module Vendor or OmniVision, Currently v1.8

2. Get a Power On/Off sequence, from OmniVision

3. Check Volatage level (Core VDD, great than 1.32V is prefect)

4. Generation a correct waveform by PWDN(Power Down) and Reset 

    PWDN  HHH  (50ms)HHHLLLLLLLLLLLLLLLLLLLLLL……..

    RESET  HHHH(50ms + 10ms)HHHHHHLLLL(20ms)LLLLHHHHHHHHH…..

5. Initial OV2640 parameters and reading ID thought SCCB(I2C) bus.

 

OV2640 and OV2630 control signal is difference, so PWDN and RESET using  GPIO is prefect.

 

Technorati tags: , , ,