持续探索底层技术与系统编程

写给工程师的
Rust、Linux
与嵌入式笔记

记录系统编程、操作系统、驱动开发、微控制器与嵌入式 Rust 的学习过程。少一点概念堆砌,多一点可以运行的代码和真实实践。

每周更新技术笔记
专注系统与嵌入式开发
示例代码可复现
ykong@byteforge:~/workspace bash
ykong@lab:~/workspace$ cargo new embedded-lab
Creating binary package

ykong@lab:~/workspace$ cd embedded-lab
ykong@lab:~/workspace/embedded-lab$ cat src/main.rs

#![no_std]
#![no_main]

// 从最小系统开始理解硬件
#[entry]
fn main() -> ! {
loop {
led.toggle();
delay.delay_ms(500);
}
}

ykong@lab:~/workspace/embedded-lab$ cargo build --release
42

篇技术文章

18

个实验项目

12k

行示例代码

3

个长期技术专题

技术专题

围绕三个方向持续更新,从基础知识逐步深入到真实工程实践。

Rs

Rust 系统编程

深入理解 Rust 的类型系统、内存安全、异步运行时和底层开发能力。

  • 所有权、借用与生命周期
  • Trait、泛型与零成本抽象
  • Tokio 与异步编程
  • FFI 和 unsafe Rust
#_

Linux 内核与工具

从日常命令行工具深入到进程、内存、文件系统与内核调试。

  • Shell 与系统管理
  • 进程、线程和信号
  • 网络与文件系统
  • 内核模块和驱动开发

嵌入式开发

面向 STM32、ESP32 和 RISC-V 平台,记录裸机与实时系统开发。

  • GPIO、UART、SPI 与 I²C
  • 中断、定时器与 DMA
  • FreeRTOS 与 Embassy
  • 调试、烧录和性能分析

最新学习笔记

简短但实用的开发记录,包括踩坑、工具配置和实验结论。

使用 cargo-binutils 查看 Rust 程序的段布局

分析 text、rodata、data 和 bss 段在二进制中的实际占用。

Rust

Linux 下快速定位端口占用进程

对比 ss、lsof、fuser 和 procfs 的使用方式。

Linux

解决 OpenOCD 无法识别调试器的问题

从 USB 权限、udev 规则到调试器固件逐项排查。

Debug

用 systemd 管理一个长期运行的后台服务

编写 service 文件,并配置重启策略、日志和环境变量。

Systemd

嵌入式开发中的 volatile 到底解决了什么?

区分编译器优化、内存屏障和硬件寄存器访问。

Embedded
本周实验

用 Rust 实现一个最小化的任务调度器

不依赖完整操作系统,在 Cortex-M 微控制器上实现任务切换, 理解栈帧、上下文保存和 PendSV 异常。

查看实验记录
struct Task {
    stack_pointer: usize,
    state: TaskState,
}

fn schedule() {
    let current = current_task();
    let next = find_ready_task();

    save_context(current);
    restore_context(next);

    trigger_pendsv();
}

// 下一步:加入优先级和时间片