工作經驗: |
2009/7--2010/9:上海思泰基電腦公司(50-150人)
所屬行業: 電子技術/半導體/集成電路
研發部 軟件工程師
公司主要的產品是基于PC104總線的嵌入式工業化電腦,以及工業級arm工控主板和一些通訊和數據采集使用的外擴卡。我的主要職責是移植OS(wince、UCOS等),寫驅動,寫外擴卡和底板上單片機的程序,另外調式一些新板。同時協助客戶開發他們的底板以及在我移植的OS上開發的應用程序,解決各種客戶在實際工業現場中遇到的問題。
項目經驗
2009/09 -- 2010/09:單片機程序
責任描述:和硬件工程師一起完成底板的開發。項目描述:有時候客戶把整個底板外包給我們設計,這時需要設計底板上的電路和編寫單片機的電路。
我能使用multisim進行模擬電路部分的仿真,并結合主板(算是上位機)和底板的通訊(一般都是串口),使用單片機對底板上的led燈,蜂鳴器和繼電器等設備進行控制。編程上使用時間片調度法。
2009/09 -- 2010/09:定制wince
責任描述:獨立完成移植工作。項目描述:為不同的客戶定制不同的wince操作系統。
心得:
1.wince的移植工作主要是修改bib和reg文件,因此在生成鏡像之后從release目錄拷貝ce.bib和reginit.ini出來進行分析,看需要的reg和bib設置是否正確定義。
2.reg文件主要定義各種設置,最常用的就是主題和顏色,背景圖片等人機界面。還有驅動需要的參數,比如ip地址。開機啟動程序的順序,依賴關系等等。
3.bib文件主要是定義二進制鏡像的生成規定。是否包含某一文件,或者各種地址區的定義。
4.各項目之間oal層代碼和reg,bib文件的改動頻繁,需要編制詳細的文檔以免出錯。利用uedit和beycompare來進行代碼控制。
5.勤查pb的幫助,里面對于各種reg項和bsp包中各種文件的語法定義都有詳細的描述。
6.wince的設計法則并不復雜,都是使用一些有嚴格語法定義的描述性文件。在開發圖形界面上又由于api和mfc有很大的優勢。但是其實時性一直是一個問題,在大規模實時性要求高的場合,還是應該考慮使用其他os。
2008/09 -- 2010/09:CAN卡驅動
責任描述:硬件部分協助cpld的工程師進行,軟件部分由我獨立完成。項目描述:將工控主板上的PC104總線通過外擴卡轉換成can總線的時序,以供客戶通過我們的主板來控制一些以can總線為通訊媒介的設備。由于pc104的地址和數據線是分開的,而can總線是分時復用的,在硬件時序上用cpld進行控制,從而使這個部分對驅動透明。
過程:
1.用driverworks生成windows wdm驅動架構,并在向導里定義相應資源。使驅動層架構和irp在各層間的傳遞對項目透明。
2.利用driverworks提供的操作io和地址映射的類進行時序的調式,結合can specification和sja1000的寄存器定義,手調時序,配合示波器等調式設備。
3.驅動應客戶實際要求做過多次改動,最后形成支持peil和basic模式,可收發長短貞,以前總線狀態判斷等多種功能。
4.因為sja1000的硬件接受緩沖區只有5貞,在大量收發條件下容易丟貞,和cpld工程師溝通后。用中斷配合一個二維數組構建的環形隊列,寫成一個512字節大小的軟件緩沖區,經客戶實際實驗后可在工程中使用。
5.為使客戶更加方便得調用驅動。寫了個dll動態鏈接庫,函數輸出格式為stdcall,支持在多線程中調用。另外還編寫了一個簡單的mfc窗體程序給客戶顯示如何使用dll中的程序。
2008/09 -- 2010/09:工控ARM板開機優化
責任描述:硬件部分主要協助硬件工程師,軟件部分獨立完成。項目描述:使用公司arm板再配合底板做工控開發的客戶很多,每個客戶的要求都不同。但是對于開機速度和開機logo等都有一定的速度要求,因此總工讓我對此進行優化。
過程:
1.為了方便在一個無os的環境下調試寄存器,我在虛擬機里裝上redhat9.0,以及edlk。然后從denx官網下載了uboot,修改部分參數,并移植到了ep9315的板子上,uboot功能強大,通過串口可以傳送很多命令進行調式。
2.原來的開機logo做在oal層中,這就必須等wince拷貝到ram中之后運行,需要幾秒時間。為使上電第一刻就啟動開機logo,在startup.s里手寫了一段啟動開機logo的匯編。將開機logo數組通過const關鍵字固定在nk中的某個地址。此外客戶希望給同樣的nk以不同的開機logo,他們自行修改。我建議他們使用非xif的nb0鏡像,使用工具直接替換圖片的16進制段來修改。
3.為了加快開機速度,在oal層做了許多改動。另外在reg中刪除一些沒有必要加載的驅動。
2008/09 -- 2010/09:調式板卡
責任描述:多方面協調進行調式。項目描述:為了減輕硬件工程師的工作量,以及避免因為設計引起的思維定勢。我也經常調式一些板卡,在調式時要軟硬件結合。比如調式某一塊視頻采集卡時,就使用了vxworks并寫了個驅動。
處于避免風險的考慮,我們公司一般都使用現有的idea,研發的板子都有現例,可行性上不存在問題。我調式時遇到的問題多為上下拉的信號選擇錯誤,時鐘信號線反,甚至是虛汗短路等,在調式的過程中增長了不少硬件知識。 |