explorer

万丈高楼平地起,勿在浮沙筑高台

0%

u-boot 或者 Linux 在进行配置内核时,其调用步骤如下:

  1. make ARCH=<arch> <xxx_defconfig> menuconfig
    • ARCH : 指定要配置的构架
    • : 指定默认的参考配置,比如arm默认配置位于 arch/arm/configs/
      • 一般都可以参考这些配置,不然内核的配置项太多了。比如 make ARCH=arm s3c2410_defconfig menuconfig
  2. 配置工具都会提取 ./Kconfig 文件,此文件 source 读取 arch/${ARCH}/Kconfig
  3. arch/${ARCH}/Kconfig 再source其他文件夹下的 Kconfig ,层层调用来完成整个界面的映射.配置界面的显示,也是对应层层显示的.
  4. 在完成配置后,在内核根目录下会生成文件 .config(新配置) 和 .config.old(之前配置),用户根据查看这两个文件可以以一个全局视野查看内核配置以及相对上次修改的配置

经过上面的配置,然后分别编译内核文件和模块文件:

  1. make ARCH=<arch> CROSS_COMPILE=<arm-gcc> zImage :编译内核文件(比如 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage)
    • 编译完成后,在内核根目录会有未压缩的 vmlinux 和符号表 System.map,以及在 arch/xxx/boot/ 目录下会有已经压缩的zImage
  2. make ARCH=<arch> CROSS_COMPILE=<arm-gcc> modules : 编译内核模块
    • 内核模块对应的存在于其源码的路径中
    • 为了便捷的将编译的模块安装在文件系统,一般还会执行 make modules_install ,默认会安装在目标文件系统的 /lib/modules/$(KERNELRELEASE)
阅读全文 »

Grabserial 是一个串口监视工具,其最大的特色在于:可以监视每一行串口输出的时间和相对上一行串口输出的时间差。

基础此功能,我们可以推导出使用此工具可以完成以下调试工作:

  1. 检查系统启动的完整时间(Linux,RT-thread...)
  2. 检查特定一段代码的运行时间(比如调试应用程序的算法效率)

minicom 使用 CTAL + a + n 也可以打开时间戳模式,但是最多只能精确到 1ms 并且没有时间差的显示

阅读全文 »

先以最简单的方式来认识 FM/PM 调制。

因为频率或相位的变化都是载波余弦角度的变化,所以调频和调相统称为角度调制

频率和相位之间存在密切的关系,调频必调相,调相必调频。

因为调频和调相信号的频谱不再是线性搬移,而是频谱的非线性变换,产生新的频率成分, 因此调频和调相属于非线性调制。

阅读全文 »

  • kernel version : v6.1.x (lts)

进程或线程对于 kernel 来说,都是 task_struct 结构体来描述,所以这里指的是输出所有的 task。

阅读全文 »