Uboot tarafından hangi bellek RAM adres aralığının kullanıldığını nasıl anlayabilirim?


12

Ben uboot ve merak ediyordum, uboot tarafından hangi RAM adres aralığının kullanıldığını nasıl anlayabilirim.

uboot'un çalışması için bellek gerekiyor, bu yüzden bazı RAM kullanıyor olabilir. Bu RAM adreslerini değiştirmekten kaçınmak istiyorum.

Hangi bellek bölgesinin uboot yüklü olduğunu nasıl bilebilirim?

Yanıtlar:


2

DULG DebuggingUBoot sayfası bunu söyler ( sözünü ettiği "yer değiştirme" kendisini flash'tan RAM'e kopyalar).

Yer değiştirmeden sonra U-Boot'da hata ayıklamak için U-Boot'un kendisine taşındığı adresi bilmemiz gerekir. PRAM gibi egzotik özellikler kullanılmadığında, bu adres genellikle - CONFIG_SYS_MONITOR_LEN olur. 16MB RAM ve CONFIG_SYS_MONITOR_LEN = 192KB ile olan örneğimizde bu, 0x1000000 - 0x30000 = 0xFD0000 adresini verir.

Metnin daha fazla okunması, işlemciye veya panele bağlı olduğunu ve emin olmak için U-Boot kaynağını kontrol etmeniz gerekebileceğini gösterir.

İlişkin Guruplug :

RAM tarafında, u-Boot'da ilk 8 megabayt ayrılmış. Gerisi ücretsiz. Bazı geliştiriciler, flaş programlamak için 0 × 800000'e çekirdekler ve dosya sistemleri yükleyecektir. Başka bir yaygın nokta 100 megabayt sınırındadır (veya 0 × 640000 dengesi).

U-Boot sürümünüze bağlı olarak, bir dizeyi boş RAM'de bir yere koymak ve daha sonra o dizenin RAM'inin geri kalanını avlamak için kullanılabilir, böylece bellekte U-Boot'un yaklaşık konumu ortaya çıkar.


1

Kullandığım uboot sürümünü başlattığımda, otomatik olarak bir "sanal çekirdek bellek düzeni" görüntüler.

Memory: 859068k/859068k available, 25668k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
    vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
    lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8004d000   ( 276 kB)
      .text : 0x8004d000 - 0x808ad000   (8576 kB)
      .data : 0x808ce000 - 0x80937a40   ( 423 kB)

(Büyük dosyaları belleğe yüklemek gibi) çalıştırmak istediğiniz çeşitli yardımcı program işlemleri için lowmem alanını kullanmak güvenli olduğunu buldum. İdeal olarak, bu tür bir şey için yüksek bellek kullanmak istediğinizi düşünüyorum, ancak seçeneğim yoktu (çıktımda gördüğünüz gibi).


Bunun Linux'un bellek haritası olmadığından emin misiniz?
kıllanma

Emin değilim. Bu yüksek mesaj eksikliği ve "Sanal çekirdek" e başvurmam başka türlü düşünmeme neden oluyor. Ben uboot söz konusu olduğunda bir çaylak / hack'im. Buradaki önemli nokta, uboot'un gerektirdiği herhangi bir şey üzerine yazmadan bu lowmem aralığını güvenle kullanabilmemdi.
BuvinJ

Hatırladığım gibi, bu OS btw yüklenmeden önce görüntülenir.
BuvinJ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.