第6章6 4嵌入式linux開(kāi)發(fā)_第1頁(yè)
第6章6 4嵌入式linux開(kāi)發(fā)_第2頁(yè)
第6章6 4嵌入式linux開(kāi)發(fā)_第3頁(yè)
第6章6 4嵌入式linux開(kāi)發(fā)_第4頁(yè)
第6章6 4嵌入式linux開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論