在 Linux 下配置 xrdp 的一些经验

如何在 macOS 上连接 Linux 远程桌面呢?我的答案是:xrdp!

在苹果系统上使用微软的协议来连接 Linux 机器,无疑是一种比较扭曲的行为;但这确实是我目前为止尝试过无数方法中,效果最好的一种。这种方式非常流畅,甚至可以远程播放视频。

在此记录一下我配置 xrdp 时遇到的问题以及解决方案,供大家参考。

继续阅读“在 Linux 下配置 xrdp 的一些经验”

解决 Debian 11 系统下 MATLAB 字体渲染丑、中文无法显示的问题

有 Linux 系统下 MATLAB 使用经验的同学应该知道,MATLAB 在渲染某些字体时可谓奇丑无比(如下图)。除此之外,MATLAB 附带的 JRE 还无法找到中文字体,导致语言设为中文时,界面全部显示方框。本文简要说明这些问题的解决方法。

继续阅读“解决 Debian 11 系统下 MATLAB 字体渲染丑、中文无法显示的问题”

使用内核模块处理用户进程的异常

计算机组成课程一直使用 Xilinx ISE 作为 Verilog 自动评测工具。最近我们在调研使用 Synopsys VCS 替换 ISE,搭建新的自动化测试平台,在替换的过程中,陈昊同学发现了 VCS 的一个 bug,使得部分老代码在 VCS 上无法正常仿真。通过修改内核来劫持异常逻辑,我成功修复了这个 bug。本文介绍我的探索思路和修复代码。

继续阅读“使用内核模块处理用户进程的异常”

关于用户无效输入处理的小想法

编写用户界面逻辑时,我们需要处理用户无效输入,或在某些情况下禁止用户操作。要应对这种意外情况,有两类方法:“先发制人”,隐藏无效操作的按钮或界面元素,让用户根本无法进行无效操作;“坐以待毙”,在用户进行无效操作后,弹出错误提示。本文针对这两种方法的优劣进行讨论。

继续阅读“关于用户无效输入处理的小想法”

STM32 使用 OpenOCD+CLion 调试时系统时钟频率不正确的问题解决

使用 CLion 开发 STM32 程序日渐成为一种新时尚。在 CLion 中,我们一般使用 OpenOCD 作为 gdb server 来进行调试。

在使用 LL 库的过程中,使用“调试”功能时,我发现了一个比较严重的问题:如果点击“调试”按钮来启动程序,并且 CLion 运行配置中选择的启动模式是 reset init,单片机的系统时钟频率就会不正确(始终为 64MHz),并且抖动很大;然而,如果点击“运行”按钮来启动程序,又一切正常。上述问题在使用 HAL 库时依然存在,且问题更加严重:程序在配置系统时钟的函数里直接卡死,进入 Error_Handler。本文对此故障进行分析,并提出解决方法。

继续阅读“STM32 使用 OpenOCD+CLion 调试时系统时钟频率不正确的问题解决”

MP5416 OTP GUI 软件连接芯片的方案(无需 Eval Kit)

MP5416 是一款便宜大碗的电源芯片,包含 4 路 DCDC、5 路 LDO,且电压、上电时序均可使用 I2C 配置。这么牛逼的芯片,居然 tb 5 块钱就能买到(今年芯片涨价前甚至只要 1 块多),实在是无人能及了。本文简单介绍 MP5416 的联机方法。

继续阅读“MP5416 OTP GUI 软件连接芯片的方案(无需 Eval Kit)”

为什么在门级仿真中不使用 X 作为寄存器的初始值

我们在做数字逻辑仿真时,通常用 X (unknown) 作为寄存器的初始值(仿真器的默认行为),这样可以通过 X 值的传播使未初始化的寄存器暴露出来。然而,这种方法并不总是准确的,其会导致一些情形下,原本应为有效值的信号也被误判为 X。如果设计中使用了同步复位,在综合后的网表级仿真时,很容易发生这种误判。

继续阅读“为什么在门级仿真中不使用 X 作为寄存器的初始值”
WordPress Appliance - Powered by TurnKey Linux