页次: 1
8ms内置的几个demo都没有跑起来,在群中大神的帮助下,用bootanimation把播放h264的视频播放出来了。在这里记录一下方法,方便各位像我一样的小白入手
1. 调整mma大小,否则播放会出现mma空间不足问题
vim project/configs/nvr/i2m/8.2.1/spinand.glibc.011a.128
将其改为
2. 修改bootanimation的makefile,根据你project目录的位置调整一下
3. make后将生成的bootanimation和bootanimation_dst.h264这两个文件拷贝到开发板
然后执行下面的指令,即可播放
chmod +x bootanimation
./bootanimation bootanimation_dst.h264 1920 1080 1024 600 1024 600 0 0 1024 600 0
A神为了方便初学者,将usb默认设置为MTP设备。但是由于MTP设备存在诸多限制,感觉改成RNDIS设备对开发者会更友好
更改方法如下
1. 让系统默认弹出rndis设备
2. 让系统支持nfs客户端
3. 使用全新的dfu-util烧录固件(这个方法还真实方便)
./fel-uboot.sh && ./dfu-nor-all.sh
4. 测试
4.1 烧录完成后,系统重启,在串口终端中执行
ifconfig usb0 up
ifconfig usb0 192.168.9.1
4.2 在ubuntu中设置这个usb网卡(感觉在tiny200板子中开个dhcp服务器会更简单,后续测试成功了补发一下)
ip:192.168.9.6
子网掩码:255.255.255.0
网关192.168.9.1
4.3 在串口终端中测试
ping 192.198.9.6
测试:ping通了
mount -t nfs -o nolock 192.168.9.6:/nfs /mnt
测试:mount成功了
如何使用tiny200 录音和放音(内容虽然简单,献给向我一样的小白)
0. 在OUT+和OUT-两端接一个小喇叭
1. 在buildroot中打开tinyalsa(aodzip大佬推荐tinyalsa,tinyalsa用起来确实比较简单)
2. 使用tinyalsa的tinymix配置输入输出通道和音量,效果如下
# tinymix contents
Number of controls: 25
ctl type num name value
0 INT 1 DAC Playback Volume 63 (range 0->63)
1 INT 1 Headphone Playback Volume 63 (range 0->63)
2 BOOL 2 Headphone Playback Switch On, On
3 INT 1 Line In Playback Volume 0 (range 0->7)
4 INT 1 FM In Playback Volume 0 (range 0->7)
5 INT 1 Mic In Playback Volume 3 (range 0->7)
6 INT 1 Mic Boost Volume 4 (range 0->7)
7 INT 1 ADC Capture Volume 3 (range 0->7)
8 BOOL 1 ADC Mixer Right Out Capture Switch Off
9 BOOL 1 ADC Mixer Left Out Capture Switch Off
10 BOOL 1 ADC Mixer Line In Capture Switch Off
11 BOOL 1 ADC Mixer Right FM In Capture Switch Off
12 BOOL 1 ADC Mixer Left FM In Capture Switch Off
13 BOOL 1 ADC Mixer Mic Capture Switch On
14 BOOL 1 Left Mixer Right DAC Playback Switch Off
15 BOOL 1 Left Mixer Left DAC Playback Switch Off
16 BOOL 1 Left Mixer FM In Playback Switch Off
17 BOOL 1 Left Mixer Line In Playback Switch Off
18 BOOL 1 Left Mixer Mic In Playback Switch Off
19 BOOL 1 Right Mixer Left DAC Playback Switch Off
20 BOOL 1 Right Mixer Right DAC Playback Switch Off
21 BOOL 1 Right Mixer FM In Playback Switch Off
22 BOOL 1 Right Mixer Line In Playback Switch Off
23 BOOL 1 Right Mixer Mic In Playback Switch Off
24 ENUM 2 Headphone Source Playback Route , DACMixer, , DACMixer
3. 测试播放成功
# tinyplay on_phone.wav
playing 'on_phone.wav': 2 ch, 48000 hz, 16 bit
#
测试录音成功
#tinycap 1.wav -d 0 -c 1 -r 44100 -b 16
改成这样,可以播放了
# amixer contents
numid=25,iface=MIXER,name='Headphone Source Playback Route'
; type=ENUMERATED,access=rw------,values=2,items=2
; Item #0 'DAC'
; Item #1 'Mixer'
: values=0,0
numid=3,iface=MIXER,name='Headphone Playback Switch'
; type=BOOLEAN,access=rw------,values=2
: values=on,on
numid=2,iface=MIXER,name='Headphone Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0
: values=63
| dBscale-min=-63.00dB,step=1.00dB,mute=1
numid=5,iface=MIXER,name='FM In Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=0
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=4,iface=MIXER,name='Line In Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=0
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=7,iface=MIXER,name='Mic Boost Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=4
| dBrange-
rangemin=0,,rangemax=0
| dBscale-min=0.00dB,step=0.00dB,mute=0
rangemin=1,,rangemax=7
| dBscale-min=24.00dB,step=3.00dB,mute=0
numid=6,iface=MIXER,name='Mic In Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=3
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=13,iface=MIXER,name='ADC Mixer Left FM In Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=10,iface=MIXER,name='ADC Mixer Left Out Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=11,iface=MIXER,name='ADC Mixer Line In Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=14,iface=MIXER,name='ADC Mixer Mic Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=12,iface=MIXER,name='ADC Mixer Right FM In Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=9,iface=MIXER,name='ADC Mixer Right Out Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=8,iface=MIXER,name='ADC Capture Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=3
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=1,iface=MIXER,name='DAC Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0
: values=63
| dBscale-min=-73.08dB,step=1.16dB,mute=0
numid=17,iface=MIXER,name='Left Mixer FM In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=16,iface=MIXER,name='Left Mixer Left DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=18,iface=MIXER,name='Left Mixer Line In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=19,iface=MIXER,name='Left Mixer Mic In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=15,iface=MIXER,name='Left Mixer Right DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=22,iface=MIXER,name='Right Mixer FM In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=20,iface=MIXER,name='Right Mixer Left DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=23,iface=MIXER,name='Right Mixer Line In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=24,iface=MIXER,name='Right Mixer Mic In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=21,iface=MIXER,name='Right Mixer Right DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
amixer做的相关配置
# amixer contents
numid=25,iface=MIXER,name='Headphone Source Playback Route'
; type=ENUMERATED,access=rw------,values=2,items=2
; Item #0 'DAC'
; Item #1 'Mixer'
: values=0,0
numid=3,iface=MIXER,name='Headphone Playback Switch'
; type=BOOLEAN,access=rw------,values=2
: values=off,off
numid=2,iface=MIXER,name='Headphone Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0
: values=0
| dBscale-min=-63.00dB,step=1.00dB,mute=1
numid=5,iface=MIXER,name='FM In Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=0
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=4,iface=MIXER,name='Line In Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=0
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=7,iface=MIXER,name='Mic Boost Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=4
| dBrange-
rangemin=0,,rangemax=0
| dBscale-min=0.00dB,step=0.00dB,mute=0
rangemin=1,,rangemax=7
| dBscale-min=24.00dB,step=3.00dB,mute=0
numid=6,iface=MIXER,name='Mic In Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=3
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=13,iface=MIXER,name='ADC Mixer Left FM In Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=10,iface=MIXER,name='ADC Mixer Left Out Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=11,iface=MIXER,name='ADC Mixer Line In Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=14,iface=MIXER,name='ADC Mixer Mic Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=12,iface=MIXER,name='ADC Mixer Right FM In Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=9,iface=MIXER,name='ADC Mixer Right Out Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=8,iface=MIXER,name='ADC Capture Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=3
| dBscale-min=-4.50dB,step=1.50dB,mute=0
numid=1,iface=MIXER,name='DAC Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0
: values=62
| dBscale-min=-73.08dB,step=1.16dB,mute=0
numid=17,iface=MIXER,name='Left Mixer FM In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=16,iface=MIXER,name='Left Mixer Left DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=18,iface=MIXER,name='Left Mixer Line In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=19,iface=MIXER,name='Left Mixer Mic In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=15,iface=MIXER,name='Left Mixer Right DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=22,iface=MIXER,name='Right Mixer FM In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=20,iface=MIXER,name='Right Mixer Left DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=23,iface=MIXER,name='Right Mixer Line In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=24,iface=MIXER,name='Right Mixer Mic In Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=21,iface=MIXER,name='Right Mixer Right DAC Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
使用播放命名播放音乐
# aplay on_phone.wav
Playing WAVE 'on_phone.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
#
我在OUT+和OUT-两端接了一个4W喇叭
这是一首5秒的音乐,播放时间是正常的,但是没有声音
由于没有找到稳定的esp8089驱动,加上自己后期想用蓝牙,于是选择RTL8723BS网卡
这个教程基于commitid:e9c4c40e9f0d402c5ae84c2e1f40017674a2c489
其他版本可能需要做一些变化
这个教程有点过于详细,主要是为了帮助一下像我一样的小白尽快上手
步骤
1. 下载tiny200 r3的buildroot,并执行一次编译
git clone https://github.com/aodzip/buildroot-tiny200
cd buildroot-tiny200
make widora_tiny200_defconfig
2. 添加内核中的rfkill节点
修改/board/widora/tiny200/linux.defconfig
CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
# CONFIG_WIMAX is not set
CONFIG_RFKILL=y
# CONFIG_NET_9P is not set
3. 添加rtl8723bs_nic.bin文件
https://whycan.com/files/members/4245/rtl8723bs_nic.zip
放在这个地方
$ pwd
/buildroot-tiny200-nor/board/widora/tiny200/rootfs_overlay/lib/firmware/rtlwifi
$ ls
rtl8723bs_nic.bin
4. 添加jffs2文件系统支持
修改分区表,为rootfs预留更大空间
修改board/widora/tiny200/devicetree/linux/devicetree.dts
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x80000>;
read-only;
};
partition@100000 {
label = "dtb";
reg = <0x80000 0x10000>;
read-only;
};
partition@110000 {
label = "kernel";
reg = <0x100000 0x500000>;
read-only;
};
partition@510000 {
label = "rootfs";
reg = <0x600000 0xa00000>;
};
};
修改linux.defconfig文件,支持JFFS2文件系统,支持RTL8723BS网卡
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
CONFIG_JFFS2_FS=y
# CONFIG_CRAMFS is not set
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_FILE_CACHE=y
# CONFIG_PRISM2_USB is not set
# CONFIG_COMEDI is not set
# CONFIG_RTLLIB is not set
CONFIG_RTL8723BS=m
# CONFIG_R8712U is not set
# CONFIG_R8188EU is not set
# CONFIG_VT6656 is not set
buildroot输出jffs2二进制包
修改board/widora/tiny200/uboot.env,指定根文件系统格式,感觉这里不需要改,但是如果不该的话内核不会去尝试jffs2文件系统,由知道的大佬求指教
genbootargs=setenv bootargs ${bootargs_common} root=${rootdev} rw rootfstype=jffs2
修改genimage-flash.cfg文件,使用jffs2格式的根文件系统
partition dtb {
image = "devicetree.dtb"
offset = 0x80000
size = 64K
}
partition kernel {
image = "zImage"
offset = 0x100000
size = 5M
}
partition rootfs {
image = "rootfs.jffs2"
}
制作一个补丁包,修正spi-nor驱动
https://whycan.com/files/members/4245/0007.rar
把这个文件放在/board/widora/tiny200/patch/linux这个目录下
5. 添加 iw 和 wpa_supplicant 工具
在make menuconfig中选中
6. 开始编译固件 make -j4
时间太久了,睡个觉吧,一觉醒来,这个文件就是我们想要的了output/image/sysimage-flash.img
7. 烧录到nor flash中
sunxi-fel.exe -p spiflash-write 0x00 ./sysimage-flash.img
8. 开始上网吧
先插入sdio网卡,查看所有网卡
ifconfig -a
ifconfig wlan0 up
使用iw dev wlan0 scan扫描下周边热点,扫出来好多,截图中只选了一个
使用wpa_passphrase存储用户名和密码
wpa_passphrase yourSSID yourPassword > /etc/wpa_supplicant.conf
连接网络
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
获取ip
udhcpc -i wlan0
得到了ip,ping baidu成功
f1c100s 使用shaoxi的4.19.117内核,自己配置打开rndis,连接到ubuntu后可以弹出USB Ethernet
配置f1c100s的ip为192.168.9.1,配置ubuntu端ip为192.168.9.6
问题------------双方不能ping通
注:(使用荔枝派官方kernel,配置打开rndis是可以的,nfs挂载都没问题)
注:(使用荔枝派官方kernel,配置打开rndis,使用shaoxi的rootfs,双方可以互ping,nfs挂载都没问题)
现象如下:
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
usb0 Link encap:Ethernet HWaddr C6:64:6C:7D:83:9E
inet addr:192.168.9.1 Bcast:192.168.9.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
# ping 192.168.9.6
PING 192.168.9.6 (192.168.9.6): 56 data bytes
^C
--- 192.168.9.6 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
改改编译器配置就行了
tiny200.zip
非常感谢回复,内核已经编译成功
我烧录后发现没有modules,我就自己编译并安装了,并且拷贝到了开发板的/lib/modules目录下
目录结构如下
[ 5.710536] cfg80211: version magic '4.19.117 preempt mod_unload ARMv5 p2v8 ' should be '4.19.117 mod_unload ARMv5 p2v8 '
[ 5.740482] cfg80211: version magic '4.19.117 preempt mod_unload ARMv5 p2v8 ' should be '4.19.117 mod_unload ARMv5 p2v8 '
modprobe: can't load module cfg80211 (kernel/net/wireless/cfg80211.ko): invalid module format
目录结构如下
├── build -> /home/ubuntu/f1c/linux4.19.117/linux-4.19.117
├── kernel
│ ├── drivers
│ │ ├── gpu
│ │ │ └── drm
│ │ │ ├── pl111
│ │ │ │ └── pl111_drm.ko
│ │ │ └── tinydrm
│ │ │ ├── core
│ │ │ ├── ili9225.ko
│ │ │ ├── ili9341.ko
│ │ │ ├── mi0283qt.ko
│ │ │ ├── mipi-dbi.ko
│ │ │ ├── repaper.ko
│ │ │ ├── st7586.ko
│ │ │ └── st7735r.ko
│ │ ├── net
│ │ │ ├── mii.ko
│ │ │ ├── usb
│ │ │ │ ├── asix.ko
│ │ │ │ ├── ax88179_178a.ko
│ │ │ │ ├── cdc_eem.ko
│ │ │ │ ├── cdc_ether.ko
│ │ │ │ ├── cdc_ncm.ko
│ │ │ │ ├── cdc_subset.ko
│ │ │ │ ├── net1080.ko
│ │ │ │ ├── r8152.ko
│ │ │ │ ├── usbnet.ko
│ │ │ │ └── zaurus.ko
│ │ │ └── wireless
│ │ │ └── esp8089-cleanup
│ │ │ └── esp8089.ko
│ │ └── usb
│ │ └── class
│ │ └── usblp.ko
│ └── net
│ ├── mac80211
│ │ └── mac80211.ko
│ └── wireless
│ └── cfg80211.ko
├── modules.alias
├── modules.alias.bin
├── modules.builtin
├── modules.builtin.bin
├── modules.dep
├── modules.dep.bin
├── modules.devname
├── modules.order
├── modules.softdep
├── modules.symbols
├── modules.symbols.bin
└── source -> /home/ubuntu/f1c/linux4.19.117/linux-4.19.117
固件目录
# pwd
/lib/firmware
# ls
SPI1.dtbo eagle_fw_ate_config_v19.bin
UART0.dtbo eagle_fw_first_init_v19.bin
UART2.dtbo eagle_fw_second_init_v19.bin
非常感谢,基于SD卡已经跑起来了,但是 https://whycan.cn/t_2794.html 配置内核支持jffs2格式,编译就出现一大堆选项,没有编译过支持spi nor的内核
请问使用https://github.com/Lichee-Pi/linux/tree/nano-4.14-exp这个版本的内核,只需要用你这个配置,不需要patch文件吗?
adbd的移植,buildroot配置adb-tools即可
内核配置文件nano_kernel_config.tgz(不是压缩文件,直接改名.config替换即可)
页次: 1