版權聲明:本文為博主原創文章,未經博主允許不得轉載。
硬件平臺:PC機一臺 、usb攝像頭
操作系統:Linux3.0.8
交叉編譯環境:arm-none-Linux-gnueabi-gcc 4.5.1
調試步驟:
一、linux 內核解壓
1.1使用linux-3.0.8-FS210_v8.tar.xz內核,將這個內核壓縮包拷貝到虛擬機的linux系統上
1.2 執行 tar –xvf linux-3.0.8-FS210_v8.tar.xz,得到內核(用來產生鏡像文件,燒進 s5pv210 開發板上)
1.3 解壓之后,進入 linux-3.0.8-FS210_v8 內核,修改該目錄下的 makefile,并配置相應的 make menuconfig,如下:
修改 Makefile
Make menuconfig
1.3.1 usb 驅動添加
Device Drivers --->
SCSI device support --->
<*> SCSI disk support
<*> SCSI generic support
<*> SCSI media changer support
[*] USB support --->
<*> USB Mass Storage support
1.3.2 添加驅動(video)
Device Drivers --->
<*> Multimedia support --->
<*> Video For Linux
[*] Video capture adapters --->
[*] V4L USB devices --->
<*> USB Video Class (UVC)
[*] UVC input events device support
1.4 執行 make zImage –j2,報如下錯誤:
修改這個文件
將
修改為
繼續編譯后出現
1.5 拷貝鏡像到相應的目錄下
開發板通過 tftp,下載虛擬機上的鏡像,所以執行
cp zImage /tftpboot/
二、抓拍代碼的移植
2.1用 arm-none-linux-gnueabi-gcc,編譯該文件
2.1.1 虛擬機上編譯 arm-none-linux-gnueabi-gcc 1.c -o 1,
編譯之前,需修改 應用程序.c文件中的設備節點,默認是/dev/video3。
2.1.2 拷貝可執行文件到開發板的根文件系統某目錄下(本實驗,使用 nfs服務,給板子提供文件系統)
比如 cp 1 /opt/rootfs/drv(/opt/rootfs為虛擬機提供給開發板
根文件系統,drv為我自己創建的目錄)
2.1.3 開發板成功和虛擬機連上后,連接好攝像頭,進入到用于抓拍的可執行文件的目錄,執行./1,會在該目錄下生成對應的圖片,默認抓拍
12張。示例:
三、流媒體的移植
3.1jpeg 庫的移植
jpeg 源碼包通過下面這個網址下載//www.ijg.org/files/jpegsrc.v8b.tar.g
解壓源碼包
tar xvf jpegsrc.v8b.tar.gz
配置源碼 cd jpeg-8b
./configure --prefix=/home/linux/jpeg --host=arm -none-linux-gnueabi
(./configure 配置源代碼樹)
安裝目錄:
--prefix=PREFIX
體系無關文件的頂級安裝目錄 PREFIX,也就Apache的安裝目錄。
[/usr/local/apache2]
系統類型:
--host=HOST
指定 Apache HTTP 服務器將要運行的目標系統類型 HOST 。
[BUILD])
3.2編譯
Make
3.3安裝
make install拷貝庫到根文件系統中
cp /home/linux/jpeg /lib/libjpeg.so.8 /opt/rootfs/lib
3.4 mjpg-stream的移植
3.4.1 mjpg-stream源碼包通過下面這個網址下載
//sourceforge.net/projects/mjpg-streamer/
解壓源碼
tar -xvf mjpg-streamer-r63.tar.gz
mkdir /home/linux/jpeg
3.4.2 修改源碼
cd mjpg-streamer-r63
修改頂層 makefile 及 plugins 目錄中的各級 makefile 將所有(注意這里需要修改 的內容) CC=gcc 修改為
修改 plugins/input_uvc/Makfile
修改
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE-Wall -shared -fPIC
為
修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
為
編譯
(make clean)
make
mkdir /opt/rootfs/mjpg
cp *.so /opt/rootfs/mjpg
cp mjpg-streamer /opt/rootfs/bin
3.5 運行 mjpg_stream
mjpg_streamer -i “/mjpg/input_uvc.so –y” -o “/mjpg/output_http.so -w
192.168.7.156:8080”& (注意:這里是板子的 ip 192.168.7.156)
瀏覽器上執行:
//192.168.7.156:8080/?action=snapshot (每次回車單張抓拍)
或者
//192.168.7.156:8080/?action=stream (視頻流)
或者打開 viewer.exe,輸入 IP 和端口,點擊 Connect 連接,可在下方看到視頻流。