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
-
-
-
bởi bqvietĐám UPS cửa cuốn đời cổ vẫn chạy 1 biến áp sắt từ vừa để hạ áp điện lưới nạp bình điện, vừa để kích áp bình điện thành sóng vuông đầu ra đấy thôi. Kiểu tiết kiệm này đã có từ mấy chục năm nay. Sơ đồ đại loại như link
https://www.homemade-circuits.com/si...rchargerchang/...-
Channel: Nguồn!
06-09-2026, 16:49 -

Comment