2021年1月30日 星期六

STM32_USB_DIY(六)---MSDC 介面系列一:故事回顧

 好吧,這回我們再回頭來講講一些關於USB 技術的東西,也不要說一天到晚

在說教。我們講那些只是供大家在技術鑽研以外,也有一些工作或生涯發展

的感想吧。

但我現在也不是很想把技術講得很深奧,年紀一大把了,還賣弄學問反而覺得

很幼稚。以前我就觀察與發現:有些人不知道是可能覺得自己以前沒有唸個學位,

然後搞技術又怕別人瞧不起他似的,總是喜歡把自己的技術晾出來,年輕時,

還好,可能有職場或商場競爭形象問題,我們也就看看、聽聽就好。

但如果年紀一大把了,還搞這一套,我就覺得不必了。尤其除了晾技術之外,

還動不動就老是譏諷時下年輕人怎麼?又怎麼的?

我覺得這心理也只不過之前那個學歷問題的延伸而已。人生嘛!幹嘛那麼看不開呢?

學海無涯,更何況人生也不只是技術學問,其實還有很多人生體驗值得我們稍微放下

技術,去看看世界或幫幫年輕人一點忙的吧!像我兩個兒子都已經在園區上班了,

他們上班搞的技術,肯定是比我先進或更具有未來性,我們倆個老的在家哩,也只能

幫忙整理家裡,洗洗衣服做做家事、代收包裹郵件,人家下班後準備個水果之類的。

我們在技術上的專業能幫上忙的機會也不多了。

所以我認為相對以前我寫部落格的心境就應該有些轉變或調整吧。

覺得在技術還有一些提示的機會,也相對可以因此提供一些工作上的經驗交流,

也不妨提出來供大家參考一下:在技術養成與產品發展的配合下,在你我的工作

經驗上,可能會激發出甚麼想法?或有些借鏡可以供大家思考與借鏡的地方

然後我覺得 USB 這個東西,我還是有些一些東西可以讓大家參考看看,因為

在我目前工作上,還是有很多小型企業或許多初學者會碰到一些問題的。

這只能說:很幸運的,算是老天爺還蠻照顧我的,到了這個年紀還有一點可用的

一技之長啊。所以大家如果不嫌棄的話,就加減多多少少參考一下吧。

---

之前我USB 都是集中在HID 介面,尤其是 Custom HID ,這些都是因為是客製化

的程度比較高,所以在系統開發與應用上會比較多一點空間,但其實我也不只

搞過HID 而已,應該說:在搞HID 很久以前,我也有搞過USB  MSDC 

(Mass Storage Device Class) 的東西,這個東西主要就是隨身碟(U盤) 或讀卡機

之類的。只是這個東西因為是標準化的東西,所以能講的東西也非常有限。

而我之前在Hinet 網頁也有稍微提過,那時主要的主題是隨身碟型的MP3 撥放器,

但這個東西在我們那個時代還可以用 SOC 方式做,但現在也已經不用了,

隨隨便便的一顆STM32 的ARM 就可以搞定了:


還記得這張圖嗎?左下角黃色部分就是。然後再系統應用上跟他息息相關的就是

DOS File System,現在網路上的名詞為:FATFS( FAT File System) 。這些東西

現在在網路上都已經有一大堆開放源供你下載直接使用了,而且以前我們還用

八位元的MCU 搞,現在直接用 32 位元的ARM,相得益彰啊。

但如果只是搞MSDC 隨身碟的話,那也不用FATFS ,那就更簡單了:


就是上圖右邊PC 進來走綠色的路徑就可以了。當然啊,現在你只要用一般 STM32 

系統平台的話,那你也不用擔心,原廠也有提供各種範例程式給你用。

坦白講:現在一切開放源之後,系統應用也好像不怎麼值錢了。

不過,這還是有許多故事可以講的啦。

----

其實在我加入這個MP3 SOC 團隊之前,我就已經搞了一陣子的MSDC 了。

這也是很好玩的故事:一般公司合併,被併的公司往往內部人員的級職都會至少

降一級,譬如總經理會變成副總經理,副總經理會變成協理或處長,然後

經理可能還是經理...底下的就沒差了,但我是唯一例外的:

我在合併後,因為合併公司需要一個在USB MSDC 方面有經驗的人來開發

隨身碟型MP3 SOC,所以我在合併後短短幾個月內就從副理提拔為部門主管。

當然這件事有好、有壞。人家可能是從技術團隊需求來看這件事,但未必

所有人都可以認同的,所以後來也引發了一點政治風波 (我也是好幾年之後

私底下才知道的。不過,也已經過了十幾年了,這件事就不用再說了。)

所以啦,搞技術簡單,但要搞技術的人來碰職場文化的東西,

就未必所有工程師就可以理解的。

---

我在接MP3 SOC 的 MSDC 時,其實也不用花太多心思,因為大公司分工細,

就算沒有開放原始碼給你用,人家大公司就是有辦法生給你的:


看到沒,還不止一般的NAND FLASH 而已,還所有的記憶卡都幫你搞定了。


還幫你把MSDC 底層的SCSI 命令組都幫你搞好了。還是用高階C 語言搞定。

有任何問題,你還可以以部門主管跨部門要求別的部門工程師支援你。

大公司大團隊,做事情就是不一樣的。那我們再回頭我們以前在小公司的做法:


你看這個檔案日期:2001 年,你看我多早就搞過USB MSDC 了。


還是用組合語言寫這種 USB MSDC 的呢!多可憐啊。

所以啦,這就告訴我們一件事:事情有時候不要老是以小公司的那一種小眼睛、

小鼻子的角度看人事物,不是你幾個人技術有多好?只是人家大公司不太想理你

而已罷了。我當然不是吹捧大公司如何?而是如果你也有機會接觸不同層面之後,

或許你的許多觀點是不一樣的。不是人家年輕人不行,而是每個人看事情,解讀

事物的角度不同吧。你小貓兩三隻,讓你搞個幾年,技術底有多強?但人家就是

大組織,大團隊,分工合作,短短一兩年因應市場搞出個名堂,搶市場時機,

就像我們那個MP3 SOC 一搞完,在大陸市場一上市,憑著業務通路與工廠,

一個月簡簡單單也可以衝出個幾百K 訂單,一年也可以貢獻個幾千萬、幾億的營收。

所以,你講技術有甚麼用?這個才是年輕人需要培養出的視野與企圖心啊。

一樣很累,但你會覺得累得很爽,很值得啊。你人生可以遇到幾次呢?

---

好吧,我們就來講幾個簡單的USB MSDC 的技術觀點吧。

從上面的故事,你就知道這個東西已經出來多久了,但現在還是有一大堆系統

應用機會,所以我相信還是有許多人會碰到的。但光看開放原始碼也不一定能搞得懂

這些玩意兒,其實最主要的還是要回到系統規格與標準吧。

以下這是我一開始搞USB MSDC 所收集參考的文檔:我們那時候比較可憐辛苦,

沒有甚麼Github 或是到處一大堆網頁可以供你下載參考的。

搞USB MSDC 主要就是最下方的兩個檔案:USBmassbulk_10.pdf 及
 
usbmass-ufi10.pdf。至於最上方的那一個 SCSI 規格(SPC2r20.pdf) 不一定非要不可,

可以參考參考一下吧。

如果你問我搞 USB MSDC 比較難呢?還是USB HID 比較難?

以MCU系統角度來說:應該 USB MSDC 比較簡單:


你看:USB MSDC 的規格書只有 22 頁而已。扣掉前後一些屁話頁數之外,

能看也不過十幾頁而已。這麼簡單。

然後USB MSDC 透過SCSI 走 UFI 命令組的規格書:



也才 53 頁而已。現在很多MCU 的規格書動輒已經超過五百頁或甚至一千多頁的,

比比皆是,那你說 USB MSDC 是不是簡單多了。

更何況:USB MSDC 在PC 端也不用你搞甚麼軟體,作業系統一打開就可以透過

檔案管理員的 File System (隨身碟(可移動硬碟)或U盤) 就可以直接存取了。

---

這個原因也就是我以前為什麼沒有拿出來講的原因,在技術上沒啥好說甚麼的啦。

更何況現在以 STM32 的開放平台來說:大家把原廠的程式直接套用不就馬上可以

使用了嗎?

但各位看官也一定比較好奇說:那你以前不講,那為什麼現在又要拿出來講呢?

一來因為以前我們用的MCU 或開發平台,比較冷門專屬,所以講了沒用。

現在像 STM32 ARM 這一種平台比較普通與垂手可得的系統,大家也比較容易

接觸到。所以大家有興趣也比較容易取得玩玩吧。

二來:當然還是有一些特殊的系統需求啦,因為我以前的團隊工程師們,

大家各奔前程之後,有人跑去專門搞隨身碟控制晶片公司,他們這些人

都是在這些標準規範裡搞一些特殊產品或市場在玩的。最近他們就教了我

一招如何在標準的USB MSDC 隨身碟的介面,去執行一下系統的特殊功能

與指令。這些玩意兒,說穿了~也沒有多偉大的技術,只是玩技術就跟

玩魔術馬戲一樣,手法各個不同罷了。

所以藉機就拿出來討論,分享給大家囉。不過,這些東西以技術角度來說:

真的不難,比較難的是:你在工作上,如何說服主管或公司老闆們讓你

可以專心鑽研一陣子?或是你學了之後,你要如何轉換成對你是比較有利

的"附加價值",否則,你老是學了一大堆東西,沒機會發揮,只是拿來耍耍

嘴皮子,噴噴年輕人,有甚麼用?

看看上面我講的我個人的故事:你有沒有覺得有時候,學東西或學技術,

有時候還是得自己找一點機會比較重要,其實我上述那個公司合併升遷的故事,

我不是乖乖地待在原公司等公司合併之後,再任人安排處置的~

而是我之知道公司合併後,我去人家公司打聽一下:我有沒有別的發展機會?

因為成功機會是留給準備好的人,但不會完完全全的掉到你頭上的啦,

也是要自己出們去找的啦

雖然有引發一些後續的非技術的職場官場文化衝突,但你說:出來混,誰不會

碰到這種鳥事呢?你說對不對啊?這本來就是標準的職場文化。

你看人家大公司好的職缺也是有限啊,要升官發財,也是要爭、要鬥啊。

不過,我聲明一下:當年合併升遷,我沒有影響任何人,也沒有任何違法或

違反人心道德之事宜。純粹就是大公司人多嘴雜....純八卦流言而已。

後來公司的高階主管也有出面安撫一下,只是大公司也有大公司麻煩討厭的

地方,沒辦法!家家都有一本難念的經嘛!職場混久你就知道了。

---

好吧,接下來我們還是講講一些關於USB MSDC 的一些技術內容吧。

待續。






4 則留言:

  1. 年紀越大,越相信一句話「選擇比努力重要」,如果我的技術真有我說的那麼厲害,那我怎麼會過得@#$&...再說比我厲害的不知凡幾,我收過履歷還有人念到博士,我怎麼樣也不可能比他厲害,這時候反而就會心懷感激,沒有親朋好友幫忙,這把年紀還能靠這點本領吃飯?

    最近聽聞一位技術普普的老同事還留在原公司,人家每年還是領的不錯阿,反而是那些見異思遷的同事們,不是大好就是大壞...聽說他存夠錢要送小孩出國留學了,不像我每個月聽老闆報業績報的膽顫心驚,絲毫不敢懈怠

    回覆刪除
    回覆
    1. 非常認同選擇比努力重要阿,
      但仔細比較想想,時空背景不同,很多選擇也不是我們想選就能選的,例如
      現在看到30出頭就叫做資深,進入G大公司,他的選擇好,我們呢?
      在我當初選擇的時候,G大公司還未誕生呢
      現在年輕人可以交換學生,參加競賽,我呢?
      學生時期沒資訊去參加交換學生,老師沒意願參加比賽

      很多的背景不同,造就當時的我們選擇不多,
      現在的選擇多了,反而是當初不務正業的人,得到更多的生存空間
      感受到,我們把一門專業搞到專精,結果變成不敢鬆懈,
      現在要換跑道也沒這個體力了

      刪除
    2. @Goodspeed :

      "最近聽聞一位技術普普的老同事還留在原公司,人家每年還是領的不錯阿,反而是那些見異思遷的同事們,不是大好就是大壞...."

      這種事情就不用太在意啊。也有人讀到台清交,跑去當安安穩穩的公務人員的...

      那如果看到昔日同學在園區領股票、領薪水紅利領到手軟的...那怎麼辦?

      每個人在選擇之前,沒有人可以清楚的告訴你:這個選擇是對?是錯的?

      這還得視你從哪個角度看待的。所以啦,只要心隨境轉,快樂就好...

      只是既然選擇了,就不要再有抱怨,不如從自己所選擇的,去發掘出它的好處與優點。

      好好地在未來的日子去喜歡她、善待他...其實有時候他也會好好的回報你的啦。

      只是有些事情(你老同事那件事),也不一定如你或我們所看到那般情境的啦。

      我也聽過:老公在園區擔任高階主管,每年領薪水獎金,領得爽歪歪的...

      但老婆一天到晚都在抱怨這個、抱怨那個,還有每天為小孩子的事操煩不已。

      所以啦,人比人,比不完的啦。

      刪除
    3. @lance 是啊。千金難買早知道,萬般無奈沒想到。

      人生可貴之處,應該不是在於讓你每每回首感嘆不已,

      而是從這裏面讓你更懂得珍惜現在與未來的機會。

      有時候,我們也都會難免會羨慕人家穩穩安定的生活日子,

      但別人也可能會覺得他們非常羨慕我們的人生精彩啊。

      所以我們可以看看人家西方國家那接些冒險家們...若以我們中國人

      那一種儒家持家精神來說,可能也難以接受;但人家也就是因為那一股精神,

      今天才能在科技或許多創新產業中,領先我們許多...不是嗎?

      刪除