解决 gcc + openocd + stm32 烧录程序时覆盖 bootloader 的问题

我希望将 bootloader 放到 0x08000000,主程序放到 0x08008000。gcc 编译时默认会把 Program Header 的 Align 调到 0x10000,导致产生的 ELF 文件的加载地址从 0x08000000 起始,openocd 烧写时会覆盖掉 bootloader,产生麻烦。解决办法是在链接器参数中增加 -z max-page-size=4096,调小页面大小;或者直接增加 -n选项,让 Program Header 不要对齐。修改后,烧录时就不会覆盖掉 bootloader 了。

APC BP1000CH UPS 调试记录

TL;DR: 这是一款套牌产品,实际使用的不是 APC 的协议,而是 Voltronic 的协议。这款 UPS 可以用 NUT 工具来连接电脑,实现 Linux 系统下的自动关机,只需使用 https://networkupstools.org/protocols/voltronic-qs.html 协议就行了。

不过,NUT 不是很好用,我自己用 Rust 写了一个控制器 https://github.com/t123yh/bp1000ch-controller,可以实现电量低时自动关机的功能。

更新:这款 UPS 输出是方波(最廉价的方案),不兼容带有主动 PFC 的电源(现在市面上大部分电脑电源都是这种电源),会导致供电不稳定、不开机等问题,强烈不建议购买!!

2023/01/12 更新:这玩意现在已经完全挂了,用了两年半,大概在去年年中的时候就基本上不能用了,断电后直接停电。也许是铅酸电瓶挂了,需要换电瓶。不过我已经换了全直流 UPS 方案,就不打算修这个破东西了。

解决 Linux 下 Vivado 字体渲染异常、崩溃的问题

众所周知 Xilinx Vivado 在 2020 以前的版本自带的 JRE 版本较老,在 Linux 下存在诸如字体渲染丑陋、不定期崩溃的问题,今天试了一下,可以替换自带的 JRE 为 Intellij IDEA 的 JRE,就可以解决多数问题。不过,如果直接替换 jre 目录,会出现找不到 com.sun.java.swing.plaf.windows.WindowsLookAndFeel的错误。经过一番折腾从原始 jdk 里面提取了这个类,将它补全到 classes 目录里面就可以了。

Vivado 2020.2 或更新的版本自带了较新版本的 JRE 11,上述问题都不存在了,无需替换 JRE!

经过一段时间的测试暂时没发现什么问题,仿真、综合、下载功能都是正常运行的,如果有其他问题请在下面评论区补充。

给出替换使用的脚本,供大家参考:

$VIVADO_HOME=/mnt/largejunk/Xilinx/Vivado/2019.1
$JBR_HOME=/opt/intellij-idea-ultimate-edition/jbr/
cd $VIVADO_HOME/tps/lnx64
mv jre9.0.4 jre9.0.4-bak
ln -s $JBR_HOME jre9.0.4
cd $VIVADO_HOME/lib/classes
wget --content-disposition "https://seafile.t123yh.xyz:2/f/f260c2f5132541549e86/?dl=1"  # Add the WindowsLookAndFeel absent in Linux JREs.

计组经验分享

经过半个学期的努力,大部分同学已经来到了险象环生的 P5 和 P6。P5 和 P6 已不再像程设、数据结构等课程作业一样只是功能单一、结构简单的设计,相反,我们设计的 CPU 是一个由多个部件组成的有机整体。因此,我们必须对系统进行良好的规划,让它拥有简洁优美的设计,并能稳定工作。

继续阅读“计组经验分享”

返校宣讲团队总结

为了让母校的同学们更加了解大学生活、了解北航,我们成立了“火锅队”宣讲团队,在 2019 年寒假回到母校宣讲。宣讲团队的三名成员中,张书恺、田韵豪来自成都市实验外国语学校,姜翔舰来自成都列五中学,这两所学校都是成都市的名校。我们分别在 1 月 23 日于成都市实验外国语学校、1 月 26 日于成都列五中学展开了宣讲活动。两次活动均有很多学弟学妹们到场参加,取得了非常不错的宣讲成效。

继续阅读“返校宣讲团队总结”
WordPress Appliance - Powered by TurnKey Linux