91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

學(xué)習(xí)嵌入式系統(tǒng)C語言編程的關(guān)鍵點(diǎn)

單片機(jī)匠人 ? 來源:張飛實(shí)戰(zhàn)電子 ? 作者:黃忠老師 ? 2021-09-29 15:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、真正深刻地認(rèn)識存儲器

馮.諾伊曼說過“程序等于算法加數(shù)據(jù)結(jié)構(gòu)”。首先,算法是什么?算法是通過存儲在存儲器中的程序代碼實(shí)現(xiàn)的。其次,數(shù)據(jù)結(jié)構(gòu)又是什么?數(shù)據(jù)結(jié)構(gòu)是存放在存儲器中的各種類型的數(shù)據(jù)。程序本質(zhì)上就是處理器通過執(zhí)行存放在存儲器中的程序代碼對存放在存儲器中的數(shù)據(jù)進(jìn)行操作和變換的過程。在這個(gè)過程中除了處理器本身外,最核心的環(huán)節(jié)就是存儲器。因?yàn)椴还苁浅绦虻目蓤?zhí)行代碼還是數(shù)據(jù)都是存放在存儲器中的。撇開代碼、變量、數(shù)組、指針、結(jié)構(gòu)、堆棧等這些軟件中的各個(gè)元素的表象,剩下的本質(zhì)就是存儲器!因此,理解C語言的關(guān)鍵是真正理解存儲器。

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

2、認(rèn)識和理解嵌入式C編程環(huán)境

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

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

3、認(rèn)識和掌握C語言中的常見陷阱

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

4、掌握C語言程序設(shè)計(jì)過程中的調(diào)試方法

任何程序在編寫的過程中都需要調(diào)試,尤其對于比較復(fù)雜的系統(tǒng)更是如此。面對程序編寫過程中出現(xiàn)的問題,比較現(xiàn)實(shí)的問題應(yīng)該是如何在最短的時(shí)間內(nèi)發(fā)現(xiàn)程序錯(cuò)誤的根源,修改這個(gè)錯(cuò)誤,并且吸取教訓(xùn)爭取在以后的程序中不再犯同樣的錯(cuò)誤。在這個(gè)環(huán)節(jié)中最重要也是最需要技巧的工作就是找到問題的根源。雖然很少有相關(guān)的參考書介紹這方面的內(nèi)容,但事實(shí)上,程序的調(diào)試是有一定的方法和技巧的。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20449

    瀏覽量

    334113
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7644

    瀏覽量

    145608
  • 編程
    +關(guān)注

    關(guān)注

    90

    文章

    3716

    瀏覽量

    97191

原文標(biāo)題:如何學(xué)好嵌入式系統(tǒng)中的C語言編程

文章出處:【微信號:gh_e7f294a514ca,微信公眾號:單片機(jī)匠人】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式單片機(jī)開發(fā)學(xué)習(xí)路徑

    學(xué)習(xí)C語言 C語言嵌入式開發(fā)的基礎(chǔ)。掌握C
    發(fā)表于 02-09 15:42

    什么是嵌入式應(yīng)用開發(fā)?

    包括ARM7、ARM9、ARM11、PowerPC、MIPS等。這些處理器和編程語言的選擇取決于具體的硬件條件和開發(fā)需求?。 綜上所述,嵌入式應(yīng)用開發(fā)是一個(gè)綜合性的技術(shù)領(lǐng)域,涉及硬件和軟件的緊密結(jié)合,廣泛應(yīng)用于各種設(shè)備和
    發(fā)表于 01-12 16:13

    C語言嵌入式系統(tǒng)編程注意事項(xiàng)-內(nèi)存操作

    C語言嵌入式系統(tǒng)編程注意事項(xiàng)之內(nèi)存操作 在嵌入式系統(tǒng)編程
    發(fā)表于 01-04 07:31

    C語言單元測試在嵌入式軟件開發(fā)中的作用及專業(yè)工具的應(yīng)用

    平臺和操作系統(tǒng)上運(yùn)行,無需進(jìn)行大量的修改 二、C語言單元測試在嵌入式開發(fā)中的關(guān)鍵作用 嵌入式
    發(fā)表于 12-18 11:46

    系統(tǒng)嵌入式學(xué)習(xí)路線

    的知識太多,太雜,太廣,很多嵌入式初學(xué)者陷入嵌入式知識的海洋中,東學(xué)一點(diǎn),西學(xué)一點(diǎn),找不到學(xué)習(xí)的方向。 我從事
    發(fā)表于 12-16 07:49

    嵌入式應(yīng)掌握的幾種能力

    1. 編程語言 基本掌握嵌入式必備的編程語言。C語言
    發(fā)表于 12-08 06:05

    分享一個(gè)嵌入式開發(fā)學(xué)習(xí)路線

    如果你想要學(xué)習(xí)嵌入式開發(fā),我建議按照這個(gè)學(xué)習(xí)路線準(zhǔn)備: 1. 基礎(chǔ)鋪墊期(1-2個(gè)月) 理解嵌入式系統(tǒng)的“硬件基礎(chǔ)”和“
    發(fā)表于 12-04 11:01

    C語言嵌入式開發(fā)中的應(yīng)用

    語言可以確保實(shí)時(shí)系統(tǒng)中的任務(wù)能夠在規(guī)定的時(shí)間內(nèi)完成,保證系統(tǒng)的穩(wěn)定性和可靠性。 4、嵌入式網(wǎng)絡(luò)編程 隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,
    發(fā)表于 11-21 08:09

    2025年最佳的嵌入式編程語言有哪些呢?

    嵌入式系統(tǒng)是現(xiàn)代科技不可或缺的一部分。它們存在于家用電器、汽車、住宅、醫(yī)院、商店等各個(gè)領(lǐng)域。它們與我們的社會緊密相連。選擇合適的語言來構(gòu)建嵌入式系統(tǒng)
    的頭像 發(fā)表于 11-14 10:27 ?1426次閱讀
    2025年最佳的<b class='flag-5'>嵌入式</b><b class='flag-5'>編程</b><b class='flag-5'>語言</b>有哪些呢?

    嵌入式開發(fā)的關(guān)鍵點(diǎn)介紹

    嵌入式開發(fā)在現(xiàn)代科技中扮演著非常重要的角色。隨著物聯(lián)網(wǎng)的發(fā)展,嵌入式系統(tǒng)的需求也越來越大。嵌入式開發(fā)不僅需要開發(fā)人員具備深入的硬件知識和編程
    發(fā)表于 11-13 08:12

    盤點(diǎn)嵌入式就業(yè)所需要的技能有哪些?

    ,把握未來的職業(yè)機(jī)遇。 1.智能汽車行業(yè): - 熟悉嵌入式編程語言,如C/C++、Python等。 - 掌握
    發(fā)表于 08-11 15:43

    入行嵌入式應(yīng)該怎么準(zhǔn)備?

    知識: 一、C/C++編程C/C++是嵌入式系統(tǒng)
    發(fā)表于 08-06 10:34

    嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式

    特定功能的計(jì)算機(jī)系統(tǒng),廣泛應(yīng)用于智能家居、工業(yè)控制、醫(yī)療設(shè)備、車載系統(tǒng)等領(lǐng)域。 2. 學(xué)習(xí)嵌入式開發(fā)的前置知識熟悉C
    發(fā)表于 05-15 09:29

    入行嵌入式難度大不大?

    入行嵌入式難度大不大?根據(jù)不同的情況來分析下。 (一)零基礎(chǔ)入行 對于零基礎(chǔ)的初學(xué)者來說,嵌入式領(lǐng)域可能會有一定的門檻。需要從基礎(chǔ)的電子電路知識、編程語言(如
    發(fā)表于 04-17 10:14

    嵌入式編程設(shè)計(jì)模式

    嵌入式編程設(shè)計(jì)模式,介紹如何使用設(shè)計(jì)模式為嵌入式系統(tǒng)創(chuàng)建高效且優(yōu)化的C語言設(shè)計(jì)。 純分享貼,
    發(fā)表于 04-15 14:47