ปัญหาการเริ่มต้น SDRAM (Freescale iMX31)


10

ฉันกำลังพยายามปรับเปลี่ยนลำดับ init ที่มีอยู่ (init ระดับต่ำของ SDRAM) เพื่อรองรับการเปลี่ยนแปลงในการกำหนดค่าฮาร์ดแวร์: SDRAM ที่มีอยู่ใน iMX31 ของฉันถูกแทนที่ด้วยขนาดที่แตกต่างกันมิฉะนั้นผู้ผลิต / เลย์เอาต์ / หมุด / การตั้งเวลาเดียวกัน . ตามข้อกำหนด

สถานการณ์การตั้งค่าโดยย่อและพฤติกรรมข้อผิดพลาด: ฉันจัดการเพื่อให้ได้รับการบูทบอร์ด (ลำดับเป็นเช่นนี้: รัน bootloader จาก NAND คัดลอก 'step2 bootloader' เป็น RAM เรียกใช้ 'step2 bootloader' จาก RAM) แต่ดูเหมือนว่าฉันจะมีการตั้งค่าที่ไม่ถูกต้องเนื่องจากการดำเนินการจาก RAM (หลังจากข้ามไปยังขั้นที่ 2) ล้มเหลวอย่างสม่ำเสมอ

ฉันทำการทดสอบในเชิงลึกจำนวนมากเพื่อระบุพารามิเตอร์ที่ไม่ถูกต้องผลลัพธ์ของฉันคือ: - ไบต์เดียว / คำอ่าน / เขียนงานเมื่อดำเนินการจาก NAND หรือ JTAG - บล็อกฉลาด / ระเบิดเขียนดูเหมือนจะทำงานเมื่อดำเนินการจาก NAND ( JTAG ด้วย) สิ่งที่น่าสนใจ: - หลังจากเขียนบล็อกอย่างชาญฉลาดฉันต้องอ่านหลายครั้งในที่อยู่ SDRAM ใด ๆ เพื่ออ่านไบต์ / คำที่ถูกต้อง (!) - หากฉันแก้ไขการตั้งค่าคอลัมน์ของฉันให้ใช้ปริมาณที่สูงขึ้น (+1) เท่านั้น คอลัมน์สำหรับ "โหมดโหลด" แต่ไม่ใช่สำหรับการเติมเงิน / รีเฟรชแล้วจะใช้งานได้ แต่ไม่สอดคล้องกัน (สำหรับทฤษฎีของฉันมันทำงานได้อย่างน่าเชื่อถือสำหรับช่วงที่อยู่ต่ำกว่าซึ่งคอลัมน์ที่หายไปไม่สำคัญ)

ในการรับแนวคิดของการกำหนดค่าของฉัน: การตั้งค่าจาก RAM เกือบจะเหมือนกันกับที่ตั้งไว้ในคำถามนี้ ไม่น่าแปลกใจเนื่องจาก Freescale จัดหาให้นอกเหนือจากการกำหนดเวลาแรม: บน Freescale iMX31 ฉันจะแปลที่อยู่ SDRAM เป็นที่อยู่ CPU ได้อย่างไร การตั้งค่าดั้งเดิมของฉันเหมือนกัน (เช่น 64MB SDRAM เหมือนในลิงก์) RAM ใหม่ของฉันคือ 128MB บอร์ดอ้างอิงทั้งหมดมาพร้อมกับ 64MB หรือ 128MB ดังนั้นทั้งสองค่าได้รับการสนับสนุนโดย iMX31 และ derivates

การเปลี่ยนแปลงที่ฉันต้องทำ (ความสนใจ: ข้อสมมติ!) นั้นอยู่ในการกำหนดค่า COLUMN (เป็นอีกหนึ่งคอลัมน์) ของ RAM RAM มีขนาดใหญ่เป็นสองเท่า แต่อย่างอื่นสเป็คอ้างว่ามีการกำหนดเวลาเดียวกันแน่นอน ฯลฯ เนื่องจากมีคอลัมน์อีกหนึ่งคอลัมน์เท่านั้น (ดูลิงก์ด้านบนการลงทะเบียนโหมดรีเฟรชรีเฟรชและโหลดของฉันเปลี่ยนจาก 0x92100000 เป็น 0x92200000 สำหรับ RAM ใหม่ - ตัวอย่างเช่น ) ไม่มีอะไรเปลี่ยนแปลง

คำถามที่ 1: การสันนิษฐานของฉันสมเหตุสมผลหรือไม่ว่าหากการกำหนดเวลาและลักษณะทางกายภาพของชิปทั้งหมด (ส่งผลต่อความแข็งแรงของไดรฟ์เวลาและการใช้พลังงาน) มีความคล้ายคลึงกันการเปลี่ยนแปลงจำนวนคอลัมน์อาจเป็น "ท้องถิ่น" (ไม่มีผลต่อการตั้งค่าอื่น ๆ ) น่าสนใจพอฉันเปรียบเทียบการตั้งค่าของฉันกับคนอื่น ๆ ออนไลน์ (U-Boot, Red-Boot 128MB) และการตั้งค่าเฉพาะบอร์ดเช่นความแรงของไดรฟ์ฉันไม่เห็นความแตกต่าง

คำถามที่ 2: พฤติกรรมข้อผิดพลาดของฉันด้านบน (งานเขียนอ่านเพียงบางส่วน) อาจเป็นค่าเฉพาะสำหรับการตั้งค่า RAM ที่ไม่ถูกต้อง ใครบ้างสามารถให้คำแนะนำแก่ฉันเกี่ยวกับการตั้งค่าที่จะมองให้ใกล้ขึ้น นอกจากนี้ยังอาจเป็นไปได้ที่จะตั้งค่าพารามิเตอร์ 'ปลอดภัย' เพื่อให้มีประสิทธิภาพลดลงระบบจะช่วยให้ฉันแคบลงผู้กระทำผิด


คุณแน่ใจหรือไม่ว่าปัญหาไม่เกี่ยวข้องกับการออกแบบฮาร์ดแวร์ (ไอซีไม่ดี, ข้อผิดพลาดของรูปแบบ, ความสมบูรณ์ของสัญญาณไม่ดี, พลังงานไม่เพียงพอ ... )
jbarlow

คำตอบ:


1

สำหรับ 2 เริ่มต้นด้วยการตั้งค่าจากบอร์ดสาธิต iMX31 จากนั้นปรับเปลี่ยนตามความต้องการสำหรับชิ้นส่วนของคุณ โดยเฉพาะอย่างยิ่งคุณอาจมีสถานะรออ่านผิด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.