Sự cố khởi tạo SDRAM (Freescale iMX31)


10

Tôi đang cố gắng sửa đổi trình tự init hiện tại (init SDRAM cấp thấp) để thay đổi cấu hình phần cứng: SDRAM hiện có trên iMX31 của tôi đã được thay thế bằng một kích thước khác, nếu không cùng loại / nhà sản xuất / bố trí / chân / thời gian. theo thông số kỹ thuật.

Kịch bản thiết lập ngắn gọn và hành vi lỗi: Tôi đã quản lý để khởi động bảng (trình tự như sau: thực thi bộ nạp khởi động từ NAND, sao chép 'bộ tải khởi động step2' sang RAM, thực hiện 'bộ tải khởi động step2' từ RAM). Nhưng tôi dường như có một số cài đặt sai, vì thực thi từ RAM (sau khi chuyển sang bước 2) không thành công.

Tôi đã thực hiện một số lượng lớn thử nghiệm chuyên sâu để xác định các tham số sai, kết quả của tôi là: - công việc đọc / ghi byte / từ đơn khi được thực thi từ NAND hoặc JTAG - ghi khối-khôn / cụm có vẻ hoạt động khi được thực hiện từ NAND ( JTAG cũng) Điều thú vị: - sau khi ghi khối, tôi cần nhiều lần đọc trên bất kỳ địa chỉ SDRAM nào để đọc một byte / từ (!) Chính xác - nếu tôi sửa đổi cài đặt cột của mình thành CHỈ sử dụng số lượng (+1) cao hơn các cột cho "chế độ tải" nhưng không phải để nạp tiền / làm mới, sau đó nó hoạt động, nhưng không nhất quán (theo lý thuyết của tôi, nó hoạt động đáng tin cậy cho phạm vi địa chỉ thấp hơn, trong đó cột bị thiếu không quan trọng).

Để có được ý tưởng về cấu hình của tôi: các cài đặt từ RAM gần giống với các cài đặt trong câu hỏi này. Điều này không có gì đáng ngạc nhiên, vì chúng được Freescale cung cấp, bên cạnh thời gian RAM: Trên Freescale iMX31, làm cách nào tôi có thể dịch địa chỉ SDRAM sang địa chỉ CPU? Cài đặt ban đầu của tôi là giống hệt nhau (cũng là 64 MB SDRAM như trong liên kết), RAM mới của tôi là 128 MB. Tất cả các bảng tham chiếu được cung cấp với 64 MB hoặc 128 MB, do đó cả hai giá trị đều được iMX31 hỗ trợ và các dẫn xuất.

Sự thay đổi tôi phải thực hiện (chú ý: giả định!) Chỉ có trong cấu hình COLUMN (đó là một cột nữa) của RAM. RAM có kích thước gấp đôi, nhưng nếu không thì thông số kỹ thuật xác định chính xác thời gian giống nhau, v.v. Vì nó chỉ có một cột nữa (xem liên kết ở trên, các thanh ghi chế độ nạp, làm mới và tải của tôi thay đổi từ 0x92100000 thành 0x92200000 cho RAM mới - ví dụ ) không có gì khác được thay đổi.

Câu hỏi 1: Giả định của tôi có hợp lý không, nếu tất cả các đặc điểm về thời gian và chip vật lý (ảnh hưởng đến cường độ ổ đĩa, thời gian và mức tiêu thụ năng lượng) là tương tự nhau, thì việc thay đổi số lượng cột có thể là "cục bộ" (không ảnh hưởng đến các cài đặt khác)? Thật thú vị, tôi đã so sánh các cài đặt của mình với nhiều cài đặt khác có sẵn trực tuyến (U-Boot, Red-Boot với 128MB) và bên cạnh các cài đặt cụ thể của bo mạch, như cường độ ổ đĩa, tôi không thấy sự khác biệt.

Câu hỏi 2: Hành vi lỗi của tôi ở trên (công việc ghi, chỉ đọc một phần) có lẽ là duy nhất đối với một cài đặt không hợp lệ nhất định của RAM. Có ai có thể cho tôi một lời khuyên mà thiết lập để có cái nhìn gần hơn không? Ngoài ra, có thể đặt các tham số 'an toàn' để ngay cả khi hiệu suất giảm, hệ thống sẽ cho phép tôi thu hẹp thủ phạm.


Bạn có chắc chắn rằng vấn đề không liên quan đến thiết kế phần cứng (IC xấu, lỗi bố trí, tính toàn vẹn tín hiệu kém, không đủ nguồn ...)?
jbarlow

Câu trả lời:


1

Đối với 2, bắt đầu với các cài đặt từ bảng demo iMX31. Sau đó sửa đổi chúng theo yêu cầu cho phần của bạn (chủ yếu là tốc độ và kích thước). Cụ thể, bạn có thể có số lượng trạng thái chờ sai khi đọc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.