1. 程式人生 > >fs4412開發板學習筆記(十)

fs4412開發板學習筆記(十)

移植motion:
1.從官網
http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome
下載最新的motion-3.2.12
2.tar -xzf motion-3.2.12.tar.gz 解壓

3.mkdir motion 建立安裝目錄

4.設定(詳細說明見http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideInstallation)
/*--host:arm-linux-交叉編譯--prefix:安裝目錄*/
#./configure --host=arm-none-linux-gnueabi   --prefix=${PWD}/_install/ 
./configure --host=arm-none-linux-gnueabi --build=i486-gnu-linux --prefix=${PWD}/_install/ --with-jpeg-mmx=no ./configure --host=arm-none-linux-gnueabi --with-jpeg-mmx=no --prefix=${PWD}/_install/ --with-ffmpeg=/home/linux/workdir/motion/ffmpeg-0.8.15/_install ./configure --host=arm-none-linux-gnueabi --prefix=${PWD}
/_install/ --with-ffmpeg=/home/linux/workdir/motion/ffmpeg-2.5.4/_install ffmpeg: 1.從官網下載 http://ffmpeg.org/download.html 2.下載yamsm wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz #tar xzvf yasm-1.3.0.tar.gz #cd yasm-1.3.0 #./configure --prefix=/usr/local/yasm #make #make install #vi /etc/profile export
PATH="$PATH:/usr/local/yasm/bin" 2.安裝ffmpeg: mkdir _install ./configure --prefix=${PWD}/_install/ --enable-shared --disable-static --disable-yasm --enable-gpl --cc=/usr/local/toolchain/toolchain-4.6.4/bin/arm-none-linux-gnueabi-gcc --enable-cross-compile --arch=arm --disable-stripping --target-os=linux ./configure --prefix=${PWD}/_install/ --enable-shared --enable-static --disable-yasm --enable-gpl --cc=/usr/local/toolchain/toolchain-4.6.4/bin/arm-none-linux-gnueabi-gcc --enable-cross-compile --arch=arm --disable-stripping --target-os=linux ./configure --enable-shared --disable-yasm --prefix=/${PWD}/_install/ make make install (1)把lib中的三個連結庫libavcodec.so libavformat.so libavutil.so複製到/usr/lib下。把include目錄下的ffmpeg目錄複製到/usr/include下。 3.編譯motion (1) 在motion進行./configure的時候顯示Fatal Error YOU MUST HAVE jpeg Support? 將motion_so/libjpeg* 複製到/usr/lib apt-get install libjpeg62-dev (2)make (2.1)motion.h:43:28: fatal error: linux/videodev.h: No such file or directory ===>>apt-get install libv4l-dev* 將motion.h的"#include <linux/videodev.h>" 改為 #include <libv4l1-videodev.h> (2.2)netcam.h:19:21: fatal error: jpeglib.h: No such file or directory =====>> apt-get install libjpeg8-dev (2.3)/usr/include/jpeglib.h:26:62: fatal error: jconfig.h: No such file or directory =====>> 從http://www.ijg.org/下載jpegsrc.v9a.tar.gz tar xzf jpegsrc.v9a.tar.gz cd jpeg-9a/ System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] ./configure CC=arm-none-linux-gnueabi-gcc --prefix=${PWD}/_install/ --enable-shared --enable-static --build=i486-gnu-linux --host=arm-linux --target=arm make make install cp /usr/local/include/jconfig.h /usr/include/ (2.4)video.h:15:28: fatal error: linux/videodev.h: No such file or directory 將video.h的"#include <linux/videodev.h>" 改為 #include <libv4l1-videodev.h> (2.5)can't find -lz apt-get install zlib1g-dev cp /lib/x86_64-linux-gnu/libz.so.1.2.3.4 /home/linux/workdir/motion/ffmpeg-0.8.15/_install/lib (2.6) ffmpeg.c: In function 'ffmpeg_init': ffmpeg.c:232:5: warning: implicit declaration of function 'av_register_protocol' [-Wimplicit-function-declaration] ffmpeg.c: In function 'get_oformat': ffmpeg.c:275:9: warning: implicit declaration of function 'guess_format' [-Wimplicit-function-declaration] ffmpeg.c:275:12: warning: assignment makes pointer from integer without a cast [enabled by default] 將av_register_protocol改為av_register_all(); 將guess_format改為av_guess_format (3)make install cp _install/bin/motion /source/rootfs/usr/sbin cp _install/etc/motion-dist.conf /source/rootfs/etc/motion.conf cp /usr/lib/libjpeg.so.62 /source/rootfs/lib/ cp /usr/lib/libjpeg.so.9 /source/rootfs/lib/ 4.執行除錯motion (1)配置motion.conf daemon off #關掉deamon模式 quiet on locate on #探測到影象中有運動時,把運動區域用矩形框起來 videodevice /dev/video0 #載入USB攝像頭的裝置 width 640 #影象寬度 height 480 #影象高度 framerate 5 #每秒最大捕獲幀數 target_dir /motion #設定拍攝圖片的儲存目錄 threshold_tune off #設定是否使用motion detection閾值自動調節。設定off時,可以由threshold指定當探測到多少畫素變化時,判斷為影象中有運動。 threshold 3000 #這個是改變探測靈敏度,越小越靈敏,這裡設為3000畫素值 ffmpeg_cap_new on #在detect到運動時,用視訊記錄下來 ffmpeg_video_codec msmpeg4 #設定視訊的編碼器 webcam_localhost off #必須改成off才能通過pc訪問 webcam_maxrate 8 snapshot_interval 5 #設定自動採集圖片的週期,當有運動被檢測到時,採集頻率會自動變高。如果設定0,則無運動物體時不自動拍照 on_event_start /root/detected #當該事件產生時執行detected指令碼,該指令碼是簡單的可執行shell指令碼,下同 on_event_end /root/end #當該事件產生時執行end指令碼 gap 5 #設定,在探測到運動後,多長時間沒有運動的話就觸發運動結束指令on_event_end。 (2)執行: motion -c motion.conf 問題1: VFS: Mounted root (nfs filesystem) readonly on device 0:11. [1] Error opening file ./01-19700101000142-00.jpg with mode w: Read-only file system [1] Can't write picture to file ./01-19700101000142-00.jpg: Read-only file system 解決:在開發板執行 [[email protected] ]# mount 192.168.1.110:/source/rootfs on / type nfs (ro,relatime,----)可知掛載的nfs為ro Linux下出現Read-only file system的解決辦法: 正常執行中的網站,忽然間出現session目錄不可寫,連線伺服器一看, 任何關於寫硬碟的命令都不能用,提示Read-only file system,使用一條命令即可搞定此問題: mount -o remount rw / || \/ 目的:使根目錄可寫 由於/etc/fstab檔案編輯錯誤 而引起的不能正常進入系統 解決方法就是修改/etc/fstab檔案成原來正常格式 刪除錯誤的或者是不存在的掛載目錄 操作:根據提示進入修復模式 Login incorrect. (Repair filesystem) 1 # vi /etc/fstab 但是修復模式下(read-only system) 檔案是被保護的不能修改 執行下面命令 把系統檔案許可權改成可讀寫(rw) (Repair filesystem) 1 # mount -o remount,rw / 使根目錄可寫.即可以修復/etc/fstab檔案,使之可寫.然後就可以vi修改了 儲存 wq (Repair filesystem) 1 #reboot 問題2: Wrong JPEG library version: library is 62, caller expects 90 由於使用了libjepg.so.62但編譯的時候使用了非ARM平臺的庫 重新配置jpeg庫,編譯後使用ARM平臺的庫再編譯motion 遠端監控:在火狐或者谷歌瀏覽器輸入http://192.168.1.140:8081/,來實時監控監控

相關推薦

fs4412開發學習筆記(七)

# madplay 123.mp3 WM8960 Playback: ASoC: unmatched rate symmetry: 8000 - 44100 output: ioctl(SNDCTL_DSP_SPEED): Invalid argument

fs4412開發學習筆記(五)

音效卡驅動dts. ====== wm8960:[email protected]1a{ compatible="wlf,wm8960"; reg = <0x1a>; };

fs4412開發學習筆記()

移植motion: 1.從官網 http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome 下載最新的motion-3.2.12 2.tar -xzf motion-3.2.12.tar.gz 解壓 3.mkdi

fs4412開發學習筆記(二一)

常用命令: setenv bootargs root=/dev/nfs nfsroot=192.168.0.110:/source/rootfs rw ip=192.168.0.140:192.168.0.110:192.168.0.1:255.255.2

fs4412開發學習筆記(三)

1.重新制作跟檔案系統啟動還是發生如下錯誤 [ 1.955000] request_module: runaway loop modprobe binfmt-464c //該錯誤是由於沒有配置交叉編譯工具 配置busybox時,在配置中發現bus

野火-Mini-RT-1052開發-學習筆記

RT-1052啟動細節 一、基本概念 Code :程式程式碼 RO-Data:只讀資料(定義的常量或const型的變數) RW-Data:靜態初始化,即有初值的變數 ZI-Data:未初始化的靜態變數(一般這類變數,被初始化為0) Total RO Size = Code + RO-

ALIENTEK MiniSTM32開發 學習筆記(一)

首先把屏插入開發板,OLED的話靠左,LED就要靠右(最左為空) 結果白屏。。。 檢查跳線均已接地,仍舊白屏。 用串列埠助手看,LCD ID貌似有問題,悲催??? FML ,屏腳插緊點就好了,LCD ID正常。 貌似出廠自帶DEMO,無限迴圈中,看樣子有點和GTK的DEMO類似啊,似乎可以做很多東西嘛。 研

Python學習筆記五_開發接口

mock con n) clas reg 都是 upper 建立 insert 1、mock接口,模擬一些接口,在別的接口沒有開發好的時候,你需要用它 假的支付接口,模擬支付成功 2、 3、查看數據,避免直接操作數據庫flask web開發框架 實例化server

IOS開發學習筆記六 使用UITableView控制元件實現微博列表效果

效果:專案地址 微博列表唯一需要注意的是每個條目的列表行高不一致,需要在UITableView的代理方法heightForRowAtIndexPath中動態設定行高 需要建立Module物件CZMicroBlogFrame來儲存UITableCell的子View的

IOS開發學習筆記五 為UITableView控制元件新增Header和Footer

效果圖:專案地址 新增圖片素材,新增plist檔案,新增名為CZGoods的module檔案 @implementation CZGoods - (instancetype)initWithDict:(NSDictionary *)dict { if

IOS開發學習筆記四 UITableView控制元件實現ListView的效果

效果圖:專案地址 ViewController對應的程式碼: #import "ViewController.h" #import "CZHero.h" @interface ViewController () <UITableViewDataSource, UIT

IOS開發學習筆記二 實現一個簡單的答題器

效果圖:專案地址 專案新增素材,新增plist檔案,並新增plist裡面的字典資料對應的model物件 module標頭檔案: #import <Foundation/Foundation.h> @interface CZQuestion :

IOS開發學習筆記一 使用xlib檔案實現GridView的效果

效果圖: 在專案中資源素材檔案 新增plist檔案 新增名叫AFGridItem的model物件,用來代替我們從plist檔案中解析得到的字典資料,並新增通過字典獲取物件例項和初始化物件的方法。 #import <Foundation/Foun

IOS開發學習筆記 使用程式碼實現GridView的效果

效果圖:專案地址 把圖片素材放入專案中,併為專案建立plist檔案,存放一個字典陣列,每個字典裡面對應存放這圖片素材名稱和GridView子條目的對應的文字描述。 新增NSArray *app的變數,使用懶載入的方式來讀取並儲存plist檔案的內容 在Vie

嵌入式核心及驅動開發學習筆記) 非同步通訊+中斷實現讀取資料

對於linux一切都是檔案,驅動裝置在應用層也是以檔案的形式進行讀寫。之前學了阻塞、非阻塞、多路複用的方式讀裝置,它們都需要應用主動讀取。那麼應用層有沒有一種方式,當底層將資料準備好了,應用程式自動處理這些資料?通過非同步通訊可以實現,這有寫類似硬體層的中斷概念 驅動層(準備好了資料) --&g

嵌入式核心及驅動開發學習筆記七) 裝置樹的定義規則和獲取方法

概述 在Linux 2.6中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥著大量的垃圾程式碼,相當多數的程式碼只是在描述板級細節,而這些板級細節對於核心來講,不過是垃圾,如板上的platform裝置、resource、i2c_board_info、sp

嵌入式核心及驅動開發學習筆記一) 中斷優化處理

ARM cortex-A系列的核心不支援中斷巢狀。在核心中斷函式中,如果中斷處理時間過長,產生中斷巢狀,重者系統崩潰,輕者也會影響其他事件處理。這也是中斷中不能使用延時函式的原因。 但是有些高實時性裝置(比如網絡卡),就是需要處理大量的業務。為了滿足中斷處理時間儘量短的原則

Shell 腳本學習筆記:Shell輸入輸出重定向

描述符 獨立 文件重定向 eof 輸出 合並 包含 span 輸出重定向 command > file 將輸出重定向到 file。 command < file 將輸入重定向到 file。 command >> file

Tomcat學習筆記()

manager 就會 over 程序 getname 2個 del initial throwable      StandardWrapper容器   Context容器包含一個或者多個Wrapper實例,每個Wrapper實例表示一個具體的servlet定義。

Java基礎學習筆記六 集合框架(二)

first 哈希 cat etag 基於 col 容器 處的 新元素 List List接口的特點: 它是一個元素存取有序的集合。例如,存元素的順序是11、22、33。那麽集合中,元素的存儲就是按照11、22、33的順序完成的。 它是一個帶有索引的集合,通過索引就