构建基于树莓派cm4的机器人控制系统的运行环境
测试硬件使用codepi基于树莓派CM4模块 。
硬件链接:https://item.taobao.com/item.htm?spm=a230r.1.14.16.6879160ehlKqAX&id=635013789059&ns=1&abbucket=1#detail
首先根据codepi说明书,安装好厂商提供的原始镜像 。
1安装依赖库:
1)Qt安装:
使用linaro7.5编译工具
参考https://www.jianshu.com/p/0b86b42eed71
./configure -release -opengl es2 -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=/opt/linaro7.5/bin/arm-linux-gnueabihf- -sysroot /opt/raspi/sysroot -opensource -confirm-license -reduce-exports -make libs -prefix /usr/local/qt5pi -extprefix /opt/raspi/qt5pi -hostprefix /opt/raspi/qt5pi-host -v
经验:
1)树莓派上面安装 sudo apt get install libgles2mesadev libgbmdev 不成功 。缺少该库会导致编译qt时,qmake不成功 。
在树莓派上面 apt-get qt时,默认安装的是5.11.3,就不需要手动安装 libgles2 libgbmdev了 。但是安装qtcreator不成功 。
2)apt-cache search qt5apt-cache show qt5-default
sudo apt-get install qt5-default
在x86主机上面完成交叉编译 。
2)Opencv
参考 https://blog.csdn.net/ett_qin/article/details/88116899
1) 在树莓派上面编译opencv(cv2.cpp 需要修改代码添加(char *) 和python数据转换相关 。),然后将库拷贝到ubuntu,qtcreator编译程序时,由于两个平台的编译器不一样,会导致一个报错 。所以必须在ubuntu上面进行交叉编译 。
2)参考进行交叉编译 cmake-gui配置,不需要依赖树莓派任何路径 。需要屏蔽protocol cuda,否则编译报错 。
cmake-catchlist 需要配置一个参数,否则编译报错 。
3)编译完成的库,需要拷贝到/lib路径下面,否则找不到库,声明库路径也不行 。放在可执行文件的上2级目录lib下面 。
3)Eigen3
apt-get install eigen3-dev
树莓派环境安装ccmake用于预编译kdl
apt-get install cmake-curses-gui
4)Libmodbus3.0.8
参考https://libmodbus.org/documentation/
在树莓派环境编译modbus 3.0.8
5)KDL
树莓派环境安装ccmake用于预编译kdl
apt-get install cmake-curses-gui
在树莓派环境编译kdl
2编译更换RT内核
下载带RT补丁的内核https://github.com/kdoren/linux
在X86上面编译:
交叉编译:https://blog.csdn.net/u014695839/article/details/83720145
RT树莓派内核源码:https://github.com/kdoren/linux
CM4修改:
make ARCH=arm CROSS_COMPILE=../tools-master/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- bcm2711_defconfig
KERNEL=kernel7l
make ARCH=arm CROSS_COMPILE=../tools-master/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- menuconfig 需要改为RT内核选项 。
make ARCH=arm CROSS_COMPILE=../tools-master/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -j4 deb-pkg生成DEB安装包
拷贝deb包到树莓派:
apt install ./linux-image-5.10.73-rt54-v7l+_5.10.73-1_armhf.deb# 32-bit kernel
KERN=5.10.73-rt54-v7l+# 32-bit kernel
mkdir -p /boot/$KERN/overlays/
cp -d /usr/lib/linux-image-$KERN/overlays/* /boot/$KERN/overlays/
cp -dr /usr/lib/linux-image-$KERN/* /boot/$KERN/
[[ -d /usr/lib/linux-image-$KERN/broadcom ]] && cp -d /usr/lib/linux-image-$KERN/broadcom/* /boot/$KERN/
touch /boot/$KERN/overlays/README
mv /boot/vmlinuz-$KERN /boot/$KERN/
mv /boot/initrd.img-$KERN /boot/$KERN/
mv /boot/System.map-$KERN /boot/$KERN/
cp /boot/config-$KERN /boot/$KERN/
修改文件/boot/config.txt,在末尾替换追加 。
cat >> /boot/config.txt << EOF
[all]
kernel=vmlinuz-$KERN
# initramfs initrd.img-$KERN
os_prefix=$KERN/
overlay_prefix=overlays/$(if [[ "$KERN" =~ 'v8' ]]; then echo -e "\narm_64bit=1"; fi)
EOF
3编译IGH
树莓派环境编译IGH时,make modules会报错 。
在x86环境下交叉编译
./configure --prefix=/agvwork/igh/ethercat-stable-1.5/etherlab --with-linux-dir=/opt/linux-headers-5.4.75-rt41-v7l --enable-8139too=no --enable-generic=yes make ARCH=arm CROSS_COMPILE=/opt/raspberry/tools-master/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -j4
4常用命令
1)查看网卡速度
iftop2)查看网络配置和设置网卡模式
mii-toolhttps://blog.csdn.net/chinalinux ... 7Edefault-1.baidujs
3)关闭codesys
SSH连上或用ALT+F4关闭界面,然后编辑/etc/xdg/lxsession/LXDE-pi/autostart,把chromium那行删掉就可以
sudo apt-get --purge remove codesyscontrol*
4)扩大系统UDP缓冲区大小,解决resend问题 。
sysctl net.core.rmem_max
su
echo 16777216 > /proc/sys/net/core/rmem_max
sudo nano /etc/rc.local 添加参数配置 echo 16777216 > /proc/sys/net/core/rmem_max
5)CPU频率:
推荐阅读
- 什么是前端工程化?Letjs助你构建项目代码
- Python:基于 RGB-D 图像的点云计算
- 「Gradle 进阶」史上最全的 Gradle 构建技术知识点都在这里了
- 树莓的种植方法 树莓种植
- 如何构建计算机网络安全防护体系 计算机网络安全
- 不会构建知识体系,不会思考怎么办?快来用九宫格法帮你搞定
- 保险科技迭代升级:众安科技新一代DevOps实践成功构建
- 连信是什么?
- 什么是VHDL?一文带你了解VHDL语言
- 如何构建良好的师生关系?