linux平臺內(nèi)核接口使用手冊_第1頁
linux平臺內(nèi)核接口使用手冊_第2頁
linux平臺內(nèi)核接口使用手冊_第3頁
linux平臺內(nèi)核接口使用手冊_第4頁
linux平臺內(nèi)核接口使用手冊_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

歡迎使 特別...................................................................................................................................版本變更說 標(biāo)準(zhǔn)C庫的使用說 概 標(biāo)準(zhǔn)C庫的獲取與使 glibc庫的組 glibc庫的組 AK39基本io設(shè)備的使用說 gpio設(shè)備的使用說 功能敘 接口說 打開/關(guān)閉Gpio設(shè) 系統(tǒng)調(diào)用ioctl接口參數(shù)的宏介 Gpio設(shè)備預(yù)留的空余gpio腳的個(gè)數(shù) 具體Gpio設(shè)備預(yù)留的空余的gpio 設(shè)置Gpio腳為輸入/輸出 作為輸入腳的Gpio的電平 設(shè)置指定的Gpio為中斷 刪除Gpio腳的中斷響 已經(jīng)設(shè)置為中斷響應(yīng)的指定Gpio腳的中斷響 Keypad設(shè)備的使用說 功能敘 接口說 打開/關(guān)閉Keypad設(shè) 按鍵UART設(shè)備的使用說 功能敘 接口說 參數(shù)定 打開/關(guān)閉串口設(shè) 串口屬 設(shè)置串口波特 設(shè)置串口屬 AK39高級設(shè)備使用說 ISP圖像處 功能概 總體框 應(yīng)用程序接 頭文 結(jié)構(gòu)體說 私有數(shù)據(jù)—打開次通 私有數(shù)據(jù)—設(shè)置OSD參 私有數(shù)據(jù)—設(shè)置隱私遮 私有數(shù)據(jù)—設(shè)置變 私有數(shù)據(jù)—設(shè)置縮 打開/關(guān)閉串口設(shè) 設(shè)置參數(shù)的私有接 打開/關(guān)閉Camera設(shè) ioctl接口說 查詢設(shè)備支持的屬 設(shè)置輸出圖像的尺 請求緩沖 將緩沖區(qū)加入等待隊(duì)列或者從等待隊(duì)列移 啟動/關(guān)閉數(shù)據(jù)流傳 查詢設(shè)備支持的控制功 查詢參數(shù)里面某一個(gè)值對應(yīng)的菜 查詢參數(shù)里面某一個(gè)值對應(yīng)的菜 查詢緩沖區(qū)是否有數(shù) Microphone& 功能概 接口說 參數(shù)定 打開pcm設(shè) 給包含硬件信息和PCM流配置的結(jié)構(gòu)體分配空 初始化snd_pcm_hw_params_t的結(jié)構(gòu) 初始化模 初始化采樣模 設(shè)置采樣 設(shè)置通道數(shù) 設(shè)置一次傳送片段的個(gè) 設(shè)置snd_pcm_hw_params_t的結(jié)構(gòu)體屬 完成硬件參數(shù)設(shè)置,使設(shè)備準(zhǔn)備 從PCM設(shè)備中讀音頻數(shù) 關(guān)閉PCM設(shè)備句 Headphone& 功能概 接口說 頭文 參數(shù)定 打開pcm設(shè) 給包含硬件信息和PCM流配置的結(jié)構(gòu)體分配空 初始化snd_pcm_hw_params_t的結(jié)構(gòu) 初始化模 初始化采樣模 設(shè)置采樣 設(shè)置通道數(shù) 設(shè)置一次傳送片段的個(gè) 設(shè)置snd_pcm_hw_params_t的結(jié)構(gòu)體屬 完成硬件參數(shù)設(shè)置,使設(shè)備準(zhǔn)備 寫音頻數(shù)據(jù)到PCM設(shè) 關(guān)閉PCM設(shè)備句 SDcard的掛 USB 功能概 SD卡作為U盤的掛載方 USB 功能概 U盤或移動硬盤掛載的步 消息和使用說 關(guān)于Uevent.....................................................................................................功能概 接收uevent的例 SD卡插 功能概 接口使用說 USB的插 功能概 接口使用說 功能概 接口使用說 功能概 接口使用說 20147概glibcGNUlibccglibclinuxAPI,除了封裝linux操作系統(tǒng)所提供的系統(tǒng)服務(wù)外,它本身也提供了許多其它一些必要功能服務(wù) ,即gettext基本IO操作標(biāo)準(zhǔn)C庫的獲取與使用在我們的文件系統(tǒng)剛剛使用busybox生成的時(shí)候,是沒有任何庫的支持的,我們需要為其加入標(biāo)準(zhǔn)C庫,需要還會另外加入各種軟件運(yùn)行的依賴庫。那么,就標(biāo)準(zhǔn)C庫而glibc庫位置位于交叉編譯工具的arm-4.3.2/arm-none-linux-gnueabi/libc中,這個(gè)除了標(biāo)準(zhǔn)的glibc庫之外,還包含了一些其他的內(nèi)容,下面將進(jìn)行介紹:靜態(tài)庫.alibm.a、靜態(tài)C++庫libstdc++.a等,編譯器在等,它們可能是接文件連接到其他.so庫。編譯動態(tài)庫相關(guān)的應(yīng)用程序時(shí),會用到這glibc庫的安裝其實(shí)把這個(gè)包含動態(tài)C庫的 第一步: 中,如圖1-2所示連接到/lib下面的動態(tài)庫。AK39基本iogpio設(shè)備的使用說明在我們的驅(qū)動中提供了gpio的設(shè)備,預(yù)留了一些空余的可被設(shè)置的gpio口,應(yīng)用層可以調(diào)用相應(yīng)的ioctrl,對這些gpio方便地進(jìn)行包括輸入,輸出,中斷響應(yīng)等屬性的打開/關(guān)閉Gpio設(shè)備Gpiofd=open(DEVICE_NAME,DEVICE_NAME為gpioioctl原型intioctl(intd,intrequest,下面將介紹gpio設(shè)備相關(guān)的ioctl的調(diào)用:ioctl宏 gpio腳個(gè)數(shù)的ioctl相關(guān)gpioioctl相關(guān)Gpioioctl相關(guān)Gpio為中斷腳的ioctl相關(guān)Gpio腳的中斷響應(yīng)的ioctl相關(guān)Gpio腳中斷響應(yīng)的ioctl相關(guān)Gpio設(shè)備預(yù)留的空余gpio腳的個(gè)數(shù)名稱Gpio設(shè)備預(yù)留的空余gpio腳的個(gè)數(shù)gpio驅(qū)動里預(yù)留的gpioret=ioctl(fd,GET_GPIO_NUM,ngpio是unsignedint變量,通過傳入它Gpio設(shè)備預(yù)留的空余的gpio名稱Gpiogpio能夠返回預(yù)留的具體空余gpio的腳buff是unsignedint*變量,buffngpio設(shè)置Gpio腳為輸入/輸出腳名稱ret=ioctl(fd,SET_GPIO_FUNC,gpiostructgpio_infogpio前:通過gpio.pin可以設(shè)定需要設(shè)置的gpio腳;通過gpio.dir可以把gpio設(shè)置為輸入或者輸出屬性;通過gpio.value可以設(shè)Gpio名稱作為輸入腳的Gpio的電平值能夠讀出作為輸入腳的gpioret=ioctl(fd,GET_GPIO_VALUE,gpio是structgpio_info的實(shí)例。在調(diào)用ioctl之前:通過gpio.pingpio腳;當(dāng)調(diào)用完ioctl之后:通過gpio.value的值來Gpio名稱Gpio能夠把指定的gpioret=ioctl(fd,SET_GPIO_IRQ,gpio是structgpio_info的實(shí)例。在調(diào)用ioctl之前:通過gpio.pingpio通過_pol可以設(shè)置低電平/高電平觸Gpio名稱Gpio刪除gpioret=ioctl(fd,DELETE_GPIO_IRQ,gpio是structgpio_info的實(shí)例。通過gpio.pin設(shè)定需要?jiǎng)h除中斷響應(yīng)的gpioGpio名稱等待已經(jīng)設(shè)置為中斷響應(yīng)的指定Gpioret=ioctl(fd,LISTEN_GPIO_IRQ,gpio是structgpio_info的實(shí)例。通過gpio.pin設(shè)定需要等待中斷響應(yīng)的gpioKeypad設(shè)備的使用說明Keypad(按鍵)在底層驅(qū)動中,是通過一個(gè)input子系統(tǒng),通過input的傳步,如圖2-1所示。打開/關(guān)閉Keypad設(shè)名稱Keypad/dev/input/event1為keypad按名稱判斷出input設(shè)備是屬于鍵盤,鼠標(biāo),還是觸摸屏。read(fd,&event,eventstructinput_event取到的event里面各個(gè)成員可以判斷到設(shè)備-1UART通用異步收發(fā)器UART,即”UniversalAsynchronousReceive”,它用來傳輸串行數(shù)據(jù):發(fā)送數(shù)據(jù)時(shí),CPU將并行數(shù)據(jù)寫入U(xiǎn)ART,UART按照一定的格式在一根電線上串即可UART獲得這些數(shù)據(jù)。UART之間以全雙工方式傳輸數(shù)據(jù),最精簡的連線方法只有3根電線:TxD用于發(fā)送數(shù)據(jù),RxD用于接收數(shù)據(jù),Gnd用于給雙方提供參考電平,連線如圖2-4所示。串口的通訊應(yīng)用還是相對比較廣泛的,如在定位通信中的GPS數(shù)據(jù)接收,在安防針對不同設(shè)備的要求會有所不同。一般市場上大部分串口通信的設(shè)備數(shù)據(jù)位為8位,無奇偶驗(yàn)證,1位停止位。如遇到需要改變的,對串口參數(shù)進(jìn)行相應(yīng)修改即可。我們這里的串口0用于連接PC進(jìn)行開發(fā)板的控制使用和調(diào)試,需要連接串口通信設(shè)備進(jìn)行另外的開發(fā)的,可使用串口1,對應(yīng)的串口設(shè)備,如圖2-5所示。變量定義intintstructtermios名稱fd=open("/dev/ttySAK0",/dev/ttySAK0為串口0串口屬名稱ret=tcgetattr(fd,opts是structtermios-1表示失敗,0設(shè)置串口波特名稱cfsetispeed(&opts,B115200);opts是structtermios的各個(gè)重要的屬性。其中B115200-1表示失敗,0表示成功設(shè)置串口屬名稱TCSANOW為設(shè)置串口屬性的ioctl相關(guān)cmd。opts是structtermios的實(shí)例,其中opts.c_cflag-1表示失敗,0表示成功AK39高級設(shè)備使用說明ISP圖像處理ISP是AK39系列的圖像信號處理模塊,提供了非常強(qiáng)的功能,能對Sensor輸出的數(shù)據(jù)進(jìn)行后期的圖像處理。下文中“camera”字意統(tǒng)指ISP和sensor。/(GBRG)/(BGGR)等順序輸入的RGBSensor,當(dāng)輸入的RAWISP有兩個(gè)通道,分別為主通道和次通道。兩個(gè)通道分別支持4區(qū)域內(nèi)的遮擋,遮擋1~0.5倍的縮小,子通道的縮小支持1~1/8倍的一維縮小。ISP有4模式二、YUV模式(單幀/連續(xù)幀/單幀拼場/連續(xù)幀拼場)模式三、RGB模式(單幀/連續(xù)幀/單幀拼場/連續(xù)幀拼場)模式四、大圖模式(YUV大圖/RGB大圖)并且支持YUV/RawRGB的圖像處理功能,包括:亮度調(diào)節(jié)、對比度調(diào)節(jié)、飽和度調(diào)節(jié)、ISO濾波、OSD水印、時(shí)間戳顯示、變焦/縮放處理、隱私遮擋等功能。RawRGB還制。如對比度調(diào)節(jié)、framebuffer的請求。異性。因此ISP模塊也對圖像的控制功能提供了私有數(shù)據(jù)結(jié)構(gòu)體和接口。須二字的話,說明要使用ISP的功能,必須調(diào)用此接口,否則可能造成失敗。頭文Camera#include #include< #include<t-anyka/isp_interface.h>#include<akuio/akuio.h>結(jié)構(gòu)體說變量定義intstructsstructstructstructstructstructstructstructstructstructstructstruct用來設(shè)置osd參數(shù)structstructstruct上面表格中定義的結(jié)構(gòu)體大部分都是linuxV4L2子系統(tǒng)的標(biāo)準(zhǔn)接口,部分是根據(jù)ISP的功能設(shè)置了特有的私有接口。V4L2子系統(tǒng)定義的結(jié)構(gòu)體請參考V4L2子系統(tǒng)相關(guān)原型struct{inttype;intwidth;intheight;inttype:必須為ISP_PARM_CHANNEL2.width:表示次通道輸出的指定尺寸(寬).height:(高Enable:指定是否使能(1為使能,0為720x576),即寬高過ak_camera_set_fmt設(shè)置的寬高除了尺寸,原則,第二通道的YUVYUV道還是第二通道,ISP只能提供YUV420數(shù)據(jù)格式的輸出,也就是說:第二通道數(shù)據(jù)地址=主通道數(shù)據(jù)地址+主通道寬*主通道高*32chl2_info=parm.parm.raw_data;chl2_info->enable=1;chl2_info->width=chl2_info->height=if(-1==xioctl(fd,VIDIOC_S_PARM,&parm))原型struct{intintintintstart_xpos;intend_xpos;intstart_ypos;intend_ypos;intenable;unsignedlongvirt_addr;type:必須為channelOSD1,2color_depth,表示顏色深度是16色(4位)還是4色(2位,主通道只支持16色,次通道支持4色和16色。color_transparency用來指定OSD區(qū)域要設(shè)置的,范圍在016之間,0表示start_xpos和start_ypos表示OSD區(qū)域在圖像中的起始位置,end_xpos和end_ypos,OSDphys_addr和virt_addrOSDenable,0表示關(guān)閉OSD顯示,1表示開啟。phys_addr必須是通過akuio分配的intosd_width,osd_height;staticchar*osd_buff=AK_NULL;parm.type=V4L2_BUF_TYPE__CAPTURE;structisp_osd_info*p_osd=parm.parm.raw_data;p_osd->type=ISP_PARM_OSD;p_osd->channel=p_osd->color_depth=p_osd->start_xpos=p_osd->start_ypos=p_osd->end_xpos=p_osd->end_ypos=p_osd->enable=osd_width=p_osd->end_xpos-p_osd->start_xpos+1;osd_height=p_osd->end_ypos-p_osd->start_ypos+1;picsize=osd_width*osd_height;osd_buff=akuio_alloc_pmem(picsize/2+picsize%2);if(!osd_buff1)return-memset(osd_buff1,0x00,(picsize/2+picsize%2));if(osd_buff!=AK_NULL){p_osd->phys_addr=}if(-1==xioctl(fd,VIDIOC_S_PARM,&parm))原型結(jié)用structisp_occlusion_color來設(shè)置遮擋區(qū)域的顏色類型,和設(shè)struct{inttype;intchannel;intintend_xpos;intend_ypos;intenable;struct{intintcolor_type;inttransparency; structisp_occlusion_infotype:channel表示要設(shè)置的目標(biāo)通道,或第1通道,或第2number14則每個(gè)通道最多可設(shè)置4個(gè)遮擋點(diǎn)。start_xpos和start_ypos表示目標(biāo)遮擋區(qū)域在圖像中的起始位置,enable表示是否全能該遮擋點(diǎn),0為關(guān)閉,1為打開。structisp_occlusion_color結(jié)構(gòu)體type:必須為color_type表示遮擋區(qū)域的顏色類型,分別有0到33transparency表示顏色的,有0到15的值可供設(shè)置,0表示全 ponent和 在在color_type設(shè)置為0(替換色)才有效主通道和次通道分別支持4structisp_occlusion_info*oclu_info;color_info=parm.parm.raw_data;color_info->color_type=0;color_info->transparency=8; ponent=72; ponent=if(-1==xioctl(fd,VIDIOC_S_PARM,&parm))oclu_info=parm.parm.raw_data;oclu_info->number=1;if(-1==xioctl(fd,VIDIOC_S_PARM,&parm))原型structisp_zoom_infointtype*必須為ISP_PARM_ZOOM*/intchannel;intcut_xpos;intcut_ypos;intcut_width;intcut_height;intout_width;inttype:必須為ISP_PARM_ZOOM.channel:1cut_xpos,cut_ypos表示要被裁區(qū)域的起始位置,這個(gè)區(qū)域是相對于sensor輸出到ISP的圖像尺寸,即是ak_camera_set_fmtcut_width和cut_heightout_width,cut_height==out_height。應(yīng)該注意,ISP3,縮小倍數(shù)為0.5,out_width和out_height分別過cut_width和cut_height的3倍,同時(shí)也不次通道不支持放大,僅支持1~1/8縮小。故channel變量在放大時(shí)只能配置為1。并且cut_window果sensor輸出為RAWRGB時(shí),還要加邊界處理值18。即:cut_width>=ch2_out_width+18cut_height>=structv4l2_streamparmparm;zoom_info=parm.parm.raw_data;zoom_info->type=zoom_info->cut_xposzoom_info->cut_ypos=zoom_info->cut_width=zoom_info->out_width=zoom_info->out_height=if(-1==xioctl(fd,VIDIOC_S_PARM,&parm))原型struct{intintchannel;intcut_xpos;intcut_ypos;intcut_width;intcut_height;intout_width;inttype:必須為ISP_PARM_ZOOM.channel:1cut_xpos,cut_yposcut_xpos=0,cut_width和cut_height表示sensorak_camera_set_fmtout_widthout_height應(yīng)該注意,ISP主通道最大支持的放大倍數(shù)為3,縮小倍數(shù)為0.5,即out_width和out_height分別過cut_width和cut_height的3次通道不支持放大,僅支持1~1/8縮小。故channel變量在放大時(shí)只能配置為1。并且cut_window果sensor輸出為RAWRGB時(shí),還要加邊界處理值18。即:cut_width>=ch2_out_width+18cut_height>=structv4l2_streamparmparm;zoom_info=parm.parm.raw_data;zoom_info->type=//downzoom_info->cut_xpos=zoom_info->cut_ypos=zoom_info->cut_width=zoom_info->out_width=zoom_info->out_height=if(-1==xioctl(fd,VIDIOC_S_PARM,上面講的幾種功能,打開次通道,設(shè)置OSD參數(shù),設(shè)置隱私遮檔,設(shè)置變焦,設(shè)置縮ioctl功能參數(shù)設(shè)置請參考小節(jié)。原型ret=xioctl(fd,VIDIOC_S_PARM,fd是camera打開/關(guān)閉Camera設(shè)原型Camera設(shè)備(必須通過調(diào)用接口打開Camera不支持多Camera操作fd= 0",O_RDWR|所有參數(shù)同Linux-1,openioctl接口說明原型intioctl(intd,intrequest,ioctl的編號,詳細(xì)描述見下面。下面將介紹設(shè)備相關(guān)的ioctl的調(diào)用名稱名稱cropstructv4l2_crop名稱retval=ioctl(fd,VIDIOC_QBUF,&buf);buf是structv4l2_buffer的實(shí)例,應(yīng)用程序應(yīng)除了設(shè)產(chǎn)生錯(cuò)誤).由于驅(qū)動只接收物理連續(xù)的地址,傳下來的虛擬用戶空間地址應(yīng)該必須是用akuio庫申請的地址,當(dāng)ioctlVIDIOC_DQBUFioctl1(函數(shù)調(diào)用發(fā)生錯(cuò)誤并且errno為EIO,表明camera發(fā)生到錯(cuò)誤數(shù)據(jù)幀的異址Queue通過調(diào)用ioctl(VIDIOC_DQBUF)返回到camera驅(qū)動空間管理隊(duì)列中。否則camera驅(qū)動將失去該內(nèi)存空間。ret=ioctl(handle->fd,VIDIOC_DQBUF,&(buf));if(ret<0){if(errno==EIO)if(-1==ioctl(fd,&buf)){}}名稱retval=ioctl(fd,VIDIOC_REQBUFS,req是structv4l2_requestbuffers名稱retval=ioctl(fd,VIDIOC_STREAMON,&type);typeenumv4l2_buf_type名稱查詢驅(qū)動是否支持的某一個(gè)Cameraqc是structv4l2_queryctrl應(yīng)的ID,如V4L2_CID_DO_WHITE_BALANCE等,若名稱QUERYCTRL驅(qū)動支持的參數(shù)ID后,獲取相應(yīng)的設(shè)置值,可以查得此值對應(yīng)的retval=ioctl(fd, ,qm是structv4l2_query 的實(shí)例,應(yīng)用程序填好ID和相應(yīng)的值,驅(qū)動會返回相應(yīng)的描述。名稱Camera參數(shù)(可選設(shè)置相應(yīng)Cameraretval=ioctl(fd,VIDIOC_S_CTRL,ctrl是structv4l2_control的ID和取回來的設(shè)置值則好。名稱retval=select(fd+1,&fds,NULL,NULL,fdcamera,fds于0的數(shù),接著就可以去隊(duì)列中取數(shù)據(jù)了Microphone&Microphone&Linein是關(guān)于音頻的模塊,在linux下進(jìn)行音頻編程時(shí),我們一般使用alsa聲卡驅(qū)動的體系架構(gòu)。ALSA簡化了應(yīng)用程序的編寫,提供了相應(yīng)的函數(shù)庫,與OSS提供的基于ioctl的原始編程接口相比,ALSA函數(shù)庫使用起來要更加方便一些。下面將介紹在音頻錄制時(shí),用到的alsa函數(shù)庫的相關(guān)接口。變量 snd_pcm_tPCM硬件信息和PCMintpcm名稱打開pcm打開pcm設(shè)備,傳出PCM設(shè)備句柄SND_PCM_STREAM_CAPTURE,0);pcm_handle為PCM設(shè)備句柄;default表示默認(rèn)值的意思,一般都使用這個(gè)值;0表示標(biāo)準(zhǔn)配置;SND_PCM_STREAM_CAPTURE表示操作的宏。PCM名稱分配snd_pcm_hw_params_tret=hw_params為snd_pcm_hw_params_tsnd_pcm_hw_params_t名稱snd_pcm_hw_params_tpcm_handle為PCM設(shè)備句柄;hw_params為名稱pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t結(jié)構(gòu)體的一個(gè)指針;SND_PCM_ACCESS_RW_INTERLEAVED名稱pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t結(jié)構(gòu)體的一個(gè)指針;SND_PCM_FORMAT_S16_LE為Signed16-bit名稱hw_params,&rate,0);pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t;rate采樣率的變量,最后一個(gè)參數(shù),一般設(shè)置為0即可。名稱pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t;1名稱PERIOD,0);pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t;PERIOD般設(shè)置為0即可。snd_pcm_hw_params_t名稱ret=snd_pcm_hw_params(pcm_handle,pcm_handle為PCM設(shè)備句柄;hw_params為名稱當(dāng)設(shè)置完hw_paramspcmret=pcm_handle為PCMPCM名稱PCMret=snd_pcm_readi(pcm_handle,data,pcm_handle為PCM設(shè)備句柄;data為一個(gè)buff的大小為PERIOD*2*1(*8*;PERIOD返回寫入的PERIODPCM名稱ret=pcm_handle為PCMHeadphone&Headphone&Lineout是關(guān)于音頻的模塊,在linux下進(jìn)行音頻編程時(shí),我們一般使用alsa聲卡驅(qū)動的體系架構(gòu)。ALSA簡化了應(yīng)用程序的編寫,提供了相應(yīng)的函數(shù)庫,與OSS提供的基于ioctl的原始編程接口相比,ALSA函數(shù)庫使用起來要更加方便一些。下面將介紹在音頻時(shí),用到的alsa函數(shù)庫的相關(guān)接口。#include變量 snd_pcm_tPCM硬件信息和PCMintpcm名稱SND_PCM_STREAM_YBACK,0);pcm_handle為PCM設(shè)備句柄;default表示默認(rèn)值的意思,一般都使用這個(gè)值;0表示標(biāo)準(zhǔn)配置;PCM名稱分配snd_pcm_hw_params_tret=hw_params為snd_pcm_hw_params_tsnd_pcm_hw_params_t名稱snd_pcm_hw_params_tpcm_handle為PCM設(shè)備句柄;hw_params為名稱snd_pcm_hw_params_tpcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t結(jié)構(gòu)體的一個(gè)指針;SND_PCM_ACCESS_RW_INTERLEAVED名稱pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t結(jié)構(gòu)體的一個(gè)指針;SND_PCM_FORMAT_S16_LE為Signed16-bit名稱&rate,0);pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t;rate采樣率的變量,最后一個(gè)參數(shù),一般設(shè)置為0即可。名稱pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t;2聲道(立體聲,也可設(shè)置成1表示單聲道。名稱PERIOD,0);pcm_handle為PCM設(shè)備句柄;hw_params為snd_pcm_hw_params_t;PERIOD般設(shè)置為0即可。snd_pcm_hw_params_t名稱ret=snd_pcm_hw_params(pcm_handle,pcm_handle為PCM設(shè)備句柄;hw_params為名稱當(dāng)設(shè)置完hw_paramspcmret=pcm_handle為PCMPCM設(shè)備名稱PCMret=snd_pcm_writei(pcm_handle,data,pcm_handle為PCM設(shè)備句柄;data為一個(gè)buff的大小為PERIOD*2*2(*8*;PERIOD返回寫入的PERIODPCM名稱ret=pcm_handle為PCMwifi的操作使用請參考<<Linux平臺Wifi模塊用戶操作指南_V1.0.0.doc>>文檔,里描(包括掃描AP、信號強(qiáng)度、以及網(wǎng)絡(luò)速度等、設(shè)置wifi作為softAP、工作站的方式,以及應(yīng)用程序如何移植wifi工具到自己的應(yīng)用等。SDcard的掛載當(dāng)我們把sdsdsd卡進(jìn)行。下面演示一下掛載sd卡的步驟。/dev下會多了一個(gè)mmcblk0p1的設(shè)備,該設(shè)備為sd卡設(shè)備,如圖3-4所示。第二步:把sd卡設(shè)備掛載上,我們這里將其掛載到/mnt 下,即可通過/mnt目錄sd卡里面的內(nèi)容,如圖3-5所示。第三步:通過掛載后的 實(shí)現(xiàn)sd卡文件的傳輸。可以通過 sd卡里面的文件拷貝出來,也可以通過 把文件拷貝到sd卡。如圖3-6所示是不能成功被寫入的,如圖3-7所示。USBUsbslave可以把開發(fā)板模擬成u盤、網(wǎng)卡、聲卡等設(shè)備連接到pc機(jī)作為從設(shè)備,而pc機(jī)上的usb為主設(shè)備。這里只介紹如何模擬成u盤。在使用時(shí),通過我們提供的驅(qū)動模塊(該模塊已經(jīng)集成到文件系統(tǒng)的/root下),使用動態(tài)插入的方式,把開發(fā)板上的nandflash的分區(qū)或者sd卡作為一個(gè)虛擬的U盤,掛載到PC上,使PC能夠開發(fā)板上的nandflash分區(qū)或者sd卡。SD卡作為U我們把SD卡插入到開發(fā)板后,把SD卡虛擬成U盤掛載到PC上,使PC能夠SD卡的內(nèi)容,下面將演示sd卡的U盤掛載過程。第一步:插入SD卡,即可在/dev下識別到SD卡的設(shè)備(ls/dev/mmcblk0p1),如圖3-17所示。動模塊,介質(zhì)為SD卡(/dev/mmcblk0p1,完成SD卡的U盤掛載stall=0圖3-18所示。第三步:完成掛載后,這時(shí)PCSD圖3-19所示。第四步:當(dāng)我們完成對移動磁盤進(jìn)行拷貝之后,我們可以卸載掉sd卡的U(rmmodg_mass_storage,同時(shí)運(yùn)行下sync3-20第五步:在開發(fā)板上對SD卡的內(nèi)容進(jìn)行,需要對SD卡進(jìn)行掛載(1./dev/mmcblk0p1/tmp2.ls/tmp),如圖3-21SD卡文件進(jìn)行的詳細(xì)介紹,可以查看3.8節(jié)SD卡的掛載的相關(guān)內(nèi)容。USBUsbhostu盤、usb用來擴(kuò)展開發(fā)板的功能,這里只介紹如何掛載u盤使用。我們通過開發(fā)板usb_otg口的host功能,把U盤或移動硬盤掛載到開發(fā)板上,使開發(fā)板可以U盤或移動硬盤上的內(nèi)由于USBOTGusb(分為hostudc)編譯成模塊。此功能是把usbotghostotg-hs.ko即可。第一步:加載otg-hs.ko驅(qū)動insmodotg-第二步:把U盤插入U(xiǎn)SB_OTG口。第三步:運(yùn)行fdisk-l查看U盤的設(shè)備節(jié)點(diǎn)位置,如圖3-36所示,我們這里的U盤位置是/dev/sdb1上。/如圖3-10-2-6所示第五步:完畢后,在U盤拔出之前,要對U盤進(jìn)行卸載,運(yùn)行umount/mnt命令,其中/mnt是對應(yīng)U盤的掛載 關(guān)于Ueventuevent,即userspaceevent,指內(nèi)核向用戶空間發(fā)出的一個(gè)通知,使相應(yīng)的應(yīng)用程序(如udev、mdev等)有機(jī)會對該作出處理。當(dāng)內(nèi)核設(shè)備或者驅(qū)動時(shí),內(nèi)核會調(diào)用uevent例程向用戶空間發(fā)出通知并輸出環(huán)境變量,以表明設(shè)備的狀態(tài)(添加或者移除,用戶空間的udev或者mdev就會捕捉到這些,根據(jù)匹配的規(guī)則作出相應(yīng)的處理,比如在/dev下生成設(shè)備節(jié)點(diǎn)或者使用modprobe加載驅(qū)動程序等等,從而要實(shí)現(xiàn)熱插拔機(jī)制,就需要有用戶空間的程序配合。對于PC端的Linux系統(tǒng),采用的是udevd服務(wù)程序,其通過NETLINK_KOBJECT_UEVENT獲得內(nèi)核發(fā)出的uevent事件和環(huán)境變量,然后查找匹配的udev規(guī)則,根據(jù)找到的規(guī)則作出相應(yīng)的處理。在每個(gè)的device文件夾下會生成一個(gè)uevent屬性文件,其作用就是實(shí)現(xiàn)手動觸 uevent,這樣udev服務(wù)程序就有機(jī)會處理這些了。在嵌入式系統(tǒng)中使用的是mdev,在啟動rcS中會有這樣一句命令/sbin/mdev–s,其作用就是掃描/sys 所有的uevent屬性文件,向其寫入“add”命令,觸發(fā)uevent,從而mdev有機(jī)會接收uevent的例接收uevent的例程為通過一個(gè)特定的socket內(nèi)核發(fā)出的uevent,具體#include<stdio.h>#i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論