版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1基于嵌入式Linux開(kāi)發(fā)基礎(chǔ)概要2基于linux系統(tǒng)開(kāi)發(fā)簡(jiǎn)介多線程技術(shù)對(duì)文件操作對(duì)設(shè)備操作嵌入式Linux的開(kāi)發(fā)過(guò)程針對(duì)嵌入式linux的系統(tǒng)開(kāi)發(fā)環(huán)境開(kāi)發(fā)平臺(tái):linux桌面系統(tǒng),如redhat,debin等。編輯器:vi(m)編譯器:Armv4l-unknown-linux-gcc基于嵌入式linux系統(tǒng)的開(kāi)發(fā)流程編寫(xiě)代碼編輯器編譯代碼編譯器下載代碼3可執(zhí)行代碼的格式4可執(zhí)行代碼格式a.out早期linux執(zhí)行格式,用gcc
不加-o
,即默認(rèn)輸出格式。elfgcc–o
的輸出格式擴(kuò)展名在linux下,應(yīng)用程序沒(méi)有固定的擴(kuò)展名,只要有可以執(zhí)行性就可以可用ls
–l
查看其可行性運(yùn)行./filename如何自動(dòng)運(yùn)行用戶(hù)程序5rc.local./root/usr/etc/rc.local#/////////////////#!/bin/shifconfig
lo
127.0.0.1route
add
-net
127.0.0.0
netmask
255.0.0.0
loportmapif
[
-f
/mnt/yaffs/init.sh
];
then/mnt/yaffs/init.shfi#Add
user’s
program./program#exec
/sbin/getty
ttyS0
115200多線程編程技術(shù)6在Linux系統(tǒng)下,啟動(dòng)一個(gè)新的進(jìn)程必須分配給它獨(dú)立的地址空間,建立眾多的數(shù)據(jù)表來(lái)維護(hù)它的代碼段、堆棧段和數(shù)據(jù)段,這是一種“昂貴”的多任務(wù)工作方式。而運(yùn)行于一個(gè)進(jìn)程中的多個(gè)線程,它們彼此之間使用相同的地址空間,共享大部分?jǐn)?shù)據(jù),啟動(dòng)一個(gè)線程所花費(fèi)的空間遠(yuǎn)遠(yuǎn)小于啟動(dòng)一個(gè)進(jìn)程所花費(fèi)的空間。而且,線程間彼此切換所需的時(shí)間也遠(yuǎn)遠(yuǎn)小于進(jìn)程間切換所需要的時(shí)間。多線程的優(yōu)點(diǎn)7提高應(yīng)用程序響應(yīng)。使多CPU系統(tǒng)更加有效。改善程序結(jié)構(gòu)。線程間方便的通信機(jī)制。線程間的通信方式。個(gè)線程的數(shù)據(jù)可以直接為其它線程所用.8實(shí)例/*
example.c*/#include
<stdio.h>#include
<pthread.h>void
thread(void){int
i;for(i=0;i<3;i++)printf("This
is
a
pthread.n");}int
main(void){pthread_t
id;int
i,ret;ret=pthread_create(&id,NULL,(void
*)
thread,NULL);if(ret!=0){printf
("Create
pthread
error!n");exit
(1);}for(i=0;i<3;i++)printf("This
is
the
main
process.n");pthread_join(id,NULL);return
(0);}9運(yùn)行結(jié)果Gcc -lpthread
–o thread
example.c10相關(guān)函數(shù)及說(shuō)明編寫(xiě)Linux下的多線程程序,需要使用頭文件pthread.h。線程創(chuàng)建函數(shù):int
pthread_create
(pthread_t
*
thread_id,const
pthread_attr_t
*
attr,
void*(* start_routine)
(void
*),void
*
restrictarg);retval)線程退出:void
pthread_exit
(void
*等待指定的線程結(jié)束:th,
voidint
pthread_join
(pthread_t**
thread_return)線程的互斥互斥鎖:互斥鎖用來(lái)保證一段時(shí)間內(nèi)只有一個(gè)線程在執(zhí)行一段代碼。實(shí)現(xiàn)線程間數(shù)據(jù)的共享和通信。線程的互斥:互斥鎖的初始化:pthread_mutex_init
(pthread_mutex_t
*,
constpthread_mutexattr_t
*)鎖定互斥量(阻塞):int
pthread_mutex_lock
(pthread_mutex_t
*
mutex);解鎖互斥量int
pthread_mutex_unlock
(pthread_mutex_t
*
mutex)銷(xiāo)毀互斥量:int
pthread_mutex_destroy
(pthread_mutex_t
*
mutex)11線程的同步12條件變量條件變量被用來(lái)進(jìn)行線承間的同步。條件變量的結(jié)構(gòu)為pthread_cond_t,初始化條件變量函數(shù):int
pthread_cond_init
(pthread_cond_t
*
restrict
cond,
const
pthread_condattr_t
*
restrict
cond_attr)銷(xiāo)毀條件變量CONDint
pthread_cond_destroy
(pthread_cond_t
*
cond)喚醒線程等待條件變量int
pthread_cond_signal
(pthread_cond_t
*
cond)等待條件變量(阻塞)int
pthread_cond_wait
(pthread_cond_t
*
restrict
cond,pthread_mutex_t
*
restrict
mutex)13對(duì)文件操作Linux下最常用的操作就是對(duì)文件操作。主要操作文件的創(chuàng)建和讀寫(xiě)文件的各個(gè)屬性目錄文件的操作int
open(const
char
*pathname,int
flags);O_RDONLY:以只讀的方式打開(kāi)文件。O_WRONLY:以只寫(xiě)的方式打開(kāi)文件。O_RDWR:以讀寫(xiě)的方式打開(kāi)文件。O_CREAT:創(chuàng)建一個(gè)文件。ssize_t
read(int
fd,
void
*buffer,size_t
count);ssize_t
write(int
fd,
const
void
*buffer,size_t
count);int
close(int
fd);int
access(const
char
*pathname,int
mode);R_OK文件可以讀,W_OK文件可以寫(xiě),X_OK文件可以執(zhí)行,F(xiàn)_OK文件存在14與操作目錄相關(guān)的函數(shù)15int
mkdir(const
char
*path,mode_t
mode);DIR
*opendir(const
char
*path);struct
dirent
*readdir(DIR
*dir);void
rewinddir(DIR
*dir);off_t
telldir(DIR
*dir);void
seekdir(DIR
*dir,off_t
off);int
closedir(DIR
*dir);對(duì)串口操作16打開(kāi)串口在Linux
下串口文件是位于/dev
下的串口一為/dev/ttyS0串口二為/dev/ttyS1int
fd;/*以讀寫(xiě)方式打開(kāi)串口*/fd
=
open(
"/dev/ttyS0",
O_RDWR);if
(-1
==
fd){/*
不能打開(kāi)串口一*/perror("
提示錯(cuò)誤!");}關(guān)閉串口close(fd);串口的設(shè)置17struct
termio{unsigned
shortc_iflag;/*
輸入模式標(biāo)志*/unsigned
shortc_oflag;/*
輸出模式標(biāo)志*/unsigned
shortc_cflag;/*
控制模式標(biāo)志*/unsigned
shortc_lflag;/*
local
mode
flags
*/unsigned
charc_line;/*
line
discipline
*/unsigned
charc_cc[NCC];
/*
control
characters
*/};波特率的設(shè)定18/*設(shè)置為19200Bps*/struct termios
Opt;tcgetattr(fd,
&Opt);cfsetispeed(&Opt,B19200);cfsetospeed(&Opt,B19200);tcsetattr(fd,TCA
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 熱線服務(wù)合同范本
- 蒙牛捐贈(zèng)協(xié)議書(shū)
- 融資協(xié)合同范本
- 視頻項(xiàng)目協(xié)議書(shū)
- 認(rèn)購(gòu)協(xié)議換合同
- 設(shè)施維護(hù)協(xié)議書(shū)
- 試工實(shí)習(xí)協(xié)議書(shū)
- 請(qǐng)人幫忙協(xié)議書(shū)
- 工人砸墻合同范本
- 恒大仲裁協(xié)議書(shū)
- 外包項(xiàng)目免責(zé)協(xié)議書(shū)8篇
- 【MOOC】電子線路設(shè)計(jì)、測(cè)試與實(shí)驗(yàn)(一)-華中科技大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 數(shù)學(xué)家祖沖之課件
- 船舶融資租賃合同
- JT-T-1221-2018跨座式單軌軌道橋梁維護(hù)與更新技術(shù)規(guī)范
- 24春國(guó)家開(kāi)放大學(xué)《知識(shí)產(chǎn)權(quán)法》形考任務(wù)1-4參考答案
- 倉(cāng)儲(chǔ)管理教學(xué)課件
- DLT1249-2013 架空輸電線路運(yùn)行狀態(tài)評(píng)估技術(shù)導(dǎo)則
- 國(guó)家開(kāi)放大學(xué)化工節(jié)能課程-復(fù)習(xí)資料期末復(fù)習(xí)題
- HXD3D機(jī)車(chē)總體介紹
- 教科版廣州小學(xué)英語(yǔ)四年級(jí)上冊(cè) Module 7 單元測(cè)試卷含答案
評(píng)論
0/150
提交評(píng)論