Mình đang tập viết code C trên NIOS,nhưng mà thấy có nhiều câu lệnh chưa hiểu hết ý nghĩa của nó ,ví dụ như cú pháo câu lệnh IOWR,IORD và ý nghĩa của tững thành phàn trong câu lệnh dó là gì,IOWR_8DIRECT khác gì với IOWR và IOWR_32DIRECT.thanks
Giúp đỡ về câu lệnh NIOS
Collapse
X
-
Đây là các MACRO, sẽ được đổi sang assembly code trong lúc dịch.
Bạn có thể tham khảo ở file io.h (altera/nios2eds/components/altera_nios2/HAL/inc)
IOWR & IORD sẽ được expand ra ghi 32bit và đọc 32bit nhưng địa chỉ ở dạng NATIVE.
IOWR_32DIRECT và IORD_32DIRECT expand ra ghi 32bit và đọc 32bit nhưng địa chỉ ở dạng DIRECT
Native và Direct addressing:
- Ví dụ ngoại vi của bạn có 2 thanh ghi, mỗi thanh ghi 32bit ở địa chỉ :
BASE = 0x8000
REGISTER0 = 0x8000
REGISTER1 = 0x8004
- Khi dùng IOWR:
IOWR(BASE, 1, DATA)
- Khi dùng IOWR DIRECT:
IOWR_32DIRECT(BASE, 4, DATA)
Offset của IOWR_xxDIRECT luôn tính bằng byte
IOWR_8/16/32DIRECT sẽ được dịch ra lệnh assembly tương ứng để ghi 8bit/16bit hoặc 32bit
Altera khuyên chỉ nên dùng IOWR/RD_xxDIRECT
-
Comment
Bài viết mới nhất
Collapse

Comment