1. FAQ¶
1.1. 开机异常卡死或重启¶
可能是电源电流不够,板子的工作电压为 5V,工作电流为 500mA 以上,视具体挂载外设而定。
1.3. 音频输出声音太小¶
1.3.1. 耳机¶
查看codec当前左右声道输出增益:
amixer cget name='DAC HPOUT Left Volume'
amixer cget name='DAC HPOUT Right Volume'
根据所需调节前级增益:
amixer cset name='DAC HPMIX Left Volume' 1
amixer cset name='DAC HPMIX Right Volume' 1
根据所需调节后级增益:
amixer cset name='DAC HPOUT Left Volume' 18
amixer cset name='DAC HPOUT Right Volume' 18
调节音量(百分比):
amixer cset name='Master Playback Volume' 40
1.3.2. 喇叭¶
查看codec当前左右声道输出增益:
amixer cget name='DAC LINEOUT Left Volume'
amixer cget name='DAC LINEOUT Right Volume'
根据所需调节前级增益:
amixer cset name='DAC HPMIX Left Volume' 1
amixer cset name='DAC HPMIX Right Volume' 1
根据所需调节后级增益:
amixer cset name='DAC LINEOUT Left Volume' 3
amixer cset name='DAC LINEOUT Right Volume' 3
调节音量(百分比):
amixer cset name='Master Playback Volume' 40
1.4. 录音¶
1.4.1. 查看声卡¶
cat /proc/asound/cards
0 [rockchiprk3308b]: rockchip_rk3308 - rockchip,rk3308b-acodec
                     rockchip,rk3308b-acodec
1 [Audio          ]: USB-Audio - AC108 USB Audio
                     XPowers AND ST AC108 USB Audio at usb-ff440000.usb-1.1, full speed
7 [Loopback       ]: Loopback - Loopback
                     Loopback 1
- card 0: rk3308b 内置声卡 
- card 1: usb 声卡 
- card 7: aloop 生成的虚拟声卡 
1.4.2. 内置codec的mic增益调整¶
- Group n - Group 0: mic1和mic2 
- Group 1: mic3和mic4 
- Group 2: mic5和mic6 
- Group 3: mic7和mic8 
 
- “ADC MIC”前缀:表示调节前级MIC PGA线性放大增益 
- “ADC ALC”前缀:表示调节后级ALC线性放大增益 
amixer cset name='ADC MIC Group 0 Left Volume'  3   # mic1,range 0->3
amixer cset name='ADC MIC Group 0 Right Volume' 3   # mic2,range 0->3
amixer cset name='ADC ALC Group 0 Left Volume'  13  # mic1,range 0->31
amixer cset name='ADC ALC Group 0 Right Volume' 13  # mic2,range 0->31
采集8通道声卡0音频数据:
arecord -D hw:0,0 -c 8 -r 16000 -f S16_LE test.wav
采样率大于16000hz时,录音命令要加上--period-size=1024 --buffer-size=4096参数,例如:
arecord -D hw:0,0 -c 8 -r 44100 -f S16_LE --period-size=1024 --buffer-size=4096 test.wav
1.4.3. 内置codec的mic录音没声音¶
- 使用有源MIC 
- 使用无源MIC - 检查是否有接偏置电压?(偏置电压可使用MICBIAS1或者MICBIAS2) 
- 参考电路 
  
 
1.5. SoX - Sound eXchange¶
提取双声道音频文件中单个声道的数据并作为单声道音频输出
sox stereo.wav left.wav  remix 1 	#提取左声道音频
sox stereo.wav right.wav remix 2 	#提取右声道音频
1.6. 语音识别开发¶
关于ROC-RK3308B-CC-PLUS(或者ROC-RK3308B-CC)开源主板支持的语音套件,客户如需更深入的业务定制合作,需要与我司或者对应的语音公司进行商务沟通。
1.7. 显示屏¶
- 支持RGB接口 - RGB888 
- RGB666 
- RGB565 
 
- 支持 MCU i80接口 
- 最大分辨率是720p 
1.8. AndroidTool¶
1.8.1. 单独烧写分区镜像,分区地址错误¶
AndroidTool在加载parameter.txt时,会自动根据parameter分配分区地址,所以每次单独烧写分区镜像时,顺便加载parameter.txt,就不需要手动修改分区地址了。
1.9. parameter.txt¶
1.9.1. 单个分区说明¶
例如:0x00004800@0x0000A800(boot),@符号之前的数值是分区的大小,@符号之后的数值是分区的起始位置,括号里面的字符是分区的名字。所有数值的单位是sector,1个sector为512Bytes。
为了性能,每个分区起始位置需要32KB(64 sectors)对齐,大小也需要32KB的整数倍。
1.10. I2C¶
1.10.1. i2cdetect检测不到i2c3所挂载的设备¶
- 内核dts有没有使能i2c3 
- 检查i2c3所使用的pin脚有没有被复用成其他功能 
- 检查i2c3有没有接上拉电压,可参考原理图i2c1 
- 检测i2c3所挂载的设备有没有正常供电 
其他i2c同理。
1.11. VAD¶
1.11.1. 使用内置codec的mic¶
- rockchip,adc-grps-route = <1 0 3 2>;:其对应的内置codec的mic的0到7通道顺序是- MIC3,MIC4,- MIC1,MIC2,- MIC7,MIC8,- MIC5,MIC6。
- rockchip,det-channel = <0>;:vad检测的通道是0。
检查所使用的dts里rockchip,det-channel的通道与rockchip,adc-grps-route所对应内置codec的mic通道是否一致?
1.11.2. 寄存器配置¶
如果想要比较理想的唤醒效果,需要配置VAD的寄存器,具体可以参考SDK/docs/soc_internal/RK3308/目录下的《Rockchip_RK3308_Developer_Guide_Linux_VAD_Register_Configuration_CN.pdf》文档。
1.12. watchdog¶
1.12.1. 使用步骤¶
- kernel所使用的dts里使能wdt 
&wdt {
	status = "okay";
};
- 可执行文件demo - open: 打开设备节点 - /dev/watchdog,从而启动看门狗
- ioctl: WDIOC_SETTIMEOUT设置超时时间 
- write: 喂狗 
 
具体程序(可以参考互联网上的文章)需要自己编写并编译。
1.12.2. 测试方法¶
- 板子启动后,运行demo文件,会启动看门狗并进行喂狗。 
- 把该进程结束掉,就不进行喂狗了,超时后机器就会重启。 
1.13. SSH¶
1.13.1. 使用方法¶
- 使能SSH相关选项 - openssh 
 - BR2_PACKAGE_OPENSSH=y - 配置登录的账户root和密码 
 - BR2_TARGET_ENABLE_ROOT_LOGIN=y BR2_TARGET_GENERIC_ROOT_PASSWD="123" 
- 确定rootfs是否为可读写 - 参考Rootfs 切换为 ext2章节。 
 
- 修改配置文件 - 修改板卡里 - /etc/ssh/sshd_config文件
 - PermitRootLogin yes 
1.14. USB Camera¶
1.14.1. 使能配置¶
kernel使能config如下:
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
1.15. 写号工具¶
注意:如果开发板进行了eMMC擦除操作,之前写入的数据也会被清除。
1.15.1. Windows方式¶
- 安装RKDevInfoWriteTool 
- RKDevInfoWriteTool的设置里选中”RPMB” 
- 根据需要在RKDevInfoWriteTool的设置里配置”SN”,”WIFI MAC”,”LAN MAC”,”BT MAC”等 
- 开发板进入loader模式 
- RKDevInfoWriteTool进行写入或者读取操作 
具体操作可以参考RKDevInfoWriteTool安装目录下的《RKDevInfoWriteTool使用指南》PDF文档。
1.15.2. Linux方式¶
开发板自身写号方式
- buildroot使能 - BR2_PACKAGE_VENDOR_STORAGE
- 通过vendor_storage命令进行读写操作 - SN 
 - vendor_storage -w VENDOR_SN_ID -t string -i cad895bedb8ee15f vendor_storage -r VENDOR_SN_ID - LAN MAC 
 - vendor_storage -w VENDOR_LAN_MAC_ID -t string -i AABBCCDDEEFF vendor_storage -r VENDOR_LAN_MAC_ID - 其他可以根据 - vendor_storage -h提示进行操作。
应用程序如何读取,可以参考buildroot/package/rockchip/vendor_storage/vendor_storage.c里的vendor_storage_read函数。
1.15.3. 说明¶
1.15.3.1. WIFI MAC¶
1.15.3.1.1. RTL8188EU¶
VENDOR_WIFI_MAC_ID的值是给了p2p0的MAC地址,而wlan0的MAC地址是VENDOR_WIFI_MAC_ID的值的第一个字节&= ~0x2所得。
1.15.3.1.2. AP6236¶
需要做如下修改:
diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile
index 2550ff6..ecd4028 100644
--- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile
+++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile
@@ -23,7 +23,7 @@ DHDCFLAGS = -Wall -Wstrict-prototypes -Dlinux -DBCMDRIVER                 \
        -DKEEP_ALIVE -DPKT_FILTER_SUPPORT -DPNO_SUPPORT -DDHDTCPACK_SUPPRESS  \
        -DDHD_DONOT_FORWARD_BCMEVENT_AS_NETWORK_PKT                           \
        -DMULTIPLE_SUPPLICANT -DTSQ_MULTIPLIER -DMFP                          \
-       -DWL_EXT_IAPSTA -DSUPPORT_P2P_GO_PS                                   \
+       -DWL_EXT_IAPSTA -DSUPPORT_P2P_GO_PS -DGET_CUSTOM_MAC_ENABLE           \
        -DENABLE_INSMOD_NO_FW_LOAD -DDHD_UNSUPPORT_IF_CNTS                    \
        -Idrivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd \
        -Idrivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include
1.16. UAC¶
1.16.1. 使用方法¶
- kernel配置文件使能相关选项 
CONFIG_USB_CONFIGFS_F_UAC1=y
or
CONFIG_USB_CONFIGFS_F_UAC2=y
- 确定rootfs是否为可读写 - 参考Rootfs 切换为 ext2章节。 
 
- .usb_config配置 
echo usb_uac1_en > /etc/init.d/.usb_config
or
echo usb_uac2_en > /etc/init.d/.usb_config
- 开发板重启 
1.16.2. 测试方法¶
参考SDK/docs/driver/USB/目录下的《Rockchip-Developer-Guide-Linux4.4-USB-Gadget-UAC-CN.pdf》文档。
1.17. 改写MAC地址¶
ROC-RK3308B-CC-PLUS以太网芯片RTL8152B的MAC地址可通过/oem/Rtl8152b_mac_tool下的工具进行改写
- 将 - EF8152B.cfg中的- NODEID修改成要烧写的MAC地址,- NODEID的地址要满足在- STARTID和- ENDID所构成的范围之间, 这个范围也是可以改的- NODEID = 00 E0 4C 36 00 01 STARTID = 00 E0 4C 36 00 01 ENDID = 00 E0 4C 36 FF FF 
- /oem/Rtl8152b_mac_tool目录下执行- ./rtunicpg-aarch64 /s搜索设备, 当前的MAC地址- C2:20:D1:D3:00:9A是随机生成的,未烧写过MAC地址时,系统每一次重启都不一样- ./rtunicpg-aarch64 /s ************************************************************************* * RTUNicPG - EFUSE/EEPROM/FLASH Programming Utility for * RTL8152/RTL8153 Family USB FE/GBE Network Adapter * Version : v2.0.6.9 * Copyright (C) Realtek Semiconductor Corp. 2017. All Rights Reserved. ************************************************************************* - RTL8152B 0 eth1 VID:0BDA PID:8152 bcdDevice:2000 C2:20:D1:D3:00:9A path:1.4 
- 由于只有一个设备,直接运行 - ./rtunicpg-aarch64 /efuse进行初次烧写
烧写成功后执行ifconfig eth1可以看出MAC地址已被改写成00:E0:4C:36:00:01,重启系统再次查看MAC地址依旧不变
后续需要烧写时可采用./rtunicpg-aarch64  /efuse /nodeid 00E04C360002 的方式,因为efuse空间有限,所以烧写MAC地址的次数尽量不要超过10次
1.18. 串口波特率9600改为115200¶
设备树使能了串口后可以通过stty [-F DEVICE | --file=DEVICE] [-a|--all]去查看串口的波特率,默认是9600,以下两种方式都可以将波特率改为115200
- 在应用层中修改, 如ttyS3 - stty -F /dev/ttyS3 speed 115200
- 修改驱动 - diff --git a/kernel/drivers/tty/serial/serial_core.c b/kernel/drivers/tty/serial/serial_core.c index 87625fa..39e7d0c 100644 --- a/kernel/drivers/tty/serial/serial_core.c +++ b/kernel/drivers/tty/serial/serial_core.c @@ -2394,8 +2394,8 @@ int uart_register_driver(struct uart_driver *drv) normal->type = TTY_DRIVER_TYPE_SERIAL; normal->subtype = SERIAL_TYPE_NORMAL; normal->init_termios = tty_std_termios; - normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; - normal->init_termios.c_ispeed = normal->init_termios.c_ospeed = 9600; + normal->init_termios.c_cflag = B115200 | CS8 | CREAD | HUPCL | CLOCAL; + normal->init_termios.c_ispeed = normal->init_termios.c_ospeed = 115200; normal->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; normal->driver_state = drv; tty_set_operations(normal, &uart_ops); 
应用层修改的方式在系统重启后需要重新设置,而修改驱动的方式则会将所有串口的默认波特率改成115200
