摘 要編程語言和人類語言類似,目的都要實現溝通,一是人與機器,一是人與人。本文主要介紹C語言的編程應用和嵌入式軟件開發的基本概念和組成,以及大概包含的相關內容,如何開發的基本流程等等,目的是為了拋磚引玉,交流C語言的編程內容和如何入手嵌入式軟件開發。
【關鍵詞】智能手機 C語言 嵌入式開發
C語言是面向過程的程序設計語言,能夠與Linux和MiniGUI進行良好的結合,從而做到模擬實現面向對象程序的編程;嵌入式系統可以增強軟件運行的穩定性、提高軟件指令執行效率并優化用戶使用界面,當前的大部分嵌入式系統都是基于Linux操作系統進行延伸。因此在智能手機的應用開發中C語言與嵌入式有著良好的關聯性,在其開發過程中可以集兩者的優點創建更加簡潔高效的編程和應用。
1 嵌入式開發的核心競爭力
根據其操作系統,其中有OS的,按照是否開源,是否是通用的、常見的、還是私有的劃分為:開源的、常見的、通用的嵌入式操作系統;和不等價的私有的嵌入式操作系統。原因是嵌入式開發從硬到軟,很難說有一種具體的技術或者技術方向是嵌入式開發的核心。嵌入式開發的核心競爭力是“整合”。整合的前提是有充分的知識面和技術前瞻性。
首先,嵌入式開發的技術之多決定了需要有過濾的能力,而過濾的前提是有足夠的知識面。一個基層的工程師投入在一個既定的項目中,其實solution可能會有很多,最關鍵的是找到哪些技術的最佳組合,然后讓這個項目”又好又快“地完成。在嵌入式開發管理過程中,制定一個關鍵項目時,既要站在工業界的前沿,又要把控好關鍵的技術群,實際上就是一種“整合”的能力。所以,雖然做不了“全棧”,但不排斥盡可能多地了解。
2 C語言、C++和C#
按時間順序說一說這三門語言的基本吧,這樣比較一下就能知道他們的區別了。
2.1 C語言
C語言可以看成是“高級的匯編”語言。C語言的源代碼基本上可以非常容易地對應到匯編代碼,而且可以不需要什么運行時環境的支持。C的特點,簡單容易編譯,靈活貼近底層。所以一直到現在,一些需要直接和硬件打交道的軟件都還是用C語言寫的,比如(但不限于)Linux Kernel和一些嵌入式領域。
2.2 C++語言
C++早期是基于C的,C++的目標是提高編程人員的生產率,哪怕代價是增加編譯器的復雜度。面向對象只是C++的一部分,現代的C++的目標是支持多種編程范型,同時并不會離硬件太遠。所以C++是非常適合寫一些基礎架構級軟件的,比如編譯器,GUI庫等等。
2.3 C#以及.net框架
managed code的崛起,與之對應的就是C/C++這種native code的衰落。C#就是微軟想要復制Java的成功。C#的特點就是:抽象層次高且基本只有一種(面向對象的),運行時支持豐富(垃圾回收等),類庫豐富。
3 智能手機中基于C語言的嵌入式開發
C語言主要解決的問題是,不同機器平臺上的匯編語言指令,功能相似但寫法不一樣。所以,C語言的發明者的想法是,只要把這些不同的匯編語言的共同點提取出來,用一種相同的表達方式來描述這些共同點,那么程序只需要寫一遍,就可以在不同的機器上去編譯了。于是C語言大部分的工作是在匯編語言的層面上做抽象。如果要選最能體現上述思路的C語言作品,首選 CURL 和 openssl 。這也是 C語言最適合的應用場合。
嵌入式系統沒有特別明確的定義,一般都是指區別于一般PC的民用操作系統,用在專用的設備內部運行的。所以像智能手機、平板電腦這些,可以算,也可以不算。實際上,在軟件開發行業,嵌入式系統開發,通常是指嵌入式實時操作系統開發。實時操作系統也就是RTOS。當然,現在的安卓或iOS開發也算嵌入式,但肯定還不是RTOS。一般來說原始匯編語言就是二進制指令格式的轉寫,與處理器的指令集一一對應,更換處理器就需要重寫。并且因為一些技術上的問題,處理器的指令集與人解決問題的思路完全不一致,例如一個加法指令根據不同類型有沒有符號位在哪里取數據存哪里去有一堆的變種,所以原始匯編語言不是一個真正具有生產力的語言。人們在匯編語言的基礎上,發明了很多高層語言,C語言就是其中最為成功的一個。C語言解決了匯編語言所有的問題,例如處理器的指令集不同。不論何種處理器何種指令集,在C語言里面需要將a和b兩個數相加只需要寫成a+b就可以了。也無需考慮類型、存儲位置帶來的指令的變化。簡單說就是C語言大大的抽象了匯編語言,通過C語言的編譯器將C語言代碼翻譯成處理器指令集所支持的代碼形式,這一過程被稱之為編譯。
若開發手機平臺apk,尤其是互聯網應用,全部調用系統API就不算是嵌入式開發。但是必須有人從事底層驅動,內核的移植,裁剪,這方面的方法遇到的問題,又是嵌入式開發的方法。另外手機現在還不能夠用來有效率的用來做開發工具,應用基本靠交叉編譯,這也是和一般嵌入式系統相同的特點。
4 結語
理論上C語言能開發出幾乎所有軟件。但是,數字信息設備發展了幾十年,留下的大量的解決方案。C后產生的各種新語言和第三方庫如此豐富,這已經是巨大的財富。在今后智能手機的應用開發中基于C語言的嵌入式開發將大幅減少手機應用的編程工作所需時間,提高開發效率,也是推動智能手機應用開發的重要策略。
參考文獻
[1]景香芝.基于C語言嵌入式開發在智能手機中的應用探析[J].制造業自動化,2012,34(04):145-146,150.
[2]劉燁.智能手機中基于C語言嵌入式開發的應用探析[J].湖南農機,2014(02):84-84,98.
[3]羅莎.基于C語言嵌人式開發技術在智能手機中的應用[J].計算機光盤軟件與應用,2011(22):170-171.
[4]倪建新.基于C語言的游戲開發教學平臺的設計與實現[J].電腦知識與技術,2012(35):8401-8403.
[5]張芳.基于嵌入式Linux的智能手機應用系統研究[D].長沙理工大學,2006.
[6]李從宇,王寶光.嵌入式DSP系統C語言硬件編程技術[J].測控技術,2007,26(04):68-70.
作者簡介
趙林(1978-)男,河北省保定市人。碩士研究生。高級工程師。研究方向為計算機技術。
作者單位
廣西電力職業技術學院 廣西壯族自治區南寧市 530001