"package/valgrind/Config.in" 添加一行 default y if BR2_riscv
用韦老师的 buildroot
我来试一试。
"package/valgrind/Config.in" 添加一行 default y if BR2_riscv
用韦老师的 buildroot
我来试一试。
checking dependency style of /opt/D1/buildroot-2021/output/host/bin/riscv64-unknown-linux-gnu-gcc... none
checking for diff -u... yes
checking for /opt/D1/buildroot-2021/output/host/bin/riscv64-unknown-linux-gnu-gcc option to accept ISO C99... (cached) -std=gnu99
checking for a supported version of gcc... ok (8.1.0)
checking build system type... x86_64-pc-linux-gnu
checking host system type... riscv64-buildroot-linux-gnu
checking for a supported CPU... no (riscv64)
configure: error: Unsupported host architecture. Sorry
package/pkg-generic.mk:231: recipe for target '/opt/D1/buildroot-2021/output/build/valgrind-3.16.1/.stamp_configured' failed
make[1]: *** [/opt/D1/buildroot-2021/output/build/valgrind-3.16.1/.stamp_configured] Error 1
Makefile:84: recipe for target '_all' failed
make: *** [_all] Error 2
确实没办法编译成功了,看了一下,要照着mips64改很多处。
今天我们来试试移植lvgl8到哪吒D1 并在24寸1080P显示器上渲染
上lvgl的github下载源码
修改几处
lv_conf.h
增加lvgl最大使用内存
#define LV_MEM_SIZE (1024U * 1024U)
打开CPU占用和FPS指示
#define LV_USE_PERF_MONITOR 1
开启音乐播放器演示
lv_demo_conf.h
#define LV_USE_DEMO_MUSIC 1
#define LV_DEMO_MUSIC_LANDSCAPE 1
#define LV_DEMO_MUSIC_LARGE 1
#define LV_DEMO_MUSIC_AUTO_PLAY 1
增大缓冲 双缓冲
main.c
#define DISP_BUF_SIZE (1920 * 1080 * 4)
static lv_color_t buf[DISP_BUF_SIZE];
static lv_color_t buf2[DISP_BUF_SIZE];
lv_disp_draw_buf_init(&disp_buf, buf, buf2, DISP_BUF_SIZE);
把原来的lv_demo_widget改成
lv_demo_music();
我把整个源码重新用cmake构建了一遍 这样就不用去看原来的makefile了
附件中提供了源码工程 只要改一下CMakeLists.txt里的编译器 执行(注意有个点)
cmake .
再执行
make
就可以直接编译了
附件中还提供了应用程序 放进去直接运行看效果
演示视频:
lvgl8播放器:哪吒D1运行LVGL8在24寸1080P显示器上渲染附件.zip
lvgl8窗口:
lvgl7窗口:
源码下载: 哪吒D1运行LVGL7_LVGL8在24寸1080P显示器上渲染附件_工程源码.zip
转载地址: https://whycan.com/t_7044.html
原作者: @逸俊晨晖
https://item.taobao.com/item.htm?id=654487384887
智伴机器人主板 XR871ET+AC101芯片 双声道音箱主板 diy ¥7.8元
&pio {
twi0_pins_c: twi0@0 {
pins = "PG12", "PG13"; /*sck sda*/
function = "twi0";
muxsel = <3>;
drive-strength = <10>;
};
twi0_pins_d: twi0@1 {
pins = "PG12", "PG13";
function = "gpio_in";
};
}
&twi0 {
clock-frequency = <400000>;
pinctrl-0 = <&twi0_pins_c>;
pinctrl-1 = <&twi0_pins_d>;
pinctrl-names = "default", "sleep";
status = "okay";
tsc2007@48 {
compatible = "ti,tsc2007";
reg = <0x48>;
interrupt-parent = <&pio>;
interrupts = <PB 2 IRQ_TYPE_EDGE_FALLING>;
ti,x-plate-ohms = <400>;
};
};
kernel 配置勾选 tsc2007,然后用 evtest 测试电阻触摸屏,一切OK了。
全志 RISCV 指令集 D1 开发板 哪吒 资料合集
https://whycan.com/t_6440.html
这里有晕哥上传到百度云的SDK,你可以先下载,然后再 git pull
$ find . -name sdd_xr829.bin
./out/d1-nezha/staging_dir/target/rootfs/lib/firmware/sdd_xr829.bin
./out/d1-nezha/compile_dir/target/rootfs/lib/firmware/sdd_xr829.bin
./out/d1-nezha/compile_dir/target/linux-firmware/ipkg-sunxi/xr829-firmware/lib/firmware/sdd_xr829.bin
./package/firmware/linux-firmware/xr829/sdd_xr829.bin
基本思路:
DLNA客户端可以接收并播放以DLNA协议推送的流媒体
而B站可以将视频通过DLNA协议推送
所以我们给哪吒D1配置DLNA客户端 就可以实现在同一网络下B站投屏了
gmrender-resurrect是一个接收DLNA内容并用gstreamer播放的组件
我们用gmrender-resurrect就可以配置出一个DLNA客户端
我们已经实现了使用gstreamer1.0调用openmax硬解H264
B站通过DLNA投屏时会发送flv封装的H264流 类似于直播
也就是说 我们可以用gstreamer硬解B站投屏视频
但是在实践中发现gstreamer硬解B站投屏会出现闪屏现象 并且不能自动硬件缩放
为了避免这些问题 我查找了gmrender-resurrect和tplayer相关资料 将gmrender-resurrect进行了魔改 将原来gstreamer播放视频改成了tina自带的王牌播放器tplayer来播放视频 于是gmrender-resurrect便成了tprender
因为package里没有相关库 所以要手动交叉编译出tprender和DLNA的底层upnp库 附件里提供了编译完成的
演示环境搭建
用PhoenixSuit.exe烧录flash镜像
附件提供了配置好的flash镜像
进入d1系统 先配个wifi 我的是wifi是qwer 密码是1231232008 把wifi名和密码换成你的
wifi_connect_ap_test qwer 1231232008
注意要看一下ifconfig wlan0有没ip4地址 如果没有用下面命令获取一下
udhcpc -i wlan0
第一次运行wifi_connect_ap_test 会自动获取ip4地址 但是下次开机会自动连接wifi 但不会自动获取ip4地址 所以要检查一下
附件中提供了tprender_app 里面是编译好的tprender和upnp库
用adb把tprender_app发送到D1
adb push d:tprender_app /root/
进入目录
cd /root/tprender_app
把里面的库复制到系统路径
cp libs/* /usr/lib/
添加tprender执行权限
chmod +x tprender
开启DLNA客户端
./tprender -f "D1"
接下来可以用B站投屏了
操作提示
B站放视频时右上角有个TV图标 点它 再点投屏设备 就行了
B站更新到新版本才有投屏分辨率选择
演示视频
动画
1080P:
验证平台
硬件 哪吒D1开发板
系统 tina1.01 带0730补丁
配置过程
因为tplayer是tina自带的 而tprender 和upnp在package要交叉编译
所以不需要配置sdk
tprender编译
附件中提供了魔改好的tprender源码 使用cmake构建工程 只需在源码目录的CMakeLists.txt里修改编译器、链接库、头文件的路径 然后再执行构建(注意 有个点)
cmake .
再执行编译
make
即可以编译出tprender
upnp编译
附件中提供了upnp源码 按照里面README.md编译出libupnp.so和libixml.so库即可
附件下载: 哪吒D1编译配置DLNA客户端进行B站投屏附件.zip
转载地址: https://whycan.com/t_7091.html
原作者: @逸俊晨晖
D1的tina系统支持了libcedar的openmax接口 使得gstreamer可以用gst-omx插件调用libcedar进行视频硬解码
再加上tina支持了gst-aw插件 提供了gst的一个元件sunxifbsink 就是一个可以进行硬件转换YV12->RGB的硬件图层插件 即DE的应用
这样一来 D1使用gst进行播放视频 效果会非常流畅
演示环境搭建
用PhoenixSuit.exe烧录flash镜像
附件提供了flash镜像
把视频文件用adb发送到D1 附件中提供了测试视频文件
adb push D:\bad_apple.mp4 /root/
使用playbin元件自动寻找元件播放音视频
gst-launch-1.0 playbin uri=file:///root/bad_apple.mp4
因为加了一些同类的元件 为了调试方便 再写几条用来测试的命令
使用decodebin元件自动寻找解码器 指定fb元件播放视频
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! decodebin ! sunxifbsink
指定硬解码器 指定fb元件播放视频
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! sunxifbsink
指定元件播放音视频
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux name=demux demux.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! alsasink demux.video_0 ! queue ! h264parse ! omxh264dec ! sunxifbsink
演示效果
配置流程
首先 SDK版本为tina1.01要打上0730补丁 要配置HDMI作为fb输出
SDK配置
make menuconfig
-- libcedarx
Select cedarx configuration options --->
(拉到最后)
{} Add for openmax support
Multimedia --->
<> gst-omx
-- gstreamer1-libs
Select GStreamer libraries --->
{ }Include all GStreamer1 core libraries
*** Libraries ***
-- GStreamer core library libgstreamer1
-- GStreamer core library libgst1check
-- GStreamer core library libgst1controller
-- GStreamer core library libgst1net
<*> gst1-libav(这个不是用来软解视频的 而是用来软解音频)
<> gstreamer1-plugins-aw
Select GStreamer aw modules --->
{ } Include all GStreamer aw plugins
*** Modules ***
<> GStreamer fbdev2sink module
<> GStreamer sunxifbsink module
{} sunxi g2d rotation support
*** Libraries ***
-*- GStreamer framebuffersink library
<> gstreamer1-plugins-bad
Select GStreamer bad modules and libraries --->
<> GStreamer fbdevsink module
<> GStreamer id3tag module(MP3的id3信息封装)
<> GStreamer videoparsersbad module
-*- GStreamer codecparsers library
-- gstreamer1-plugins-base
Select GStreamer base modules and libraries --->
-- GStreamer alsa module
<> GStreamer audioconvert module
<> GStreamer audiorate module
<> GStreamer audioresample module
<> GStreamer audiotestsrc module
<> GStreamer playback module (playbin元件 自动寻找连接元件)
<> GStreamer typefindfunctions module (这个是给playbin自动寻找解封装元件 之前不知道 导致playbin播不了)
<> GStreamer videoconvert module
<> GStreamer videorate module
<> GStreamer videoscale module
<> GStreamer videotestsrc module
-- GStreamer allocators library
-- GStreamer app library
-- GStreamer audio library
-- GStreamer pbutils library
-- GStreamer riff library
-- GStreamer rtp library
-- GStreamer tag library
-- GStreamer video library
<> gstreamer1-plugins-good
Select GStreamer good modules --->
<> GStreamer audioparsers module
<> GStreamer flv module
<> GStreamer id3demux module(MP3的id3信息解封装)
<> GStreamer matroska module(mkv文件解封装)
<> GStreamer isomp4 module(mp4文件解封装)
<*> GStreamer soup module
<*> gstreamer1-utils
附件提供SDK配置的config文件 方便出问题排查
配置完成后编译打包就可以了 如果编译报错 主要检查补丁有没生效
文件下载: 哪吒D1使用gstreamer硬解码附件.zip
转载地址: https://whycan.com/t_7078.html
原作者: @逸俊晨晖