Linux Kernel - 6.18
Linux 6.18 for MPU source code
The Linux kernel for Microchip ARM-Based MPUs (aka AT91) is distributed as a GIT tree hosted on GitHub as a fork of the official Linus Torvalds' git tree. The objective of the Microchip Linux team is to integrate all the AT91-related material in the official Linux Kernel.
Before completing this inclusion process, which can take time, this website provides the Linux4SAM Linux Kernel git tree for AT91 devices at:
https://github.com/linux4microchip/linux/tree/linux-6.18-mchp
Tags
linux4microchip-2026.04 tag
Enhancements are added on top of the official v6.18 Linux® kernel tag where most of the Microchip System on Chip (SoC) features are already supported. Note as well that we re-integrate each and every stable kernel release on top of this Long Term Support (LTS) kernel revision. This means that each v6.18.x version is merged in our branch.
Here is a little summary of the main additional enhancements:
- Integration of stable Long Term Support (LTS) kernel updates up to v6.18.17
- Added initial support for SAM9X75 Curiosity Pro board
- Added support for the SAMA7D65 System-on-Module (SOM)
- Added Graphics 2D GPU Engine support for SAM9X60, SAM9X75 and SAMA7D6 platforms
- Improved support for SAMA7D65 shutdown controller (SHDWC)
- Updated NAND timings for SAMA7D65
- Improved Microchip ISC with new image controls and multiple AWB, histogram, color, and raw-path fixes
- Add aliases for SDMMC in boards' device trees
- Fixes for HLCDC timing and ASRC audio
- Added LSM6DSV I3C sensor device support
- Several improvements on SDMMC
Required packages
You must install essential host packages on your build host. These requirements are listed in the Linux kernel documentation with the chapter Install build requirements. You must follow this process which includes, but not limited to, the following packages:
- build-essential
- flex
- bison
- git
- perl-base
- libssl-dev
- libncurses5-dev
- libncursesw5-dev
- ncurses-dev
Getting Kernel sources
To get the source code, you have to clone the repository:
Cloning into 'linux'...
remote: Enumerating objects: 8587836, done.
remote: Total 8587836 (delta 0), reused 0 (delta 0), pack-reused 8587836
Receiving objects: 100% (8587836/8587836), 3.49 GiB | 13.44 MiB/s, done.
Resolving deltas: 100% (7117887/7117887), done.
Updating files: 100% (70687/70687), done.
$ cd linux
The source code has been taken from the master branch which is pointing on the latest branch we use.
$ git remote update linux4microchip
Fetching linux4microchip
From https://github.com/linux4microchip/linux
* [new branch] linux-6.6-mchp -> linux4microchip/linux-6.6-mchp
* [new branch] linux-6.12-mchp -> linux4microchip/linux-6.12-mchp
* [new branch] linux-6.18-mchp -> linux4microchip/linux-6.18-mchp
* [new branch] master -> linux4microchip/master
If you want to use another branch, you can list them and use one of them by doing this:
linux4microchip/linux-6.1-mchp
linux4microchip/linux-6.1-mchp+fpga
linux4microchip/linux-6.6-mchp
linux4microchip/linux-6.6-mchp+fpga
linux4microchip/linux-6.12-mchp
linux4microchip/linux-6.18-mchp
linux4microchip/master
$ git checkout -b linux-6.18-mchp --track remotes/linux4microchip/linux-6.18-mchp
Branch linux-6.18-mchp set up to track remote branch linux-6.18-mchp from linux4microchip.
Switched to a new branch 'linux-6.18-mchp'
Setup ARM Cross Compiler
Download the Arm GNU toolchain:
Add the Arm GNU toolchain to your system:
export CROSS_COMPILE=`pwd`/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-
or
export CROSS_COMPILE=arm-none-linux-gnueabihf-
export PATH=$PATH:/YOUR/PATH/TO/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-linux-gnueabihf/bin/
If you already have an old Arm GNU toolchain, you need to clean up the PATH with:
Configure and Build the Linux kernel
Now you have to configure the Linux kernel according to your hardware. We have two default configuration at91 SoC in arch/arm/configs
arch/arm/configs/sama5_defconfig
arch/arm/configs/sama7_defconfig
- at91_dt_defconfig: for SAM9 (ARM926) series chips
- sama5_defconfig: for SAMA5 series chips
- sama7_defconfig: for SAMA7 series chips
You can add or remove some features in the menuconfig dialog. Once done, use the arrows to navigate to <Exit> and press this button with the Enter key to exit from this screen.
Build the Linux kernel image, but before you build, you need to set up the cross compile toolchain. Check the "Set Up Arm Cross Compiler" section.
[..]
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
Now you have a usable compressed kernel image zImage.
If you need a uImage, you can run this additional step:
[..]
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-6.18.17-linux4microchip-20
Created: Thu Apr 22 18:05:21 2026
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 5688984 Bytes = 5555.65 KiB = 5.43 MiB
Load Address: 20008000
Entry Point: 20008000
Kernel: arch/arm/boot/uImage is ready
[..]
DTC arch/arm/boot/dts/microchip/at91-sama5d27_som1_ek.dtb
DTC arch/arm/boot/dts/microchip/at91-sama5d27_wlsom1_ek.dtb
DTC arch/arm/boot/dts/microchip/at91-sama5d29_curiosity.dtb
DTC arch/arm/boot/dts/microchip/at91-sama5d2_icp.dtb
DTC arch/arm/boot/dts/microchip/at91-sama5d3_eds.dtb
DTC arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dtb
DTC arch/arm/boot/dts/microchip/at91-sama7d65_curiosity_pro.dtb
DTC arch/arm/boot/dts/microchip/at91-sama7g54_curiosity.dtb
DTC arch/arm/boot/dts/microchip/at91-sama7g5ek.dtb
[..]
If the building process is successful, the final images can be found under the arch/arm/boot/ directory.