ChamberPlus System Level Studio

  首頁 | Contact to us

 

News
Products
FAQ
Technicality
Links
OldNews

互動區:

留下您的足跡

想討論嗎?

 

USB 應用開發前言之一

(2008/05/16)

        原本應該一路的往下講一些USB 應用開發的東西,但是,慢慢的發現:許多工程師們(其實,有許多老闆也容易犯的啦!^_^ ..)都很容易犯了一個毛病:就是一山看比一山高!!

        什麼意思?!...就是啊,常常聽到別人說:耶...好像哪家作的東西,或是哪家用什麼解決方案做的產品是蠻不錯的。那我們是不是也可以;比照辦理?!...然後啊,就常常會半途而廢的...或是產品市場開發就是三分鐘熱度...

        舉個例子來說:現在要開一棵IC是比以前容易多了,但是我開IC之後,應該去找些應用產品或市場來作呢?!喔...聽別人說:好像這個可以作或是那個可以作?!...然後,呼呼籠籠的找幾個人也算是業界外行人,就批哩趴啦開幹了。結果,搞了老半天?好像南柯一夢似的,就當作什麼是沒發生過---船過水無痕!!很想問一句說:您們是不是錢太多啦?!也太閒了?!(還真的是有錢又有閒的極致表現!!)還想真的POST 幾張我看到的幾家募款的"高科技"公司規劃藍圖...還真的,比賈老師的文筆還高竿多了!!

 

        所以啊,我在想:與其要在講一些USB 的技術開發前,倒不如先來講幾個觀念問題,也順便引出一個USB 的應用觀念。---奇怪?!怎麼都沒有公司想找我去當產品PM(產品企畫)呢?!如果,找我作產品企畫的話,我可不是只是動動嘴皮子而已....要真的能搞出一點名堂或是原型產品實物的...才算是真正的產品企畫。要不然啊,滿街的人都可以去幹產品企畫了。---而版主呢...卻要流落街頭當乞丐了....嗚!~~~下回要POST 版主的履歷表了....還請各位大哥大姊介紹一下吧...版主的要求很低的啦!

        其實,這也是版主這幾年做一些USB 相關應用,而這些相關應用也不算是:主流的USB 產品線,但卻有許延伸的技術觀念在其中。當然,也是網路上許多不認識的人總是會提一些很奇怪USB應用問題考版主的問題。

        首先,我們先以一個標題來點出重點:我想做一個USB 的相關應用產品!---很普通吧!

        而這個標題代表了兩個隱含的意義: 一個是:我為什麼要作這個產品?!而另一個呢?!就是我手上有哪些東西(資源)可以幫我完成?...,第一句都是一般幹PM常幹的事,也是大家都會耍耍嘴皮子幹的事,......因為很簡單啊,因為有市場啊...這產品有潛力....這種廢話,不用您來講給老闆聽,難道老闆每天陪客戶打球、喝酒的...他會不知道?!還要您來跟他說?!(當然,有些老闆是不出門的...那是另當別論了!這種老闆找來的PM 也沒啥用...因為您也沒SENSE去判斷PM說的對不對?!)

        而第二句話就是之前所提到的。要不要去一山比一山高的問題?!...這也是版主一直強調的觀念:比武器厲害,來幹掉對方,或許只是您比人家有錢有閒的燒錢開發...但如果,您能出奇制勝的超越對方,那才是您的真本事!!

        太籠統?!太抽象?!...舉一個更實際一點好了...用32bit ARM 去幹掉一個以 8051 作的產品,您覺得您會很光榮嗎?!...反過來說:如果有一個產品是用8051幹掉32 bits ARM 的...那才是令人驚奇啊!!很多人當然對於一些新穎科技的東西都會感到一份興奮感!但如果,您能冷靜的想一下:這些東西是否在您過去周遭的經驗裡,其實您是很熟悉的?!...過去在推那個多核心的東西....客戶都一時很興奮...然後呢?!在更深一步的去討論一下技術的觀點...好像就全變了樣?!( 舉這個例子,不好!就點到為止就好了!...  ^_^  ...)

        所以啊...我們就不要講那一個第一個意義,我們來講第二個...

第二層的意義跟USB 應用有什麼關係?!...

--------

        其實,這個含意是可以套用在許多產品開發的案例上的。但這個問題啊,在USB Controller 上更容易點出特色。就得從Cypress 的USB Controller 說起....(我這一章節先講Cypress 的...難得,版主願意來整理Cypress USB Controller 的東西...機會難得!!)

我們要真正的進入我們的USB 主題了....(這是一個蠻不錯的系統應用思考問題!)

        我們都知道一般USB Controller 其實他的本身也是一棵8051 單晶片...包括Cypress USB Controller及版主所用的這一棵 GT USB Controller都是 ...所以啊!    當然一般坊間的講Cypress USB Controller 的書都會順便教大家做一些原本8051 單晶片的應用!一方面是他的8051 Firmware 更新方便...可以很快的做一些8051 小實驗,的確是蠻不錯的相關應用平台。

        好了。真正的問題來了...如果我們要將我們寫好的8051 程式,讓他也可以"脫機運行"的話...請問「單兵」如何處置?!...(註:"脫機運行"...就是Stand-alone!就是只要控制版子一上電,不需要連PC 就可以執行我們交付的 8051 韌體 。然後,最好是可以隨時再跟PC電腦 USB 連線?!)---不錯吧。大家可以集思廣益的想一下該如何完成?!...

(我是為了8051才選擇Cypress USB Controller 呢?!還是我是為了USB 才用Cypress 的8051?!)

        我們就來研究一下Cypress USB Controller 的架構...

        由上圖我們可以看到:Cypress USB Controller 的8051 就是跑那個內部 16KB RAM...     (意思就是最多只能跑16KB 而已...要超過16KB 就得要外掛...就得要用那一棵128QFP 包裝的IC了。)還有一點:他這個16KB 是RAM ---代表斷電後就會不見了...下次上電,就得重新下載更新,而他的下載更新的路徑只有USB 或是 I2C 兩條路徑。為什麼?!因為他的8051 的規劃如下圖:

      

當EA = 0 時,您就只能跑內部的 16KB ,而且還是ROM 與RAM 共用的(意思就是您用MOVX 與MOVC 都一樣的啦!)

        而當您用EA=1 時,哈!哈!,....您內部的 16KB 就是只能當RAM 用而已!但是您的程式也只能跑64 KB 而已!!(廢話...一般8051 不是只能跑64 KB 而已嗎?!...嘻...嘻... 這是版主留下的一句"伏筆" ...如果,作系統開發,腦筋這麼呆板怎麼可以呢??!!-----這個答案,您們要耐心的往下看。

        那我要怎麼決定EA 呢?!答案就是得買他那顆 128 Pin 包裝:

很好玩吧.,...他的128 Pin 就是為了把這些Data/Address Bus 拉出來!

        所以啊,我們再回頭想:如果我要利用Cypress USB Controller做到也可以"脫機運行"的話,我的程式就不能超過16 KB ,否則我得要外掛 EPROM了。(應該沒有人會外掛EPROM 了吧...因為,您可能連買得到128 Pin 包裝的IC 可能都很難啊!)

        所以,基於以上的硬體架構,原廠就出了這一張說明:

        第三點的說明如版主所說。就算您的Boot code 是64KB的EEPROM,也只能留 16KB 在內部的RAM 中而已,其他的也得搬到外掛的地方去!----搬到外掛的RAM 的地方去幹嘛?!...這顆8051 可以自己更新自己的程式嗎?!....(註:他以上的說明就直接跟您說:您所常用的就是直接外掛一個16KB 的EEPROM 直接讓他跑起來,還比較快...要不然,您就得等USB 跟PC 連線後,在下載程式吧----您的應用程式是在PC 那端耶...這一點已經違反我們"脫機運行"的基本需求了。)

        所以啊...8051 的 Boot-up 動作,是靠他硬體在 I2C 介面直接Boot  起來的。

當然啊...他還有一個更新韌體的機制:就是透過  USB 介面。(這一點已經違反我們"脫機運行"的基本需求了。)但是我們還交代一下他是怎樣透過USB 更新韌體的:

        其實,他就是利用了一組Vendor Command(0xA0) 來執行韌體更新的...所以啊,以這個架構來看,版主大概就可以知道:如果您拿這個Cypress USB Controller來作隨身碟的話,您得就先讓他Vendor USB Driver先掛起來,讓他的USB 程式下載應用跑起來,把您的Mass Storage Class 程式下載進去,再自己做一次『軟插拔』(不知道這個名詞的,就留言版留一下言吧!),才可以完成的。否則,您就得要靠外掛程式了。---外掛16 KB 作隨身碟,應該還有機會...但要作DOS File System 真的就比較難一點了!!

        所以啊,當您看到這樣的分析之後,您大概就知道:這種USB Controller 大概就是天生出來做一些還非得跟PC 常連線的系統應用之類的吧。您要拿來當一般8051 用,真的會比較辛苦一點。

        所以啊:Cypress USB Controller 是真的為了作USB Controller  才送您8051 的。您就不要再苛求他了。

 ---------------------------------------------------------------------------      

    其實啊,在我們可以常常利用USB 連線來更新韌體寫程式過程中,就不知不覺的寫了一大堆應用程式,尤其是這種用Keil C 寫的程式,還快就寫了十幾K了....

        但是呢?!我們當然往往又希望我們的系統應用平台,又得常常回PC 連線,所以啊,這種USB 連線介面,又是我們所需求的...搞不好,您還比較喜歡這個介面甚於8051原本的 UART 的呢!...而當我們系統做完之後,又不想花時間把我們的系統再移植到其他ROM較大容量的8051控制上...因為我的USB 介面又會不見了...唉...真的為難啊...要嘛,就得去找一棵 32 bits ARM (因為現在 32 bits ARM SOC 都有帶USB 介面了!)----這個就是前言所言的:用 32 bits ARM 去打8051 有什麼好光榮的...原本8051就可以作的事,您還得用ARM ...有什麼競爭力?!...技術有什麼好挑戰的呢?!

    簡單的結論:您是為了USB 介面才不得不採用Cypress USB Controller ...甚至為了他的8051;但是我可不可以反過來想:我可不可以先把他當作一般8051,可以寫一大堆應用程式,就是一開始原本就是"脫機運行"了。而我又可以隨時回到偃 USB 連線去更新(上傳或下載)一些應用資料,甚至更新8051本身的韌體?!----其實,後面的那個問題,才是許多人在網路上問版主有關USB 的主要問題點。

        所以啊, 才會引起版主開始想作這個實驗的想法...

以上,是我們利用Cypress 原廠的資料,分析了一些基本很簡單的 USB 介面與其內含 8051 單晶片之間的系統應用問題。

-------

        當然啊,往後還會有我的 GT USB Controller 要上場了,我們一樣從這個角度去思考:我們真的可以讓我的 GT USB Controller 完成 "脫機運行"嗎?然後又可突破 8051 先天上64 KB 程式限制嗎?---

     這是一全新完全沒有嘗試過大膽挑戰!!...更何況這顆GT USB Controller 已經是近十年前的產品了,也從這顆 GT USB Controller 離開『娘胎』後,從來都沒有做過的事!...您認為這樣的技術挑戰會成功嗎?! .....您是否也會想看看這樣的想法與實際上的落差如何達成呢?!....

        緊張.....緊張.....緊張.....緊張.....緊張.....刺激!...刺激!...刺激!...刺激!....

像不像黃俊雄布袋戲連續劇...一樣令人期待?!....哈∼ 哈∼...就請大家拭目以待!...絕對是高潮迭起..絕無冷場......

(靠!@ OX*$# ....寫USB 韌體還可以搞到這樣子....大概只有版主這個USB 園地吧!!)

首頁 | News | Products | FAQ | Technicality | Links | OldNews

Telephone : 886-3-5439918    FAX : 886-3-5437632

Copyright(C) 2005 . ChamberPlus System Level Studio All rights reserved.  Last Update: 2008年01月18日。