精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

學習嵌入式系統C語言編程的關鍵點

單片機匠人 ? 來源:張飛實戰電子 ? 作者:黃忠老師 ? 2021-09-29 15:48 ? 次閱讀

1、真正深刻地認識存儲器

馮.諾伊曼說過“程序等于算法加數據結構”。首先,算法是什么?算法是通過存儲在存儲器中的程序代碼實現的。其次,數據結構又是什么?數據結構是存放在存儲器中的各種類型的數據。程序本質上就是處理器通過執行存放在存儲器中的程序代碼對存放在存儲器中的數據進行操作和變換的過程。在這個過程中除了處理器本身外,最核心的環節就是存儲器。因為不管是程序的可執行代碼還是數據都是存放在存儲器中的。撇開代碼、變量、數組、指針、結構、堆棧等這些軟件中的各個元素的表象,剩下的本質就是存儲器!因此,理解C語言的關鍵是真正理解存儲器。

每一個存儲單元都有兩個屬性:一是存儲器里面存放的內容,二是存儲器的地址。這個內容可以是代碼,也可以是數據,甚至是另一個存儲單元的地址(這個時候往往我們稱這個存儲單元放的是一個指針)。

2、認識和理解嵌入式C編程環境

嵌入式軟件開發的 一個非常重要的特點就是交叉編譯,也就是開發工具運行的環境和被調試的程序不是運行在同一個硬件平臺(處理器)上的。一般而言編譯器、匯編器、鏈接器等工具鏈軟件以及調試工具都運行在通用的PC機平臺上;調試工具通過一定的通信手段將鏈接器輸出的可執行文件下載嵌入式系統開發板(一般稱為目標系統)的存儲器中,并通過一定的機制控制和觀測目標系統的寄存器、存儲器等。這個開發過程往往需要使用多種不同的工具,對此初學者很容易感到困惑。只有真正理解開發過程中各個環節的作用,才能對嵌入式系統C編程有深入的認識。

另一個問題是,雖然C語言是一門高級語言,但是想真正用好C語言,程序員必須對編程過程中所使用的工具非常了解,清楚地知道每個工具的作用以及這些工具與硬件平臺的相互關系。比如:編譯器是如何處理全局變量和全局數組的?對于全局變量的處理與局部變量有什么不同?編譯器是如何利用堆棧進行傳遞參數的?又比如:C語言的編譯器、鏈接器是如何處理一個項目中多個C文件之間的相互依賴關系的?鏈接器最終是如何生成可執行文件的?可執行文件的內存映像又是如何安排的?這些問題初看起來似乎與C編程本身沒有什么關系,但因為在嵌入式軟件的開發過程中程序員要經常直接和底層的設備與工具打交道,所以一個嵌入式軟件的程序員應該對這些問題了如指掌。

3、認識和掌握C語言中的常見陷阱

C語言不是一門面向初學者的編程語言,C語言發明者的初衷是希望設計一種面向編譯器和操作系統設計的高級語言,因此C語言中充滿了各種各樣對于初學者而言的陷阱。這些陷阱一方面來自于C語法本身的靈活性,另一方面來自于C對存儲器邊界的不檢查,因此非常容易在代碼中造成存儲器越界訪問的問題。在C語言中,最容易出錯的地方是與存儲器相關的內存訪問越界以及內存泄漏的問題,C語言的使用者必須非常小心地規避這些陷阱。

4、掌握C語言程序設計過程中的調試方法

任何程序在編寫的過程中都需要調試,尤其對于比較復雜的系統更是如此。面對程序編寫過程中出現的問題,比較現實的問題應該是如何在最短的時間內發現程序錯誤的根源,修改這個錯誤,并且吸取教訓爭取在以后的程序中不再犯同樣的錯誤。在這個環節中最重要也是最需要技巧的工作就是找到問題的根源。雖然很少有相關的參考書介紹這方面的內容,但事實上,程序的調試是有一定的方法和技巧的。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5068

    文章

    19019

    瀏覽量

    303301
  • C語言
    +關注

    關注

    180

    文章

    7598

    瀏覽量

    136205
  • 編程
    +關注

    關注

    88

    文章

    3592

    瀏覽量

    93596

原文標題:如何學好嵌入式系統中的C語言編程

文章出處:【微信號:gh_e7f294a514ca,微信公眾號:單片機匠人】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    零基礎嵌入式開發學習路線

    底層崗位方向比如:嵌入式硬件工程師、驅動開發工程師等崗位投簡歷啦!當然,這只是一個大致的路線,并不涵蓋所有的細節和知識。如果你想深入學習,還需要仔細研究一些書籍和資料,也可以參考多做一些實踐項目。
    發表于 10-25 15:55

    嵌入式學習建議

    原理的嵌入式操作系統進行學習。不要一開始就學習幾種操作系統,理解了基本原理,實踐中確有實際需要再學習
    發表于 10-22 11:41

    嵌入式系統的未來趨勢有哪些?

    嵌入式系統是指將我們的操作系統和功能軟件集成于計算機硬件系統之中,形成一個專用的計算機系統。那么嵌入式
    發表于 09-12 15:42

    嵌入式系統怎么學?

    一系列課程和技術,包括但不限于以下內容: 1、基礎知識:學習計算機組成原理、數字電路、模擬電路等基礎知識,建立對計算機硬件的認知與理解。 2、編程語言:掌握至少一種嵌入式
    發表于 07-02 10:10

    如何提升嵌入式編程能力?

    /C++:大多數嵌入式系統使用CC++編程語言,因
    發表于 06-21 10:01

    如何成為一名嵌入式C語言高手?

    如何成為一名嵌入式C語言高手? 嵌入式系統是當今科技領域的核心,而C
    發表于 04-07 16:03

    嵌入式編程片上系統是什么

    嵌入式編程片上系統(Embedded Programmable System-on-Chip,或簡稱EPSoC)是一種特殊的嵌入式系統,它
    的頭像 發表于 03-28 15:33 ?533次閱讀

    如何成為一名嵌入式C語言高手?

    如何成為一名嵌入式C語言高手? 嵌入式系統是當今科技領域的核心,而C
    發表于 03-25 14:12

    嵌入式軟件開發應該掌握哪些知識?

    掌握的知識 1.基礎知識 1.1 c/c++編程語言和數據結構 C/C++ 是
    發表于 02-19 11:23

    c語言,c++,java,python區別

    操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是
    的頭像 發表于 02-05 14:11 ?2238次閱讀

    嵌入式學習步驟

    開發。 嵌入式學習步驟總結如下: (1).確定目標平臺:選擇適合您要開發的嵌入式系統的硬件平臺。這取決于您要控制的設備以及您需要執行的任務。 (2).選擇
    發表于 02-02 15:24

    聊一聊嵌入式C語言

    作為一名嵌入式軟件開發者,熟練掌握嵌入式C語言對我的日常工作至關重要。
    的頭像 發表于 01-22 09:28 ?524次閱讀

    C語言構建高效的嵌入式程序

    嵌入式工程師在編寫C語言程序時,需要注重效率和清晰的思路。本文將通過解析經典問題“猴子選大王”來展示如何用C語言思維方式構建高效、清晰的程序
    的頭像 發表于 12-21 09:27 ?600次閱讀

    嵌入式C語言高手煉成之內存操作篇

    嵌入式系統編程中,常常要求在特定的內存單元讀寫內容,匯編有對應的MOV指令,而除C/C++以外的其它
    的頭像 發表于 12-11 17:20 ?489次閱讀

    c語言程序設計基礎知識

    C語言是一種通用的高級編程語言,廣泛應用于系統軟件、應用程序和嵌入式
    的頭像 發表于 11-27 15:25 ?1620次閱讀