移植Linux-2.6.33内核到TE2440DEV-I

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/niuniumenghua/article/details/6496278

移植Linux-2.6.33内核到TE2440DEV-I

华清远见-嵌入式领域著名讲师  O(_)O  牛牛猛

点击链接加我好友!

http://student.csdn.net/invite.php?u=111047&c=758a60d66d3a92d1

欢迎大家去我CSDN博客上踩踩

我的个人主页

 

写在前面:

这篇文章是我的工作笔记整理出来的,里面也参考了很多网络大侠的写的内容,这里我把我的感受记录下来,和更多的嵌入式爱好者分享技。体验嵌入式开发的快乐,快乐中寻找技术的真谛。

同时,下周我就要在csdn学生大本营,开设自己的讲堂了,里面的很多内容是取自这篇文章,我会把他们应用到我们实际的项目中,和大家一起分享工程实践中的点点滴滴。这些文字也能留下来供后来人参考。

 

宿主机:ubuntu9.04

目标机:中芯优电TE2440DEV-I开发板

交叉编译器:arm-linux-gcc-4.4.2

移植的内核版本:linux-2.6.33.2

文件系统类型: cramfs+yaffs2 (实际项目中最合理的组合方式)

 

1、准备交叉工具链

通产交叉工具链有三种方式:

(1)       自己通过下载源码,逐个编译,分别制作。

优点:可以根据自己的需求,制作自己的交叉工具链。可以满足自己的求知欲。

缺点:费时、费力、还费电。适合发烧的人,呵呵。

(2)       借助第三方的工具软件,这些工具通常都是网上的大侠们为了,方便人民群众而编写的,通的功能其实就是上面的提及的方法的批处理的脚本文件,而且一旦发现您的linux环境下是否缺少某些软件包,会自动去网络上下载。当然,需要你已经指定了正确的源文件。我们使用最多的是crosstools工具。

优点:很容易制作自己的交叉工具链,省力,简单

缺点:对于的知识理解不会深深刻,由于还是很长时间的编译过程,所以,还是费时、费电。不是党号召的低碳生活。

(3)       Easy的方法,直接用别人做好的,通常我们的做法都是这样,利用别人做好的做适当的修改就好啦。

优点:省时、省力、省力、还低碳

缺点:对于初学者可能搞不清楚概念。

这里,我们采用上面提到的第三种方法,实际的工程实践中也是采用第三种方法的居多,最多是在上面的基础做些修改。

可以登录http://www.codesourcery.com/sgpp/lite/arm/portal/release1293下载最新的交叉编译器。

也可以在中芯优电的官网上下载和我一样的交叉编译器,与我一起走进嵌入式开发

下载符合EABI标准交叉编译器: arm-linux-gcc-4.3.2 with EABI

下载地址:

注明:

交叉编译器在编译的时候,对于浮点运行会预设硬浮点运算FPA(Float Point Architecture),而没有FPACPU,比如SAMSUNG S3C2410/S3C2440,会使用FPE(Float Point Emulation 即软浮点),这样在速度上就会遇到极大的限制,使用EABI(Embedded Application Binary Interface)则可以对此改善处理,ARM EABI有许多革新之处,其中最突出的改进就是Float Point Performance,它使用Vector Float Point(矢量浮点),因此可以极大提高涉及到浮点运算的程序。但是编译内核时,也要开启EABI功能,并且应用程序也要用这个with EABI的编译器重新编译。后面会解释如何在内核中添加EABI功能。

2、下载快速编译内核

                    首先,从官网上下载linux-2.6.33的内核。ftp://ftp.kernel.org/pub/linux/kernel/v2.6/可以找到。

新建目录/home/topelec/te2440/kernel/Kernel-2.6.33.2-TE2440。将内核源码包拷贝到Kernel-2.6.33.2-TE2440目录下。

解压源码包

tar  zxvf  linux-2.6.33.tar.gz

得到目录结构和我的一样吗?

topelec@allen-vmdesktop:~/te2440/kernel/Kernel-2.6.33.2-TE2440$ ls

arch           fs           Makefile         samples                  usr

block          include      mm               scripts                  virt

COPYING        init         modules.builtin  security                 vmlinux

CREDITS        ipc          modules.order    sound                    vmlinux.o

crypto         Kbuild       Module.symvers   System.map

Documentation  kernel       net              te2440_2010-4-17.config

drivers        lib          README           te2440_2010-4-19.config

firmware       MAINTAINERS  REPORTING-BUGS   tools

 

1)  修改Makefile文件,对于搞过Linux开发的人来说,这并不难,

修改成:

ARCH            ?= arm

CROSS_COMPILE  ?= arm- linux-  

具体的arm-linux-应该是什么,关键要实际的交叉编译器的名字啦。

我的实际的编译器是用带有EABI的交叉编译器,所以我的Makefile是:

ARCH            ?= arm

#CROSS_COMPILE  ?= arm-linux-

CROSS_COMPILE  ?= /home/topelec/env/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-

 

2

 

 

修改机器码

由于U-boot中已经指定了机器码,是193.

机器码假如不一致,会直接导致系统不能启动。

 

3)  快速编译一把

 

这一步我们简单配置一下内核,先编译一把爽一下,直接采用我们提供的配置文件,或是采用内核自带的配置文件也可以, Load an Alternate Configuration File

 

 

 

键入配置文件的名字,te2440_2010-4-19.config,这个文件名字根据实际情况修改。就是加载一个配置文件,对于初次接触Linux内核编译的用户来说,这是很好的体验方式,不然,如果自己去配置内核,会直接打击用户的信心,太过的内容要选择了,而且还有很多选项是有依赖关系的。

实际的项目开发中我们也是采用,在原有配置文件上修改的方法来配置内核的。

保存退出后

键入make命令开始编译过程,一般如果你的计算机第一次编译这个版本的内核可能需要10分钟左右,编译过一次后,下次对内核修改后,编译器之编译修改过的内核文件。

在内核源码的arch/arm/boot下会有个zImage文件就是我们要的linux 内核。

这样的内核编译出来几乎是没法用的,最多可以在内存中运行起来,很多问题需要我们去修改,不过不要害怕。Linux2.6.33的内核几乎搞定了我们通常需要的驱动和服务,所以一般只是简单的修改就可以正常工作。

接下来我们就可以一步一步的完善我们小企鹅啦!

 

3、完善内核

(1)  完善nandflash代码

完善Nand Flash的代码,其实在Linux-2.6.33 里面已经做好了 NandFlash 的驱动,只需要进行简单的分区修改就可以直接使用了。

打开 linux/arch/arm/plat-s3c24xx/common-smdk.c 文件

查找这样的结构体数组,smdk_default_nand_part[],将这个结构体数组修改成下面的样子。不过,建议读者不要直接修改原数组,可以考虑将原数组注释掉,自己仿照它写一个这样的数组。对于您养成良好的编程习惯是有好处的,也让你更加职业,呵呵。

/* NAND parititon for TE2440 */

static struct mtd_partition smdk_default_nand_part[] = {

         [0] = {

                   .name       = "UBoot",

                   .size = 0x00030000,                   //U-boot所占用的nandflash空间

                   .offset      = 0,                     //U-bootnandflash中的起始地址

         },

         [1] = {

                   .name       = "Param",

                   .offset = 0x00030000,

                   .size = 0x00010000,

         },

         [2] = {

                   .name       = "Kernel",

                   .offset = 0x00040000,               //内核在nandflash中的起始地址

                   .size = 0x00300000,                            //内核在nandflash中占用的空间大小

         },

         [3] = {

                   .name       = "Root",

                   .offset = 0x00340000,

                   .size = 0x00a00000,

         },

         [4] = {

                   .name       = "Yaffs",

                   .offset = 0x00d40000,

                   .size = 0x032c0000, //

         }

};

 

这个内核的分区是十分重要的,我们用U-boot部署内核和文件系统时,里面的起始地址都是根据这里的分区信息。

当然,这样基本可以满足我们开发板的64MBnandflash的需求,后面我们还可以将nandflash扩大成更大的容量,例如,256MB1G等。同样需要修改这里的代码。

未完待续,尽量每天更新,大家一起来,这周搞定linux内核到电路板上吧!

展开阅读全文

【独家推出】详述linux-2.6.33内核在飞凌2440开发板的移植

03-25

[size=16px]【独家推出】详述linux-2.6.33内核在飞凌2440开发板的移植[/size]rnrn 正如飞凌承诺,我们将为嵌入式开发爱好者提供最新最全的嵌入式操作系统移植及相关的开源代码rnrn本文转引自飞凌BBS:http://bbs.witech.com.cn/thread-468-1-1.htmlrnrn宿主机:ubuntu9.04rn目标机:飞凌OK2440开发板rn交叉编译器:arm-linux-gcc-3.4.1rn交叉编译器路径:/usr/local/arm/3.4.1rn要移植的内核版本:linux-2.6.33rn文件系统类型: yaffs2 (目前使用光盘中linux-2.6.28.7的文件系统)rnrn欢迎大家一起讨论,请各位指正。另外请回帖的各位老师、同学、工程师写清楚移植过程。如果只是通篇的问题,很难判断哪里有问题。rnrn下载解压内核rn 首先,从官网上下载linux-2.6.33的内核。rn ftp://ftp.kernel.org/pub/linux/kernel/v2.6/可以找到。rn 新建目录mkdir /file/fl。将内核源码包拷贝到/file/fl的目录下。rn 解压源码包 rntar zxvf linux-2.6.33.tar.gzrnrn移植yaffs2驱动rn下载最新的驱动http://www.aleph1.co.uk/cgi-bin/ ... fs2.tar.gz?view=tar rn解压在/file/fl下rnrntar zxvf yaffs2.tar.gzrnrn进入yaffs2,rnrncd yaffs2rnrn给内核打补丁rnrn./patch-ker.sh c /file/fl/linux-2.6.33rnrn成功后打印信息rnrnUpdating /file/fl/linux-2.6.33/fs/KconfigrnUpdating /file/fl/linux-2.6.33/fs/Makefilernrn修改机器码rn飞凌开发板的bootloader默认的机器码是193,所以我们在使用smdk2440机器的时候,需要修改机器码。修改arch/arm/tools/mach-types。将rnrns3c2410 ARCH_S3C2410 S3C2410 193rnrns3c2440 ARCH_S3C2440 S3C2440 362rnrns3c2440 ARCH_S3C2440 S3C2440 193rnrn指定目标板machine、编译器和编译器路径rn修改linux-2.6.33/Makefile,将rnrnARCH ?= $(SUBARCH)rnCROSS_COMPILE ?= rnrn修改成rnrn#ARCH ?= $(SUBARCH)rn#CROSS_COMPILE ?=rnARCH ?= armrnCROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux- rnrn增加devfs文件管理器的支持rn我们所用的文件系统使用的是devfs文件管理器。修改fs/Kconfig,rn找到rnrnmenu "Pseudo filesystems"rnrn添加如下语句:rnrnconfig DEVFS_FSrn bool "/dev file system support (OBSOLETE)"rn default y rnconfig DEVFS_MOUNTrnbool "Automatically mount at boot"rndefault yrndepends on DEVFS_FSrnrn修改晶振频率( 可解决打印信息乱码问题 )rn文件:arch/arm/mach-s3c2440/mach-smdk2440.crnrn/*s3c24xx_init_clocks(16934400);*/ s3c24xx_init_clocks(12000000); rnrn修改MTD分区rn文件: arch/arm/plat-s3c24xx/common-smdk.c rn需要和bootloader中的分区信息相同(128M),否则,启动时出错。rnrnstatic struct mtd_partition smdk_default_nand_part[] = rnrn [0] = rn .name = "Boot",rn .size = 0x00100000,rn .offset = 0rn ,rn [1] = rn .name = "MyApp",rn .size = 0x003c0000,rn .offset = 0x00140000,rn ,rn [2] = rn .name = "Kernel",rn .size = 0x00300000,rn .offset = 0x00500000,rn ,rn [3] = rn .name = "fs_yaffs",rn .size = 0x03c00000, //30Mrn .offset = 0x00800000,rn , rn [4] = rn .name = "WINCE",rn .size = 0x03c00000,rn .offset = 0x04400000,rn rn;rnrn关闭ECC校验rn文件:drivers/mtd/nand/s3c2410.crn函数:s3c2410_nand_init_chiprnrn/*chip->ecc.mode = NAND_ECC_SOFT; */ chip->ecc.mode = NAND_ECC_NONE;rnrn修改nandflash驱动,支持K9F1G08的nandflashrn修改drivers/mtd/nand下面的nand_bbt.c文件:rnrnstatic struct nand_bbt_descr largepage_memorybased = rn .options = 0,rn .offs = 0,rn .len = 1, // 原数值为2,支持128M的K9F1G08修改为1rn .pattern = scan_ff_patternrn;rnstatic struct nand_bbt_descr largepage_flashbased = rn .options = NAND_BBT_SCAN2NDPAGE,rn .offs = 0,rn .len = 1, // 原数值为2,支持128M的K9F1G08修改为1rn .pattern = scan_ff_patternrn;rnrn下面,开始配置内核。rn进入linux-2.6.33目录,把s3c2410的默认配置写入config文件。rnrnmake s3c2410_defconfigrnrn配置文件系统选项rn配置yaffs2文件系统 rn修改配置如下:rnrnFile systems ---> rn [*] Miscellaneous filesystems --->rn <*> YAFFS2 file system support rn -*- 512 byte / page devicesrn -*- 2048 byte (or larger) / page devices rn [*] Autoselect yaffs2 format rn [*] Cache short names in RAMrnrn配置cpu相关选项rn修改配置如下:rnrnSystem Type ---> rn S3C2440 Machines ---> rn [*] SMDK2440rn [*] SMDK2440 with S3C2440 CPU modulernrn如果现在编译内核,下载到开发板中,内核就可以正常启动了。呵呵,有了雏形,咱们继续移植设备驱动。 论坛

自己移植内核,无法启动开发板

04-02

Now, Downloading [ADDRESS:30008000h,TOTAL:1981422]rnRECEIVED FILE SIZE: 1981422 (644KB/S, 3S)rnNOW, Booting Linux......rnUncompressing Linux.............................................................rn............................................................. done, booting thernkernel.rnLinux version 2.6.30.4-EmbedSky (root@localhost.localdomain) (gcc version 4.3.3rn(Sourcery G++ Lite 2009q1-203) ) #3 Fri Apr 1 14:09:56 CST 2011rnCPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177rnCPU: VIVT data cache, VIVT instruction cachernMachine: SMDK2440rnATAG_INITRD is deprecated; please update your bootloader.rnMemory policy: ECC disabled, Data cache writebackrnCPU S3C2440A (id 0x32440001)rnS3C24XX Clocks, (c) 2004 Simtec ElectronicsrnS3C244X: core 400.000 MHz, memory 100.000 MHz, peripheral 50.000 MHzrnCLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL onrnBuilt 1 zonelists in Zone order, mobility grouping on. Total pages: 16256rnKernel command line: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0rnNR_IRQS:85rnirq: clearing pending ext status 00080000rnirq: clearing subpending status 00000003rnirq: clearing subpending status 00000002rnPID hash table entries: 256 (order: 8, 1024 bytes)rnConsole: colour dummy device 80x30rnconsole [ttySAC0] enabledrnDentry cache hash table entries: 8192 (order: 3, 32768 bytes)rnInode-cache hash table entries: 4096 (order: 2, 16384 bytes)rnMemory: 64MB = 64MB totalrnMemory: 60864KB available (3456K code, 338K data, 112K init, 0K highmem)rnCalibrating delay loop... 199.47 BogoMIPS (lpj=498688)rnMount-cache hash table entries: 512rnCPU: Testing write buffer coherency: okrnnet_namespace: 936 bytesrnNET: Registered protocol family 16rnS3C Power Management, Copyright 2004 Simtec ElectronicsrnS3C2440: Initialising architecturernS3C2440: IRQ SupportrnS3C24XX DMA Driver, (c) 2003-2004,2006 Simtec ElectronicsrnDMA channel 0 at c4808000, irq 33rnDMA channel 1 at c4808040, irq 34rnDMA channel 2 at c4808080, irq 35rnDMA channel 3 at c48080c0, irq 36rnS3C244X: Clock Support, DVS offrnbio: create slab at 0rnSCSI subsystem initializedrnusbcore: registered new interface driver usbfsrnusbcore: registered new interface driver hubrnusbcore: registered new device driver usbrns3c2440-i2c s3c2440-i2c: slave address 0x10rns3c2440-i2c s3c2440-i2c: bus frequency set to 97 KHzrns3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapterrnNET: Registered protocol family 2rnIP route cache hash table entries: 1024 (order: 0, 4096 bytes)rnTCP established hash table entries: 2048 (order: 2, 16384 bytes)rnTCP bind hash table entries: 2048 (order: 1, 8192 bytes)rnTCP: Hash tables configured (established 2048 bind 2048)rnTCP reno registeredrnNET: Registered protocol family 1rnNetWinder Floating Point Emulator V0.97 (extended precision)rnmsgmni has been set to 118rnio scheduler noop registeredrnio scheduler anticipatory registered (default)rnio scheduler deadline registeredrnio scheduler cfq registeredrnGPIO-Control initializedrnPWM-Test initializedrnadc initializedrnlp: driver loaded but no devices foundrnppdev: user-space parallel port driverrnSerial: 8250/16550 driver, 4 ports, IRQ sharing enabledrns3c2440-uart.0: tq2440_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440rns3c2440-uart.1: tq2440_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440rns3c2440-uart.2: tq2440_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440rnbrd: module loadedrnloop: module loadedrnUniform Multi-Platform E-IDE driverrnide-gd driver 1.18rnide-cd driver 5.00rnDriver 'sd' needs updating - please use bus_type methodsrndm9000 Ethernet Driver, V1.31rnNow use the default MAC address: 10:23:45:67:89:abrneth0 (dm9000): not using net_device_ops yetrneth0: dm9000e at c4814000,c4818004 IRQ 51 MAC: 10:23:45:67:89:ab (EmbedSky)rnS3C24XX NAND Driver, (c) 2004 Simtec Electronicsrns3c2440-nand s3c2440-nand: Tacls=2, 20ns Twrph0=3 30ns, Twrph1=2 20nsrnNAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-birnt)rnScanning device for bad blocksrnusbmon: debugfs is not availablernohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driverrns3c2410-ohci s3c2410-ohci: S3C24XX OHCIrns3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1rns3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000rnusb usb1: configuration #1 chosen from 1 choicernhub 1-0:1.0: USB hub foundrnhub 1-0:1.0: 2 ports detectedrnusbcore: registered new interface driver libusualrnusbcore: registered new interface driver usbserialrnUSB Serial support registered for genericrnusbcore: registered new interface driver usbserial_genericrnusbserial: USB Serial Driver corernUSB Serial support registered for FTDI USB Serial Devicernusbcore: registered new interface driver ftdi_siornftdi_sio: v1.4.3:USB FTDI Serial Converters DriverrnUSB Serial support registered for pl2303rnusbcore: registered new interface driver pl2303rnpl2303: Prolific PL2303 USB to serial adaptor driverrnmice: PS/2 mouse device common for all micernS3C24XX RTC, (c) 2004,2006 Simtec Electronicsrns3c2410-rtc s3c2410-rtc: rtc disabled, re-enablingrns3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0rnS3C2410 Watchdog Timer, (c) 2004 Simtec Electronicsrns3c2410-wdt s3c2410-wdt: starting watchdog timerrns3c2410-wdt s3c2410-wdt: watchdog active, reset abled, irq enabledrnmapped channel 0 to 0rns3c2440-sdi s3c2440-sdi: powered down.rns3c2440-sdi s3c2440-sdi: initialisation done.rnAdvanced Linux Sound Architecture Driver Version 1.0.18a.rnALSA device list:rn No soundcards found.rnTCP cubic registeredrnNET: Registered protocol family 17rnRPC: Registered udp transport module.rnRPC: Registered tcp transport module.rns3c2410-rtc s3c2410-rtc: setting system clock to 2009-03-07 05:35:09 UTC (123640rn4109)rnRoot-NFS: No NFS server available, giving up.rnVFS: Unable to mount root fs via NFS, trying floppy.rnVFS: Cannot open root device "mtdblock2" or unknown-block(2,0)rnPlease append a correct "root=" boot option; here are the available partitions:rn1f00 262144 mtdblock0 (driver?)rnKernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)rn[] (unwind_backtrace+0x0/0xe8) from [] (panic+0x44/0x124)rn[] (panic+0x44/0x124) from [] (mount_block_root+0x16c/0x224)rnrn[] (mount_block_root+0x16c/0x224) from [] (prepare_namespacern+0x100/0x1bc)rn[] (prepare_namespace+0x100/0x1bc) from [] (kernel_init+0xc0rn/0xec)rn[] (kernel_init+0xc0/0xec) from [] (do_exit+0x0/0x5fc)rn[] (do_exit+0x0/0x5fc) from [<00000005>] (0x5)rnrnrn以上是打印信息,到最后一步就重启uboot了,不知道是什么原因,哪位高手帮忙看看啊。。。。谢啦 论坛

linux2.6.35内核视频网络移植

05-26

一、环境rn主机环境 :ubuntu 10.10rn 目标机:FS2410(S3C2410)rn 主机工具链 :gcc-4.4.5rn 交叉工具链:arm-none-linux-gnueabi-gcc-4.3.2rn 摄像头 :ZC301rnrn二、移植过程rn1、配置内核是内核支持芯片为ZC301的摄像头rnrn Make menuconfigrn Device Drivers --->rn <*> Multimedia support --->rn <*> Video For Linuxrn [*] Enable Video For Linux API 1 (DEPRECATED) (NEW)rn [*] Video capture adapters (NEW) --->rn [*] V4L USB devices (NEW) --->rn <*> USB Video Class (UVC)rn [*] UVC input events device support (NEW)rn <*> USB ZC0301[P] webcam support (DEPRECATED)rn2、重新编译内核rnrnmake zImagernrn 通过上面两个步骤就可以驱动我们的摄像头了。但是这个驱动是基于V4l2的。以前基于V4L的一些上层应用就不能用了,或需要做大量的修改!这里我们要实现网络视频的功能,rn以前都是用servfox这个网络视频服务器,但是这个服务器就是基于V4L的,我们如果想用的话就得对servfox的源码进行修改。这里我们选用另外一种方案mjpg-stream。rnrn3、mjpg-stream的移植rnrn关于mjpg-stream的资料大家可以在下面这个网址查看:http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Pagern mjpg-stream的移植需要jpeg的库,所以我们先移植jpeg的库rnrn(1)jpeg库的移植rnrn 1)jpeg源码包通过下面这个网址下载 http://www.ijg.org/files/jpegsrc.v8b.tar.gzrn rn 2)解压源码包 tar xvf jpegsrc.v8b.tar.gzrn rn 3)配置源码 rn cd jpeg-8brn ./configure --prefix=/home/linux/s3c2410-2.6.35/video/jpeg --host=arm-none-linux-gnueabirn rn 4)编译 makern rn 5)安装 make installrn rn 6)拷贝库到文件系统中 cp //home/linux/s3c2410-2.6.35/video/jpeg/lib/libjpeg.so.8 /source/rootfs/librnrn(2)mjpg-stream的移植rnrn 1)mjpg-stream源码包通过下面这个网址下载 http://sourceforge.net/projects/mjpg-streamer/rnrn 2)解压源码 tar xvf mjpg-streamer-r63.tar.gzrn rn 3)修改源码rn cd mjpg-streamer-r63rn rn 修改顶层makefile及plugins目录中的各级makefile将所有rn CC=gccrn 修改为rn CC=arm-none-linux-gnueabi-gccrn rn 修改plugins/input_uvc/Makfilern rn 修改rn CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPICrn 为rn CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/linux/s3c2410-2.6.35/video/jpeg/includern rn 修改rn $(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lorn 为rn $(CC) $(CFLAGS) -ljpeg -L/home/linux/s3c2410-2.6.35/video/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lorn rn jpeg_utils.c:27: fatal error: jpeglib.h: No such file or directoryrn rn 4)编译rn makern rn 5)测试rn mkdir /source/rootfs/mjpgrn cp *.so /source/rootfs/mjpgrn cp mjpg-stream /source/rootfs/binrnrn 打开开开发板运行rnrn mjpg_streamer -i "/mjpg/input_uvc.so" -o "/mjpg/output_http.so -w /www"rn 在源码目录下有start.sh,这个脚本里有一些mjpg-stream的使用方法及说明rnrn 打开一个网页输入下面地址就能够看到一个视频(开发板的IP为192.168.1.202):rn http://192.168.1.202:8080/?action=streamrn 打开一个网页输入下面地址就能够看到一个静态图片:rn http://192.168.1.202:8080/?action=snapshotrn 6)在mjpg源码下有一个www的目录,这个一个网络使用mjpg的实例,结合web服务器(boa)可以实现一些其他相关功能。rn 论坛

没有更多推荐了,返回首页