Recent Posts

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 …

一次性密码算法 One-Time Password (OTP)

很多在线服务出于用户帐户安全的考虑,通常要求启用两步验证,即除了密码外,还需要一个验证码(通过短信、邮件发送,或 …

U-Boot SPL 加载后续程序过程中的内存泄漏问题

问题

项目里是这样设计的 U-Boot SPL 加载过程:SPL 会从多种启动设备尝试加载 uImage。加载的顺序是由板卡支持代码里指定的:

文件 …

编译 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,比如从上一级按固定比例分频 …

定制 SoC 的 U-Boot SPL image type 类型

开发板 SoC 系统上电启动时,从 boot rom 开始运行、并加载后续程序;被加载的通常是 U-Boot SPL,它运行并加载其他后续的程序。按先后 …