第一篇:關于嵌入式開發的一點建議
CSDN:很多人都講嵌入式開發很難,能不能就你學習和工作經驗與大家分享下嵌入式開發如何開始和深入?作為嵌入式研發工程師,你認為其應具備哪些知識結構和實戰能力? 卜茂霞:說到嵌入式開發如何開始和深入,其實我也沒有特別的方法,在這里僅談下我的個人見解吧。做嵌入式開發必須具備良好的C語言功底,匯編雖然不是必須,但懂點更好。其次可以到網上找一個比較流行的MCU開發板,比如STM32做為學習開發板,參照示例代碼,自己動手編譯燒錄跑程序,比如跑馬燈的程序,深刻了解整個開發過程。接下來可以學習小型的實時操作系統,比如UC/OS和RT-Thread等,如果C語言比較好的話可以嘗試了解這個實時操作系統的原理部分,嘗試閱讀其源碼,掌握其使用技巧。而接下來最好是能參與具體的開發項目,負責幾個模塊,寫寫驅動,或做應用。
需要強調的是,每個過程一定要自己嘗試動手,不要停留在書本或官方提供的開發手冊上,一定要通過自己的實踐去驗證自己想法,在這個過程中通過不斷思考與驗證,有問題找經驗豐富的同事或在網上找答案,另外最好能將心得記錄下來(比如說寫CSDN博客),并不斷總結。這樣持之以恒,不知不覺你就會發現已經進入資深嵌入式開發工程師的行列了。個人認為嵌入式開發工程師應具備:1.良好的C語言功底。2.至少熟悉一款MCU,其它的技能可以在具體項目中不斷學習來補充。
第二篇:嵌入式開發工程師
任職要求:
1、大學本科及以上學歷,2年以上工作經驗,計算機電子通訊類專業畢業;
2、能夠熟練使用POWER PCB或PROTEL或ORCAD等電路設計軟件進行PCB設計;
3、熟悉電子元器件,能獨立設計數字及模擬電路,擁有單片機開發工作經驗,懂得RF433無線及紅外遙控等相關知識;
4、熟練使用C語言,有嵌入式開發工作開發及智能家居防盜報警產品經驗者優先。
崗位職責:
1、新產品項目設計開發工作;
2、為相關部門及項目提供技術支持;
3、產品售后返修分析,品質不斷提升性能改進;
4、組織對新研發產品的制樣、驗證、試產、量產等工作的確認與審核。
第三篇:嵌入式Linux開發流程
嵌入式Linux開發流程
嵌入式 linux開發,根據應用需求的不同有不同的配置開發方法,但是一般都經過以下過程:
建立開發環境。操作系統一般 REDHAT-LINUX,版本 7 到9 都可以,選擇定制安裝或全部安裝,通過網絡下載相應的 GCC 交叉編譯器進行安裝(比如 arm-linux-gcc、arm-uclibc-gcc),或者安裝產品廠家提供的交叉編譯器。
配置開發主機。配置 MINICOM,一般參數為115200,數據位 8位,停止位 1,無奇偶校驗,軟硬件控制流設為無。在 WINDOWS 下的超級終端的配置也是這樣。MINICOM軟件的作用是作為調試嵌入式開發板信息輸出的監視器和鍵盤輸入的工具;配置網絡,主要是配置 NFS 網絡文件系統,需要關閉防火墻,簡化嵌入式網絡調試環境設置過程。
建立引導裝載程序BOOTLOADER,從網絡上下載一些公開源代碼的BOOTLOADER,如 U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根據自己具體芯片進行移植修改。有些芯片沒有內置引導裝載程序,比如三星的 ARM7、ARM9 系列芯片,這樣就需要編寫燒寫開發板上 flash 的燒寫程序,網絡上有免費下載的 WINDOWS 下通過JTAG并口簡易仿真器燒寫 ARM 外圍 flash 芯片的程序。也有 LINUX 下公開源代碼的J-FLASH 程序。如果不能燒寫自己的開發板,就需要根據自己的具體電路進行源代碼修改。這是讓系統可以正常運行的第一步。如果你購買了廠商提供的仿真器,當然比較容易燒寫flash了,但是其中的核心技術是無法了解的。這對于需要迅速開發應用的人來說可以極大地提高開發速度。
下載別人已經移植好的 LINUX 操作系統,如 UCLINUX、ARM-LINUX、PPC-LINUX等,如果有專門針對你所使用的CPU移植好的 LINUX 操作系統那是再好不過,下載后再添加自己的特定硬件的驅動程序,進行調試修改,對于帶 MMU的 CPU可以使用模塊方式調試驅動,對于 UCLINUX 這樣的系統好像只能編譯進內核進行調試。
建立根文件系統,從下載使用 BUSYBOX 軟件進行功能裁減,產生一個最基本的根文件系統,再根據自己的應用需要添加其他的程序。默認的啟動腳本一般都不會符合應用的需要,所以就要修改根文件系統中的啟動腳本,它的存放位置位于 /etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile 等,自動掛裝文件系統的配置文件/etc/fstab,具體情況會隨系統不同而不同。根文件系統在嵌入式系統中一般設為只讀,需要使用 mkcramfs、genromfs 等工具產生燒寫映象文件。
建立應用程序的 flash 磁盤分區,一般使用JFFS2 或 YAFFS 文件系統,這需要在內核中提供這些文件系統的驅動,有的系統使用一個線性 flash(NOR 型)512K-32M,有的系統使用非線性 flash(NAND型)8-512M,有的兩個同時使用,需要根據應用規劃 flash的分區方案。
開發應用程序,可以下載到根文件系統中,也可以放入 YAFFS、JFFS2 文件系統中,有的應用程序不使用根文件系統,而是直接將應用程序和內核設計在一起,這有點類似于UCOS-II 的方式。
燒寫內核、根文件系統、應用程序。
發布產品。
第四篇:嵌入式開發工程師-簡歷
【個人信息】姓名:
身高:
性別:
學歷:
籍貫:
專業:電子信息工程
聯系電話:
E-mail:
【求職意向】? 嵌入式開發工程師或相關工作,對LINUX驅動開發極感興趣
【工作經驗】? 2009.3----2010.3中山長寶GPS衛星導航有限公司
? 2009.1----2009.3中山世博游藝有限公司
【教育背景】? 2010.3——2010.7廣州粵嵌通信科技股份有限公司(簡稱粵嵌教育)ARM+Linux培訓
? 2005.9——2009.6廣州大學松田學院電子信息工程工學學士
【項目經驗】?
?
?
?
? GPS車載終端,GPS個人定位器(從事一年相關工作)基于ARM9的嵌入式智能家居系統(QT圖像界面,應用程序,驅動等)基于ARM9的嵌入式視頻點播系統(包括本地播放,網絡播放)ARM9(S3C2440)的嵌入式系統移植(Uboot,Kernel,Rootfs,Driver)LINUX簡單聊天工具
【相關技能】
?
?
?
?
?
?
?
?
?
? 英語水平: 四 級 掌握C、C++編程,有良好的編程風格 了解Linux內核機制,熟悉Linux驅動開發 熟練使用單片機(如STC系列,SST系列,INTEL系列)熟悉ARM9的硬件結構 熟悉Linux操作系統、交叉編譯環境,掌握常用腳本編寫 熟悉BootLoader制作,內核的剪裁,驅動及根文件系統的移植 熟悉QT編程 , TCP/IP協議,掌握Linux應用編程 了解SQL基礎知識 熟悉GSM.GPS的使用
【語言水平】? 粵語/國語流利;英語已通過CET-4,可閱讀專業相關資料
項目簡介
? GPS車載終端,GPS個人定位器
軟件環境: KEIL 51
硬件環境: BENQ M23,M33 通信模塊,51單片機,和GPS模塊
項目描述: 通過MCU把GPS采集的數據處理后,通過串過發送AT指令使GSM
撥通GPRS網絡,再把采集的GPS數據,按照定義好的協議上存到監
控平臺
? ARM9(S3C2440)LED流水燈、LCD文字及圖片顯示設計
軟件環境: ADS1.2
硬件環境:ARM9(2440)開發板
項目描述: 將設計的程序移植到ARM9上,并成功驅動LED、LCD,完成LED
流水燈、LCD文字及圖片顯示項目
? ARM9(S3C2440)嵌入式系統移植
軟件環境: Linux2.6.24,U-boot,Qtopia
硬件環境: ARM9(2440)開發板
項目描述: 在2440上成功完成了U-boot移植,Linux內核的剪裁與移植,根文
件系統的制作,并完成了LED、LCD等驅動的移植。
? 基于ARM9的VOD點播系統
軟件環境: Linux2.6.12,U-boot,Qtopia
硬件環境: GEC2440開發板
項目描述: 培訓實戰項目,完成了S3C2440嵌入式系統的整體移植,它基于
QT圖形界面,移植了MPlayer播放器,實現了VOD(本地和網絡)
多媒體點播,? ARM9(S3C2440)嵌入式智能家居系統
軟件環境: Linux2.6.12,U-boot,Qtopia
硬件環境: ARM9(2440)開發板
項目描述: 本系統主要實現溫度檢測,紅外檢測,蜂鳴器報警,步進機轉動(模擬控
制家電),GSM短信通知等驅動,QT圖形界面顯示和應用編程.把溫
度傳感器和紅外線采集的數據,傳給應用程序,應用程序把數據顯示
在QT界面,當應用程序檢測到溫度過高或有人闖進時,應用程序就調
用蜂鳴器報警驅動,并發短信通知主人,主人也可以下發短信控制步
進機轉動
本人做的LINUX驅動簡介
? ds18b20溫度傳感器Linux驅動
該驅動為字符型驅動程序,能從ds18b20芯片讀取溫度信息.ds18b20芯片采用了獨特的1-wire bus技術,只用一根數據線即可實現與cpu芯片的連接(利用了cpu gpio本身的弱上拉電阻)。本驅動程序的重點是實現字符驅動的讀函數接口。由于硬件連線簡單,對ds18b20的軟件操作較為繁瑣,每一個操作都要要經過以下三個步驟:(1)芯片初始化(2)芯片選擇(因為一線總線上可掛載多個ds18b20, 所以必須通過一定的機制指明操作的對象)(3)發送功能命令(例如,溫度查詢命令)和讀取數據。在初始化的步驟中,cpu拉低數據線,然后釋放數
據線,經過一定時間讀取數據線上的值,如為低電平,則表明數據上掛載了ds18b20,否則初始化失敗。在芯片選擇的步驟中,由于只掛載了一片ds18b20, 所以只需發送skip rom命令即可。在發送功能命令的步驟中,首先發送溫度查詢命令(convert t), 然后在數據線上讀取兩個字節的溫度數據,溫度數據按由低位低字節向高位高字節的順序發送,余下的為溫度無關數據,可忽略。溫度數據的0-10位為數值位(最小單位為0.0625), 11-15位為擴展符號位。該驅動使用linux的udelay函數來實現時序操作所要求的延時操作。
? 使用內存模擬塊設備并掛載ext2文件系統(簡單塊設備驅動)
本驅動程序使用kmalloc分配出一塊內存區域來模擬塊設備,并在該塊設備上掛載ext2文件系統。本驅動程序同時實現了字符設備和塊設備驅動接口。塊設備的內容通過字符驅動的寫函數由用戶空間寫入。塊設備接口實現的重點是其初始化函數和request函數的實現。在初始化函數中完成以下操作:注冊塊設備主設備號(register_blkdev),注冊request函數的實現并獲取與之關聯的request_queue,設置request_queue的一些參數(例如,blk_queue_hardsect_size和blk_queue_max_sectors),分配(alloc_disk)和設置塊設備結構體gendisk,注冊gendisk。在request函數的實現中完成以下操作:獲取request_queue中的第一個request結構體(elv_next_request), 遍歷該request結構體中每一個bio(rq_for_each_bio)中的每一個segment(bio_for_each_segment),在循環體中將每個segment的數據發送到塊設備控制器(或從塊設備控制器中讀入segment中)。遍歷完成后,從request_queue中移除該request結構體(end_that_request_first),重復以上操作,直到request_queue為空,最后調用end_that_request_last做一些收尾工作。可以看到,塊設備的驅動格式較為固定,不像字符驅動那樣靈活。文件系統通過以下方法制作:首先建立一個2M大小的“空白”文件(dd),然后格式化該文件(mkfs.ext2),最后通過mount命令進行掛載,并創建文件系統內容。制作好的文件系統通過字符驅動的寫接口寫入驅動內存(cat), 最后掛載塊設備。
? 蜂鳴器驅動
本驅動程序屬于字符型驅動,由于該蜂鳴器物理硬件連接的是定時器的TOUT1管腳,只要實現定時器1的PWM功能即可,實現PWM功能,我們需要設置定時器的頻率,也就是蜂鳴器的頻率,并設置占空比.蜂鳴器啟動的代碼在IOCTL系統調用里實現,并把蜂鳴器的響應時間,以參數形式傳給IOCTL這自己定義的函數.驅動蜂鳴器。
? 紅外感應驅動
本驅動程序屬于字符型驅動,紅外感應的原理,簡單的描述就是當有人靠近時,該模塊相應的管腳會產生高電平,沒人靠近時,該管腳為低電平.此工作原理,相當于一個外部中斷,所以只要住一個帶有外部中斷的字符驅動即可
? GSM驅動(即串口驅動)
本驅動程序屬于字符型驅動,首先用ioremap申請串口相關控制寄存器,再編寫串口接受和發送的中斷程序,當寄存器UTRSTAT的第0位為真,表示接受到收據,當寄存器UTRSTART第2位為1時,表示可以發送寄存器為空,可以發送數據
【求職感言】? 我對嵌入式計算機行業抱有熱情,有強烈的求知欲和對新技術和新方法的熱
忱,希望能得到一個良好的平臺和起點,得到鍛煉和提升的機會
【業余愛好】
● 看書,籃球,足球,魔獸爭霸
【自我評價】●具備吃苦、耐勞的能力,敢于面對錯誤和承擔責任。
第五篇:Android 嵌入式開發心得體會
Android 嵌入式開發心得體會
剛開始接觸Android感覺到它很有意思,在界面開發上和web也可以形成了相通的架構,更加方便,視覺上也是非常的酷,在前期我通過的大量的Android SDK開發范例大全中的例子以及Android提供的APIDEMOS進行學習,盡管例子之間的連接比較零散,不過通過這些例子的學習我可以學習到了很多和以前java上相通的思想,因為Android在現在也是全新的技術和框架,在其中我也學到了如何用單例模式、工廠模式等常用的設計模式進行學習,通過API進行開發客戶端,對Request發送,Response處理中通過比較方便的JSON對象傳輸,以及對XML、JSON、圖片、業務等下載處理,對API接口調用等問題處理,學習Android心得體會。首先在界面上,我們同樣可以通過不同布局進行設計非常酷的界面,這些界面可以通過include進行引入,和jsp、html也有相通的地方,同樣在android上可以用到自定義的樣式這和css也有比較相通的地方,我們可以通過一些公用的方法寫個BaseActivity這個基類,通過繼承方式比較不錯的實現了Activity的界面,因為這樣你可以Header(頭部)和Footer(尾部)進行處理一些觸發事件或者特效等,布局模式以相對模式為主,線線布局模式可以在比較簡單的include進行完成,最重要的一點就是:我們可以自己通過重寫方法或者通過實現View或者Layout等類進行擴充項目需要的布局(或者控件),在學習界面中,我發現Android為我們提供了很好的類似反射機制,通過Layout文件夾下的配置文件,可以快速的形成界面,在配置文件可以設置屬性或者樣式都是很快捷方便。對比較特殊的界面也可以通過處理嵌入到指定的界面,同樣你可以通過java代碼直接創建View進行添加,不過這種方式比較復雜。對一些點擊、選中、按鍵等處理的事件,界面之間的跳轉Intent管理,通過Bundle對數據在界面之間進行傳輸。其次在手機交互式通信服務中,學習了Android手機之間進行短信發送、廣播、對廣播的監聽、服務等,在Service類中沒有context,可以通過Handler來每秒反復運行,自動送出系統廣播信息,同時在這里我們也知道可以設計一個常用的變量類,設計一個當前的CurrentActivity這個變量進行控制,進行處理。
總而言之,Android設計還是比較自由開闊的,只要有想法,自己動手便能實現。