導航:首頁 > 編程系統 > bestlinux

bestlinux

發布時間:2023-11-03 22:56:28

Ⅰ 基於linux內核開發的操作系統有哪些

很多很多,這里只列舉一些,不見得全面:
RedHat/Fedora/Debian/Ubuntu/RedFlag/Everest/LFS/RTLinux
還有手機上現在比較火的Android系統也是基於linux內核的

記得網上有個linux系統的家譜,你可以搜索下

Ⅱ 如何從linux內核上預留DDR物理內

luther@gliethttp:~$ vim /proc/iomem
00100000-5bf0ffff : System RAM
00100000-00575553 : Kernel code
00575554-0078d307 : Kernel data
0081a000-008a809f : Kernel bss
可以看到kernel code和data,bss使用的ram就是我們的系統內存,
luther@gliethttp:~$ dmesg也可以看到物理內存的情況
BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009dc00 (usable)
[ 0.000000] BIOS-e820: 000000000009dc00 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000d2000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 000000005bf10000 (usable)
[ 0.000000] BIOS-e820: 000000005bf10000 - 000000005bf19000 (ACPI data)
[ 0.000000] BIOS-e820: 000000005bf19000 - 000000005bf80000 (ACPI NVS)
[ 0.000000] BIOS-e820: 000000005bf80000 - 0000000060000000 (reserved)
[ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
[ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
[ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[ 0.000000] BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
luther@gliethttp:~$ vim /proc/meminfo
MemTotal: 1478540 kB
MemFree: 868544 kB
Buffers: 31084 kB
Cached: 321672 kB
SwapCached: 0 kB

luther@gliethttp:~$ sudo vim /boot/grub/grub.cfg
原來的
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=9a04b75d-22f4-4100-a8b0-a07ef00ead04 ro quiet splash
新改的
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=9a04b75d-22f4-4100-a8b0-a07ef00ead04 ro quiet splash mem=1442M

修改之後dmesg將多出如下一行提示:
[ 0.000000] user-defined physical RAM map:
[ 0.000000] user: 0000000000000000 - 000000000009dc00 (usable)
[ 0.000000] user: 000000000009dc00 - 00000000000a0000 (reserved)
[ 0.000000] user: 00000000000d2000 - 0000000000100000 (reserved)
[ 0.000000] user: 0000000000100000 - 000000005a200000 (usable)
[ 0.000000] user: 000000005bf10000 - 000000005bf19000 (ACPI data)
[ 0.000000] user: 000000005bf19000 - 000000005bf80000 (ACPI NVS)
[ 0.000000] user: 000000005bf80000 - 0000000060000000 (reserved)
[ 0.000000] user: 00000000e0000000 - 00000000f0000000 (reserved)
[ 0.000000] user: 00000000fec00000 - 00000000fec10000 (reserved)
[ 0.000000] user: 00000000fee00000 - 00000000fee01000 (reserved)
[ 0.000000] user: 00000000fff80000 - 0000000100000000 (reserved)

之前
[ 0.000000] 583MB HIGHMEM available.
之後
[ 0.000000] 554MB HIGHMEM available.

這樣000000005a200000 - 000000005bf10000之間的29M物理內存就被預留出來供我們的DMA使用了[luther.gliethttp]

==================================================
=====第1步=============================================================================
[root@localhost ~]# cat /proc/meminfo
MemTotal: 1026124 kB

[root@localhost ~]# cat /proc/iomem
00000000-0009efff : System RAM
00000000-00000000 : Crash kernel
0009f000-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000d4000-000d4fff : Adapter ROM
000f0000-000fffff : System ROM
00100000-3f6effff : System RAM // 內存首尾地址,我們將從0x3f6effff結尾開始往前保留300M空間
00400000-006081dd : Kernel code
006081de-006e19bb : Kernel data
3f6f0000-3f6f2fff : ACPI Non-volatile Storage
3f6f3000-3f6fffff : ACPI Tables
40000000-400003ff : 0000:00:1f.1
f0000000-f7ffffff : 0000:00:02.0
f8000000-f8ffffff : PCI Bus #01
f8000000-f87fffff : 0000:01:04.0
f8000000-f87fffff : ceopen_dmp
f8800000-f880ffff : 0000:01:04.0
f8800000-f880ffff : ceopen_dmp
f8810000-f88100ff : 0000:01:03.0
f8810000-f88100ff : 8139too
f8811000-f88111ff : 0000:01:04.0
f8811000-f88111ff : ceopen_dmp
f9000000-f93fffff : 0000:00:00.0
f9400000-f947ffff : 0000:00:02.0
f9480000-f94803ff : 0000:00:1d.7
f9480000-f94803ff : ehci_hcd
f9481000-f94811ff : 0000:00:1f.5
f9481000-f94811ff : Intel ICH5
f9482000-f94820ff : 0000:00:1f.5
f9482000-f94820ff : Intel ICH5
fec00000-ffffffff : reserved
=====第2步=============================================================================
向cmdline加入mem和reserved啟動參數

hex(0x3f6f0000-300*1024*1024)等於0x2caf0000,這里表示從0x3f6effff結尾開始往前保留300M空間
hex(300*1024*1024)等於0x12c00000

[root@localhost ~]# vim /boot/grub/menu.lst
kernel /boot/vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet mem=0x2caf0000 reserve=0x2caf0000,0x12c00000
即保留0x2caf0000開始的300*1024*1024位元組內存

kernel/resource.c|820| __setup("reserve=", reserve_setup);
2.6.30.4內核cmdline常用命令行參數與相應處理函數

[root@localhost ~]# cat /proc/meminfo
MemTotal: 721324 kB

[root@localhost ~]# cat /proc/iomem
00000000-0009efff : System RAM
00000000-00000000 : Crash kernel
0009f000-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000d4000-000d4fff : Adapter ROM
000f0000-000fffff : System ROM
00100000-2caeffff : System RAM
00400000-006081dd : Kernel code
006081de-006e19bb : Kernel data
2caf0000-3f6effff : reserved // 這就是我們保留出來的內存了,和上面的內存結構一致[luther.gliethttp]
3f6f0000-3f6f03ff : 0000:00:1f.1
f0000000-f7ffffff : 0000:00:02.0
f8000000-f8ffffff : PCI Bus #01
f8000000-f87fffff : 0000:01:04.0
f8800000-f880ffff : 0000:01:04.0
f8810000-f88100ff : 0000:01:03.0
f8810000-f88100ff : 8139too
f8811000-f88111ff : 0000:01:04.0
f9000000-f93fffff : 0000:00:00.0
f9400000-f947ffff : 0000:00:02.0
f9480000-f94803ff : 0000:00:1d.7
f9480000-f94803ff : ehci_hcd
f9481000-f94811ff : 0000:00:1f.5
f9481000-f94811ff : Intel ICH5
f9482000-f94820ff : 0000:00:1f.5
f9482000-f94820ff : Intel ICH5

=====第3步=============================================================================
雖然預留了300M空間,但是ioremap_nocache不能映射全部的300M空間,不知道為什麼,可能和
系統自身有關系,下面是具體的映射代碼,因為已經將region做了reserved申請命名,所以
我們也就不需要再使用request_mem_region(pdma, dma_size, "gliethttp_dma_area")來獲得region了.

const dma_addr_t pdma = 0x2caf0000;
const size_t dma_size = (280*1024*1024);

kdma = ioremap_nocache(pdma, dma_size);
if (kdma == NULL)
return -ENOMEM;
其 實2G內存也沒有問題,mem=1.6G,然後ko驅動使用mmap將1.6G-2G之間的內存物理地址直接映射給user空間,這樣user空間就可以 直接向1.6G-2G物理內存寫入數據了,然後PCI直接通過寄存器配置,向1.6G-2G的物理地址讀取數據,這樣透過ko驅動將user和pci建立 了直連,當然了,因為內核線性地址為3G-4G只有1G的內存可以被映射,所以2G內存的另外1G內存就屬於高端內存了,所以內核ko驅動不能映射 1.6G-2G的內存到內核線性地址空間,但是可以通過kmap短暫的映射來使用[luther.gliethttp]

static void __init early_mem(char **p)
{
static int usermem __initdata = 0;
unsigned long size, start;

if (usermem == 0) {
usermem = 1;
meminfo.nr_banks = 0;
}

start = PHYS_OFFSET;
size = memparse(*p, p);
if (**p == '@')
start = memparse(*p + 1, p);

arm_add_memory(start, size);
}
__early_param("mem=", early_mem);

以下轉自:http://hi..com/linuxbestbest/blog/item/9bc8dbdb72127763d0164e9c.html

有時,內核不能識別你的全部內存(RAM)。你可以用 cat /proc/meminfo 命令來校驗。
查看一下所顯示的數量是否與你所知的系統內存相同。如果不同,在 /boot/grub/grub.conf 文件中添加以下一行:
mem=xxM
把 xx 替換成你擁有的內存數量(以 MB 為單位)。
在 /boot/grub/grub.conf 文件中,以上的例子與下面相似:,
#NOTICE: You have a /boot partition. This means that
# all kernel paths are relative to /boot/
default=0
timeout=30
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-2.47.1)
root (hd0,0)
kernel /vmlinuz-2.4.20-2.47.1 ro root=/dev/hda3 mem=128M
當你重新引導後,grub.conf 文件中的改變將會反映在你的系統中。
或者,你可以在 /etc/lilo.conf 文件中添加以下一行:
append="mem=xxM"
注意,append 命令在 GRUB 和 LILO 中都可用。
把 xx 替換成你擁有的內存數量(以 MB 為單位)。切記,每映像後補的行會完全覆寫全局後補的行。把這行添加到每映像描述中可能值得一試。
在 /etc/lilo.conf 文件中,以上的例子與下面相似:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50

image=/boot/vmlinuz-2.4.20-2.47.1
label=linux
root=/dev/sda1
initrd=/boot/initrd-2.4.20-2.47.1.img
read-only
append="mem=128M"
記住在改變了 /etc/lilo.conf 文件後運行 /sbin/lilo -v 命令。
請注意,在 GRUB 或 LILO 中指定所用標簽(映像)時傳遞這一選項可以獲得同樣的效果。
當你已載入 GRUB 引導屏幕後,鍵入 e 來編輯。你所選定的引導標簽的配置文件中的項目列表就會在你面前出現。
選擇開頭為 kernel 的行,然後鍵入 e 來編輯這一引導項目。
在 kernel 行的末尾,添加:
mem=xxM

append=xxM
這里的 xx 與你系統的內存數量相同。
按 [Enter] 鍵來退出編輯模式。
回到 GRUB 屏幕後,鍵入 b 來用你的新內存指數引導。
在圖形化的 LILO 屏幕上,按 [Ctrl]-[x] 退回到 boot: 提示。接下來,在 boot: 提示下輸入:
linux mem=xxM
請記住將 xx 替換成你系統的內存數量。按 [Enter] 鍵來引導。

http://blog.sina.com.cn/s/blog_677570ff0100l1ng.html
http://www.kerneltravel.net/jiaoliu/map.htm

閱讀全文

與bestlinux相關的資料

熱點內容
mx5系統基帶版本 瀏覽:184
ntlea全域通win10 瀏覽:171
qq怎麼查看別人的收藏 瀏覽:135
地震三參數matlab程序 瀏覽:57
怎樣給優盤文件加密軟體 瀏覽:7
收拾文件有哪些小妙招 瀏覽:431
pdf文件去底網 瀏覽:253
win10重裝系統需要格式化c盤嗎 瀏覽:424
路由器trx文件 瀏覽:655
淘寶店鋪數據包怎麼做 瀏覽:195
win10鍵盤黏連 瀏覽:332
json如何生成表格 瀏覽:323
怎麼修復sql資料庫表 瀏覽:40
微信微博差別 瀏覽:163
簽到積分換禮品app 瀏覽:812
mfc最近打開文件 瀏覽:672
app埋點平台都有哪些app 瀏覽:314
瑞斯康達網路管理界面 瀏覽:254
ca證書管理器linux 瀏覽:358
蘋果id安全提示問題3個字元 瀏覽:949

友情鏈接