2024年10月28日发(作者:弭慧月)
ATMEL ARM9 LINUX移植文档 1/14
ATMEL ARM9 Linux移植文档
基于Linux UVC的MJPEG-Streamer网络摄像机实现
基于Mplayer和USB声卡的网络收音机实现
本文档适用于AT91SAM9260 AT91SAM9G20芯片
QQ:632124280
ATMEL ARM9 LINUX移植文档 2/14
1. 配置及编译Linux内核文件
首先配置默认配置文件,以下针对at91sam9g20/at91sam9260芯片。
>make at91sam9g20ek_defconfig
默认的配置成功后,需要加入内核对NFS根文件系统,YAFFS文件系统,USB声卡支持以及Linux UVC
设备的支持功能。
>make menuconfig
参看以下图片中的选项,首先确认已经选择了ATMEL AT91 SoC中的AT91SAM9G20-EK。
选择系统类型
.
选择ATMEL芯片
ATMEL ARM9 LINUX移植文档 3/14
选择AT91SAM9G20-EK
配置内核支持USB声卡
进入设备驱动配置部分,进入Device Drivers选项
ATMEL ARM9 LINUX移植文档 4/14
首先选择Sound Card Support
选择 USB Sound Devices选项
ATMEL ARM9 LINUX移植文档 5/14
选中 USB Sound Devices选项下面的所有选项
配置 Linux UVC设备,也就是对USB摄像头的支持
关于 Linux UVC的详细资料可以查看/uvc/
首先进入Multimedia support选项
ATMEL ARM9 LINUX移植文档 6/14
选择Video Capture adapters选项
选择V4L USB devices选项
ATMEL ARM9 LINUX移植文档 7/14
选择 USB Video CLASS(UVC)选项和UVC input events device support选项
配置对NFS根文件系统的支持
选择Network File System中的选项,注意对根文件系统的支持
ATMEL ARM9 LINUX移植文档 8/14
配置文件系统中对YAFFS2文件系统的支持
配置结束后,保存退出。
然后编译内核
>make uImage
假设开发板中烧入了bootstrap和u-boot。而且在U-boot中设定了IP地址以及MAC地址等参数。
利用tftp传输uImage
打开tftpd32,指定uImage文件所在位置,PC主机的IP地址,开发板的IP地址,需要发送的文件
名uImage,点击“Put”开始发送。
另外在U-boot命令行中键入命令接收tftp文件:
>tftp 0x22200000 uImage
将tftp传输的uImage文件接收到内存0x22200000处。
下图是配置示例。
ATMEL ARM9 LINUX移植文档 9/14
在U-boot中可以设定bootm参数,bootargs参数,开发板上电后能自动运行。
假设PC端Linux环境已经开启了NFS功能,设置bootargs参数实现在开发板上电后自动挂载PC
Linux中的文件系统。假设根文件系统在PC Linux的/home/target文件夹中。
>setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.50:/home/target
ip=192.168.1.25:192.168.1.50:192.168.1.1:255.255.255.0:at91:eth0:off console=ttyS0,115200
>saveenv
重启开发板,超级终端输出U-boot启动信息,Linux内核启动信息,根文件系统信息,最后停留在
根文件系统的login提示处,输入用户名:root后回车,系统进入shell。
Freeing init memory: 120K
login:root
进入根文件系统的根目录下的camera目录中:
>cd /camera
在该目录中已经存放了预编译后的mjpeg-streamer运行所需的可执行文件,动态库及运行脚本。
其中即为脚本文件,其内容为:
#--------------------------------------------------------------------------------------------------
#! /bin/sh
boa #启动boa网络服务器
./mjpg_streamer -i "./input_" -o "./output_ -w /www"
exit 0
#--------------------------------------------------------------------------------------------------
MJPG-streamer [529]: starting application
MJPG Streamer Version.: 2.0
MJPG-streamer [529]: MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
MJPG-streamer [529]: Using V4L2 device.: /dev/video0
输出MJPG-streamer的启动信息如下:
运行该脚本
>./
ATMEL ARM9 LINUX移植文档 10/14
i: Desired Resolution: 640 x 480
MJPG-streamer [529]: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
MJPG-streamer [529]: Frames Per Second.: 5
i: : MJPEG
MJPG-streamer [529]: : MJPEG
o: : /www/
MJPG-streamer [529]: : /www/
o: HTTP : 8080
MJPG-streamer [529]: HTTP : 8080
o: username:password.: disabled
MJPG-streamer [529]: username:password.: disabled
o: : enabled
MJPG-streamer [529]: : enabled
MJPG-streamer [529]: starting input plugin
MJPG-streamer [529]: starting output plugin: ./output_ (ID: 00)
在PC端,可以打开PC端代理软件,运行界面如下:
点击”Connect”开始预览,其中IP地址192.168.1.25为开发板地址,端口为8080。
ATMEL ARM9 LINUX移植文档 11/14
另外在根文件系统中已经包含了boa服务器,在脚本中也已经启动了boa服务器,在PC端打开
浏览器,地址栏中输入:
192.168.1.25:8080
运行后的界面如下:
ATMEL ARM9 LINUX移植文档 12/14
利用USB声卡实现网络收音机
插入USB声卡,超级终端中输出信息:
usb 1-2: new full speed USB device using at91_ohci and address 3
input: USB AUDIO as /devices/platform/at91_ohci/usb1/1-2/1-2:1.3/input/input2
generic-usb 0003:1130:F211.0001: input: USB HID v1.10 Device [USB AUDIO ] on
usb-at91-2/input3
input: USB AUDIO as /devices/platform/at91_ohci/usb1/1-2/1-2:1.4/input/input3
generic-usb 0003:1130:F211.0002: input: USB HID v1.10 Device [USB AUDIO ] on
usb-at91-2/input4
利用mplayer播放mp3文件
>mplayer 3
输出运行信息:
MPlayer 1.0rc2-4.3.3 (C) 2000-2007 MPlayer Team
CPU: ARM
Playing 3.
Audio file file format detected.
Clip info:
Title: 莫扎特摇篮曲
Artist: 莫扎特
Album: 伴你入睡
Year: 2004
Comment: .:: ::.
Track: 5
Genre: Goa
==============================================================
Requested audio codec family [mp3] (afm=mp3lib) not available.
Enable it at compilation.
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
invalid new backstep 590
AUDIO: 44100 Hz, 2 ch, s16le, 192.0 kbit/13.61% (ratio: 24000->176400)
Selected audio codec: [ffmp3] afm: ffmpeg (FFmpeg MPEG layer-3 audio decoder)
==============================================================
AO: [oss] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
说明mplayer可以正常播放,并且耳机在耳机中听到了音乐。
ATMEL ARM9 LINUX移植文档 13/14
要收听网络上的音频信息,必须能连接到外网,下面Ping
>ping
PING (202.102.75.161): 56 data bytes
64 bytes from 202.102.75.161: seq=0 ttl=55 time=7.885 ms
64 bytes from 202.102.75.161: seq=1 ttl=55 time=27.487 ms
64 bytes from 202.102.75.161: seq=2 ttl=55 time=25.455 ms
64 bytes from 202.102.75.161: seq=3 ttl=55 time=7.758 ms
64 bytes from 202.102.75.161: seq=4 ttl=55 time=13.620 ms
能连接外网。
下面用mplayer播放外网的网络电台链接:
>mplayer mms:///pop/
MPlayer 1.0rc2-4.3.3 (C) 2000-2007 MPlayer Team
CPU: ARM
Playing mms:///pop/.
STREAM_ASF, URL: mms:///pop/
Resolving for
Connecting to server [58.215.37.216]:
Connected
unknown object
file object, packet length = 5493 (5493)
unknown object
stream object, stream ID: 2
unknown object
unknown object
data object
mmst packet_length = 5493
Cache size set to 64 KBytes
Cache fill: 0.00% (0 bytes)
ASF file format detected.
[asfheader] Audio stream found, -aid 1
[asfheader] Audio stream found, -aid 2
==============================================================
Opening audio decoder: [libwma] libwma Rockbox-based WMA decoder
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16002->192000)
Selected audio codec: [libwmav2] afm: libwma (DivX audio v2 (libwma))
==============================================================
AO: [oss] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
A:1838682.6 (510:44:42.6) of 2133437440.0 (59652:19:24.7) ??,?% 3%
ATMEL ARM9 LINUX移植文档 14/14
实现的硬件平台,USB供电,串口连接超级终端,两个USB HOST用于连接USB摄像头和USB声卡,一
个网口用于实现NFS和连接外网。
QQ 632124280
2024年10月28日发(作者:弭慧月)
ATMEL ARM9 LINUX移植文档 1/14
ATMEL ARM9 Linux移植文档
基于Linux UVC的MJPEG-Streamer网络摄像机实现
基于Mplayer和USB声卡的网络收音机实现
本文档适用于AT91SAM9260 AT91SAM9G20芯片
QQ:632124280
ATMEL ARM9 LINUX移植文档 2/14
1. 配置及编译Linux内核文件
首先配置默认配置文件,以下针对at91sam9g20/at91sam9260芯片。
>make at91sam9g20ek_defconfig
默认的配置成功后,需要加入内核对NFS根文件系统,YAFFS文件系统,USB声卡支持以及Linux UVC
设备的支持功能。
>make menuconfig
参看以下图片中的选项,首先确认已经选择了ATMEL AT91 SoC中的AT91SAM9G20-EK。
选择系统类型
.
选择ATMEL芯片
ATMEL ARM9 LINUX移植文档 3/14
选择AT91SAM9G20-EK
配置内核支持USB声卡
进入设备驱动配置部分,进入Device Drivers选项
ATMEL ARM9 LINUX移植文档 4/14
首先选择Sound Card Support
选择 USB Sound Devices选项
ATMEL ARM9 LINUX移植文档 5/14
选中 USB Sound Devices选项下面的所有选项
配置 Linux UVC设备,也就是对USB摄像头的支持
关于 Linux UVC的详细资料可以查看/uvc/
首先进入Multimedia support选项
ATMEL ARM9 LINUX移植文档 6/14
选择Video Capture adapters选项
选择V4L USB devices选项
ATMEL ARM9 LINUX移植文档 7/14
选择 USB Video CLASS(UVC)选项和UVC input events device support选项
配置对NFS根文件系统的支持
选择Network File System中的选项,注意对根文件系统的支持
ATMEL ARM9 LINUX移植文档 8/14
配置文件系统中对YAFFS2文件系统的支持
配置结束后,保存退出。
然后编译内核
>make uImage
假设开发板中烧入了bootstrap和u-boot。而且在U-boot中设定了IP地址以及MAC地址等参数。
利用tftp传输uImage
打开tftpd32,指定uImage文件所在位置,PC主机的IP地址,开发板的IP地址,需要发送的文件
名uImage,点击“Put”开始发送。
另外在U-boot命令行中键入命令接收tftp文件:
>tftp 0x22200000 uImage
将tftp传输的uImage文件接收到内存0x22200000处。
下图是配置示例。
ATMEL ARM9 LINUX移植文档 9/14
在U-boot中可以设定bootm参数,bootargs参数,开发板上电后能自动运行。
假设PC端Linux环境已经开启了NFS功能,设置bootargs参数实现在开发板上电后自动挂载PC
Linux中的文件系统。假设根文件系统在PC Linux的/home/target文件夹中。
>setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.50:/home/target
ip=192.168.1.25:192.168.1.50:192.168.1.1:255.255.255.0:at91:eth0:off console=ttyS0,115200
>saveenv
重启开发板,超级终端输出U-boot启动信息,Linux内核启动信息,根文件系统信息,最后停留在
根文件系统的login提示处,输入用户名:root后回车,系统进入shell。
Freeing init memory: 120K
login:root
进入根文件系统的根目录下的camera目录中:
>cd /camera
在该目录中已经存放了预编译后的mjpeg-streamer运行所需的可执行文件,动态库及运行脚本。
其中即为脚本文件,其内容为:
#--------------------------------------------------------------------------------------------------
#! /bin/sh
boa #启动boa网络服务器
./mjpg_streamer -i "./input_" -o "./output_ -w /www"
exit 0
#--------------------------------------------------------------------------------------------------
MJPG-streamer [529]: starting application
MJPG Streamer Version.: 2.0
MJPG-streamer [529]: MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
MJPG-streamer [529]: Using V4L2 device.: /dev/video0
输出MJPG-streamer的启动信息如下:
运行该脚本
>./
ATMEL ARM9 LINUX移植文档 10/14
i: Desired Resolution: 640 x 480
MJPG-streamer [529]: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
MJPG-streamer [529]: Frames Per Second.: 5
i: : MJPEG
MJPG-streamer [529]: : MJPEG
o: : /www/
MJPG-streamer [529]: : /www/
o: HTTP : 8080
MJPG-streamer [529]: HTTP : 8080
o: username:password.: disabled
MJPG-streamer [529]: username:password.: disabled
o: : enabled
MJPG-streamer [529]: : enabled
MJPG-streamer [529]: starting input plugin
MJPG-streamer [529]: starting output plugin: ./output_ (ID: 00)
在PC端,可以打开PC端代理软件,运行界面如下:
点击”Connect”开始预览,其中IP地址192.168.1.25为开发板地址,端口为8080。
ATMEL ARM9 LINUX移植文档 11/14
另外在根文件系统中已经包含了boa服务器,在脚本中也已经启动了boa服务器,在PC端打开
浏览器,地址栏中输入:
192.168.1.25:8080
运行后的界面如下:
ATMEL ARM9 LINUX移植文档 12/14
利用USB声卡实现网络收音机
插入USB声卡,超级终端中输出信息:
usb 1-2: new full speed USB device using at91_ohci and address 3
input: USB AUDIO as /devices/platform/at91_ohci/usb1/1-2/1-2:1.3/input/input2
generic-usb 0003:1130:F211.0001: input: USB HID v1.10 Device [USB AUDIO ] on
usb-at91-2/input3
input: USB AUDIO as /devices/platform/at91_ohci/usb1/1-2/1-2:1.4/input/input3
generic-usb 0003:1130:F211.0002: input: USB HID v1.10 Device [USB AUDIO ] on
usb-at91-2/input4
利用mplayer播放mp3文件
>mplayer 3
输出运行信息:
MPlayer 1.0rc2-4.3.3 (C) 2000-2007 MPlayer Team
CPU: ARM
Playing 3.
Audio file file format detected.
Clip info:
Title: 莫扎特摇篮曲
Artist: 莫扎特
Album: 伴你入睡
Year: 2004
Comment: .:: ::.
Track: 5
Genre: Goa
==============================================================
Requested audio codec family [mp3] (afm=mp3lib) not available.
Enable it at compilation.
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
invalid new backstep 590
AUDIO: 44100 Hz, 2 ch, s16le, 192.0 kbit/13.61% (ratio: 24000->176400)
Selected audio codec: [ffmp3] afm: ffmpeg (FFmpeg MPEG layer-3 audio decoder)
==============================================================
AO: [oss] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
说明mplayer可以正常播放,并且耳机在耳机中听到了音乐。
ATMEL ARM9 LINUX移植文档 13/14
要收听网络上的音频信息,必须能连接到外网,下面Ping
>ping
PING (202.102.75.161): 56 data bytes
64 bytes from 202.102.75.161: seq=0 ttl=55 time=7.885 ms
64 bytes from 202.102.75.161: seq=1 ttl=55 time=27.487 ms
64 bytes from 202.102.75.161: seq=2 ttl=55 time=25.455 ms
64 bytes from 202.102.75.161: seq=3 ttl=55 time=7.758 ms
64 bytes from 202.102.75.161: seq=4 ttl=55 time=13.620 ms
能连接外网。
下面用mplayer播放外网的网络电台链接:
>mplayer mms:///pop/
MPlayer 1.0rc2-4.3.3 (C) 2000-2007 MPlayer Team
CPU: ARM
Playing mms:///pop/.
STREAM_ASF, URL: mms:///pop/
Resolving for
Connecting to server [58.215.37.216]:
Connected
unknown object
file object, packet length = 5493 (5493)
unknown object
stream object, stream ID: 2
unknown object
unknown object
data object
mmst packet_length = 5493
Cache size set to 64 KBytes
Cache fill: 0.00% (0 bytes)
ASF file format detected.
[asfheader] Audio stream found, -aid 1
[asfheader] Audio stream found, -aid 2
==============================================================
Opening audio decoder: [libwma] libwma Rockbox-based WMA decoder
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16002->192000)
Selected audio codec: [libwmav2] afm: libwma (DivX audio v2 (libwma))
==============================================================
AO: [oss] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
A:1838682.6 (510:44:42.6) of 2133437440.0 (59652:19:24.7) ??,?% 3%
ATMEL ARM9 LINUX移植文档 14/14
实现的硬件平台,USB供电,串口连接超级终端,两个USB HOST用于连接USB摄像头和USB声卡,一
个网口用于实现NFS和连接外网。
QQ 632124280