色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > linux移植方法步驟?大牛區(qū)區(qū)幾步教會(huì)你

linux移植方法步驟?大牛區(qū)區(qū)幾步教會(huì)你 時(shí)間:2018-07-17      來源:未知

一、 移植環(huán)境:

【移植環(huán)境】

1、 主機(jī):Ubuntu 12.04版本

2、 目標(biāo)平臺(tái):FS_S5PC100平臺(tái)

3、 交叉編譯工具:arm-none-linux-gnueabi-4.5.1

4、 攝像頭模塊:OV9650

5、Linux文件系統(tǒng):rootfs. cramfs.

6、內(nèi)核:linux-3.0.8

二、 內(nèi)核配置

1.修改vi drivers/i2c/busses/Kconfig

(參考實(shí)驗(yàn)二十六 I2C驅(qū)動(dòng)編寫及測試)

修改

config I2C_S3C2410

tristate "S3C2410 I2C Driver"

depends on ARCH_S3C2410 || ARCH_S3C64XX

help

Say Y here to include support for I2C controller in the

Samsung S3C2410 based System-on-Chip devices.

為:

config I2C_S3C2410

tristate "S3C2410 I2C Driver"

depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100

help

Say Y here to include support for I2C controller in the

Samsung S3C2410 based System-on-Chip devices.

2.內(nèi)核配置并重新編譯內(nèi)核

$ make menuconfig

Device Drivers --->

<*> I2C support --->

<*> I2C device interface

I2C Hardware Bus support --->

<*> S3C2410 I2C Driver

3.修改vi arch/arm/mach-s5pc100/mach-smdkc100.c

查看原理圖可以知道我們的攝像頭是接在I2C-1上所以修改i2c_devs1添加ov9650的內(nèi)容,主要是ov9650的地址,這個(gè)在芯片手冊上可以查到是0x30

修改:

static struct i2c_board_info i2c_devs1[] __initdata = {

};

為:

static struct i2c_board_info i2c_devs1[] __initdata = {

{

I2C_BOARD_INFO("ov9650", 0x30),

},

};

添加s5pc100 攝像頭控制器平臺(tái)設(shè)備相關(guān)內(nèi)容,這些內(nèi)容我們可以通過查看S5PC100的芯片手冊查到

static struct resource s3c_camif_resource[] = {

[0] = {

.start = 0xEE200000,

.end = 0xEE200000 + SZ_1M - 1,

.flags = IORESOURCE_MEM,

},

[1] = {

.start = IRQ_FIMC0,

.end = IRQ_FIMC0,

.flags = IORESOURCE_IRQ,

}

};

static u64 s3c_device_camif_dmamask = 0xffffffffUL;

struct platform_device s3c_device_camif = {

.name = "s5pc100-camif",

.id = 0,

.num_resources = ARRAY_SIZE(s3c_camif_resource),

.resource = s3c_camif_resource,

.dev = {

.dma_mask = &s3c_device_camif_dmamask,

.coherent_dma_mask = 0xffffffffUL

}

};

EXPORT_SYMBOL(s3c_device_camif);

注冊攝像頭控制平臺(tái)設(shè)備:

在smdkc100_devices中添加s3c_device_camif

static struct platform_device *smdkc100_devices[] __initdata = {

&s3c_device_camif, //添加內(nèi)容

};

4. 添加驅(qū)動(dòng)(video)

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)

三、 驅(qū)動(dòng)編寫

四、 網(wǎng)絡(luò)視頻服務(wù)器移植

對(duì)于內(nèi)核linux-3.0.8,不能再使用servfox,如果要使用的需要修改大量的代碼,在此選用新的方法來移植。需要兩個(gè)文件jpeg,mjpg-stream.移植如下:

mkdir /source/rootfs/mjpg

1. jpeg庫的移植

mkdir /home/linux/jpeg

jpeg源碼包通過下面這個(gè)網(wǎng)址下載

//www.ijg.org/files/jpegsrc.v8b.tar.gz

解壓源碼包

tar xvf jpegsrc.v8b.tar.gz

配置源碼

cd jpeg-8b

./configure --prefix=/home/linux/jpeg --host=arm-none-linux-gnueabi

(./configure 配置源代碼樹

安裝目錄:

--prefix=PREFIX

體系無關(guān)文件的頂級(jí)安裝目錄PREFIX ,也就Apache的安裝目錄。[/usr/local/apache2]

系統(tǒng)類型:

--host=HOST

指定Apache HTTP服務(wù)器將要運(yùn)行的目標(biāo)系統(tǒng)類型HOST 。

[BUILD]

)

編譯

make

安裝

make install

拷貝庫到文件系統(tǒng)中

cp /home/linux/jpeg/lib/libjpeg.so.8 /source/rootfs/lib

2. mjpg-stream的移植

mjpg-stream源碼包通過下面這個(gè)網(wǎng)址下載

//sourceforge.net/projects/mjpg-streamer/

解壓源碼

tar xvf mjpg-streamer-r63.tar.gz

修改源碼

cd mjpg-streamer-r63

修改頂層makefile及plugins目錄中的各級(jí)makefile將所有 (注意這里需要修改的內(nèi)容)

CC=gcc

修改為

修改plugins/input_uvc/Makfile

修改

CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC

CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared –fPIC –I/homw/linux/jpeg/include

修改

$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

$(CC) $(CFLAGS) -ljpeg -L/home/linux/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

3. 拍照功能的實(shí)現(xiàn)

由于mjpg_stream中output-file.so能實(shí)現(xiàn)連續(xù)拍照的功能,不能實(shí)現(xiàn)單拍或連拍幾張的功能所以需要對(duì)output_file原碼進(jìn)行修改。

# cd mjpg-streamer-rc63/plugins/output_file

# vim output_file.c

在96行 函數(shù) void *worker_thread(void *arg) 體中加入以下代碼:

char buf[10]; //用于存放從管道讀取的命令

int flags = 0; //拍照標(biāo)志,1:表示11張照片,2:表示1張照片

int fd_com = 0; //打開管道的文件描述符

stop_num = 0; //拍照計(jì)數(shù)

if ( access(“/tmp/webcom”,F_OK) < 0 ) //創(chuàng)建有名管道用于接收拍照命令

{

if ( mkfifo(“/tmp/webcom”,0666 ) < 0)

{

Printf(“ photo fifo create failed\n”);

}

}

fd_com = open (“/tmp/webcom”,O_RDONLY,0666);

if (fd < 0)

{

perror (“open the file webcom error”);

}

在while( ok >= 0 && !pglobal->stop){ 后加入

if (flags == 0)

{

while(1)

{

reade(fd_com,buf,sizeof(buf));

if (strncmp(buf,”danger”,6) == 0) //拍11張照片

{

flags = 1;

bzero(buf,sizeof(buf));

break;

}

if (strncmp(buf,”one”,3) == 0) //拍1張照片

{

flags = 2;

bzero(buf,sizeof(buf));

break;

}

}

}

在if (delay > 0){

usleep(1000*delay);

}后加入

stop_num++

if (flags == 1) //判斷拍照的數(shù)量

{

if ( stop_num > 9)

{

stop_num = 0;

flsgs = 0;

}

}

else if (flags == 2)

{

stop_num = 0;

flags = 0;

}

編譯

(make clean)

Make

mkdir /source/rootfs/pice

mkdir /source/rootfs/mjpg

cp *.so /source/rootfs/mjpg

cp mjpg_streamer /source/rootfs/bin

cp /home/linux/newyizhi_first/toolchain/arm-2010.09/arm-none-linux-gnueabi/libc/lib/* /source/rootfs/lib/

4. 將攝像頭驅(qū)動(dòng)s5pc100_cam.ko拷貝到 /source/rootfs目錄下

所以只要向有名管道/tmp/webcom寫入danger就能連拍11張照片,寫入one就拍一張照片。

執(zhí)行命令:

mjpg_streamer -i "/mjpg/input_uvc.so -y" -o "/mjpg/output_file.so -f /pice -d 1000 " &

拍照一張:

echo one > /tmp/webcom

五、 文件系統(tǒng)的制作

支持U盤自動(dòng)掛載,需做以下步驟:

1、下載UDEV源碼udev-080.tar.bz2,網(wǎng)址:

//www.us.kernel.org/pub/linux/utils/kernel/hotplug/,并解壓。

2、交叉編譯。

修改Makefile,具體修改如下:

CROSS = arm-none-linux-gnueabi-

保存退出。

修改udevmointer.c,添加

#include

執(zhí)行命令:make 進(jìn)行編譯,然后執(zhí)行arm-none-linux-gnueabi-strip udev udevd udevstart udevinfo udevtest。并拷貝這些文件到rootfs/bin目錄下面。

3、修改/source/rootfs/etc/fstab為

#device mount-point type options dump fsck order

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

sysfs /sys sysfs defaults 0 0

tmpfs /dev tmpfs defaults 0 0

4、修改/source/rootfs/etc/init.d/rcS,添加如下內(nèi)容

/bin/udevd --daemon

/bin/udevstart

這樣當(dāng)我們插上U盤和SD卡的時(shí)候,就可以看到我們的設(shè)備節(jié)點(diǎn)而不需要手動(dòng)創(chuàng)建設(shè)備節(jié)點(diǎn)。

5、SD卡或U盤自動(dòng)掛載的實(shí)現(xiàn)

拷貝實(shí)驗(yàn)代碼中udev目錄到 /source/rootfs/etc

拷貝mount-sd.sh、 umount-sd.sh 、mount-usb.sh、lh到rootfs/sbin下

這個(gè)時(shí)候當(dāng)插入U(xiǎn)盤或SD卡時(shí)就會(huì)自動(dòng)掛載在tmp下。可以通過修改mount-sd.sh和mount-usb.sh添加其他功能和修改掛載點(diǎn)。

六、 移植過程中出現(xiàn)的相關(guān)問題及解決:

1、 移植streamer的過程中 make出現(xiàn) 無法找到ljpeg庫的問題

解決:查看 jpeg—lib 目錄下 file libjpeg.so.8.0.2 是否是ARM體系

如果是386的,可能交叉編譯工具鏈的問題,建議拷貝其他可用的jpeg庫。

2、出現(xiàn)Init V4L2 failed opening V4L interface:NO such file

如果內(nèi)核配置正確,一般都會(huì)支持V4L2, 我重啟之后就再也沒有出現(xiàn)這個(gè)問題

3.、streamer snapshot 未能正常顯示

請(qǐng)確定加 –y 指令

如果在Window下正在使用viewer.exe 軟件測試streamer,先關(guān)閉或者暫停該軟件,然后再在瀏覽器中輸入。。。。。測試

4、攝像頭顯示的內(nèi)容是紅色

因?yàn)閮?nèi)核里,沒有配置I2C的驅(qū)動(dòng)

5、拍照測試程序,拍攝前7張時(shí)不能正常顯示

尚待解決

V4L2的使用說明

請(qǐng)參看 “相關(guān)資料”——“攝像頭相關(guān)資料(v4l2)”

上一篇:管道通信: 有名管道 無名管道,行業(yè)大牛通通教會(huì)你

下一篇:linux線程庫詳解,還附帶典型實(shí)例哦

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 日本高清免费在线视频 | 国产精品免费看久久久8精臀av | 亚洲AV无码一区二区三区系列 | 国产成人高清精品免费软件 | japanese55丰满熟妇 | 真实人与人性恔配视频 | 国产精品欧美亚洲777777 | 国产福利片无码区在线观看 | 激情内射亚洲一区二区三区爱妻 | 国产在线精品国自产拍影院同性 | 日本无翼乌邪恶大全彩动图手鞠 | 少女哔哩哔哩视频在线看 | 天天干天天射天天操 | 久久av无码精品人妻系列果冻传媒 | 国产V亚洲V欧美V专区 | 爆乳熟女高潮大叫 | 国内免费无码自拍视频网 | 十六以下岁女子毛片免费 | 333kkkk·com99久久| 日韩精人妻无码一区二区三区 | 亚洲日韩欧洲无码AV夜夜摸 | 欧美阿v高清资源不卡在线播放 | 强奷漂亮少妇高潮在线观看 | 国产CHINESE男男GAYGAY免费网站 | 成熟少妇大片免费看 | 久久国产成人免费网站777 | 国产极品一区二区 | 黄www在线观看 | gogogo高清在线观看视频中文 | 免费A级毛片18禁网站免费 | 波多野结衣与黑人AV | 国产成人a在线观看视频 | 粗大的内捧猛烈进出少妇视频 | 久久综合精品国产一区二区三区无码 | 中国少妇饥渴XXXXX | 无码韩国三级理论在线观看 | 少妇又爽又刺激视频 | 婷婷丁香狼人久久大香线蕉 | 一本色道婷婷久久欧美 | 亚洲欧洲AV综合一区二区三区 | 色综合中文综合网 |