您尚未登录。

楼主 # 2021-07-04 13:45:38

taotieren
会员
注册时间: 2020-05-19
已发帖子: 56
积分: 51

Linux 下给 Link2/LPC-Link2 调试器刷 CMSIS-DAP 和 J-Link 固件

NXP 提供的 LPCScrypt 工具支持 Linux macOS 和 Windows
https://www.nxp.com/design/microcontrollers-developer-resources/lpcscrypt-v2-1-2:LPCSCRYPT
官网给的 Linux 版本的 LPCScrypt.deb.bin 工具看名称是 Debian/Ubuntu 衍生版才能安装使用,
我 Arch 用户或其他 Linux 发行版用户想使用怎么办?
---- 开始骚操作了------
1. 注册 NXP 官网下载相应的 Linux 版本文件

2. 用文本编辑器打开看了下里面的内容

前半部分是 shell 脚本 从 499 行开始就是乱码了
第 437 行有这个提示:offset=`head -n 498 "$0" | wc -c | tr -d " "`

推测 NXP 是使用 gzexe 进行了压缩和简单的加密处理

3. 开始 bin 解密
tail -n +499 lpcscrypt-2.1.2_57.x86_64.deb.bin > lpcscrypt-2.1.2_57.x86_64.deb

得到一个 deb 包(不知道是不是正常的 deb 包,进行下一步验证)

4. 解压 deb 包

bsdtar -xf lpcscrypt-2.1.2_57.x86_64.deb
解压成功(狗头保命

5. 解压 data.tar.gz
mkdir -p build
tar -xf data.tar.gz -C build
得到 NXP 的编译后的二进制文件
ls usr/local/lpcscrypt-2.1.2_57/     
bin  docs  eula  images  probe_firmware  scripts

6. 这下就能进行 AUR 打包处理了
编译 PKGBUILD 打包脚本

# Maintainer: taotieren <admin@taotieren.com>
# Contributor:

pkgname="lpcscrypt-bin"
pkgver=2.1.2
pkgrel=1
pkgdesc="LPCScrypt is the recommended tool for programming the latest versions of CMSIS-DAP and J-Link firmware onto boards with Link2/LPC-Link2 debug probes."
arch=("x86_64")
makedepends=('imagemagick')
depends=('jlink-software-and-documentation')
optdepends=()
conflicts=()
url="https://www.nxp.com/design/microcontrollers-developer-resources/lpcscrypt-v2-1-2:LPCSCRYPT"
license=('Commercial' 'Apache-2.0' 'BSD-4-clause' 'BSD-3-clause' 'LGPLV2.1' 'GPLV2' 'Zlib')
options=(!strip)
_pkgver_ext=${pkgver}_57
_pkg_file_name=${pkgname%-bin}-${_pkgver_ext}.${arch}.deb.bin
_deb_file_name=${pkgname%-bin}-${_pkgver_ext}.${arch}.deb
_DOWNLOADS_DIR=`xdg-user-dir DOWNLOAD`
if [ ! -f ${PWD}/${_pkg_file_name} ]; then
        if [ -f $_DOWNLOADS_DIR/${_pkg_file_name} ]; then
                ln -sfn $_DOWNLOADS_DIR/${_pkg_file_name} ${PWD}
        else
                msg2 ""
                msg2 "The package can be downloaded here: "
                msg2 "Please remember to put a downloaded package ${_pkg_file_name} into the build directory ${PWD} or $_DOWNLOADS_DIR"
                msg2 ""
        fi
fi

source=("local://${_pkg_file_name}")
sha256sums=('379c63b788a72e64571af870d760ad6b3be32e4c863d29ca58276f750e416750')
noextract=(${_pkg_file_name})

prepare(){
        cd "$srcdir"
    tail -n +499 ${_pkg_file_name} > ${_deb_file_name}
    mkdir -p build
    bsdtar xf ${_deb_file_name} -C build
    bsdtar xf build/${_deb_file_name} -C build
}
package() {
        cd "$srcdir"

        msg2 'Installing LPCScrypt'
        tar xf "build/data.tar.gz" -C "${pkgdir}/"
        mv "${pkgdir}/lib" "${pkgdir}/usr"
        msg2 'Instalation of binary file'
        install -Dm0755 /dev/stdin "${pkgdir}/usr/bin/${pkgname%-bin}" <<END
#!/bin/sh
/usr/local/lpcscrypt-2.1.2_57/bin/lpcscrypt "\$@"
END

        msg2 'Instalation of license file'
        install -dm0755 "${pkgdir}/usr/share/licenses/${pkgname%-bin}/"
        cp -rv  "${pkgdir}/usr/local/lpcscrypt-2.1.2_57/eula" "${pkgdir}/usr/share/licenses/${pkgname%-bin}/"
}

#
# makepkg --printsrcinfo > .SRCINFO
#

# vim: set ts=8 sw=8 tw=0 noet:

7. 上传到 AUR 仓库
https://aur.archlinux.org/packages/lpcscrypt-bin/

离线

#1 2021-07-04 18:08:18

metro
会员
注册时间: 2019-03-09
已发帖子: 348
积分: 320

Re: Linux 下给 Link2/LPC-Link2 调试器刷 CMSIS-DAP 和 J-Link 固件

这个不错,理论上应该按照这个方法所有发行版都能用?

离线

楼主 #2 2021-07-08 10:28:42

taotieren
会员
注册时间: 2020-05-19
已发帖子: 56
积分: 51

Re: Linux 下给 Link2/LPC-Link2 调试器刷 CMSIS-DAP 和 J-Link 固件

metro 说:

这个不错,理论上应该按照这个方法所有发行版都能用?

是的,只要能按照这个解密流程将 deb 包提出出来再进行解压就行了,其他 linux 也可以参考这个流程

离线

楼主 #3 2021-07-08 10:32:12

taotieren
会员
注册时间: 2020-05-19
已发帖子: 56
积分: 51

Re: Linux 下给 Link2/LPC-Link2 调试器刷 CMSIS-DAP 和 J-Link 固件

由于论坛不支持 markdown 编辑器,完整的排版再这里:

https://blog.csdn.net/taotieren/article/details/118461519

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn