NanoPi A64內核添加UVC驅動的方法

爲了便於交流共同學習,博主QQ羣242629020stm32-MCU認認真真交流羣) 歡迎批評指正!!!電梯:https://jq.qq.com/?_wv=1027&k=5n1AfYq 

先嘮嗑一會兒。因爲我要做一個網絡攝像頭項目,所以開始涉足嵌入式Linux,樹莓派本來是很好的選擇,但是因爲樹莓派的芯片無法單獨購買,SOC資料又不開放,所以沒有選擇用樹莓派來做這個項目,價格性能和資料完善程度綜合考慮後選購了友善之臂的NanoPi A64(以下簡稱爲pi)這款卡片電腦。

網絡這項頭項目我使用的方案是mjpg-streamer,選用的攝像頭是USB免驅攝像頭,這個方案我在樹莓派上已經部署過了,可行。

但是當我拿到pi的時候卻發現在運行的系統當中並沒有預裝UVC驅動,但是我又沒有太多的內核編譯經驗,且友善之臂在NanoPi A64 wiki中提供的只有內核編譯方法,並沒有內核配置方法!

Wiki截圖

 期間我自己多次嘗試過編譯,都無疾而終。對於友善之臂團隊的技術支持,我只有差評差評再差評!!!!!發郵件不回,打電話不接,QQ羣裏@當作沒有看到! 我也沒有地方能投訴他們,他們自己也不開淘寶店,全部都是銷售代理!像這種情況一般來說都是要團隊中有個嵌入式Linux老鳥來帶一帶解決一下,我也上淘寶找過有沒有人能接這活兒,有一家啥也沒看就開價200,這價錢我都能再買一塊板子了,其他就沒有商家接我這個活兒了。最後我只能問問之前在項目中接觸過的那些朋友,所幸有一位和我年齡相仿的哥們兒,我很感謝他!在某個深夜給我提供了很多思路和線索。感謝隋神!

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------

開始正經編譯。

需要準備的材料:

友善之臂nanopi a64材料

下載地址的sources目錄,下載源碼nanopi-a64-bsp

Uboot和內核的編譯工具鏈

編譯全志A64的BSP源碼包必須使用64bit的Linux PC系統,並安裝下列軟件包,下列操作均基於Ubuntu-14.04 LTS-64bit(博主使用的是Ubuntu16.04):

mingw32 在我的系統中無法安裝,我就沒有安裝,一樣可以編譯成功!
sudo apt-get install gawk git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386

然後按照wiki該解壓解壓,該拷貝拷貝 

1.先把Uboot編譯一遍

2.然後再按照wiki把內核編譯一遍,等待編譯成功。

3.編譯成功後我建議按照Wiki的教程先把Uboot和內核刷到SD卡上運行看能否成功啓動。

這裏有一點要注意的是下面這個語句要加sudo

更新TF卡

下列命令可用於更新TF卡上的U-boot:

cd fa_tools
sudo ./fuse_uboot.sh /dev/sdx

運行成功後可以開始下面的步驟

//++++++++++++++++++++++++++++++++++++++++++++++++++++

show time 開始我們的修改!

host$ cd nanopi-a64-bsp/lichee/linux-3.10/
host$ make menuconfig

這一步非常重要,新解壓的源碼文件是沒有這個.config文件的,這個.config文件是官方給的編譯腳本生成的.config,所以我們要基於官方生成的.config文件去修改,在裏面裁剪linux 內核。裁剪完之後再按照wiki上的命令用編譯腳本編譯一遍就OK了。這就是nanopi a64內核配置的方法了!

 

 然後需要去配置這個.config

 

 

 

 選擇爲*號可以解決加載.ko文件的時候格式內核版本不匹配報錯。因爲不用手動加載了,所以就不存在報錯了!

 最後選擇<Save>保存配置!

 然後選擇退出就好了,一直選擇<Exit>到命令界面。

 接下來開始編譯再編譯一次內核,這次編譯的目的是要把UVC驅動編譯到內核裏面,作爲內核的靜態模塊編譯到內核中。

nanopi-a64-bsp/lichee/linux-3.10$ cd ..
nanopi-a64-bsp/lichee$ echo -e "0\n2\n0\n1\n" | ./build.sh config && ./build.sh

編譯……

我們可以看到uvc文件夾下的源碼正在被編譯,說明我們的設置生效了。

 

這次編譯時間應該比較短的,很多源碼在上一次編譯的時候已經編譯好了,等待編譯完成。

路徑:nanopi-a64-bsp/lichee/linux-3.10/output/ 下已經有boot.img的內核鏡像在了,我們就按照wiki的方法在PC機的Ubuntu中將編譯出來的內核鏡像拷貝到我們的SD卡的boot分區根目錄下覆蓋SD卡中的boot.img。這樣就更新了系統的內核。 

當然我建議按照wiki編譯內核後的步驟一步步做下去,把Uboot也更新一下。

然後把系統啓動,插上USB攝像頭,就可以在/dev/下看到video0的設備文件了!

當我看到這個設備文件出現時,我太高興了,程序員的樂趣莫過於此!那麼兩三分鐘裏,笑容極其自信,走路帶風,尿個尿都有武士收刀時的儀式感!

爲了方便大夥兒,我就把我編譯好的整個文件夾打包、上傳,供大夥兒下載。

下載地址

若你每天心心念念一件事,它終會如你所願!真好~

 爲了便於交流共同學習,博主QQ羣242629020stm32-MCU認認真真交流羣) 歡迎批評指正!!!電梯:https://jq.qq.com/?_wv=1027&k=5n1AfYq 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章