0%

给Jetson_Orin刷入实时内核的方式

流程

  • 内核交叉编译参考

  • 工具链的位置在工具链

  • 先按照这个

    • 下载好内核源码之后,在kernel目录下输入命令./kernel-5.10/scripts/rt-patch.sh apply-patches
    • 执行结束后会输出The PREEMPT RT patches have been successfully applied!
  • 然后在内核目录下执行make menuconfig

    • 在General Setup下找到抢占的设置preemption model
    • picture 2
    • 设置为Real Time
  • 然后可能遇到报错,根据提示在内核源码目录下执行make ARCH=arm64 mrproper

  • 然后在kernel目录的根目录下执行./nvbuild.sh -o $HOME/kernel_output

    • 输出到用户目录下的kernel_output目录下
  • picture 3

    • 注意这一步编译的驱动所需要的SYSSRC是之前编译的内核源码的位置,而不是jetpack SDK下载的内核源码的位置
  • 但是又遇到报错

    • picture 4
  • 暂时跳过这一步,先进行后面的rootfs构造

  • 使用sudo ./flash.sh jetson-agx-orin-devkit internal刷机的时候,可以看到提示

    • picture 5
    • 可以看出内核已经是rt内核了
  • 正在烧录中

    • picture 6
  • 然后小盒会自动重启

    • picture 7
  • 遇到无法连接WiFi的情况,先链接eth0等跳过这个界面,遇到DHCP失败直接选择之后再配置即可

  • 然后重启几次开发板,使用sudo nmtui命令在命令行UI界面配网即可

遇到刷机后因为SSH链接过而无法链接的问题

  • windows一般在用户/用户名/.ssh/known_hosts文件,根据目标设备的IP地址查找到对应的条目,删除即可

手动启动/停止某个CPU核心的运行

  • sudo sh -c 'echo 1 > /sys/devices/system/cpu/cpu11/online'启动
  • sudo sh -c 'echo 1 > /sys/devices/system/cpu/cpu11/online'停止

    某些实时内核下的CPU时序问题

  • 这个小盒在部分CPU开启部分CPU关闭的时候,可能导致向量计算出错,推测是simd指令的问题,此时使用torch的时候,需要手动指定torch.tensor的设备device="cpu",同时使用上面的指令手动启动所有CPU核心