當前位置:首頁 » 編程語言 » 嵌入式高級c語言編程

嵌入式高級c語言編程

發布時間: 2022-06-29 00:09:34

㈠ 如何學習嵌入式c語言編程

你這問題有點廣。。。我就說一下我的經歷體驗吧

首先是C基礎,必須非常熟練!主要是指針、鏈表,這個階段至少要寫幾個幾百行的小程序(盡量無BUG,下同)
接下來可以用一些API,比如資料庫、套接字、一些圖形界面庫等,應該可以寫一兩千到三四千行的程序了
然後才能正式開始嵌入式學習,自己先摸索著寫個操作系統什麼的吧,從這個階段開始,已經不重視代碼量了,具體的到了這個階段就知道

㈡ 嵌入式linux上的C語言編程實踐的目錄

第一部分 基礎知識
第1章 Linux環境下C語言的開發 2
1.1 Linux下的C語言開發環境 2
1.2 在Linux中使用C語言開發 3
1.2.1 開發流程和開發工具 3
1.2.2 Linux中程序的運行原理 4
第2章 嵌入式環境中的C語言開發 7
2.1 嵌入式C語言的開發環境 7
2.2 嵌入式開發中C語言編程要點 9
第二部分 Linux環境中
C語言的開發環境和工具
第3章 Linux的文本編輯工具VI 12
3.1 VI編輯器概述 12
3.1.1 VI簡介 12
3.1.2 VI的工作模式和使用
3.1.2 之前的准備 12
3.1.3 進入和退出VI 13
3.2 VI的增強版VIM 16
3.3 VI編輯器的基本使用方法 17
3.3.1 在屏幕上移動游標 17
3.3.2 插入文本 20
3.3.3 刪除文本 22
3.3.4 修改文本內容 25
3.3.5 替換文本內容 27
3.3.6 合並文本內容 30
3.3.7 移動文本內容 30
3.4 VI編輯器的命令和高級操作 32
3.4.1 VI常用命令的列表 32
3.4.2 VI的一些高級的操作和
3.1.2 使用技巧 35
第4章 GCC程序開發工具 39
4.1 GNU工具綜述 39
4.2 GCC的編譯和連接 43
4.2.1 工程示例 43
4.2.2 編譯、匯編和連接 46
4.2.3 動態庫 48
4.3 GCC的二進制工具 49
4.3.1 ar(歸檔工具) 49
4.3.2 readelf(讀取ELF格式
3.1.2 文件信息) 51
4.3.3 strings(查看字元串) 54
4.3.4 nm(顯示符號信息) 55
4.3.5 strip(刪除符號) 57
4.3.6 objmp(顯示目標
3.1.2 文件信息) 58
4.3.7 obj(復制目標文件) 63
第5章 make工程管理工具 67
5.1 make和Makefile 67
5.1.1 make機制概述 67
5.1.2 make和Makefile的使用 68
5.2 Makefile使用示例 69
5.2.1 簡單的Makefile 69
5.2.2 Makefile中的依賴關系 71
5.2.3 Makefile中使用隱含規則
3.1.2 來編譯程序 73
5.2.4 Makefile中指定依賴關系的
3.1.2 編譯 76
5.3 自動生成Makefile 78
5.3.1 自動生成Makefile的意義和
3.1.2 相關工具 78
5.3.2 自動生成Makefile的流程 79
第6章 GDB調試工具 85
6.1 GDB簡介 85
6.2 使用GDB調試程序 86
6.2.1 基本操作 88
6.2.2 查看命令 90
6.2.3 高級命令 92
6.2.4 attach命令的使用 94
6.3 遠程GDB調試 95
6.3.1 本地GDB調試和遠程GDB
3.1.2 調試的比較 95
6.3.2 遠程GDB調試流程 97
6.3.3 遠程GDB調試示例 98
第三部分 庫函數
第7章 C語言標准庫函數 106
7.1 ISO的C語言標准庫函數
7.1 分類 106
7.2 標准格式化輸入/輸出類函數 107
7.2.1 scanf函數:格式化輸入
3.1.2 字元串 107
7.2.2 printf函數:格式化輸出
3.1.2 字元串 109
7.2.3 putchar函數:輸出字元到
3.1.2 標准輸出 111
7.2.4 getchar函數:從標准輸入
3.1.2 獲取字元 111
7.2.5 putc函數:向文件輸出字元 112
7.2.6 getc函數:從文件輸入字元 112
7.2.7 gets函數:獲得字元串 112
7.2.8 puts函數:輸出指定字元串 113
7.2.9 ungetc函數:把字元
3.1.2 寫迴流中 113
7.3 字元處理類函數 114
7.4 字元串處理及轉換函數 116
7.4.1 sprintf函數:格式化輸出
3.1.2 字元串到一個緩沖區 116
7.4.2 strcat和strncat函數:
3.1.2 字元串連接 119
7.4.3 strcpy和strncpy函數:
3.1.2 字元串復制 120
7.4.4 strcmp和strncmp函數:
3.1.2 字元串比較 121
7.4.5 strlen函數:獲取字元串
3.1.2 長度 122
7.4.6 strchr和strrchr函數:字元/
3.1.2 字元串定位 122
7.4.7 strstr函數:字元串查找 123
7.4.8 strrev函數:字元串逆序 124
7.4.9 strupr和strlwr函數:字母
3.1.2 形式轉換 125
7.4.10 strp和strnp函數:
3.1.2 字元串復制 125
7.4.11 memset函數:內存設置 126
7.4.12 memmove函數:內存移動 126
7.4.13 memcmp函數:內存比較 127
7.4.14 memcpy函數:內存復制 128
7.5 數學計算類函數 128
7.6 數據結構和演算法類函數 133
7.6.1 bsearch函數:二元搜索 133
7.6.2 lfind函數:線性搜索 134
7.6.3 lsearch函數:線性搜索 135
7.6.4 qsort函數:利用快速排序法
3.1.2 排列數組 136
7.6.5 rand函數:產生隨機數 136
7.6.6 srand函數:設置隨機
3.1.2 數種子 137
7.7 文件I/O操作類相關函數 137
7.7.1 fopen函數:打開文件 138
7.7.2 fclose函數:關閉文件 139
7.7.3 fgetc函數:從文件中讀取
3.1.2 一個字元 139
7.7.4 fputc函數:將一指定字元
3.1.2 寫入文件流中 139
7.7.5 fgets函數:從文件中讀取
3.1.2 一字元串 140
7.7.6 fputs函數:將一指定的
3.1.2 字元串寫入文件內 140
7.7.7 rewind函數:重設文件流的
3.1.2 讀寫位置為文件開頭 141
7.7.8 ftell函數:取得文件流的
3.1.2 讀取位置 141
7.7.9 fseek函數:移動文件流的
3.1.2 讀寫位置 141
7.7.10 fwrite函數:將數據寫至
7.7.10 文件流 142
7.7.11 fread函數:從文件流讀取
7.7.10 數據 142
7.7.12 remove函數:刪除文件 143
7.7.13 rename函數:更改文件
7.7.10 名稱或位置 143
7.7.14 freopen函數:重新打開
7.7.10 文件 144
7.7.15 fflush函數:同步緩沖區 144
7.7.16 fgetpos函數:獲得文件
7.7.10 位置 145
7.7.17 fsetpos函數:設置文件
7.7.10 位置 145
7.7.18 mktemp函數:建立臨時
7.7.10 文件 146
7.7.19 tmpfile函數:臨時文件 146
7.7.20 tmpnam:得到臨時文件名 147
7.8 日期時間類函數 147
7.8.1 clock函數:獲得CPU時間 148
7.8.2 time函數:獲得當前日歷
7.8.2 時間 148
7.8.3 difftime函數:獲得時間
7.8.2 差值 148
7.8.4 gmtime函數:將日歷時間
7.8.2 轉換成UTC時間 149
7.8.5 mktime函數:將UTC時間
7.8.2 轉換成日歷時間 149
7.8.6 asctime函數:將UTC時間
7.8.2 轉換成字元串 149
7.8.7 ctime函數:將日歷時間轉換
7.8.2 成當地時間的字元串 150
7.8.8 localtime函數:將日歷時間
7.8.2 轉換成本地時間 150
7.8.9 strftime函數:轉換日期和
7.8.2 時間格式 151
7.9 國際化和本地化函數 152
7.9.1 setlocale函數:本地化控制
7.8.2 函數 153
7.9.2 localeconv函數:本地化
7.8.2 轉換 154
7.10 錯誤處理類函數 155
7.10.1 clearerr函數:清除流中的
7.10.1 結束指示符和錯誤指示符 155
7.10.2 feof函數:指示文件結束 155
7.10.3 ferror函數:指示文件出錯 156
7.10.4 perror函數:輸出出錯信息 156
7.10.5 errno函數:錯誤編號記錄 156
7.11 其他一些工具函數 157
7.11.1 assert函數:程序診斷 157
7.11.2 長跳轉函數 157
7.11.3 可變長的參數控制函數 160
7.11.4 獲取結構體成員函數
7.10.1 (宏) 161
7.12 一些標准庫中有用的宏 161
第8章 Linux中C語言的擴展庫
函數 163
8.1 文件I/O操作函數 163
8.1.1 open函數:打開文件 163
8.1.2 close函數:關閉文件 164
8.1.3 read函數:讀文件 165
8.1.4 write函數:寫文件 165
8.1.5 lseek函數:文件定位 167
8.1.6 ioctl函數:文件控制 167
8.1.7 flock函數:鎖定文件 167
8.1.8 mmap函數和munmap函數:
8.1.8 內存映射 168
8.1.9 create函數:創建新文件 170
8.1.10 p函數和p2函數:
8.1.10 復制文件描述符 171
8.1.11 fcntl函數:改變已打開的
8.1.10 文件的屬性 171
8.2 文件許可權相關的操作函數 172
8.2.1 access函數:判斷是否
8.2.1 具有存取文件的許可權 172
8.2.2 chown函數和fchown函數:
8.2.1 改變文件的所有者 173
8.2.3 chmod函數和fchmod函數:
8.2.1 改變許可權 173
8.2.4 unlink函數:刪除文件 173
8.2.5 utime函數和utimes函數:
8.2.1 改變文件時間 174
8.2.6 umask函數:設置建立
8.2.1 新文件時的許可權掩碼 175
8.2.7 link函數:建立文件連接 175
8.2.8 stat函數、fstat函數和lstat
8.2.1 函數:獲取文件信息 175
8.3 用戶組操作函數 176
8.3.1 getgid函數和setgid函數:
8.2.1 獲得/設置組識別碼 176
8.3.2 getegid函數和setegid函數:
8.2.1 獲得/設置有效的組識別碼 177
8.3.3 getuid函數和setuid函數:
8.2.1 獲得/設置真實的用戶識別碼 177
8.3.4 geteuid函數和seteuid函數:
8.2.1 獲得/設置有效的用戶識別碼 178
8.3.5 getgroups函數和setgroups
8.2.1 函數:獲得/設置組代碼 178
8.4 信號類函數 179
8.4.1 kill函數:傳送信號給指定的
8.2.1 進程 181
8.4.2 raise函數:信號發送函數 181
8.4.3 alarm函數:設置超時函數 182
8.4.4 signal函數:信號安裝函數 182
8.5 進程處理函數 183
8.5.1 getpid函數和getppid函數:
8.2.1 獲得進程ID和父進程ID 183
8.5.2 fork函數:建立子進程 183
8.5.3 sleep函數和usleep函數:
8.2.1 讓進程暫停執行一段時間 185
8.5.4 exec函數族:找到可執行
8.2.1 文件 185
8.5.5 _ exit函數和_Exit函數:
8.2.1 結束進程執行 188
第四部分 C語言高級編程
第9章 動態內存的堆與棧 190
9.1 程序內存區域的使用 190
9.1.1 靜態內存與動態內存 190
9.1.2 C語言中的動態內存 191
9.2 C程序中棧空間的使用 196
9.2.1 參數使用棧空間 196
9.2.2 自動變數使用棧空間 199
9.2.3 程序中較大的棧 201
9.2.4 棧空間的特性 202
9.3 C程序中的堆空間使用 203
9.3.1 分配和釋放堆內存的庫函數 203
9.3.2 庫函數使用 204
9.3.3 堆內存的特性 218
9.4 堆內存和棧內存使用的比較 222
9.4.1 利用返回值傳遞信息 222
9.4.2 利用參數傳遞信息 226
9.4.3 堆與棧內存管理的區別 231
第10章 函數指針的使用 232
10.1 函數指針的概念 232
10.1.1 C語言函數的本質 232
10.1.2 函數指針在C語言中的
10.1.2 意義 234
10.2 函數指針的使用 237
10.2.1 函數指針使用初步 237
10.2.2 函數指針的類型定義 240
10.2.3 函數指針作為結構體成員 242
10.2.4 函數指針作為函數的參數 243
10.2.5 函數指針作為函數的
10.2.5 返回值 244
10.2.6 函數指針數組 246
10.3 函數指針使用示例 248
第11章 回調函數的使用 252
11.1 回調函數的概念與作用 252
11.1.1 程序調用的方式 252
11.1.2 回調函數的作用 254
11.2 回調函數的語法 254
11.2.1 簡單的回調函數 254
11.2.2 完全形式的回調函數 256
11.3 回調函數的使用 259
11.3.1 qsort中的回調函數 259
11.3.2 atexit和on_exit函數的
10.2.5 注冊退出函數 263
第12章 C語言實現對象編程 268
12.1 C語言實現基於對象編程的
12.1 概念與作用 268
12.2 C語言基於對象編程實現
12.1 封裝 269
12.2.1 簡單的程序示例 269
12.2.2 C語言基於對象編程的
10.2.5 詳解 272
12.2.3 C語言基於對象編程與
10.2.5 C++面向對象編程的對比 275
12.3 C語言基於對象編程實現
12.3 部分繼承功能 278
12.3.1 利用數據結構的包含實現
10.2.5 繼承功能 279
12.3.2 利用私有指針實現繼承
10.2.5 功能 282
12.3.3 C語言實現繼承的總結 287
12.4 C語言基於對象編程實現
12.4 部分多態功能 288
12.4.1 利用操作指針組的包含
10.2.5 實現多態功能 288
12.4.2 C語言實現多態功能的總結 292
12.5 對C語言實現基於對象
12.5 編程的思考 292
12.5.1 C語言基於對象編程的
10.2.5 特性 292
12.5.2 C語言基於對象編程中介面、
10.2.5 實現和調用者的關系 293
第五部分 在嵌入式
環境下的C語言編程
第13章 C語言程序的內存布局 295
13.1 C語言程序的存儲區域 295
13.2 C語言程序的段 297
13.2.1 段的分類 297
13.2.2 程序中段的使用 298
13.3 可執行程序的連接 301
13.3.1 可執行程序的組成 301
13.3.2 各個目標文件的關系 303
13.3.3 連接錯誤示例 304
13.4 C語言程序的運行 309
13.4.1 RAM調試運行 311
13.4.2 固化程序的XIP運行 312
13.4.3 固化程序的載入運行 313
13.4.4 C語言程序的運行總結 315
第14章 嵌入式C語言常用語法 317
14.1 內存指針操作 317
14.1.1 內存操作的意義 317
14.1.2 使用指針操作內存 319
14.1.3 volatile的使用 324
14.1.4 嵌入式系統指針的實際
10.2.5 應用 325
14.2 位操作 327
14.2.1 位操作的意義 327
14.2.2 位操作的語法 328
14.3 大小端與對齊問題 330
14.3.1 大小端問題 331
14.3.2 內存對齊問題 335
14.3.3 結構體成員的對齊問題 338
14.4 程序的跳轉 344
14.4.1 嵌入式系統程序跳轉的
10.2.5 類型 344
14.4.2 C語言中實現程序的跳轉 345
第15章 嵌入式C語言編程的技巧 348
15.1 程序的優化技巧 348
15.1.1 循環緩沖區 348
15.1.2 查表法 350
15.1.3 針對循環執行效率的
10.2.5 優化 353
15.2 關於小數運算 355
15.3 函數參數和返回值的傳遞 357
15.4 變數的初始化技巧 360
15.4.1 數組的初始化 360
15.4.2 結構體的初始化 362
15.4.3 變數的初始化總結 362
15.5 程序的調試和宏使用的技巧 363
15.5.1 列印文件、函數和程序行 363
15.5.2 #:字元串化操作符 364
15.5.3 ##:連接操作符 366
15.5.4 調試宏的第一種定義方式 367
15.5.5 調試宏的第二種定義方式 368
15.5.6 對調試語句進行分級審查 369
15.5.7 條件編譯調試語句 370
15.5.8 使用do…while的宏定義 372
15.6 代碼剖析 373
參考文獻 378

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

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

㈣ 什麼是嵌入式c語言啊

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

㈤ 嵌入式C語言

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

本書有以下特點:

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

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

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

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

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

㈥ 嵌入式系統開發中的C語言編程和普通C語言編程有何區別

無區別,只是你操作的層面不一樣。普通編程層次較高些(一般而言),而嵌入式操作的大部分偏底層,如管理內存映射,設置中斷系統等。
看來deep_pro也很了解。不過他也挺贊同我的:1、承認嵌入式系統開發中的C語言編程和普通C語言編程無區別;2、補充只是編譯器有較大區別,這對程序員來說基本是透明的;3、基本贊同我「嵌入式開發中的C語言大多數情況下需對硬體底層操作(因為你別指望嵌入式上能跑起一個龐大的操作系統),而普通C編程則不然(相信基本沒有程序員在PC上編程時還去控制PC上的內存映射)。」
綜上所述,我要謝謝deep_pro贊同我。

㈦ 嵌入式c語言編程

什麼是嵌入式?搞了這么多年單片機,FPGA,ARM,別人說學的是嵌入式,我始終不知道他是幹啥的,C語言是一個積累的過程,如果基礎不好建議你去看譚浩強的C語言書,如果有一個好基礎的話就不用了,人家寫好的程序會有很大收獲,而且語言的結構在控制系統中非常重要。很多是書上學不到的,要實踐。

㈧ 嵌入式C語言編程

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

㈨ 嵌入式系統需要學什麼語言

嵌入式系統需要學C語言編程。

根據中國物聯網校企聯盟的建議,學習嵌入式系統的必備知識與學習方法如下:

1、C開發經驗

條件:Linux。方法:主要是掌握ANSI C編程(不包括gtk,qt等圖形可視化開發)

2、網路、操作系統、體系結構

條件:Linux,各種書,演算法、常式。方法:通過C編程實現簡單的網路等知識的演算法和過程。

3、嵌入式系統概念

條件:各個嵌入式網站,討論組,書籍。方法:少提問,多留給自己思考的空間。

4、嵌入式開發實踐

條件:各種嵌入式系統開發工具的demo版,包括編譯器,模擬器。

方法:一個是基於MCU/MDSP的嵌入式系統開發,另一個是像Palm OS,WinCE,uC/OS II等RTOS下的應用軟體開發。第一個是針對硬體開發而言的,而第二個則是針對軟體開發而言的。

(9)嵌入式高級c語言編程擴展閱讀

發展趨勢:

1、嵌入式開發是一項系統工程,因此要求嵌入式系統廠商不僅要提供嵌入式軟硬體系統本身,同時還需要提供強大的硬體開發工具和軟體包支持。

目前很多廠商已經充分考慮到這一點,在主推系統的同時,將開發環境也作為重點推廣。比如三星在推廣Arm7,Arm9晶元的同時還提供開發板和板級支持包(BSP)。

而WindowCE在主推系統時也提供Embedded VC++作為開發工具,還有Vxworks的Tonado開發環境,DeltaOS的Limda編譯環境等等都是這一趨勢的典型體現。當然,這也是市場競爭的結果。

2、網路化、信息化的要求隨著網際網路技術的成熟、帶寬的提高日益提高,使得以往單一功能的設備如電話、手機、冰箱、微波爐等功能不再單一,結構更加復雜。

熱點內容
python郵件正文 發布:2024-04-18 16:45:22 瀏覽:804
phpopcache 發布:2024-04-18 16:24:20 瀏覽:129
安卓手機的歌怎麼弄到蘋果 發布:2024-04-18 16:23:39 瀏覽:15
安卓抖音購物車在哪裡 發布:2024-04-18 16:23:29 瀏覽:672
安卓手機用劉海屏和挖孔屏哪個好 發布:2024-04-18 16:12:51 瀏覽:467
孩子學編程多少錢 發布:2024-04-18 16:04:59 瀏覽:129
酒糟存儲 發布:2024-04-18 15:47:14 瀏覽:494
怎麼在安卓華為平板裡面關掉耳機模式 發布:2024-04-18 15:42:07 瀏覽:576
聯想筆記本忘記開機密碼怎麼辦 發布:2024-04-18 15:22:56 瀏覽:997
排名演算法是 發布:2024-04-18 15:06:48 瀏覽:927