SDRAM başlatma sorunu (Freescale iMX31)


10

Donanım yapılandırmasındaki bir değişikliği karşılamak için var olan bir başlatma sırasını (SDRAM düşük düzeyli başlangıcı) değiştirmeye çalışıyorum: benim iMX31 üzerinde varolan bir SDRAM farklı bir boyutla değiştirildi, aksi takdirde aynı tip / üretici / düzen / pimler / zamanlamalar. özelliklerine göre.

Kısa kurulum senaryosu ve hata davranışı: Kurulu önyüklemeyi başardım (sıra şu şekildedir: NAND'dan bootloader'ı çalıştırın, 'step2 bootloader'ı RAM'e kopyalayın,' step2 bootloader'ı RAM'den çalıştırın). Ancak RAM'den (adım2'ye atladıktan sonra) yürütme tutarlı bir şekilde başarısız olduğu için bazı ayarların yanlış olduğu görülüyor.

Yanlış parametreleri tanımlamak için derinlemesine test büyük miktarda yaptım, benim sonuçları şunlardır: - NAND veya JTAG yürütüldüğünde tek bayt / kelime okuma / yazma çalışmaları - blok bilge / patlama yazma NAND yürütüldüğünde çalışıyor gibi görünüyor ( JTAG ayrıca) İlginç bir şey: - blok bilge yazdıktan sonra, doğru bir bayt / kelime (!) Okumak için herhangi bir SDRAM adresinde birden fazla okumaya ihtiyacım var - sütun ayarlarımı SADECE daha yüksek (+1) miktarda kullanacak şekilde değiştirirsem "yükleme modu" için sütunlar, ancak ön şarj / yenileme için değil, o zaman çalışır, ancak tutarsız bir şekilde (teorime göre, eksik sütunun önemli olmadığı düşük adres aralığı için güvenilir bir şekilde çalışır).

Konfigürasyonum hakkında bir fikir edinmek için: RAM'deki ayarlar bu sorudakilerle hemen hemen aynıdır. RAM zamanlamaları yanında Freescale tarafından sağlandıkları için bu şaşırtıcı değildir: Freescale iMX31'de SDRAM adresini CPU adresine nasıl çevirebilirim? Orijinal ayarım aynı (bağlantıdaki gibi 64MB SDRAM), yeni RAM'im 128MB. Tüm referans kartları 64MB veya 128MB ile sağlanır, bu nedenle her iki değer de iMX31 ve türevleri tarafından desteklenir.

Yapmam gereken değişiklik (dikkat: varsayım!) RAM'in yalnızca COLUMN yapılandırmasında (bir sütun daha var). RAM çift boyuttadır, ancak spesifikasyon aynı zamanlamaları vb. İddia eder. Sadece bir sütun daha olduğundan (yukarıdaki bağlantıya bakın, yeni RAM için ön şarj, yenileme ve yükleme modu kayıtlarım 0x92100000'den 0x92200000'e değişiyor - örneğin ) başka hiçbir şey değişmez.

Soru 1: Tüm zamanlamalar ve fiziksel çip karakteristikleri (sürücü gücünü, zamanlamasını ve güç tüketimini etkileyen) benzerse, sütun sayısındaki bir değişikliğin "yerel" (diğer ayarları etkilemeyen) olabileceğini varsayıyorum. İlginç olan, ayarlarımı çevrimiçi olarak mevcut olan diğer pek çok ile karşılaştırdım (U-Boot, 128MB ile Red-Boot) ve sürücü gücü gibi panoya özgü ayarların yanında, fark görmüyorum.

Soru 2: Yukarıdaki hata davranışım (çalışmayı yazar, yalnızca kısmi okur) muhtemelen RAM'in belirli bir geçersiz ayarına özgüdür. Biri bana hangi ayara daha yakından bakabileceğimi önerebilir mi? Ayrıca düşük performansla bile sistem suçluyu daraltmama izin verecek şekilde 'güvenli' parametreler ayarlamak mümkün olabilir.


Sorunun donanım tasarımı (kötü IC'ler, düzen hataları, zayıf sinyal bütünlüğü, yetersiz güç ...) ile ilgili olmadığından makul olarak emin misiniz?
jbarlow

Yanıtlar:


1

2 için, bir iMX31 demo kartından ayarlarla başlayın. Sonra bunları parçanız için gerektiği gibi değiştirin (esas olarak hız ve boyut). Özellikle büyük olasılıkla okumada yanlış bekleme durumları var.

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.