From d0229be8708323a1ef13bc06d9274088916e0e32 Mon Sep 17 00:00:00 2001
From: kira-96
Date: Sat, 30 Mar 2024 04:40:18 +0000
Subject: [PATCH] deploy: 260252da1f3fc1294e03bd60dcb860d00151d2d3
---
archives/index.html | 2 +-
categories/epics/index.html | 20 +--
categories/epics/index.xml | 2 +-
index.html | 14 +-
index.json | 2 +-
index.xml | 2 +-
notes/cross-compiling-acai/index.html | 10 +-
notes/index.html | 6 +-
posts/build-epics-module-modbus/index.html | 10 +-
posts/epics-ioc-access-security/index.html | 4 +-
.../index.html" | 14 +-
posts/index.html | 14 +-
posts/index.xml | 2 +-
.../index.html" | 2 +-
.../index.html" | 44 +++---
.../index.html" | 2 +-
.../index.html" | 144 +++++++++++++-----
.../index.html" | 38 ++---
tags/epics/index.html | 20 +--
tags/epics/index.xml | 2 +-
tags/linux/index.html | 20 +--
tags/linux/index.xml | 2 +-
"tags/\351\276\231\350\212\257/index.html" | 20 +--
"tags/\351\276\231\350\212\257/index.xml" | 2 +-
24 files changed, 218 insertions(+), 180 deletions(-)
diff --git a/archives/index.html b/archives/index.html
index e46553a..c8d1fcb 100644
--- a/archives/index.html
+++ b/archives/index.html
@@ -1,6 +1,6 @@
存档 | ✨kiraの博客
EPICS IOC 访问安全
三月 18, 2024 · 3 分钟 · 564 字
龙芯开发板移植 IgH EtherCAT Master
二月 23, 2024 · 13 分钟 · 2759 字
EPICS的MODBUS模块的编译和使用
一月 2, 2024 · 6 分钟 · 1260 字
交叉编译EPICS和IOC
十二月 12, 2023 · 4 分钟 · 712 字
Linux LED子系统
十一月 11, 2023 · 1 分钟 · 185 字
EPICS Qt安装
五月 4, 2023 · 2 分钟 · 342 字
龙芯2K500开发板上实现的呼吸灯效果
二月 19, 2023 · 3 分钟 · 452 字
龙芯3A5000(loongarch64)上编译运行EPICS
二月 1, 2023 · 4 分钟 · 842 字
Linux GPIO 操作其一
一月 12, 2023 · 3 分钟 · 498 字
WSL libcuda.so.1 is not a symbolic link 的解决方法
二月 9, 2022 · 1 分钟 · 422 字
交叉编译适用于 iMX6UL 的 x11vnc
二月 6, 2022 · 3 分钟 · 1029 字
开始一份新工作
七月 11, 2021 · 3 分钟 · 1315 字
在 Windows 上编译 MITK
三月 29, 2021 · 4 分钟 · 1559 字
Gitea 安装使用
三月 22, 2021 · 3 分钟 · 1076 字
一些常用的git命令
十一月 26, 2020 · 3 分钟 · 1227 字
Inno Setup 简体中文语言包
十月 16, 2020 · 1 分钟 · 265 字
Prism note
九月 4, 2020 · 3 分钟 · 1338 字
Inno Setup 6.1.0 新增的功能体验
八月 20, 2020 · 3 分钟 · 1125 字
C#传递函数指针到C++
七月 17, 2020 · 2 分钟 · 780 字
DICOM图像像素相关Tag说明
六月 15, 2020 · 4 分钟 · 1948 字
Rust 学习资源收集
六月 4, 2020 · 1 分钟 · 63 字
三维图形矩阵变换
五月 5, 2020 · 5 分钟 · 2086 字
一些基本没什么用的MFC技巧
四月 24, 2020 · 4 分钟 · 1900 字
如何获取Windows10主题颜色
四月 24, 2020 · 5 分钟 · 2328 字
为程序添加通知栏图标
三月 25, 2020 · 2 分钟 · 910 字
应用程序单例模式
三月 25, 2020 · 3 分钟 · 1415 字
WPF 获取命令行参数
三月 25, 2020 · 1 分钟 · 418 字
在树莓派上安装 Power Shell 并用 oh-my-posh 美化
三月 7, 2020 · 3 分钟 · 1310 字
Newtonsoft.NET 基本使用
二月 22, 2020 · 3 分钟 · 1286 字
个人常用软件分享
二月 22, 2020 · 1 分钟 · 272 字
Stylet 框架体验
十二月 12, 2019 · 5 分钟 · 2493 字
使用 Named Pipe 进行进程间通讯
十一月 15, 2019 · 3 分钟 · 1285 字
Hprose C# 初探
八月 19, 2019 · 2 分钟 · 809 字
Thrift C# 初探
八月 19, 2019 · 3 分钟 · 1318 字
gRPC C# 初探
八月 18, 2019 · 3 分钟 · 1363 字
WPF和MFC进程间传递数据
五月 27, 2019 · 3 分钟 · 1339 字
WPF如何处理Windows消息
五月 26, 2019 · 2 分钟 · 739 字
Markdown 常用语法备忘
五月 9, 2019 · 5 分钟 · 2368 字
好用的 Markdown 编辑器 - 全平台
四月 25, 2019 · 1 分钟 · 131 字
前言 之前已经讲过在龙芯3A5000(loongarch64)上编译运行EPICS,不过这种情况只适用于有完整开发环境的情况下进行编译。一些时候,我们只有编译器,而缺少make,perl等工具,比如一些开发板厂商提供的开发套件。这种情况下,就需要通过交叉编译(cross-compiling)的方式来编译EPICS。
+EPICS base 编译完成后,可以看到bin目录下有linux-loong64、linux-x86_64两个目录,linux-x86_64目录下比linux-loong64目录多出了许多perl脚本,我们需要把这些脚本复制到龙架构的目录下,下面编译需要用到。
+1 $ cp ./bin/linux-x86_64/*.pl ./bin/linux-loong64/ 编译 在EPICS-Qt安装中已经介绍过编译ACAI。这次是使用交叉编译方式,步骤略有不同。
+1 2 3 4 5 6 7 8 9 10 11 12 cd ~/loongson/ git clone https://github.com/andrewstarritt/acai.git cd acai vi configure/RELEASE.local # 修改交叉编译的目标架构,和EPICS base中保持一致 EPICS_HOST_ARCH=linux-loong64 # 修改EPICS_BASE路径,例: EPICS_BASE=/home/ubuntu/loongson/base-7.0.8 make LD=loongarch64-linux-gnu-ld CC=loongarch64-linux-gnu-gcc CCC=loongarch64-linux-gnu-g++ # 等待编译完成 编译完成后可以在lib/linux-loong64/目录下找到libacai.so。
前言 之前已经讲过在龙芯3A5000(loongarch64)上编译运行EPICS,不过这种情况只适用于有完整开发环境的情况下进行编译。一些时候,我们只有编译器,而缺少make,perl等工具,比如一些开发板厂商提供的开发套件。这种情况下,就需要通过交叉编译(cross-compiling)的方式来编译EPICS。
这里以龙芯金龙2K500先锋开发板为例,我们使用Ubuntu-20.04作为构建系统,详细讲解如何构建出可以在开发板上运行的EPICS工具包,并部署在开发板上。
由于开发板上没有开发环境,即使编译出目标平台的EPICS Base,我们依然不能直接在开发板上创建和编译IOC。所以,我们还是使用Ubuntu-20.04作为构建系统,创建并编译IOC,最后在开发板上运行。
配置交叉编译环境 关于这一节,之前的文章已经详细讲过,参考配置交叉编译环境。
如果你使用的是其他开发套件,请按照开发手册安装配置好环境。
编译 EPICS Base 首先,下载、解压Base,参考以前的文章。
在龙芯3A5000(loongarch64)上编译运行EPICS中我已经详细讲解了如何在龙架构上编译EPICS,这次,需要在原来对源码修改的基础上,再增加对交叉编译的支持。
-添加configure/os/CONFIG.linux-x86_64.linux-la64
-1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # CONFIG.linux-x86_64.linux-la64 # # Definitions for linux-x86_64 host - linux-la64 target builds # Sites may override these in CONFIG_SITE.linux-x86_64.linux-la64 #------------------------------------------------------- VALID_BUILDS = Ioc Command GNU_TARGET = loongarch64-linux-gnu # prefix of compiler tools CMPLR_SUFFIX = CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET)) # Provide a link-time path for readline if needed OP_SYS_INCLUDES += $(READLINE_DIR:%=-I%/include) READLINE_LDFLAGS = $(READLINE_DIR:%=-L%/lib) RUNTIME_LDFLAGS_READLINE_YES_NO = $(READLINE_DIR:%=-Wl,-rpath,%/lib) RUNTIME_LDFLAGS += \ $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH)_$(STATIC_BUILD)) SHRLIBDIR_LDFLAGS += $(READLINE_LDFLAGS) PRODDIR_LDFLAGS += $(READLINE_LDFLAGS) # Library flags STATIC_LDFLAGS_YES= -Wl,-Bstatic STATIC_LDFLAGS_NO= STATIC_LDLIBS_YES= -Wl,-Bdynamic STATIC_LDLIBS_NO= 添加configure/os/CONFIG_SITE....
需要使用的软件 Strawberry Perl for Windows EPICS Base 编译Base需要有gcc、g++、make、perl这些工具,但其实我们只需要安装Strawberry Perl就可以了,安装完成后就有了MinGW的编译环境,足够编译安装EPICS了。
这里使用MinGW环境编译EPICS,不使用MSVC编译器。
安装 Strawberry Perl 这里选择 Strawberry Perl 5.32.1.1。经测试base-7.0.7可正常编译,后续版本的perl编译会报错。
@@ -68,9 +68,10 @@
先下载Qwt的源码 下载Qwt-6.2.0。 下载完成后解压
1 2 3 4 # 解压tar.bz2 tar -jxvf qwt-6.2.0.tar.bz2 # 解压zip unzip qwt-6.2.0.zip 解压完成后编译Qwt,使用QtCreator或者在终端使用qmake都可以。
然后手动将编译生成的文件复制到以下位置,例:
-1 2 3 4 5 6 7 # 复制编译生成的qwt sudo cp -r build-qwt-unknown-Release/lib/* /usr/lib/loongarch64-linux-gnu/ # 复制编译生成的designer插件 sudo cp build-qwt-unknown-Release/designer/plugins/designer/libqwt_designer_plugin....
前言 之前尝试过在龙芯3A4000上编译运行EPICS,由于3A4000还是mips64指令集,而3A5000则是龙芯的自主指令集loongarch64,适配起来步骤也会有所不同。
+1 2 3 4 5 6 7 # 复制编译生成的qwt sudo cp -r build-qwt-unknown-Release/lib/* /usr/lib/loongarch64-linux-gnu/ # 复制编译生成的designer插件 sudo cp build-qwt-unknown-Release/designer/plugins/designer/libqwt_designer_plugin....
前言 之前尝试过在龙芯3A4000上编译运行EPICS,由于3A4000还是mips64指令集,而3A5000则是龙芯的自主指令集loongarch64,适配起来步骤也会有所不同。
这次使用的是龙博特龙芯3A5000电脑主机。
虽然EPICS官方并没有适配loongarch和mips64,无法做到开箱即用,但只要有gcc、g++、make、perl这些工具,理论上就能编译运行EPICS,在开始编译前,确保你的设备上已经装好了这些工具。
+关于如何称呼「龙架构」,龙芯社区也有一些讨论。最初我直接使用loongarch64,后来也使用过la64作为简写,直到我看到如何称呼龙架构?,我觉得有必要和社区保持一致,后续统一使用 loong64 作为架构标识。
下载 base 这里我们就以目前最新版本7.0.7为例,其它版本的Base也类似。
1 2 3 $ cd ~/下载/ $ wget https://epics.anl.gov/download/base/base-7.0.7.tar.gz $ tar -xzvf base-7.0.7.tar.gz 你可以在你觉得合适的位置编译安装Base,这里按我们的习惯,放在/usr/local/epics目录下。
1 2 $ mkdir /usr/local/epics $ mv base-7.0.7 /usr/local/epics/ 编译 按照一般步骤,现在就可以开始编译了,我们可以先尝试一下,看看是什么结果。
@@ -81,12 +82,7 @@
1 $ vi ./src/tools/EpicsHostArch.pl 它其实就是一个perl脚本,用来判断当前的系统和cpu架构,而loongarch64显然没有做适配,所以就出现了上面错误。
“Architecture ’loongarch64-linux-gnu-thread-multi’ not recognized”
既然识别不了loongarch64,那我们就手动添加一行,让它可以识别就行了,即使看不太懂上面的脚本也没关系,看个半懂就行了。
-我们在如图的光标位置添加一行内容,来让它可以识别loongarch64架构。
-1 return 'linux-la64' if m/^loongarch64-linux/; 此时我们再执行一下make命令。
-可以看到,现在已经可以识别出loongarch64-linux了,报错和在3A4000上编译时也基本一样了。
-以下步骤同样适用于在3A4000(mips64)上编译EPICS,只需要将la64全部替换为mips64
-剩下的报错就是,没有找到对应的编译配置项,我们同样可以仿照已经做了适配的架构来改写,直接按照下面步骤来就可以了。
-添加 CONFIG.Common.linux-la64 1 2 3 4 $ cd configure/os/ # 添加 CONFIG....