看板 Soft_Job 關於我們 聯絡資訊
呵,我也來湊一腳 ~ 寫寫我的工作歷史 我是 XX大學資工所畢業 ~ 現在 3X,好像是比較老的一群 orz .... 還好我長得年輕 喜歡寫程式,喜歡看別人的程式 出去逛書店也喜歡去看電腦程式的書 本身學的是嵌入式系統,大學的時候專題有 trace 過 linux 核心 研究所的時候有自己修改過 schedule 程式,有編譯執行一些 boot loader 程式 年紀大了畢業開始工作 進入了系統廠開始工作 老闆自己忙著Project沒時間管我, 給我了一塊 ASIC 板子自己玩 當時系統是使用 multi-ice 去 debug, 使用 TI 的系統 核心使用 ARM7 TDMI,算是 SOC 吧 我就無聊,開始隨便亂玩亂試 從 LED 開始玩,到 timer,watch dog,RTC,GPIO,OSD 慢慢開始上手 慢慢寫測試程式,亂設中斷 我玩得很高興 每天玩到很晚,週末自己也跑來弄 之後 我使用 cygwin, 使用網路上找到 eCos 當系統 然後使用 GNU 上找到的資源,自己編譯 multi-ice 的 driver 然後把整個 eCos porting 到我們自己的 ICE 上面 完全不使用 TI 的程式,全部都是使用 free 的東西 我完成一個爛爛的但是堪用的系統 之後我開始接觸 SD 卡 我看了 SD 的 spec,還有 code,大概花了我兩個星期 接著我開始 porting SD driver 到我們的系統上 我覺得最難的地方就是 initial 部份的 porting,要改一大堆 struct 之前我老闆已經把 SM Driver 和 file system porting 到目前系統上了 所以我只要換掉 device driver 就好 我沒日沒夜沒週末的花了兩個星期,完成了基本的 porting 就是 SD 會動,但是沒有使用 DMA 等東西 也沒有對平台做最佳化,就僅僅是一個堪用的系統而已 只可對檔案進行讀寫刪除,我想這已經 就 ok 了 接下來我又開始玩 USB 我當時看的是 USB 1.1 的 spec 我們是 device 端,文件也不用看太多 只要看1-5,6隨便看,還有9 章就好(學USB device 端的可以記下來) 看完了也完全不知道在說啥 開始trace code,突然還發現 USB 真簡單,其實只是拆拆封包,查查表, 什麼樣的命令,就回傳相對應的資料就好了 主要就是一開始的設定,descript 要熟悉一下 然後接下來看 mass storage 相關的 spec ,了解 control/ bulk in/out 接下來就開始 porting ,使用我之前的 SD driver,目標讓 USB 可以運作 做後我弄到,當連線的時候,可以傳輸一點資料,但是,如果一直不動 系統就會當機 ~ 這可能是我某些 cmd 還沒有 porting 成功 USB 又很難 debug,我當初都是開一堆記憶體,把所有的傳輸資料記下來 看一堆16進位的資料,因為 USB 不可以使用 ICE 停止看狀況的 這些大概花了我兩個月 接下來公司開始進入新案子 也停止了自我的學習 我第一件任務就是 porting xD driver 到另外一個平台上 我開始學習量訊號,一開始要 hw 工程師在我旁邊教我使用示波器 接下來我就學會可以自己使用了 xD 和 SD 是完全不同的東西 我覺得 xD 難很多,因為 SD 本身有 controller 可以幫我們處理很多事情 xD 的讀寫卻完全要自己控制,我又開始沒日沒夜的生活 我花了一個月,在 deadline 的前幾天,完成了任務 完成了根本的 porting,這次的 project 主要是先 demo給客戶, 之後才真正進入 我們的 driver 跑起來速度並不好 所以我就開始改 driver,我用 示波器 看我們速度,跟理論值比較,看看慢在哪裡 使用DMA做傳輸,和使用平台提供的 cache 做比較 我發現,某些情況要用 DMA,某些情況要用 cache,這些都要慢慢測試才知道 然後我去拿別人的系統,使用邏輯分析儀看看,人家比我們快在哪裡 猜測後,自己去偷改 driver,偷師學習 ~ 除了卡的 Driver, 我也開始正式 trace File System,從 MBR 到 BOOT 到 ROOT 到 FDB 從 NAND 到 device 之間的切換,我全部都弄到熟悉 Trace 的部份包含整個 file system, 不過主要是 Mount,fopen,fread,fwrite, seek, format 等 我不是使用這些function,我是這些function 的維護者 trace 到非常底層,因為我要改善效能,譬如說,FAT32 檔案系統, 在容量比較滿的情況,存檔速度會變慢,如何去改善效能等 ~ 也自己寫了多個 file system 相關的程式,類似 fread 等 function level 提供給 AP 更好效能的程式 ~ 這期間,我總共經歷了兩個計畫,大概花了快一年 之前除了 檔案相關的,也包含整個流程相關的一些程式 之後的半年,除了 maintain 系統的一些程式 我也出差到外的,跟別家公司一起工作一陣子 半年後我回公司,開指寫 Lens 相關程式 這也是一個 demo 的機種 總共的時間大概是兩個月,包含過年, 這也為了某個展覽而開發的產品 時間到了,總算是能夠勉強讓他動,該有的功能也都有 就效能差了點,反正能動就好 ~ :D 接下來公司又換了新的平台 我又被指派去學習新的平台的東西 跟 Vendor 一起合作 現在負責的是整個系統,我帶領了幾個人一起開發 算是一個小的 Leader Maintain 系統 我負責的是整個系統進度還有 Lens 部份 之間也出差到 Vendor 公司跟他們一起工作 四個月後,老闆正式昇我為 Leader ,正式領導團隊完成工作 這個時候,我進入公司兩年又八個月 我開始面對整個計畫 我與同team的幾個同伴,修改了我們舊有的架構 這個時候的我,雖然經歷了幾個計畫,但是對整體系統的東西, 並沒有深入的了解,所以雖然弄出了一個我認為不錯的架構, 但是不足以應付各種情況 這導致這個架構做出的系統,有點破破的,並不完美 不過也因為真正面對了整個系統,所以我更深入了解應該如何去改 目前,我在做的事情,就是改善整個系統架構 其他所有事情,只要我帶的工程師能夠做的,我都盡量不做 我幾乎完全 Focus 在系統架構上面 目標就是 要能夠讓不熟悉系統的人能夠快速的上手 要能夠讓不會很了解系統流程的人,也能夠快速的 porting 即使切換平台,也可以做到快速 porting 關鍵就是要能夠將系統切割的夠完全 一個更好的系統,能讓整個team的效能更好 我一直認為 一個 Leader 該做的事情,不是繼續當一個超級工程師 而是帶領整個 Team 走向一條更好的路 ~ 現在的我,進入公司三年又七個月 臭臭長長,不過這就是我的工作史 ~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.130.118.170
misptt2:真長~還沒看完先推一個再說! 06/21 20:53
gpmm:推一個!!不過在工作史外我也很想問問薪水史(爆) XD 06/21 20:55
Aurim:推練功史~ 06/21 21:57
seagal:推推 06/22 12:55
ntutvia:覺得你最後一段寫的很好耶!你也是個很踏實的人,推推推 06/22 15:08
moonshade:說到USB,spec 寫spec的,各家廠商都不太一樣,要做 06/22 23:58
moonshade:一顆好usb,要去市場上買一大堆usb產品回來測XD 06/22 23:59
littlebau:高手! 真的 06/24 11:06