2013-12-11 18 views
9

" RAM kopyalanan " anlamı nedir?

U önyükleme RAM ortam değişkenleri bellek bloğu kopyalar?

Teşekkür

cevap

5

adres ve env değişkenlerin boyutu kurulu başlıkları dosyasında belirlenecektir bloke etmektedir. Örneğin include/configs/am3517_evm.h bakınız:

#define CONFIG_SYS_ENV_SECT_SIZE  (128 << 10)  /* 128 KiB */ 
#define CONFIG_ENV_OFFSET    SMNAND_ENV_OFFSET 
#define CONFIG_ENV_ADDR     SMNAND_ENV_OFFSET 

u-boot yükleri SMNAND_ENV_OFFSET dan CONFIG_SYS_ENV_SECT_SIZE. Değerleri değiştirebilir ve daha sonra saveenv aracılığıyla kaydedebilirsiniz.

8

Evet, U-çizme RAM ortam değişkenleri bellek bloğunu kopyalar.

blok gelen kalıcı depolama platformu özeldir. (Bu depolama kullanımı seçeneğini ve kaynak dosyası) Bazı ortak depolama seçenekleri: içinde

NOR flash common/env_flash.c 
SPI flash common/env_sf.c 
MMC   common/env_mmc.c 

CONFIG_ tanımları/yapılandırmaları içerir/yourboard.h ayrıntıları belirleyecek. Örneğin, SPI flaş belki, belleğin en üstünde eşlenen:

#define CONFIG_ENV_IS_IN_SPI_FLASH 
#define CONFIG_ENV_SIZE 0x00001000 
#define CONFIG_ENV_ADDR 0xFFFFF000 

CONFIG_ENV_ADDR Flash u-boot ortamı Değişken bölümün adresidir. Kalıcı belleğe çevreyi yazarken u-boot otomatik olarak bu bölüme CRC32 oluşturur

Not. Başlangıçta ortam okunurken CRC kontrol edilir. CRC kontrolü geçmezse, depolanan ortam kullanılmaz; bunun yerine program koduna kodlanmış yeni bir varsayılan ortam kullanılır, bu özel bir durumdur.

U-Boot başlatma sırasında

, çevre değişkenleri karma tablo alınır. İşletim sırasında, tüm okuma/yazma işlemleri ve tüm "printenv" (ekran ortam değişkeni) ve "setenv" (ortam değişkeni ayarlandı) komutları bu tablo girişlerini kullanır. Kalıcı depoya yazan "saveenv" komutu tamamlanana kadar herhangi bir değişiklik kaydedilmemiş.

Daha fazla bilgi için, bkz. u-boot/common/cmd_nvedit.c hatları 14-24 ve u-boot/README satırları 3474-3881 (satır numaraları v2013.10 içindir).

+0

@ Joe Kul, Teşekkürler. U-boot, ortam değişkenlerinin belleğinin bloğunu RAM'e kopyalar. Sonra bu bölümün adresini RAM'de tanımladığımız yer? U-boot neden env bölümünü doğrudan flash bellekten ** hash tablosuna ** yazmıyor ve içeri aktarmıyor, fakat daha sonra RAM'e kopyalamanız gerekiyor mu? –

+0

U-Boot, flaştan RAM'e kadar neredeyse her şeyi kopyalar. Buna "yer değiştirme" denir.Flaştan gelen herhangi bir şey için adresi RAM'de almak için, u-boot.map içindeki flaş yerine "Yer Değiştirme Ofseti" ni (konsolda basılır) ekleyebilirsiniz. Ayrıca bkz. Arch/arm/lib/board.c. Ancak yer değiştirme ayrı bir konudur. –

+0

@ Joe Kul: U-boot'un bir "yeniden yerleştirme" ye ihtiyacı olduğunu bilmiyorum. Sistemim için, boostrap RAM'a u-boot yükler, bu yüzden u-boot'in sadece ortam değişkenleri bloklarını okumalı fakat yeniden yerleştirmeye gerek olmadığını düşünüyorum. Aslında, önyüklemem ikili bir görüntüdür, bu nedenle herhangi bir yer değiştirme gerçekleştiremez. Teşekkür –

İlgili konular