天天看点

Machinekit系列---适用于arm64的Machinekit安装

背景介绍

  老版本的Machinekit只适用于arm32位的系统。发展到了后期,开发人员将Machinekit一分为二。发展为后来的Machinekt-HAL(硬件抽象层)和 Machinekit-CNC(应用层)。

  而Machinekt-HAL发展过程中,早已支持arm64位系统。但是Machinekit-CNC却在一年前(2019年)停止更新维护,至今不支持arm64。那么,我们该怎么在arm64位系统上安装Machinekit呢?

  在之前和开发人员的交流过程中,他们推荐了EMCApplication来代替Machinekit-CNC。与Machinekit-CNC类似,EMCApplication也是基于Machinekit-HAL的基础上,开发的一款应用软件。

  那么现在,新的组合EMCApplication+Machinekit-hal诞生了,arm64位系统的小伙伴们也看到了福音。

官网对EMCApplication的介绍在下面网址,大家可以详细了解下。

https://github.com/machinekit/EMCApplication/issues/1

https://github.com/machinekit/emcapplication

Machinekit armhf 32位系统的安装方式在我的另一篇帖子里

https://blog.csdn.net/weixin_40293570/article/details/107937022

Machinekit-HAL安装

首先我们安装Machinekit-HAL(硬件抽象层),Machinekit开发组提供了两种安装方式:

1、使用docker,构建debian系统的安装包,生成.deb安装包后,拷贝到开发板上用dpkg -i指令安装

2、下载github源码,进行开发板本地编译。

在这里,由于个人觉得构建安装包比较繁琐,我使用的是源码编译方式安装。

(1)下载git源码并切换到源码所在目录,执行debian/bootstrap

git clone https://github.com/machinekit/machinekit-hal.git
cd machinekit-hal
debian/bootstrap
           

(2)安装编译所需工具和machinekit需要的依赖

  安装编译工具

sudo apt-get install build-essential fakeroot devscripts
           

  安装依赖

curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit/cfg/setup/bash.deb.sh' \
  | sudo -E bash
           

  上面的安装依赖是自动脚本方式,官方也提供了其他手动方式,网址如下

https://cloudsmith.io/~machinekit/repos/machinekit/setup/#formats-deb

  注意:目前只支持debian系统

  安装编译所需依赖

mk-build-deps -irs sudo
           

(3)进行本地编译

cd src
./autogen.sh
# for the Beaglebone, add --with-platform-beaglebone to ./configure
# for the Raspberry2, add --with-platform-raspberry to ./configure
./configure
           
make
sudo make setuid
           

(4)检查安装完整性

../scripts/check-system-configuration.sh
           

  像我的就有如下报错提示

Warning:  Logfile '/var/log/hal.log' does not exist.

          rsyslogd does not create non-existent log files; be
          sure the (possibly empty) logfile exists and
          restart rsyslogd

          Hint:
            $ sudo touch /var/log/hal.log
            $ sudo service rsyslog restart

          Gurus:  If you intentionally log to another file,
          please be aware of where Machinekit logs go for
          debugging purposes

Warning:  No rate limit in rsyslogd is set.

          The 'rsyslogd' daemon drops logs when incoming at
          higher than the rate configured by
          'SystemLogRateLimitBurst'.  The default rate is lower
          than Machinekit requires when running in debug mode.

          Hint:
            $ sudo cp rtapi/rsyslogd-hal.conf /etc/rsyslog.d/hal.conf
            $ sudo service rsyslog restart

Warning:  no configuration for 'memlock' found

          Hint:
            $ sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf
           

  根据提示,进行操作

sudo touch /var/log/hal.log
sudo cp rtapi/rsyslogd-hal.conf /etc/rsyslog.d/hal.conf
sudo service rsyslog restart
sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf
           

(5)最后一步

cd ..    //切换回machinekit-hal目录下
. ./scripts/rip-environment
           

  大功告成,现在执行halrun,你就可以看到命令行了

EMCApplication安装

  现在我们安装 EMCApplication(应用层),Machinekit开发组提供了两种安装方式:

1、自动脚本,用package安装

2、下载github源码,进行开发板本地编译。

  由于开发组的脚本做的真的是方便,我偷懒使用的脚本。安装package方式。

(1)执行下面三个脚本

curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit/cfg/setup/bash.deb.sh' \
  | sudo -E bash
           
curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit-hal/cfg/setup/bash.deb.sh' \
  | sudo -E bash
           
curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/emcapplication/cfg/setup/bash.deb.sh' \
  | sudo -E bash
           

(2)安装EMCApplication,(开发板需要联网)

sudo apt install emcapplication
           

(3)进行剩下的工作

sudo -i
echo -e 'ANNOUNCE_IPV4=0\nANNOUNCE_IPV6=0' >> /etc/machinekit/machinekit.ini
exit
           

(4)安装完成,运行EMCApplication

linuxcnc
           

有的兄弟懵逼了,为什么是输入linuxcnc呢?其实仔细看就会发现,无论是Machinekit-CNC还是EMCApplication,似乎都有linuxcnc的影子,估计开发组是在之前linuxcnc的代码基础上,开发的后两款产品

以上,Machinekit-HAL和EMCApplication就已经安装完成了

哪个兄弟不嫌麻烦的,本地编译的安装EMCApplication的方式也可以去尝试下,其实也很简单,跟Machinekit-HAL安装过程类似:

curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit/cfg/setup/bash.deb.sh' \
  | sudo -E bash
curl -1sLf \
  'https://dl.cloudsmith.io/public/machinekit/machinekit-hal/cfg/setup/bash.deb.sh' \
  | sudo -E bash
git clone https://github.com/machinekit/emcapplication.git
cd emcapplication
sudo apt install build-essential fakeroot devscripts python
debian/configure machinekit-hal no-docs
mk-build-deps -irs sudo
cd src
./autogen.sh
./configure --with-hal=machinekit-hal
make
sudo make install
cd ..
source ./scripts/rip-environment