linux 2.6.35核心移植- USB camera功能添加

來源:互聯網
上載者:User

一、環境
主機環境 :ubuntu 10.10
        目標機:FS2410(S3C2410)
        主機工具鏈 :gcc-4.4.5
        交叉工具鏈:arm-none-linux-gnueabi-gcc-4.3.2
        網路攝影機 :ZC301
二、移植過程
1、配置核心是核心支援晶片為ZC301的網路攝影機
        Make menuconfig
                Device Drivers --->
                        <*> Multimedia support --->
                                <*> Video For Linux
                                [*] Enable Video For Linux API 1 (DEPRECATED) (NEW)
                                [*] Video capture adapters (NEW) --->
                                        [*] V4L USB devices (NEW) --->
                                                <*> USB Video Class (UVC)
                                                [*] UVC input events device support (NEW)
                                        <*> USB ZC0301[P] webcam support (DEPRECATED)
2、重新編譯核心
make zImage
通過上面兩個步驟就可以驅動我們的網路攝影機了。但是這個驅動是基於V4l2的。以前基於V4L的一些上層應用就不能用了,或需要做大量的修改!這裡我們要實現網路視頻的功能,以前都是用servfox這個網路視頻伺服器,但是這個伺服器就是基於V4L的,我們如果想用的話就得對servfox的源碼進行修改。這裡我們選用另外一種方案mjpg-stream。
3、mjpg-stream的移植
關於mjpg-stream的資料大家可以在下面這個網址查看:http://www.eefocus.com/blog/link2url.php?link=http%3A%2F%2Fsourceforge.net%2Fapps%2Fmediawiki%2Fmjpg-streamer%2Findex.php%3Ftitle%3DMain_Page
        mjpg-stream的移植需要jpeg的庫,所以我們先移植jpeg的庫
(1)jpeg庫的移植
        1)jpeg源碼包通過下面這個網址下載
                http://www.ijg.org/files/jpegsrc.v8b.tar.gz
                2)解壓源碼包
                tar xvf jpegsrc.v8b.tar.gz
                3)配置源碼
                cd jpeg-8b
                ./configure --prefix=/home/linux/s3c2410-2.6.35/video/jpeg --host=arm-none-linux-gnueabi
                4)編譯
                make
                5)安裝
                make install
                6)拷貝庫到檔案系統中
                cp //home/linux/s3c2410-2.6.35/video/jpeg /lib/libjpeg.so.8 /source/rootfs/lib
(2)mjpg-stream的移植
        1)mjpg-stream源碼包通過下面這個網址下載
                http://sourceforge.net/projects/mjpg-streamer/
                2)解壓源碼
                tar xvf mjpg-streamer-r63.tar.gz
                3)修改源碼
                cd mjpg-streamer-r63
                修改頂層makefile及plugins目錄中的各級makefile將所有
                CC=gcc
                修改為
                CC=arm-none-linux-gnueabi-gcc
        修改plugins/input_uvc/Makfile
                修改
                CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
                為
                CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/linux/s3c2410-2.6.35/video/jpeg/include
                修改
                $(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
                為
                $(CC) $(CFLAGS) -ljpeg -L/home/linux/s3c2410-2.6.35/video/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
         jpeg_utils.c:27: fatal error: jpeglib.h: No such file or directory
                4)編譯
                make
  補充:linux 核心在29以上版本的要在此步之前修改drivers/media/video/gspca/gspca.c檔案,在第220行的goto error_buff; }後面添加一行,最終的效果為如下:
    220      goto error_buffer;
    221      }
    222    urb->transfer_flags=URB_NO_TRANSFER_DMA_MAP;
    223    usb_fill_int_urb(urb,dev,
            ...........此處省略
               5)測試
                mkdir /source/rootfs/mjpg
                cp *.so /source/rootfs/mjpg
                cp mjpg-stream /source/rootfs/bin
        開啟開開發板運行
                mjpg_streamer -i "/mjpg/input_uvc.so" -o "/mjpg/output_http.so -w /www"
                在源碼目錄下有start.sh,這個指令碼裡有一些mjpg-stream的使用方法及說明
        開啟一個網頁輸入下面地址就能夠看到一個視頻(開發板的IP為192.168.1.202):
                http://192.168.1.202:8080/?action=stream
                開啟一個網頁輸入下面地址就能夠看到一個靜態圖片:
                http://192.168.1.202:8080/?action=snapshot
                6)在mjpg源碼下有一個www的目錄,這個一個網路使用mjpg的執行個體,結合web伺服器(boa)可以實現一些其他相關功能。
補充:該實驗很注重交叉工具鏈的統一使用,根檔案系統的功能是否完善.

摘自 我的嵌入式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.