[PIC32/SAM] 手把手教你给Microchip MPU更新Linux内核

[复制链接]
176|0
yjmeishao 发表于 2025-11-10 18:43 | 显示全部楼层 |阅读模式

本文章将演示如何在已有的嵌入式Linux系统的基础上,为Microchip MPU手动更新Linux内核版本。

安装编译Linux内核所需要的软件

下载编译Linux内核所需要的arm-none-linux-gnueabihf-

  • 操作具体命令记录
cd Opt
wget -c https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz

解压arm-none-linux-gnueabihf-并配置好环境变量

  • 操作具体命令记录
afan@iMac24:~/Opt$ tar -xf arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
afan@iMac24:~/Opt$ export CROSS_COMPILE=arm-none-linux-gnueabihf-
afan@iMac24:~/Opt$ export PATH=$PATH:/home/afan/Opt/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-linux-gnueabihf/bin/

下载所需要的Linux内核版本

  • 为了方便直接下载最新的linux kernel压缩包:
  • 内核压缩包下载地址
https://github.com/linux4microchip/linux/tags

下载对应的dt-overlay版本

  • 为了方便直接下载dt-overlay压缩包:

  • 内核dt-overlay下载地址
https://github.com/linux4sam/dt-overlay-at91/tags

编译Linux内核

解压Linux内核压缩包

cd Downloads
tar -xf linux-linux4microchip-fpga-2025.07.tar.gz

配置Linux内核 - 以SAM9X60 Curiosity开发板为例

  • 解压内核压缩包后通过make ARCH=arm at91_dt_defconfig选择Microchip ARM9平台
  • 随后通过make ARCH=arm menuconfig进行内核的配置

  • 默认会支持Microchip所有的ARM9 MPU处理器

  • 根据需要选择只需要的SAM9X60 ARM9处理器即可,也可以跳过这个步骤

  • 记得选择Yes保存修改

  • 操作过程截图

  • 操作具体命令记录
cd linux-linux4microchip-fpga-2025.07/
make ARCH=arm at91_dt_defconfig
make ARCH=arm menuconfig

编译Linux内核和dtb文件

  • 编译内核
  • 编译设备树
  • 操作具体命令记录
make ARCH=arm -j10
make ARCH=arm dtbs

编译dt-overlay并打包itb文件

  • 解压dt-overlay压缩包
tar -xf dt-overlay-at91-linux4microchip-2025.04.tar.gz
cd dt-overlay-at91-linux4microchip-2025.04/
  • 编译dtso文件

make KERNEL_DIR=../linux-linux4microchip-fpga-2025.07 KERNEL_BUILD_DIR=../linux-linux4microchip-fpga-2025.07 sam9x60_curiosity_dtbos
  • 生成itb文件

KERNEL_DIR=../linux-linux4microchip-fpga-2025.07 KERNEL_BUILD_DIR=../linux-linux4microchip-fpga-2025.07 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- sam9x60_curiosity.itb

手动更新包含最新Linux镜像的itb文件

查看linux内核的更新

更新前的linux内核版本 - Linux version 6.6.51

  • 更新前linux内核启动打印
Starting kernel ...

Booting Linux on physical CPU 0x0 Linux version 6.6.51-linux4microchip-2024.10 (afan@iMac24) (arm-buildroot-linux-gnueabi-gcc.br_real (Buildroot 2024.02.6) 13.3.0, GNU ld (GNU Binutils) 2.40) #1 Sat Aug 23 10:35:13 CST 2025 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f CPU: VIVT data cache, VIVT instruction cache OF: fdt: Machine model: Microchip SAM9X60 Curiosity Memory policy: Data cache writeback Zone ranges: Normal [mem 0x0000000020000000-0x0000000027ffffff] Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000020000000-0x0000000027ffffff] Initmem setup node 0 [mem 0x0000000020000000-0x0000000027ffffff] Kernel command line: console=ttyS0,115200 mtdparts=atmel_nand:256k(bootstrap)ro,768k(uboot)ro,256k(env_redundant),256k(env),6656k(itb)ro,-(rootfs) rootfstype=ubifs ubi.mtd=5 root=ubi0:rootfs rw atmel.pm_modes=standby,ulp0 Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear) Built 1 zonelists, mobility grouping on. Total pages: 32512 mem auto-init: stack:all(zero), heap alloc:off, heap free:off Memory: 118556K/131072K available (7622K kernel code, 437K rwdata, 2424K rodata, 280K init, 190K bss, 12516K reserved, 0K cma-reserved) SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 PIT64B: using clk=gclk with prescaler 0, freq=5000000 [Hz]

code

code

您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

114

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部