解决 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 协议就行了。

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

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

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

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

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

$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.

骏德名师网课平台使用教程(学生版)

欢迎各位同学使用网课平台。网课平台由两部分组成:Zoom 会议系统和骏德课后系统(骏德名师在线平台)。其中,上课使用 Zoom 会议系统;提交作业、下载老师的 PPT 、查看作业完成情况使用骏德课后系统。

继续阅读“骏德名师网课平台使用教程(学生版)”

课程中心使用教程

课程中心提供了老师与同学联系的渠道。在课程中心内,老师需要发布自己的会议网址、课程资源(如习题),发布后同学就可以看到并打开。老师还可以在课程中心内布置作业、批阅作业,同学也可以及时看到作业的反馈。

课程中心的网址是 https://jundemingshi.h.t123yh.xyz:3/,用户名和密码请参考群内说明。输入网址时,请勿遗漏 https://:3

继续阅读“课程中心使用教程”

计组经验分享

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

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