인프런 커뮤니티 질문&답변
[9장] 디바이스 드라이버에 관하여
작성
·
167
1
안녕하세요 🙂
[1. 질문 챕터] : 9장 19분 45초 ~ 20분
[2. 질문 내용] : register에 값을 읽고, 쓸 때, 8장에서는 myip.h에 정의되어 있는
MYIP_mWriteReg(BaseAddress, RegOffset, Data)
을 사용하시고, 9장에서는 xil_io.h에 정의되어 있는
Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data))
문법을 사용하셨고, 두 문법이 동일한 기능을 하는 것은 알았습니다.
C언어로 작성된 main.c의 경우 맛비님께서 올려주신 코드를 그대로 사용하는데, 9장의 main.c에서 myip.h가 include 되어 있지 않은 것은 vivado 2022 tool makefile 문제로 인해 맛비님께서 일부러 빼신건지? 아니면 "디바이스 드라이버가 자동적으로 생성되지 않았다"라고 말씀해주셨는데, 디바이스 드라이버가 생성되지 않는 조건이 있는지에 대해 알고 싶습니다.
[3. 시도했던 내용, 그렇게 생각하는 이유] : 제가 실습을 따라가며 생성했던 코드인데, 여기에는 myip.h가 포함되어 있고

아래는 맛비님이 공유해주신 답변 파일에 있는 코드인데, 여기에는 myip.h가 포함되어 있지 않아서요

================ 다음 내용은 읽어보시고 지우시면 됩니다.=================
질문 내용을 작성해주실 때, 위의 3단계로 제가 이해할 수 있게 작성해주시면 정확한 답변을 드릴 수 있을 것 같아요!!
현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)
강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)
이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)
개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..
글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)
서로 예의를 지키며 존중하는 문화를 만들어가요.
질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )
먼저 유사한 질문이 있었는지 검색해보세요.
잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
==================
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 장태영님.
질문해주신 내용에 대해 유사한 답변을 제공드리겠습니다.
두 가지 방법 모두 register에 값을 읽고 쓰는 기능을 제공하는데, myip.h에서는 myip IP로 직접 접근하여 읽고 쓰기 위한 함수들이 정의되고 xil_io.h에서 제공하는 Xil_Out32와 같이 일반적인 I/O 함수들을 사용할 수 있습니다.
디바이스 드라이버가 자동으로 생성되지 않는 경우는 여러 가지 요인이 있을 수 있습니다.
일반적으로:
- IP 생성 시 설정에 문제가 있을 수 있습니다.
- 프로젝트 설정이 잘못되었거나, 올바른 드라이버가 선택되지 않았을 수 있습니다.
- Vivado나 Vitis 설정이 변경되거나 오류가 생길 경우에도 발생할 수 있습니다.
이미지에서 볼 수 있듯이, myip.h와 같은 헤더 파일은 IP가 생성될 때 자동으로 생성되므로, 디바이스 드라이버가 자동으로 생성되지 않았다면 설정이나 환경에 문제가 있었을 가능성이 큽니다.
관련하여, 아래의 유사한 질문과 답변에서 더 많은 정보를 찾을 수 있을 것 같습니다. 이와 유사한 문제를 겪으신 분들의 질문과 답변을 참고하면 문제 해결에 도움이 되실 수 있습니다.
8장 myip - 해당 질문에서는 Xilinx 자동 생성 드라이버에 관한 내용을 다룬 답변이 포함되어 있습니다.
[9장] C code에서 간단한 질문](https://www.inflearn.com/questions/985260) - C 코드에서 사용되는 header 파일들에 대한 설명이 이루어져 있습니다.
API(?) 문의 드립니다. -
Xil_Out32와 같은 함수의 사용 방법 및 어떻게 알게 되었는지에 대한 설명이 포함된 유사한 질문입니다.
위의 내용을 통해 문제 해결에 도움이 되셨으면 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요 🙂
먼저 Tool 관점에서의 답은 저도 명확하게 드리기는 어려울 것 같아요. (이 tool 이 왜 그러지..? 는 저도 잘 모르겠..) 이 부분은 양해부탁드려요. Tool 관련 궁금하신 부분은 Xilinx 메뉴얼을 확인하시는게 더 정확할 것 같은데요.
제가 아는 범위 내에서 답변을 드릴께요.
============
Vivado tool 의 드라이버 코드 생성조건? 에 대해서는 정확하게는 모르겠어요.
영상에서 했던 과정이 전부 다 입니다. 별도로 영상에서 빼거나 하지 않았어요.
============
제 생각에는, 빨간표시, 파란표시 둘다, IP 를 호출할 수 있다고 생각하고요.

빨간색 : 현재 프로젝트를 IP 화 하고 싶을때,
파란색 : 새로 IP 를 만들고 싶은데, template 이 필요할때,
이렇게 이해하고 있어요.
결국 둘 다 IP 를 생성한거고, 불러올 수 있다고 생각합니다.
즐공하세요 🙂






추가적으로 IP 생성하실 때 빨간 표시 부분으로 할 때도 있고, 파란 표시 부분으로 할 때도 있으신데, 어떤 차이가 있는건가요?
"Create a new AXI4 peripheral"로 생성하면 아래와 같이 ip_repo 폴더가 생성되고, 제가 만든 IP를 호출할 수 있는데
"Package your currnet package"로 생성하면 따로 폴더가 생성되지 않고, IP 호출을 위한 레포지토리도 다르게 잡아줘야 하는것 같아서요