當前位置:首頁 » 編程語言 » 開源嵌入式c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

開源嵌入式c語言

發布時間: 2022-07-08 06:02:48

⑴ 嵌入式系統c語言編程該怎麼學

目前所有嵌入式系統,包括ecos,ucos,以及linux系列等,均是由C語言配合少量匯編語言書寫的。所以從編程語言角度來說,只會C語言就足夠了。
由於C語言可以直接操作硬體的特性,被大量使用於操作系統,驅動及其它硬體相關代碼的編寫。嵌入式系統或編程的學習,最基礎的就是C語言了。
不過要學好嵌入式,除了C語言,還需要一定的硬體知識及操作系統相關的理論知識,如進程調度,內存池等。這些可以在學習嵌入式系統的過程中逐步學習,並非前提。

⑵ 嵌入式C語言

Linux C編程一站式學習這本書,我感覺不錯,還是免費的,GPL的,感覺講得蠻詳細的,而且比較細節...

本書有以下特點:

不是孤立地講C語言,而是和編譯原理、操作系統、計算機體系結構結合起來講。或者說,本書的內容只是以C語言為載體,真正講的是計算機的原理和程序的原理。

強調基本概念和基本原理,在編排順序上非常重視概念之間的依賴關系,每次引入一個新的概念,只依賴於前面章節已經講過的概念,而絕不會依賴後面章節要講的概念。有些地方為了敘述得完整,也會引用後面要講的內容,比如說「有關XX我們到XX章再仔細講解」,凡是這種引用都不是必要的依賴,可以當它不存在,只管繼續往下看就行了。

盡量做到每個知識點直到要用的時候才引入。過早引入一個知識點,講完了又不用它,讀者很快就會遺忘,這是不符合認知規律的。

如果僅僅是應用,那麼在 LINUX下還是在windows 編程相差不是特別大的,系統都會提供api讓你調用...但windows下IDE做得相對較好些,linux 下要自己寫makefile組織工程,不過現在應該也有IDE的一些工具提供應用編程的吧,不過在linux下,makefile 很重要,還是有必要了解的..

至於嵌入式,主要是可移動,是為某個專門功能開發的,記得就是計算機的簡化版..

⑶ C做嵌入式開發

你應該從以下方向去學習:
一、工具的使用

1、學會使用vim/emacs,vim/emacs是linux下最常用的源碼編輯具,不光要學會用它們編輯源碼,還要學會用它們進行查找、定位、替換等。新手的話推薦使用vim,這也是我目前使用的文本編輯器。

2、學會makefile文件的編寫規則,並結合使用工具aclocal、autoconf和automake生成makefile文件。

3、掌握gcc和gdb的基本用法。掌握gcc的用法對於構建一個軟體包很有益處,當軟體包包含的文件比較多的時候,你還能用gcc把它手動編譯出來,你就會對軟體包中各個文件間的依賴關系有一個清晰的了解。

4、掌握svn/cvs的基本用法。這是linux,也是開源社區最常用的版本管理系統。可以去試著參加sourceforge上的一些開源項目。

二、linux/unix系統調用與標准C庫

系統調用應用軟體與操作系統的介面,其重要性自然不用說,一定要掌握。推薦學習資料為steven先生的UNIX環境高級編程(簡稱APUE)。

三、庫的學習

無論是在哪個平台做軟體開發,對於庫的學習都很重要,linux下的開發庫很多,我主要介紹一下我常常用到的一些庫。

1、glib庫

glib 庫是gtk+和gnome的基礎庫,並具是跨平台的,在linux、unix和windows下都可以用。glib庫對於linux平台開發的影響就像 MFC對windows平台開發的影響一樣,很多開源項目都大量的使用了glib庫,包括gimp、gnome、gaim、evolution和 linux下的集群軟體heartbeat.因為glib庫自帶有基本的數據結構實現,所以在學習glib庫的時候可以順便學習一下基本的數據結構(包括鏈表、樹、隊列和hash表)。

2、libxml庫

libxml是linux平台下解析XML文件的一個基礎庫,現在很多實用軟體都用XML格式的配置文件,所以也有必要學習一下。

3、readline庫

readline 庫是bash shell用的庫,如果要開發命令行程序,那麼使用readline庫可以減少很多工作量,比如bash里的命令行自動補全,在readline里就已經有實現,當然你也可以用自己的實現替代庫的行為。readline庫有很多網站介紹的,只要google一下readline就可以找到一堆了。

4、curses庫

curses 庫以前是vi程序的一部分,後來從vi里提取出來成為一個獨立的庫。curses庫對於編寫終端相關的程序特別有用,比如要在終端某一行某一列定位輸出,改變終端字體的顏色和終端模式。linux下的curses庫用的是GNU實現的ncurses(new curses的意思)。

5、gtk+和KDE庫

這兩個庫是開發GUI應用程序的基礎庫,現在linux下的大部份GUI程序都是基於這兩個庫開發的,對於它們 的學習也是很有必要的。

四、網路的學習

網路這個東西太寬了,推薦學習資料steven先生的UNIX網路編程(簡稱UNP)和TCP/IP協議詳解,更進一步的話可以學習使用libnet編寫網路程序。

⑷ 全國嵌入式系統c語言編程大賽是什麼比賽

「頂嵌杯」全國嵌入式系統C語言編程大賽

對於嵌入式系統的研發來說最為基礎的技術無疑是軟體編程。C語言是嵌入式系統軟體編程採用的最多的計算機語言之一。為了普及和推廣C語言,培養和選拔C語言編程人才,中國軟體行業協會嵌入式系統分會和中國嵌入式系統產業聯盟聯合主辦首屆「頂嵌杯」全國嵌入式系統C語言編程大賽。大賽由北京頂嵌開源科技有限公司承辦,聯合國內專業媒體,共同提倡學習和使用嵌入式系統軟體編程的技術基礎——C語言。大賽通過參賽者自願報名、申請相關題目、按時提交答題、專家和閱卷系統結合閱卷、向社會公布大賽結果方式來進行。大賽得到了業內人士和專家的關注和大力支持。

本次大賽業內專家:倪光南(中科院院士)、何立民(《單片機與嵌入式系統應用》雜志社主編)、郭淳學(嵌入式系統分會秘書長)、李亞鋒(頂嵌董事長)、何小慶(麥克泰董事長)、陳莉君(內核、驅動著名作者、著名教授)、林金龍(北京大學軟體與微電子學院教授)、白劍波(Sun公司大中華區開源推廣中心主任)、陳緒(英特爾中國Linux和開源戰略經理)、陳曦(微軟高級工程師)、歐文盛(頂嵌技術總監)、劉勇(研祥集團華北區嵌入式系統C語言程序首席設計師)等統一命題、評審,經評審選出的優勝者將獲得豐厚獎品與相應榮譽證書。大賽本著「透明、公正、求真」的理念,對於獲獎的作品和名單完全公開,歡迎大家監督與關注。詳細介紹>>

感謝此次大賽中合作媒體的支持,他們是:央視網、北京電視台、網易教育、中國IT實驗室、《單片機與嵌入式系統應用》雜志社、新華社、參考消息、CSDN、嵌入式在線、51CTO、電子工程師世界、與非網、賽才網、今日電子、嵌入式世界、新風IT教育、我可比、IT168。詳細介紹>>

⑸ 嵌入式C語言和普通的C語言有什麼區別,有什麼新的東西嗎

語法上沒什麼區別,就是普通的c編程是在OS之上,有很多的標准庫函數可以調用,分配的內存就是PC機的內存,處理器就是PC的CPU。 而嵌入式C編程的話會涉及到操作硬體,所以底層沒有庫函數調用,需要自己編寫操作硬體的函數,另外編譯的時候是用交叉編譯器,內存是晶元上的ram, 處理器就是晶元帶的處理器,例如ARM或者MIPS等等,而不是PC的x86 CPU, 還有就是在寫程序的時候更注重程序的優化和效率,因為嵌入式硬體資源相對PC有限,實時性較強等等。

希望對你有幫助。

⑹ 嵌入式C語言的本質是什麼和C語言有什麼區別嗎

嵌入式C語言和C語言是完全一樣的,寫代碼上完全沒有區別。

區別在於嵌入式的C語言是跑在嵌入式的開發板上的,CPU和我們電腦不一樣,所以編譯器也是不一樣的,生成的可執行程序也是不一樣的。

學習嵌入式,該學習什麼基本的知識呢?

首先C語言,這個是毋庸置疑的,不管是做嵌入式軟體還是硬體開發的人員,對C語言的掌握這個是必需的,特別是對於以後致力於嵌入式軟體開發的人,現在絕大部分都是用C語言,你說不掌握它可以嗎?至於如何學習C語言,我想這些基礎的知識每個人都有自己的方法,關鍵要去學習,看書也好,網上找些視頻看也好。很多人會問,C語言要學到怎麼樣,我覺得這沒有標準的答案。我想至少你在明白了一些基礎的概念後,就該寫代碼了,動手才是最重要的,當你動手了,遇到問題了,再反過來學習,反過來查查課本,那時的收獲就不是你死看書能得到的。

其次,應該對操作系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關系,多看看,結合以後的項目經驗,會有更好的理解的。

還有應該學習嵌入式系統,如linux或者wince下的編程,這些對以後做應用的編程很有幫助,當然,如果做手機的話,那可以學習MTK、塞班、Android等操作系統,Android是以後發展的趨勢,現在很熱門,Android也是基於linux系統封裝的,所以建議先學習下linux。

還有,應該學習下單片機或者ARM或者MIPS,很多人說我沒有單片機的經驗,直接學ARM可以嗎?我覺得那完全沒有問題的,當然如果你學習過單片機,那最好不過了,以後學習ARM就更簡單了。

最後如果你把以上的知識都有所了解後,就該去閱讀閱讀一些優秀的代碼,比如結合arm晶元手冊學習去學習下UBOOT的源代碼,了解下最小的系統開發,那對你整個嵌入式開發的非常有幫助的,可以的話,還可以學習下linux的源代碼,當然如果你直接閱讀2.6的代碼,我想你會很痛苦的,可以先看看linux 代碼早期的版本,比如0.12 的代碼等等,麻雀雖小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。

至於上面說的知識如何學習呢?每個人都應該去找自己最好的方法,所謂的最好的方法就是最適合自己的方法。很多人看不進書,那就去看看視頻吧。視頻也應該要選擇,不是隨便看看,應該要有所選擇,有所挑選。我也是這樣一路走過來的,不過我這人比較懶,我看不進書,一看書我就想睡覺,所以這幾年我都是看視頻過來的,現在也算學有所成,但也不敢說是高手吧。

我在網上看到,有人把自己學習嵌入式的視頻總結出來,嵌入式系列實踐和視頻教程,大家可以看看網址http://www.embedstudy.com/viewnews-8701 我仔細看了覺得很不錯,我本來也想整理下,可是奈何我自己的電腦硬碟空間才40G,沒有辦法,時間也是不夠,心有餘而力不足,我不是在幫他做廣告,雖然要花錢,我覺得算不錯,至少自己不用去整理和花大量的時間去找資源,當然如果網上有的下,你網速和硬碟都夠的話,我建議大家自己網上下也好。想想我自己該開始學的時候,那時視頻資源少之又少,我買書和買視頻至少花了幾千塊,但是我覺得那很值,至少我現在賺回來了很多知識。

最後,希望這篇文章對熱愛嵌入式,想致力於嵌入式開發的朋友有所幫助。送給大家一句簡單而又樸素的話,堅持就是勝利,貴在堅持,也可以看看如何堅持嵌入式學習

⑺ 如何自學Linux下C語言嵌入式編程詳細點謝謝!書籍及開發板用什麼的最好

開發板用友善之臂的吧
mini2440 連3.5寸屏500塊錢的樣子
有好幾張DVD學習光碟

這款口碑比較高

嵌入式Linux操作系統學習規劃
ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟體開發目標:
(1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9)
(2) 必須掌握一個嵌入式操作系統 (初步定為uclinux或linux,版本待定)
(3) 必須熟悉嵌入式軟體開發流程並至少做一個嵌入式軟體項目。
從事嵌入式軟體開發的好處是:
(1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,大多數人無條件接觸。
(2)與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。
(3)哪天若想創業,搞自已的產品,嵌入式不像應用軟體那樣容易被盜版。硬體設計一般都是請其它公司給訂做(這叫「貼牌」:OEM),都是通用的硬體,我們只管設計軟體就變成自己的產品了。
(4)興趣所在,這是最主要的。
從事嵌入式軟體開發的缺點是:
(1)入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是操作系統級軟體功底不深,則可能不適於此行。
(2)這方面的企業數量要遠少於企業計算類企業。
(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。
(4)平台依託強,換平台比較辛苦。
興趣的由來:
1、成功觀念不同,不虛度此生,就是我的成功。
2、喜歡思考,挑戰邏輯思維。
3、喜歡C
C是一種能發揮思維極限的語言。關於C的精神的一些方面可以被概述成短句如下:
相信程序員。
不要阻止程序員做那些需要去做的。
保持語言短小精幹。
一種方法做一個操作。
使得它運行的夠快,盡管它並不能保證將是可移植的。
4、喜歡底層開發,討厭vb類開發工具(並不是說vb不好)。
5、發展前景好,適合創業,不想自己要死了的時候還是一個工程師。
方法步驟:
1、基礎知識:
目的:能看懂硬體工作原理,但重點在嵌入式軟體,特別是操作系統級軟體,那將是我的優勢。
科目:數字電路、計算機組成原理、嵌入式微處理器結構。
匯編語言、C/C++、編譯原理、離散數學。
數據結構和演算法、操作系統、軟體工程、網路、資料庫
方法:雖科目眾多,但都是較簡單的基礎,且大部分已掌握。不一定全學,可根據需要選修。
主攻書籍:the c++ programming language(一直沒時間讀)、數據結構-C2。

2、學習linux:
目的:深入掌握linux系統。
方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深,那主講原理。看幾遍後,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最後深入代碼。
主攻書籍:linux內核完全剖析、unix環境高級編程、深入理解linux內核、情景分析和源代。
3、學習嵌入式linux:
目的:掌握嵌入式處理器其及系統。
方法:(1)嵌入式微處理器結構與應用:直接arm原理及匯編即可,不要重復x86。
(2)嵌入式操作系統類:ucOS/II簡單,開源,可供入門。而後深入研究uClinux。
(3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)。
主攻書籍:毛德操的《嵌入式系統》及其他arm9手冊與arm匯編指令等。

4、深入學習:
A、數字圖像壓縮技術:主要是應掌握MPEG、mp3等編解碼演算法和技術。
B、通信協議及編程技術:TCP/IP協議、802.11,Bluetooth,GPRS、GSM、CDMA等。

2010-8-21 16:46 回復
122.90.173.* 2樓

C、網路與信息安全技術:如加密技術,數字證書CA等。
D、DSP技術:Digital Signal Process,DSP處理器通過硬體實現數字信號處理演算法。
說明:太多細節未說明,可根據實際情況調整。重點在於1、3,不必完全按照順序作。對於學習c++,理由是c++不只是一種語言,一種工具,她還是一種藝術,一種文化,一種哲學理念、但不是拿來炫耀得東西。對於linux內核,學習編程,讀一些優秀代碼也是有必要的。
注意: 要學會舉一反多,有強大的基礎,很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,並具有良好的邏輯思維。一定要理論結合實踐。
不要一味鑽研技術,雖然擠出時間是很難做到的,但還是要留點餘地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學、游戲、科幻電影。還有一些不願意做但必須要做的!
技術是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機會來了在創業(不要相信有奇跡發生,盲目創業很難成功,即便成功了發展空間也不一定很大)。

嵌入式書籍推薦
Linux基礎
1、《Linux與Unix Shell 編程指南》
C語言基礎
1、《C Primer Plus,5th Edition》【美】Stephen Prata著
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux應用程序開發詳解》
Linux內核
1、《深入理解Linux內核》(第三版)
2、《Linux內核源代碼情景分析》毛德操 胡希明著
研發方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP詳解》
3、《Linux內核編程》
4、《Linux設備驅動開發》(LDD)
5、《Linux高級程序設計》 楊宗德著
硬體基礎
1、《ARM體系結構與編程》杜春雷著
2、S3C2410 Datasheet
英語基礎
1、《計算機與通信專業英語》
系統教程
1、《嵌入式系統――體系結構、編程與設計》
2、《嵌入式系統――採用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系統原理與實例開發》 楊宗德著
理論基礎
1、《演算法導論》
2、《數據結構(C語言版)》
3、《計算機組織與體系結構?性能分析》
4、《深入理解計算機系統》【美】Randal E. Bryant David O''Hallaron著
5、《操作系統:精髓與設計原理》
6、《編譯原理》
7、《數據通信與計算機網路》
8、《數據壓縮原理與應用》

C語言書籍推薦
1. The C programming language 《C程序設計語言》
2. Pointers on C 《C和指針》
3. C traps and pitfalls 《C陷阱與缺陷》
4. Expert C Lanuage 《專家C編程》
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《編程精粹--Microsoft 編寫優質無錯C程序秘訣》
6. Programming Embedded Systems in C and C++ 《嵌入式系統編程》
7.《C語言嵌入式系統編程修煉》
8.《高質量C++/C編程指南》林銳
盡可能多的編碼,要學好C,不能只注重C本身。演算法,架構方式等都很重要。

這里很多書其實是推薦而已,不必太在意,關鍵還是基礎,才是重中之重!!!

⑻ 什麼是嵌入式c語言啊

其實就是C語言 只不過是將你編寫的C語言運行在你的嵌入式系統中 其本質一樣

⑼ C語言和嵌入式C語言有什麼區別

嵌入式C語言和C語言是完全一樣的,寫代碼上完全沒有區別。

區別在於嵌入式的C語言是跑在嵌入式的開發板上的,CPU和我們電腦不一樣,所以編譯器也是不一樣的,生成的可執行程序也是不一樣的。

學習嵌入式,該學習什麼基本的知識呢?

首先C語言,這個是毋庸置疑的,不管是做嵌入式軟體還是硬體開發的人員,對C語言的掌握這個是必需的,特別是對於以後致力於嵌入式軟體開發的人,現在絕大部分都是用C語言,你說不掌握它可以嗎?至於如何學習C語言,我想這些基礎的知識每個人都有自己的方法,關鍵要去學習,看書也好,網上找些視頻看也好。很多人會問,C語言要學到怎麼樣,我覺得這沒有標準的答案。我想至少你在明白了一些基礎的概念後,就該寫代碼了,動手才是最重要的,當你動手了,遇到問題了,再反過來學習,反過來查查課本,那時的收獲就不是你死看書能得到的。

其次,應該對操作系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關系,多看看,結合以後的項目經驗,會有更好的理解的。

還有應該學習嵌入式系統,如linux或者wince下的編程,這些對以後做應用的編程很有幫助,當然,如果做手機的話,那可以學習MTK、塞班、Android等操作系統,Android是以後發展的趨勢,現在很熱門,Android也是基於linux系統封裝的,所以建議先學習下linux。

還有,應該學習下單片機或者ARM或者MIPS,很多人說我沒有單片機的經驗,直接學ARM可以嗎?我覺得那完全沒有問題的,當然如果你學習過單片機,那最好不過了,以後學習ARM就更簡單了。

最後如果你把以上的知識都有所了解後,就該去閱讀閱讀一些優秀的代碼,比如結合arm晶元手冊學習去學習下UBOOT的源代碼,了解下最小的系統開發,那對你整個嵌入式開發的非常有幫助的,可以的話,還可以學習下linux的源代碼,當然如果你直接閱讀2.6的代碼,我想你會很痛苦的,可以先看看linux 代碼早期的版本,比如0.12 的代碼等等,麻雀雖小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。

至於上面說的知識如何學習呢?每個人都應該去找自己最好的方法,所謂的最好的方法就是最適合自己的方法。很多人看不進書,那就去看看視頻吧。視頻也應該要選擇,不是隨便看看,應該要有所選擇,有所挑選。我也是這樣一路走過來的,不過我這人比較懶,我看不進書,一看書我就想睡覺,所以這幾年我都是看視頻過來的,現在也算學有所成,但也不敢說是高手吧。

我在網上看到,有人把自己學習嵌入式的視頻總結出來,嵌入式系列實踐和視頻教程,大家可以看看網址 我仔細看了覺得很不錯,我本來也想整理下,可是奈何我自己的電腦硬碟空間才40G,沒有辦法,時間也是不夠,心有餘而力不足,我不是在幫他做廣告,雖然要花錢,我覺得算不錯,至少自己不用去整理和花大量的時間去找資源,當然如果網上有的下,你網速和硬碟都夠的話,我建議大家自己網上下也好。想想我自己該開始學的時候,那時視頻資源少之又少,我買書和買視頻至少花了幾千塊,但是我覺得那很值,至少我現在賺回來了很多知識。

最後,希望這篇文章對熱愛嵌入式,想致力於嵌入式開發的朋友有所幫助。送給大家一句簡單而又樸素的話,堅持就是勝利,貴在堅持,也可以看看如何堅持嵌入式學習

⑽ 嵌入式C語言編程

在c語言里方向鍵的確定:
for(;;)
if(kbhit()) ;如果有鍵按下
{
str=getch();
printf("%C",str);
printf("%d"str);
}
就可以得到輸入了,把他顯示出來就知道是什麼值了