The Little Kernel Embedded Operating System
下载连接:
https://github.com/littlekernel/lk
Qualcomm(高通)的chipset使用Little Kernel的一个fork,来作为Android系统的bootloader (The Android Bootloader - Aboot)。
MediaTek(联发科)使用的bootloader是Das U-Boot。
Android所使用的LK的链接:
https://android.googlesource.com/kernel/lk/
LK 内核是一个可用于对称多处理器结构(Symmetric Multi-Processor)的内核,专为小型系统而设计,可以移植到各种平台和 CPU 架构。
The LK kernel is an SMP-aware kernel designed for small systems ported to a variety of platforms and cpu architectures.
主要功能
-
完全可重入的多线程抢占式内核
-
可移植至多种 32 位和 64 位架构
-
支持多种嵌入式平台和大型平台
-
强大的模块化构建系统
-
可在构建时选择大量实用组件
High Level Features
* Fully-reentrant multi-threaded preemptive kernel
* Portable to many 32 and 64 bit architectures
* Support for wide variety of embedded and larger platforms
* Powerful modular build system
* Large number of utility components selectable at build time
支持的架构
-
ARM32
-
Cortex-M 类内核(armv6m - armv8m)
-
ARMv7+ Cortex-A 类内核
-
-
ARM64
-
RISC-V 32 位和 64 位的机器模式和监督模式
-
x86-32 和 x86-64 386 及以上的现代内核
-
microblaze
-
MIPS
-
OpenRISC 1000
Supported architectures
* ARM32
* Cortex-M class cores (armv6m - armv8m)
* ARMv7+ Cortex-A class cores
* ARM64
* RISC-V 32 and 64bit bit in machine and supervisor mode
* x86-32 and x86-64 386 up through modern cores
* microblaze
* MIPS
* OpenRISC 1000
值得一提的是,这个代码库里,在lk/lib/libc路径下的代码,可以作为c标准库的一个简单实现,以供参考。
比如查一个itoa的函数,能找到相应的源码。
参考:
1,Wiki
https://en.wikipedia.org/wiki/Booting_process_of_Android_devices