當前位置:首頁 » 操作系統 » armlinux內核

armlinux內核

發布時間: 2023-06-29 16:14:35

A. ARM linux系統中如何查看系統內核版本

查看系統內核版本,使用
uname
命令。
以致遠電子的M3352核心板為例,輸入以下命令即可:
[root@M3352
~]#
uname
-a
Linux
M3352
3.2.0
#134
Thu
Aug
8
15:47:17
CST
2013
armv7l
GNU/Linux

B. 如何使用ARM+Cortex-A9的移植一個Linux操作系統,作為伺服器

要在ARM Cortex-A9上移植Linux操作系統並將其用作伺服器,需要執行以下步驟:

  • 選擇適當的Linux發行版:首先,需要選擇適合ARM Cortex-A9的Linux發行版。一些流行的ARM Linux發行版包括Ubuntu、Debian、Fedora、OpenSUSE等。您可以從官方網站下載適合您的ARM Cortex-A9的版本。

  • 下載交叉編譯工具鏈:由於ARM Cortex-A9是基於ARM架構的,因此需要使用交叉編譯工具鏈來編譯Linux內核和應用程序。您可以從ARM官方網站下載適合您的交叉編譯工具鏈。

  • 編譯內核:使用交叉編譯工具鏈編譯Linux內核。您可以從Linux內核官方網站下載最新版本的內核源代碼,並使用交叉編譯工具鏈進行編譯。編譯完成後畝塵,將內核鏡像文件復制到ARM Cortex-A9的啟動設備中。

  • 配置文件系統:在ARM Cortex-A9上運行Linux操作系絕耐敏統需要一個文件系統。您可以使用BusyBox等工具來創建一個最小的文件系統。將文件系統復制到並枝ARM Cortex-A9的啟動設備中。

  • 啟動Linux操作系統:將啟動設備插入ARM Cortex-A9,並將其連接到計算機。使用串口或SSH等工具連接到ARM Cortex-A9,並啟動Linux操作系統。如果一切正常,您應該能夠登錄到Linux系統並使用它作為伺服器。

  • 配置伺服器:根據您的需求配置Linux伺服器。您可以安裝Web伺服器、資料庫伺服器、FTP伺服器等,以滿足您的需求。

C. 安卓智能手機的基於ARM架構的處理器,為什麼能夠支持基於Linux內核的操作系統

Android是基於Linux內核的操作系統。

提到Linux內核的時候,應該把它從概念上和「Linux操作系統」分割看來,內核只包括最基本的抽象,內存模型、進程調度、中斷處理等等。而操作系統是一個更廣的概念,不光包括內核,還包括了設備驅動、應用程序框架以及一些關鍵的能夠讓這個操作系統能為人所用的軟體。所以Ubuntu, Fedora等等這些桌面發行版可以看做是包裝了Linux內核的、不同的Linux操作系統。

Android 開發之初fork了Linux kernel,在其基礎上進行了以下改進:
1. 添加新的的設備驅動
2. 重寫了c lib(Bionic)
3. 實現了基於Java的應用程序框架
4. 對內核的小修改
大部分的修改都是在內核之上的,也就是說android內核和其他桌面Linux內核是非常接近的(在Linux kernel 3.3 之後,Android分支的內核代碼開始merge回原Linux內核repo),內核所完成的抽象,如內存模型、進程調度等,是一致的。

Android不是Linux
看到這個標題大家可能會有些迷惑,前面不是一直說Android是基於Linux內核的嗎,怎麼現在又不是Linux了?迷惑也是正常的,請先看下面幾個要點,然後我們將對每一個要點進行分析,看完後你就會覺得Android不是Linux了。
1.它沒有本地窗口系統
什麼是本地窗口系統呢?本地窗口系統是指GNU/Linux上的X窗口系統,或者Mac OX X的Quartz等。不同的操作系統的窗口系統可能不一樣,Android並沒有使用(也不需要使用)Linux的X窗口系統,這是Android不是Linux的一個基本原因。
2.它沒有glibc支持
由於Android最初用於一些便攜的移動設備上,所以,可能出於效率等方面的考慮,Android並沒有採用glibc作為C庫,而是Google自己開發了一套Bionic Libc來代替glibc。
3.它並不包括一整套標準的Linux使用程序
Android並沒有完全照搬Liunx系統的內核,除了修正部分Liunx的Bug之外,還增加了不少內容,比如:它基於ARM構架增加的Gold-Fish平台,以及yaffs2 FLASH文件系統等。
4.Android專有的驅動程序
除了上面這些不同點之外,Android還對Linux設備驅動進行了增強。

上面這些要點足以說明Android不是Linux。本書的主要內容將圍繞Android的這些特有的部分展開,我們的講解會盡量通俗易懂,但還是建議大家先復習一下Linux內核的基本知識。在具體學習之前,我們還是先來總體瀏覽一下Android對Linux內核進行了哪些改動,在移植時就需要對這些改動加以調整。

D. ARM linux內核啟動時幾個關鍵地址

1. 內核啟動地址
ZTEXTADDR
解壓代碼運行的開始地址。沒有物理地址和虛擬地址之分,因為此時MMU處於關閉狀態。這個地址不一定時RAM的地址,可以是支持讀寫定址的flash等存儲中介。
Start address of decompressor. here's no point in talking about virtual or physical addresses here, since the MMU will be off at the time when you call the decompressor code. You normally call the kernel at this address to start it booting. This doesn't have to be located in RAM, it can be in flash or other read-only or read-write addressable medium.
在arch/arm/boot/compressed/Makefile中說的很明確

#
# We now have a PIC decompressor implementation. Decompressors running
# from RAM should not define ZTEXTADDR. Decompressors running directly
# from ROM or Flash must define ZTEXTADDR (preferably via the config)
# FIXME: Previous assignment to ztextaddr-y is lost here. See SHARK
ifeq ($(CONFIG_ZBOOT_ROM),y)
ZTEXTADDR := $(CONFIG_ZBOOT_ROM_TEXT)
ZBSSADDR := $(CONFIG_ZBOOT_ROM_BSS)
else
ZTEXTADDR := 0
ZBSSADDR := ALIGN(8)
endif

ZRELADDR
內核啟動在RAM中的地址。壓縮的內核映像被解壓到這個地址,然後執行。
This is the address where the decompressed kernel will be written, and eventually executed. The following constraint must be valid:

__virt_to_phys(TEXTADDR) == ZRELADDR
The initial part of the kernel is carefully coded to be position independent.
一般定義在項目目錄下,比如:
arch/arm/mach-at91/Makefile.boot: zreladdr-y += 0x70008000
arch/arm/mach-at91/Makefile.boot: zreladdr-y += 0x20008000
arch/arm/mach-cns3xxx/Makefile.boot: zreladdr-y += 0x00008000
arch/arm/mach-davinci/Makefile.boot: zreladdr-y += 0xc0008000
arch/arm/mach-davinci/Makefile.boot: zreladdr-y += 0x80008000
arch/arm/mach-dove/Makefile.boot: zreladdr-y += 0x00008000
arch/arm/mach-ebsa110/Makefile.boot: zreladdr-y += 0x00008000
arch/arm/mach-exynos/Makefile.boot: zreladdr-y += 0x40008000
arch/arm/mach-footbridge/Makefile.boot: zreladdr-y += 0x00008000
arch/arm/mach-gemini/Makefile.boot: zreladdr-y += 0x00008000
arch/arm/mach-gemini/Makefile.boot: zreladdr-y += 0x10008000
arch/arm/mach-integrator/Makefile.boot: zreladdr-y += 0x00008000
arch/arm/mach-iop13xx/Makefile.boot: zreladdr-y += 0x00008000

在arch/arm/boot/Makefile中被賦值:
ZRELADDR := $(zreladdr-y)
PARAMS_PHYS := $(params_phys-y)
INITRD_PHYS := $(initrd_phys-y)
... ...
ifneq ($(LOADADDR),)
UIMAGE_LOADADDR=$(LOADADDR)
else
ifeq ($(CONFIG_ZBOOT_ROM),y)
UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)

熱點內容
腳本和秒搶 發布:2025-03-20 05:06:29 瀏覽:590
b35鎖如何設置密碼 發布:2025-03-20 05:06:27 瀏覽:903
淘寶如何租雲伺服器 發布:2025-03-20 05:05:12 瀏覽:210
編程忌諱 發布:2025-03-20 04:58:35 瀏覽:425
國家知識產權專利資料庫 發布:2025-03-20 04:54:29 瀏覽:414
win7怎麼給文件夾設密碼 發布:2025-03-20 04:52:38 瀏覽:723
安卓手機電影怎麼投屏到ipad上 發布:2025-03-20 04:27:23 瀏覽:677
蘋果安卓基於什麼開發 發布:2025-03-20 04:20:52 瀏覽:520
演算法化是 發布:2025-03-20 03:48:20 瀏覽:771
拆二代訪問 發布:2025-03-20 03:47:34 瀏覽:63