外设使用

WiFi

* RV1109/RV1126 平台默认使用 connman 管理 WiFi,而且 WiFi 的核心进程 wpa_supplicant 的启动方法由它启动:

ps -ef
#可以看到下面两个进程
connmand		   #它使用dbus跟wpa_supplicant进行通信
wpa_supplicant -u  #打开支持dbus通信
  • 标准使用方法:通过 RV1126/RV1109 的 web 界面进行 WiFi 操作,参考 RV1109/RV1126 平台的相关文档:

  • 终端简单测试方法如下:

killall ipc-daemon netserver
connmanctl
connmanctl> enable wifi
connmanctl> scan wifi #可以多次扫描
connmanctl> scan wifi #可以多次扫描
connmanctl> agent on
connmanctl> services
#列出扫描到的 wifi 列表
connmanctl>
	*AO yyz123
	NETGEAR75-5G	wifi_c0847daf6f42_4e45544745415237352d3547_managed_psk
	aaabbb			wifi_c0847daf6f42_616161626262_managed_psk
	HiWiFi-Free		wifi_c0847daf6f42_204869576946692d46726565_managed_none
	Fang-HiWiFi		wifi_c0847daf6f42_46616e672d486957694669_managed_psk
	yyz123				wifi_c0847daf6f42_79797a313233_managed_psk

connmanctl> connect wifi_c0847daf6f42_4e45544745415237352d3547_managed_psk
#假如要连接上面 NETGEAR75-5G,则 connect 的参数为后面的 wifixxx_psk
connmanctl>
Connected wifi_c0847daf6f42_4e45544745415237352d3547_managed_psk #如果连接成功则会有这个打印
connmanctl> quit #退出连接模式

ifconfig wlan0
#可以看到wlan0的IP地址
  • 如果不想用connman,而使用传统的 wpa_supplicant/wpa_cli 的方式,则进行如下操作

#修改 wpa_supplicant.conf 配置文件
vi /etc/wpa_supplicant.conf
#将 SSID 替换成WiFi名称
#将 PASSWORD 替换成 WiFi 密码
udhcpc -i wlan0 #获取 IP 地址

4G 模组

查看 EC20 4G 模组套件是否已经加载

#加载成功会出现以下 4 个 USB 接口
ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3

如果没有加载成功,请检查内核是否打开以下的配置

Symbol: USB_SERIAL_OPTION [=y]
Type  : tristate
Prompt: USB driver for GSM and CDMA modems
Location:
	-> Device Drivers
		-> USB support (USB_SUPPORT [=y]) 
			-> USB Serial Converter support (USB_SERIAL [=y]) 
Defined at drivers/usb/serial/Kconfig:558
Depends on: USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y]
Selects: USB_SERIAL_WWAN [=y]

如果4G模块上不了网,请检查内核是否打开以下配置

CONFIG_USB_USBNET
CONFIG_USB_NET_QMI_WWAN

查看EC20 4G网卡是否存在

ifconfig wwan0

声卡

EarPhone && Speak

EarPhone 和 Speak 均采用双声道接口

使用 aplay 命令播放 wav 格式音频

#path-to 表示存放音频的绝对路径
aplay /path-to/audio-name.wav

Mic

  • Mic 默认是关闭的,使用时需要将其打开,通过以下操作进行

#命令设置默认录制声卡通道
amixer cset numid=2,iface=MIXER,name='Capture MIC Path' 1

#图形界面设置默认录制声卡通道
alsamixer
#将 Capture MIC Path 设置为 Main Mic
  • Mic录制音频

arecord -l											#查看所有可用的MIC设备
arecord -Dhw:0,0 -f cd -d 10 /path-to/audio.wav	#选择声卡并录制音频
#注:Mic 只支持单声道录音

MIPI-CSI

  • MIPI-CSI摄像头需要购买转接板

  • v4l2接口操作MIPI-CSI摄像头

#判断驱动 probe 状态 RKISP 如果 probe 成功,会有 video 及 media 设备存在于 /dev/ 目录下。
#系统中可能存在多个 /dev/video 设备,通过 /sys 可以查询到RKISP注册的 video 节点。
grep '' /sys/class/video4linux/video*/name
#与之对应的是 rkispp_scale0 节点

#v4l2-ctl抓取一帧图片并保存在/tmp/cif.out
v4l2-ctl -d /dev/video14 \
--set-fmt-video=width=1920,height=1080,pixelformat=NV12 \
--stream-mmap=3 \
--stream-skip=3 \
--stream-to=/tmp/cif.out \
--stream-count=1 \
--stream-poll

#v4l2-ctl抓取10帧连续图片作为一段视频并保存在/tmp/test.yuv
v4l2-ctl -d /dev/video14  --try-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap=3 --stream-to=/tmp/test.yuv --stream-count=10 --stream-poll

#Linux PC使用ffplay播放抓取到的视频
ffplay -f rawvideo -video_size 1920x1080 test.yuv
  • 访问网络码流 使用支持 RTSP 或 RTMP 的播放器访问,例如( VLC 播放器)。

  • RTSP访问地址:

rtsp://设备IP地址/live/mainstream
rtsp://设备IP地址/live/substream
rtsp://设备IP地址/live/thirdstream
  • RTMP访问地址:

rtmp://设备IP地址:1935/live/substream

例:VLC播放器预览RTSP流

#注:需要安装VLC播放器
vlc rtsp://设备IP地址/live/mainstream
  • 通过网页访问设备信息 打开 Web 浏览器(推荐 Chrome 浏览器)访问地址:

http://设备IP地址
#用户名和密码均是admin

网页端详细的操作说明请参考 SDK 目录 docs 下的文档 Rockchip_Instructions_Linux_Web_Configuration_CN.pdf

MIPI-DSI

CORE-1109-JD4/CORE-1126-JD4适配的屏幕型号为:DM-M10R800 屏幕购买链接:http://store.t-firefly.com/goods.php?id=80

屏幕转向

#指定QT输出平台并使屏幕顺时针转向90°
export QT_QPA_PLATFORM=linuxfb:rotation=90
  • 如果屏幕出现花屏,或者不显示的情况。请检查LCD排线是否有问题,更换优质材质的短排线能解决花屏问题。

LED

  • 选择 GPIO 口,修改内核设备树,添加自定义 LED 灯设备节点。

vim sdk/kernel/arch/arm/boot/dts/rv1126-firefly-ai-cam.dts
# 参考如下配置添加 LED 节点。
leds {
    compatible = "gpio-leds";

	work {
        label = "firefly:blue:power";
        linux,default-trigger = "ir-power-click";
        gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "default";
        pinctrl-0 = <&led_power>;
        default-state = "on";
	};
    user {
        label = "firefly:yellow:user";
        linux,default-trigger = "ir-user-click";
        gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "default";
        pinctrl-0 = <&led_user>;
        default-state = "on";
	};
};

# pinctrl 需要添加 GPIO 复用控制
leds {
	led_power: led-power {
            rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
        };

        led_user: led-user {
            rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
        };
};
# 修改完成后编译升级内核
  • 控制 LED

echo 1 > /sys/class/leds/firefly:yellow:user/brightness # 亮
echo 0 > /sys/class/leds/firefly:yellow:user/brightness # 灭

POE

  • 可添加 POE 功能的网口是 1000M 网口,如下图所示 _images/POE-interface.png 需要将 POE 模组接到底板的 POE 接口处

#查看1000M POE网口是否存在
ifconfig eth1