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