Using SWV (SWO) on STM32 with OpenOCD – the Easy Way

Debug printf via STM32 SWO can be very valuable in tracking application flow and debugging applications that have to run in the long term. If you search online for “STM32 SWV”, you can find many tutorials for STM32CubeIDE, but they are not applicable when you are using CLion (or not using IDE at all). This article proposes a quick and simple way to enable SWO output with barebone OpenOCD, without any dependencies.

继续阅读“Using SWV (SWO) on STM32 with OpenOCD – the Easy Way”

关于较老的 Intel 网卡无法搜索到 Wi-Fi 6 (ax) 网络的问题

最近将家庭网络的 AP 升级到了 WiFi 6。升级后,发现一台 2014 年购买的笔记本电脑无法搜索到新的 WiFi 网络。此电脑使用了 Intel Wireless-AC 7265 网卡。在网上搜索“intel 7265 ac wifi 6”关键词,可以找到这个 Intel 官方支持页面,其中提示“Wireless Adapters supporting 802.11ac may not show Wi-Fi 6 (802.11ax) networks in their scan lists”,而解决方法是更新驱动程序。Intel 7265 网卡有两个硬件版本(Rev.C 和 Rev.D),而这台电脑搭载的是较老的 Rev.C 版本。在支持页面中提示 Rev.C 版本需更新到“18.33.13.4 或更新版”驱动,但随着 7265 Rev.C 版本的停止支持,此驱动已经无法下载,官网下载的最新版驱动程序也没法驱动 7265 Rev.C。于是我在淘宝上花 30 元购买了一个 7265 Rev.D 版本的无线网卡,替换后,在官网下载最新驱动程序,即可成功联网。

nix-env 安装 Python 的包

近日在 mac 上编译使用 nanopb 的程序,需要一个带有 grpcio-tools 包的 Python3 环境。我的 mac 使用 nix 来安装包,在此记录安装方法:

# py.nix
{ pkgs ? import <nixpkgs> {} }:
let
  my-python-packages = p: with p; [
    grpcio-tools
    # other python packages
  ];
  my-python = pkgs.python3.withPackages my-python-packages;
in my-python

然后执行 nix-env -i -f py.nix 即可。

Overleaf 3.3.1 安装 scheme-full 的步骤

最近把自建的 Overleaf 更新到了 3.3.1 版本,在安装 scheme-full 的时候老是出错。下面记录一下正确的安装步骤。

非常重要的一点是,如果你已经执行过安装命令,并且安装失败(不论是网络错误还是其他错误),那么必须从头开始,否则已经安装的文件会产生干扰。我们可以使用 bin/docker-compose up --force-recreate 来重新创建 docker 镜像。

创建好后,我们使用 docker exec -it sharelatex bash 进入容器,然后执行以下命令:

# 换成 BFSU 镜像源(用 opentuna 镜像似乎会出错,原因不明)
tlmgr option repository https://mirrors.bfsu.edu.cn/CTAN/systems/texlive/tlnet/
# 升级 tlmgr 和现有软件包
tlmgr update --self --all
# 临时修正 path 缺失的问题(如果不执行这一步,后面安装 scheme-full 的时候会出现 mtxrun 找不到的错误)
export PATH=$PATH:/usr/local/texlive/2022/bin/x86_64-linux
# 安装 scheme-full
tlmgr install scheme-full
# 将新安装的 bin 添加到 /usr/local/bin(此时才会将 mtxrun 添加到 /usr/local/bin)
# 如果不执行这句,xelatex 无法使用
tlmgr path add

获取 TP-Link TL-AC100 v3.0 的 root 权限

近日在闲鱼买了一个 TL-AC100 无线控制器,来实现 AP 的无缝漫游。ACWiFi 的一篇帖子说 v3.0 和 v4.0 的硬件一模一样,所以我就想试试将 v4.0 的固件刷到 v3.0 里面。不过,固件升级的逻辑带有签名验证,直接刷会提示失败,因此想刷机就必须先获得 root 权限。本文记载我获取 root 设备权限的过程。

继续阅读“获取 TP-Link TL-AC100 v3.0 的 root 权限”

SmartCross 工作日志 #3 – 音量问题

我希望 SmartCross 输出设备在开机时保持较小的音量,避免播放音频时突然声音很大。但我发现无论怎么在驱动里面调整初始音量,开机后音量总是在 -20dB。

我在调整音量的代码(master_vol_put)中插入了以下诊断语句:

	printk("Current PID is  %d %s\n", current->pid, current->comm);
	printk("Current parent PID is  %d %s\n", current->real_parent->pid, current->real_parent->comm);

抓取发现是 alsactl (PID=219) 调整了音量,其父进程是 systemd (PID=1)。于是用 journalctl 查看 219 进程所属的服务:journalctl _PID=219,发现其属于 alsa-restore.service。只需要在 buildroot 菜单中去掉 alsactl 工具,这个服务就没有了。

联通 VN007+ 5G CPE 拆解

近日去计算所实习,所里的网络实在糟糕,但 5G 信号很好,因此萌生了购买一个 5G CPE 用于上网的想法。查阅网上资料得知,VN007+ 这个型号的 CPE 不仅便宜,且性能尚可,因此从二手平台购买了一台。买都买了,当然要拆了。本文记载此机器的拆解过程,并含有机器内部结构高清大图。

继续阅读“联通 VN007+ 5G CPE 拆解”

Linux 多用户环境下 Vivado 无法连接 Digilent JTAG 适配器的解决方法

最近在所里的项目需要多个人在同一台服务器上连接 FPGA 进行开发调试。在使用的过程中,观察到一个奇怪的现象:有时在 Vivado 的 Hardware Manager 中,点击 Auto Connect 过后,Hardware 窗格中只出现一个 localhost,而无法找到 JTAG 适配器。本文记述此问题的调试过程和解决方法。

继续阅读“Linux 多用户环境下 Vivado 无法连接 Digilent JTAG 适配器的解决方法”
WordPress Appliance - Powered by TurnKey Linux