項(xiàng)目場(chǎng)景:
這里簡(jiǎn)述項(xiàng)目相關(guān)背景:
最近在準(zhǔn)備暑期實(shí)習(xí)和秋招,準(zhǔn)備一個(gè)Camera項(xiàng)目,涉及調(diào)試內(nèi)核、優(yōu)化開機(jī)——從啟動(dòng)到獲取第一幀圖像的時(shí)間,硬件平臺(tái)為正點(diǎn)原子IMX6ULL開發(fā)板,攝像頭為OV5640,內(nèi)核基于正點(diǎn)原子出廠linux源碼,根文件系統(tǒng)暫時(shí)選擇正點(diǎn)原子出廠文件系統(tǒng)
項(xiàng)目小目標(biāo)
首先實(shí)現(xiàn)開發(fā)板開機(jī)攝像頭的自啟動(dòng),后續(xù)再進(jìn)行內(nèi)核調(diào)試,優(yōu)化開機(jī)
實(shí)現(xiàn)步驟如下:
一、驅(qū)動(dòng)模塊
1、準(zhǔn)備工具
2、設(shè)備樹配置
3、源碼拷貝
4、配置文件
5、編譯生成驅(qū)動(dòng)模塊
二、板子應(yīng)用程序
三、上機(jī)實(shí)驗(yàn)
以上具體移植模塊步驟參考大佬博客:LittleBear-原子源碼驅(qū)動(dòng)ov5640
項(xiàng)目Bug
起初根據(jù)博客指引移植OV5640模塊,在開發(fā)板上加載模塊成功,但是使用正點(diǎn)原子攝像頭應(yīng)用編程項(xiàng)目代碼生成的v4l2_camera可執(zhí)行文件,執(zhí)行./v4l2_camera /dev/video1后,程序異常返回:
ioctl error: VIDIOV_S_FMT: invalid argument
原因分析
查資料后得知這個(gè)問(wèn)題很多人遇到過(guò),原因是采取的編碼與設(shè)備的支持的編碼不兼容,又從正點(diǎn)原子的用戶快速體驗(yàn)文檔中得知:在正點(diǎn)原子出廠內(nèi)核 v1.6 版本之前(請(qǐng)?jiān)?1.2.2 小節(jié)查看出廠內(nèi)核歷
史版本,檢查用戶所處的固件版本)是不支持 RGB565 和 JPEG 采集的,可在開發(fā)板文件系統(tǒng)中執(zhí)行如下命令查看攝像頭支持格式、分辨率及幀率
v4l2-ctl --device=/dev/video1 --list-formats-ext
筆者使用的是正點(diǎn)原子驅(qū)動(dòng)教程使用的Linux源碼,有沒有可能這份內(nèi)核并不支持RGB565格式呢,試試就逝世:果不其然,筆者敲下這行命令后,顯示僅支持YUYV格式,而LCD顯示好像是需要RGB格式的數(shù)據(jù),這就涉及到Y(jié)UYV格式和RGB格式的轉(zhuǎn)換,在博客上找到了相關(guān)代碼,對(duì)攝像頭應(yīng)用編程代碼進(jìn)行修改,但遺憾未成功,畢竟攝像頭V4L2編程這塊的知識(shí)還沒去系統(tǒng)學(xué)習(xí)過(guò),這個(gè)轉(zhuǎn)換暫時(shí)擱置,后面再來(lái)解決,害
解決方案:
此路不通,換條路唄
換用正點(diǎn)原子資料包中的出廠源碼,經(jīng)查是V1.6版本之后的
重復(fù)上述移植模塊步驟,編譯出mx6s_capture和ov5640_camera兩個(gè)驅(qū)動(dòng)模塊,并將出廠源碼編譯后的鏡像和設(shè)備樹通過(guò)tftp掛載,經(jīng)測(cè)試成功顯示出攝像頭畫面!
開機(jī)自動(dòng)加載模塊
攝像頭驅(qū)動(dòng)需要的兩個(gè)模塊mx6s_capture和ov5640_camera是以模塊的形式存在,我們還需要配置啟動(dòng)文件來(lái)加載內(nèi)核模塊:?jiǎn)?dòng)文件一般位于/etc目錄下,我的文件系統(tǒng)中內(nèi)核模塊配置文件存放在/etc/modprobe.d/中,進(jìn)入文件夾,vi打開文件,添加mx6s_capture和ov5640_camera,保存退出即可,重啟系統(tǒng)執(zhí)行l(wèi)smod發(fā)現(xiàn),攝像頭模塊已加載
開機(jī)啟動(dòng)攝像頭畫面獲取
成功加載攝像頭模塊后還需要執(zhí)行攝像頭應(yīng)用軟件來(lái)調(diào)用攝像頭提供的設(shè)備文件/dev/video1:同樣是在/etc目錄下,在/etc/rc.local文件中,添加可執(zhí)行文件調(diào)用命令:添加后保存退出文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-719800.html
cd xxx(攝像頭程序所在目錄)
./v4l2_camera /dev/video1
配置文件修改完后,執(zhí)reboot命令重啟系統(tǒng),攝像頭開機(jī)自啟動(dòng)成功!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-719800.html
到了這里,關(guān)于【基于IMX6ULL開發(fā)板開機(jī)攝像頭的自啟動(dòng)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!