Recent Posts

往 vim 粘贴大段文本会卡顿的问题

0x0 问题

用 vim 编辑文件时,发现粘贴大段文本时会变得很卡,有时候几百行的文本,需要花几十秒甚至更长时间。

0x1 解决办法 …

Python 函数的位置参数(positional argument)和关键字参数(keyword argument)

在 Python 里,函数的参数默认是 positional-or-keyword,就是说即可以是位置参数,也可以是关键字参数。文档里是这样描述的:

positional-or-keyword: specifies an argument that can be passed either …

Python Turtle 画圆时的圆心位置问题

问题:在使用 turtle.circle() 画圆时,发现圆心在 turtle 的正上方。

这个 API 的参数里没有指定圆心,也不是以当前位置 turtle.position() 为圆心。turtle.circle() 是这 …

Python crypt 模块

Linux 下的用户名和密码是加盐哈希后保存在 /etc/shadow 文件里的。这里 有文件格式的介绍。

Python 标准库里,有一个 crypt 模块,可以用来生 …

Python 内置函数 pow 计算逆元

pow 是 Python 的内置函数,用来进行幂运行:

>>> help(pow)
pow(base, exp, mod=None)
    Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments
    ...
>>> pow(5, 3)
125

Python 3.8 版本开始,在同 …

Cache 的组织和过程(VIVT、VIPT、PIPT)

1. VIVT

VA 里的 index 🡲 查找到 cache-line 🡲  VA 里的 tag 比较 :
* hit 🡲 返回(不经过 MMU)
* miss 🡲 [VA->MMU->]PA 访存,写回 cache-line;VA 里的 tag 更新到 cache-line 🡲 返回

有别名问题。

2. VIPT …

编译 devicetree source 文件

dts, dtb

device tree (dts) 是一种树形结构的、用来描述 SoC 设备的组成的文件。有 dts 格式的文本源文件,用 Device Tree Compiler (dtc),可以把 dts 编译生成 dtb …

Linux PWM 驱动的实现

0. PWM 概念

PWM 指的是脉冲宽度调制技术。 PWM 频率,指 1 秒的时间里 PWM 运行的次数。 PWM 周期,指一次完整的 PWM 输出所使用的时间 …

Linux clock tree 的实现

1. Linux 里已经预定义了几种 clock

  • clk-fixed-rate: basic fixed-rate clock that cannot gate, 比如固定频率的 oscillator
  • clk-fixed-factor: basic fixed multiplier and divider clock that cannot gate,比如从上一级按固定比例分频 …

ARM Watch Point 寄存器

Watch Point (WP) 有 6 个寄存器:

  • Address Value / Mask Register
  • Data Value / Mask Register
  • Control Value / Mask Register

其中,WP Address Value / Mask 是监控地址总线,WP Data Value / Mask 是监控数据总线。

断点用来标 …