久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > linux移植方法步驟?大牛區(qu)區(qu)幾(ji)步教會你

linux移植(zhi)方法步驟?大(da)牛區區幾步教(jiao)會你(ni) 時間:2018-07-17      來源:未知

一、 移植環境:

【移植環境】

1、 主機:Ubuntu 12.04版(ban)本

2、 目標平臺(tai):FS_S5PC100平臺(tai)

3、 交(jiao)叉編(bian)譯工具:arm-none-linux-gnueabi-4.5.1

4、 攝(she)像頭模塊(kuai):OV9650

5、Linux文件系統:rootfs. cramfs.

6、內核:linux-3.0.8

二、 內核配置

1.修(xiu)改vi drivers/i2c/busses/Kconfig

(參(can)考實(shi)驗(yan)二十六 I2C驅動編寫及測試(shi))

修改

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.內核(he)配置(zhi)并(bing)重新編(bian)譯(yi)內核(he)

$ make menuconfig

Device Drivers --->

<*> I2C support --->

<*> I2C device interface

I2C Hardware Bus support --->

<*> S3C2410 I2C Driver

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

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

修改:

static struct i2c_board_info i2c_devs1[] __initdata = {

};

為:

static struct i2c_board_info i2c_devs1[] __initdata = {

{

I2C_BOARD_INFO("ov9650", 0x30),

},

};

添加s5pc100 攝像頭控制(zhi)器平臺設備相關內容,這些內容我們可以通過查(cha)看S5PC100的芯片手冊查(cha)到(dao)

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);

注冊(ce)攝像頭控制平(ping)臺設備:

 在smdkc100_devices中(zhong)添加(jia)s3c_device_camif

static struct platform_device *smdkc100_devices[] __initdata = {

&s3c_device_camif, //添(tian)加內容

};

4. 添(tian)加驅動(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)

三、 驅動編寫

四、 網絡視頻服務(wu)器(qi)移植

對于內核linux-3.0.8,不能再使用servfox,如果要使用的(de)需要修改大量的(de)代(dai)碼(ma),在(zai)此選用新的(de)方法來移(yi)植(zhi)。需要兩個文件jpeg,mjpg-stream.移(yi)植(zhi)如下(xia):

mkdir /source/rootfs/mjpg

1. jpeg庫的移(yi)植

mkdir /home/linux/jpeg

jpeg源碼(ma)包通過下(xia)面這個網址下(xia)載

//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 配(pei)置源代碼樹

安裝目錄:

--prefix=PREFIX

體系無關(guan)文(wen)件(jian)的頂級安裝目(mu)錄PREFIX ,也就Apache的安裝目(mu)錄。[/usr/local/apache2]

系統類型:

--host=HOST

指定Apache HTTP服務(wu)器將要運行的目標系統類(lei)型HOST 。

[BUILD]

)

編譯

make

安裝

make install

拷貝庫到(dao)文件(jian)系統中

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

2. mjpg-stream的移植

mjpg-stream源碼包通過下面這個網址下載(zai)

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

解壓源碼

tar xvf mjpg-streamer-r63.tar.gz

修改源碼

cd mjpg-streamer-r63

修改頂(ding)層makefile及(ji)plugins目(mu)錄中的各級makefile將(jiang)所有 (注(zhu)意(yi)這(zhe)里需(xu)要修改的內容(rong))

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. 拍照功能(neng)的實現

由于mjpg_stream中output-file.so能實(shi)現連續拍(pai)(pai)照(zhao)的功能,不能實(shi)現單(dan)拍(pai)(pai)或連拍(pai)(pai)幾張(zhang)的功能所(suo)以需(xu)要對output_file原碼(ma)進(jin)行修(xiu)改。

# cd mjpg-streamer-rc63/plugins/output_file

# vim output_file.c

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

char buf[10]; //用(yong)于存放(fang)從管道讀取的(de)命(ming)令

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

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

stop_num = 0; //拍照(zhao)計數

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

{

if ( mkfifo(&ldquo;/tmp/webcom”,0666 ) < 0)

{

Printf(“ photo fifo create failed\n&rdquo;);

}

}

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

if (fd < 0)

{

perror (“open the file webcom error&rdquo;);

}

在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張照(zhao)片

{

flags = 2;

bzero(buf,sizeof(buf));

break;

}

}

}

在if (delay > 0){

usleep(1000*delay);

}后加入

stop_num++

if (flags == 1) //判斷(duan)拍照的數(shu)量

{

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. 將攝像頭驅(qu)動s5pc100_cam.ko拷貝(bei)到 /source/rootfs目錄下

所以只要向有名管道(dao)/tmp/webcom寫入(ru)danger就(jiu)能連拍(pai)11張(zhang)照片,寫入(ru)one就(jiu)拍(pai)一張(zhang)照片。

執行命令:

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

拍照一張:

echo one > /tmp/webcom

五、 文件(jian)系統的制(zhi)作

支持U盤自動(dong)掛(gua)載(zai),需(xu)做以下步驟:

1、下(xia)載UDEV源碼udev-080.tar.bz2,網址(zhi):

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

2、交叉(cha)編譯。

修改Makefile,具體修改如下:

CROSS = arm-none-linux-gnueabi-

保存退出。

修改udevmointer.c,添(tian)加

#include

執行(xing)(xing)命令:make 進(jin)行(xing)(xing)編譯(yi),然后執行(xing)(xing)arm-none-linux-gnueabi-strip udev udevd udevstart udevinfo udevtest。并(bing)拷貝這些文件(jian)到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,添加如下內容(rong)

/bin/udevd --daemon

/bin/udevstart

這樣當我們(men)插上U盤和SD卡(ka)的時候,就(jiu)可以看到(dao)我們(men)的設備節(jie)點(dian)而不需(xu)要手動創建設備節(jie)點(dian)。

5、SD卡或(huo)U盤自動掛載的實現

拷貝實驗代碼中udev目(mu)錄到 /source/rootfs/etc

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

這個(ge)時候當插(cha)入U盤或SD卡時就會自動掛載在tmp下。可以通過修(xiu)改mount-sd.sh和mount-usb.sh添加其(qi)他功(gong)能和修(xiu)改掛載點。

六(liu)、 移植過程中(zhong)出現的相(xiang)關問題及解決:

1、 移(yi)植(zhi)streamer的(de)過(guo)程中 make出現(xian) 無法找到ljpeg庫的(de)問題(ti)

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

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

 2、出現Init V4L2 failed opening V4L interface:NO such file

如果內核配置(zhi)正(zheng)確,一般都會支持(chi)V4L2, 我重啟之(zhi)后就(jiu)再也沒有出現(xian)這個問(wen)題(ti)

3.、streamer snapshot 未能正(zheng)常(chang)顯(xian)示

請(qing)確定加(jia) –y 指令

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

4、攝像頭顯示的內容是(shi)紅色

因為內核里,沒有配置I2C的驅(qu)動

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

尚待解決

V4L2的使(shi)用說(shuo)明

請參看(kan) “相關資(zi)料”—&mdash;“攝像頭相關資(zi)料(v4l2)&rdquo;

上一篇:管道通信: 有名管道 無名管道,行業大牛通通教會你

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

熱點文章推(tui)薦
華清學員就業榜單
高薪學員經驗分享(xiang)
熱點新聞推(tui)薦
前臺專(zhuan)線:010-82525158 企業培訓洽(qia)談專線:010-82525379 院(yuan)校(xiao)合作洽談(tan)專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部