嵌入式課程設計總結(六)

2021-10-04 19:39:04 字數 2491 閱讀 1200

嵌入式linux開發工具!!gcc make shell

嵌入式linux系統開發:通過核心提供的服務實現相應功能

c語言程式設計:無os語法!!

嵌入式linux c開發:「會看使用說明書」

linux系統構成:使用者空間、核心空間

(分為兩個空間作用保護核心的訪問安全保護核心的訪問安全)

使用者空間不能隨便訪問核心空間(用系統呼叫訪問)

**系統呼叫:**核心提供的安全訪問機制; 硬體中斷、軟體中斷

作用:使使用者空間可以訪問核心空間並獲取服務

使用者如何傳送系統呼叫?

呼叫系統提供的函式介面

1、 linux系統空間劃分:使用者空間、核心空間

2、劃分空間的目的:保護核心空間不能被使用者空間隨便訪問;

3、使用者空間如何訪問核心空間?必須傳送系統呼叫;

4、如何發生系統呼叫?呼叫作業系統提供的函式介面—api

學習嵌入式linux系統開發實際上學習的時使用者程式設計介面api

「學會看和使用說明書! ! ! !」— 使用者程式設計介面手冊!!!

檔案操作、程序、執行緒操作(多工)、網路、裝置

檔案描述符:檔案id

動態分配:只要當操作這個檔案時,系統才會給你分配檔案描述符

非負整數:(從3編號開始、0,1,2三個檔案描述符有其他作用)

read、write、fcntl、close、link、stat、umask、unlink、fopen

表頭檔案:

#include

#include

#include

定義函式:

int creat(const char * pathname, mode_tmode);

函式說明:

引數pathname指向欲建立的檔案路徑字串。

creat()相當於使用下列的呼叫方式呼叫

open():open(const char * pathname ,(o_creat|o_wronly|o_trunc));

返回值:

creat()會返回新的檔案描述詞,若有錯誤發生則會返回-1,並把錯誤**設給errno。

一些錯誤**的含義:

eexist引數pathname所指的檔案已存在。

eaccess引數pathname所指定檔案不符合所要求測試的許可權。

erofs欲開啟寫入許可權的檔案存在於唯讀檔案系統內。

efault引數pathname指標超出可訪問的記憶體空間。

einval引數mode不正確。

enametoolong引數pathname太長。

enotdir引數pathname為一目錄。

enomem核心記憶體不足。

eloop引數pathname有過多符號連線問題。

emfile已達到程序可同時開啟的檔案數上限。

enfile已達到系統可同時開啟的檔案數上限

附加說明:

creat()無法建立特別的裝置檔案,如果需要請使用mknod()

read、write、fcntl、close、link、stat、umask、unlink、fopen

表頭檔案:

#include

#include

#include

定義函式:

int open(const char * pathname, int flags);

int open(const char * pathname,int flags, mode_t mode);

函式說明:

若所有欲核查的許可權都通過了檢查則返回0值,表示成功,只要有乙個許可權被禁止則返回-1。

一些錯誤**的含義:

eexist:引數pathname所指的檔案已存在,卻使用了o_creat和o_excl旗標。

eaccess:引數pathname所指的檔案不符合所要求測試的許可權。

erofs:欲測試寫入許可權的檔案存在於唯讀檔案系統內。

efault:引數pathname指標超出可訪問記憶體空間。

einval:引數mode不正確。

enametoolong:引數pathname太長。

enotdir:引數pathname不是目錄。

enomem:核心記憶體不足。

eloop:引數pathname有過多符號連線問題。

eio:i/o訪問錯誤。

附加說明:

使用access()作為使用者認證的判斷要特別小心

例如,在access()後再進行open()空檔案操作可能會造成系統安全上的問題。

嵌入式課程設計總結(二)

學習內容 linux介紹 使用linux操作 命令 linux開發工具 目標 會用!夠用!vm虛擬機器 通過軟體的方法模擬pc 為什麼不使用雙系統?嵌入式開發與核心相互,會導致系統崩潰 linux發行版 發行給使用者使用的版本 redhat centos7 企業版 ununtu 16.10 18.0...

嵌入式課程設計總結(三)

vim gcc gdb make vim 文字編輯器 學會使用和如何配置vim gcc 編輯器 學會製作動態庫和靜態庫及使用和區別 gdb 偵錯程式 設定斷點 單步執行 除錯記憶體錯誤 make 工程管理器 編寫makefile檔案 vim 功能最強大文字編輯器 擺脫滑鼠 vi vim im 命令模...

嵌入式課程設計總結(五)

自動生成 cmake autotool 嵌入式linux開發工具 shell程式設計 指令碼 批處理 linux系統運維工程師 嵌入式系統開發 系統移植 將使用者輸入的命令解析,呼叫相應的命令的可執行檔案 命令 可執行檔案 在這裡插入描述 變數 if for while until case 函式 ...