The Linux kernel is the core component of the Linux operating system, serving as the central part that interacts directly with the computer's hardware. Developed by Linus Torvalds and the open-source community, the Linux kernel is released under the GNU General Public License (GPL) and is a key example of free and open-source software.
Linux is widely used in embedded systems, such as mobile phones, tablets, routers, TVs, and electronic game consoles. The Android operating system widely used on mobile devices is also built on the Linux core. Since Linux is free software, anyone can build a Linux package that meets their needs.
For further information, refer to:
Linux official web: LINUX.ORG
Linux git repositories: Kernel.org git repositories
Contents
Features of Linux
The Linux kernel boasts several prominent features, including:
Open Source: Linux is developed under the GNU General Public License (GPL), making its source code freely available for modification and redistribution.
Modularity: The kernel is designed with a modular architecture, allowing for the addition or removal of features as needed.
Multiplatform Support: Linux supports a wide range of hardware architectures, from desktop computers to embedded devices, servers, and supercomputers.
Multitasking and Multiuser: Linux supports multitasking, enabling multiple processes to run simultaneously, and multiuser capabilities, allowing multiple users to interact with the system concurrently.
Memory Management: The kernel efficiently manages system memory, including virtual memory, memory allocation, and memory protection mechanisms.
Device Drivers: Linux includes a vast array of device drivers, providing support for a diverse range of hardware components, peripherals, and devices.
Networking: Linux offers robust networking capabilities, supporting various networking protocols and technologies for communication.
Security: The kernel incorporates numerous security features, including access controls, permissions, encryption, and secure communication protocols, to safeguard system integrity and data privacy.
File Systems: Linux supports multiple file systems, including ext4, btrfs, xfs, and ntfs, and etc.
Scalability: Linux scales effectively from small embedded devices to large-scale server environments.
These features collectively contribute to Linux's widespread adoption and success across diverse computing environments.
Supported drivers for SP7350 platform
The source files of the Linux kernel are centrally located within the "linux/kernel/" directory under the project's top directory. For the SP7350 platform, a wide array of device drivers is supported. These drivers are within the "drivers/" directory. Below is a reference table detailing the drivers along with their corresponding feature descriptions:
Drivers | Folders or files | Features |
8-bit NAND | mtd/nand/raw/sp_paranand/ |
|
ADC (SAR12B) | iio/adc/sp-adc.c |
|
AXI DMA | dma/dw-axi-dmac/ |
|
AXI Monitor | soc/sunplus/ |
|
CB DMA | dma/sp_cbdma.c |
|
Clock | clk/clk-sp7350.c |
|
CPUFreq | cpufreq/sp7350-cpufreq.c |
|
Crypto Engine | crypto/sunplus/ |
|
Display | media/platform/sunplus/display/ sp7350/ |
|
eMMC | mmc/host/sunplus-mmc.* |
|
Ethernet | net/ethernet/stmicro/stmmac/ |
|
I2C | i2c/busses/i2c-designware-*.c |
|
Mailbox | mailbox/sunplus*.* |
|
MIPI/CSI-RX | media/platform/sunplus/mipicsi/ |
|
NVMEM (OTP) | nvmem/sp-ocotp*.c |
|
PinCtl / GPIO | pinctrl/sunplus/ |
|
PWM | pwm/pwm-sunplus.c |
|
Regulators | regulator/rt5759-regulator.c regulator/sti8070x-regulator.c |
|
Remoteproc | remote/sp_remoteproc.c |
|
Reset | reset/reset-sunplus.c |
|
HW RNG | char/hw_random/sp7350-rng.c |
|
RTC | rtc/rtc-sunplus.c |
|
Semaphore | hwspinlock/sunplus_hwspinlock.c |
|
SPI | spi/spi-dw* |
|
SPI-NAND | mtd/nand/raw/sp_* |
|
SPI-NOR | mtd/spi-nor/controllers/ sp-spi-nor.c |
|
SD / SDIO | mmc/host/sunplus_sd3.* |
|
Thermal | thermal/sunplus_thermal.c |
|
USB2.0 EHCI | usb/host/ehci*-sunplus.* |
|
USB2.0 OHCI | usb/host/ohci*-sunplus.* |
|
USB2.0 PHY | phy/sunplus/phy-sunplus-usb2.c |
|
USB2.0 UDC | usb/gadget/udc/sunplus_udc2.* |
|
USB2.0 OTG | usb/phy/otg-sp7350-sunplus.c |
|
USB3.0 DRD | usb/dw3/ |
|
USB3.0 extcon | extcon/extcon-usb-gpio-sunplus.c |
|
USB3.0 PHY | usb/phy/synopsysu3phy-sunplus.c |
|
UART | tty/serial/sunplus-uart.c |
|
Video sensors | media/i2c/imx219.c media/i2c/imx708.c media/i2c/ov5640.c media/i2c/ov5647.c media/i2c/tp2815.c |
|
VIP9000 (NPU) | media/platform/sunplus/vip9000/ |
|
Video decoder (VC8000D nano) | media/platform/sunplus/ videocodec/ |
|
Video encoder (VC8000E nano) | media/platform/sunplus/ videocodec/ |
|
Watchdog | watchdog/sunplus_wdt.c |
|
Traditionally, due to historical reasons, the sound driver within the Linux kernel has been located at the "sound/" directory, rather than under the "drivers/" directory as might be expected.
Drivers | Folders or files | Features |
Audio (I2S) | soc/sunplus/ |
|
SP7350 platform-specific files
Platform-specific files are located at “arch/arm64/” under Linux kernel directory. Below table details the files along with their corresponding feature descriptions:
Type | Folders | Files | Descriptions |
dts | boot/dts/sunplus/ | sp7350-ev.dts | For Evaluation board |
sp7350-dm.dts | For Demo board | ||
defconfig files | configs/ | sp7350_emmc_dm_defconfig | for Demo board, eMMC boot |
sp7350_sdcard_dm_defconfig | for Demo board, SD card boot | ||
sp7350_emmc_ev_defconfig | for EVB, eMMC boot | ||
sp7350_sdcard_ev_defconfig | for EVB, SD card boot | ||
sp7350_nand_ev_defconfig | for EVB, SPI-NAND flash boot | ||
sp7350_pnand_ev_defconfig | for EVB, 8-bit NAND flash boot | ||
Kconfig | . | Kconfig.platforms | for PS7350 platform |