该文档将显示:
i.MX6SLL EVK 板未连接硬件 LCD 显示器,使用 FreeRDP 将屏幕共享到同一网络中的远程 PC,PC 使用此共享屏幕可以在 i.MX6SLL EVK 板上运行任何命令。
硬件:i.MX6SLL EVK 板、PC、USB 网络适配器
软件:i.MX6SLL Linux 5.15.72_2.2.0 BSP 版本,以及本文档中的代码更改
1>yocto-5.15.72/6sll-bld/conf/local.conf,添加下面一行,因为freerdp依赖于ffmpeg。
LICENSE_FLAGS_ACCEPTED+="商业"
2>pixman需要切换到0.42.0,进入文件夹yocto-5.15.72/6sll-bld/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/pixman/1_0.40.0-r0/pixman-0.40.0,从
https://github.com/freedesktop/pixman.git
获取最新的 0.42.0 版本代码
3>freerdp 需要使用 2.8.0,进入文件夹
yocto-5.15.72/6sll-bld/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/freerdp/1_2.6.1-r0/git
应该签出到 2.8.0标签; 然后使用neon accelerate freerdp相关功能,如色彩空间转换,图像codec编码,打补丁freerdp-codechange-neon.diff。
4>进入yocto-5.15.72/sources/meta-openembedded/meta-oe/recipes-support/freerdp,文件freerdp_2.6.1.bb改成freerdp-2.6.1-bbfile.diff
5>
bitbake -c 编译ffmpeg
bitbake -c 安装ffmpeg
bitbake -c 编译pixman
bitbake -c 安装pixman
bitbake -c 编译freerdp
bitbake -c 安装freerdp
6>
将生成的新库复制到 i.MX6SLL Linux 根文件系统:
cp /root/imx6sllevk-linux-lib/lib* /usr/lib/
cd /usr/lib/
rm libfreerdp-client2.so.2 libfreerdp2.so.2 libpixman -1.so.0 libwinpr-tools2.so.2 libwinpr2.so.2
ln -s libfreerdp-client2.so.2.8.0 libfreerdp-client2.so.2
ln -s libfreerdp2.so.2.8.0 libfreerdp2.so .2
ln -s libpixman-1.so.0.42.0 libpixman-1.so.0
ln -s libwinpr-tools2.so.2.8.0 libwinpr-tools2.so.2
ln -s libwinpr2.so.2.8.0 libwinpr2.so.2
ln -s libavcodec.so.58.134.100 libavcodec.so.58
ln -s libavu
til.so.56.70.100 libavutil.so.56
ln -s libswresample.so.3.9.100 libswresample.so.3
确保:
libfreerdp-client2.so.2 -> libfreerdp-client2.so.2.8.0
libfreerdp2.so.2 -> libfreerdp2.so.2.8.0
libwinpr-tools2.so.2 -> libwinpr-tools2.so。 2.8.0
libwinpr2.so.2 -> libwinpr2.so.2.8.0
libswresample.so.3 -> libswresample.so.3.9.100
libavutil.so.56 -> libavutil.so.56.70.100
libavcodec.so.58 -> libavcodec.so.58.134.100
7>i.MX6SLL Linux 操作系统,文件 /etc/xdg/weston/weston.ini,将 start-on-startup 更改为 true
[screen-share]
command=WLOG_APPENDER=file WLOG_FILEAPPENDER_OUTPUT_FILE_NAME=output.log WLOG_FILEAPPENDER_OUTPUT_FILE_PATH=/tmp /usr/ bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize --rdp-tls-cert=/etc/freerdp/keys/server.crt --rdp- tls-key=/etc/freerdp/keys/server.key
start-on-startup=true
8>
i.MX6SLL Linux 操作系统,在 cmd 下运行:
mkdir /etc/freerdp
mkdir /etc/freerdp/keys
/root/imx6sllevk-linux-lib/winpr-makecert -path /etc/freerdp/keys
mv /etc/freerdp/ keys/imx6sllevk.crt /etc/freerdp/keys/server.crt
mv /etc/freerdp/keys/imx6sllevk.key /etc/freerdp/keys/server.key
service weston 停止
服务 weston 启动
9>将usb网络适配器插入i.MX6SLL EVK板J10;i.MX6SLL 板和 PC 必须在同一网络中,ping 没有问题。
i.MX6SLL Linux OS,有两个名为“weston”的进程,一个进程是weston rdp 后端将屏幕共享到PC。如果只有一个 weston 进程,需要检查是否错过了任何新库的复制或检查库文件名。
10>PC端:
wfreerdp.exe /v:IPADDRESS_OF_IMX6SLLEVK
会弹出输入用户名和密码的对话框,按ESC键,PC端
会显示i.MX6SLL Linux桌面画面;单击 i.MX6SLL Linux OS 桌面的控制台按钮
,在该控制台中输入任何 i.MX6SLL Linux OS cmd,从 PC 端检查它的结果。