묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
vitis에서 run as hardware를 실행하면 에러가 발생합니다.
안녕하세요 맛비님. 항상 좋은 강의 잘 보고 있습니다. 제가 맛비님 강의를 들으면서 실습을 다 진행해봤습니다. 항상 vivado에서 ip를 만들고 zynq보드와 연결해서 xsa파일로 export를 진행하고, vitis에서 c코드를 build하고 실행하는 식으로 진행을 했는데, 잘 작동하던 vitis의 run과정에서 다음과 같은 에러가 발생했습니다.분명 hardware로 run을 하면이런식으로 다 완료가 되고 보드에 초록불까지 들어오는데 해당 에러가 발생합니다.어제까지만 해도 잘 되던 보드가 왜 이러는지 알 방법이 없습니다.유사한 에러들이 있나 구글링을 해봤는데 명확한 해답보단 보드 자체의 하드웨어 문제인듯 하니 run 설정에서 reset을 해보라는 등의 애매한 답변만 있는듯 해서 혹시 맛비님이 해답을 알고 계신다거나, 혹은 하드웨어 초기화방법같은 것을 알고계신다면 알려주시면 감사드리겠습니다.추가로 말씀드리면 해당 에러를 해결해보려고 lab9과정을 다시한번 따라해봤는데zynq보드와 led ip를 합치고 address 맵을 보니 이전과 다르게 나오고 뭔가 주소 체계가 망가진? 그런 느낌이었습니다. 또한 보드의 power를 on/off도 많이 해보고 혹시 jtag 점퍼 문제가 아닐까 해서 계속 확인해봤는데 해당 문제는 아닌듯 했습니다. 도움주시면 정말 감사드리겠습니다.감사합니다.=================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
레지스터 값 쓰기 오류 관련 질문
바쁘신중 수고많으십니다. zybo z7-10으로 현 강의를 수강중인 학생입니다.지금껏 강의를 따라오면서 이상이 없었는데, 실제로 따라하는 과정에서 레지스터에 값을 쓰는 동작이 잘 되지 않아 질문드립니다.우선, 강의 내용을 여러번 돌려보며 제가 놓친 부분이 없는지 파악하였고, 사용된 코드 역시 맛비님이 제공해주신 파일로 모두 복사해서 사용했습니다.그럼에도, 레지스터에 쓰는 동작에 약간 문제가 있는것 같습니다.. vivado와 vitis 양쪽 모두 문제가 발생하지 않았는데, fpga에 c파일을 올리고 나서 입력으로 값을 넣어주면 led가 점멸하지않고 steady하게 켜져있는...문제가 발생하고있습니다(값을 넣지 않으면 스위치를 켜도 점등하지 않음) 다른 예시로, 제가 본 강의를 응용해보고자 레지스터 10개에 값을 입력하는 실습을 진행하였는데 이때는 0~2번째 레지스터에만 값이 정상적으로 입력되고 3번째에는 '1', 4~8번은 '0', 9번은 쓰레기값이 저장되는 것을 확인했습니다. 혹시 FPGA의 불량일까요? 혹은, 값을 입력하는 data = Xil_In32()쪽을 수정하면 해결될지, 맛비님 생각은 어떠실까 여쭤봅니다.. =================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
윈도우에서 리눅스 환경 처럼 Build 하기
안녕하세요 맛비님의 2가지 강의를 모두 수강했는데요 복습을 하던 중 문득 제가 만든 모듈의 웨이브폼을 간단하게 확인하고 싶어서 질문 드렸습니다 윈도우 환경에서 리눅스에서 하던 것 처럼 간단하게 cmd 창에서 build 를 통해서 tb와 모듈을 빌드하고 웨이브폼을 관찰할 수 있는 방법이 있을까요..?이제 막 공부하고 있는 초보 개발자입니다 ㅠ 시간 되실때 질문 받아주시면 감사하겠습니다
-
해결됨자동차 SW - UDS 진단통신 정복하기
강의 자료 문의
안녕하세요. 강사님,혹시 강의자료 공유를 받을 수 있을까요?강의자료에 메모하면서 수강을 하고자 질문드립니다.감사합니다 :)
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
XSA 파일 생성 관련 문의
강의 내용과는 무관할 수 있습니다. 혹시 Vitis 및 Vivado를 사용하시면서 경험해보셨을까 싶어서 문의드립니다.OS: Windows10, Windows 11, Ubuntu 20.04Vitis 2021.2 (윈도우용), Vivado 2021.2.1 (윈도우용)Vitis 2021.2 (리눅스용), Vivado 2021.2.1 (리눅스용)보드 디자인 내에 MPSoC 블록 1개, Bram cotrol 블록 총 72개, AXI interconnector 2개 등으로 구성되어 있고, MPSoc의 FPD에서 AXI interconnec로 연결 후 AXI Interconnector에 bram control이 연결되는 구조입니다.입력에서 메모리에 저장되는 경로가 2개일 때(Bram control 70개)까지는 bitstream 생성 및 XSA생성, Vitis에서 플랫폼 생성이 드라이버 생성 등이 모두 정상이었습니다.경로가 2개에서 4개로 늘려면 Bram control은 72개까지 사용까지 늘어난 상태에서 bitstream도 잘 생성되었고, XSA 파일도 만들었습니다.Vitis에서 XSA파일을 읽어와 플랫폼을 만들고 확인해보면, PS영역(MPSoC 설정)의 Address 범위는 확인이 되는데, PL영역(Bram control)의 address는 보이지 않습니다. PS영역은 driver가 생성이 되었는데, PL영역의 driver가 생성되지 않습니다.윈도우10, 11, 우분투에서 진행해 봤는데 모두 동일한 증상을 보입니다.혹시 이런 경험이 있으신지요?강의와 무관한 내용이지만 혹시 경험이 있으시다면 답변 부탁 드리겠습니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
libs.s 실행 관련 문의
안녕하세요~main.c의 max함수를 실행하면별다른 include 선언 없이 어떻게 libs.s에 있는 max로직을 타는지 알 수 있을까요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
파일 실행 불가
안녕하세요!File -> open project from file system 으로 예제 파일 불러와서실행하려고 하는데,Unable to launchThe selection cannot be launch, and there are no recent launches라는 문구가 뜨면서 실행이 안됩니다.어떻게 하면 될까요?
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
13분 30분 정도 부터의 맛비의 버그2 부분 질문 드립니다.
=================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================CNT_BIT를 31비트로 설정하신 이유가 있으신지가 궁금합니다. 만약 4096을 사용해야한다면 13비트면 충분한데 31비트로 설정할 경우 비트를 과투자하게 되는게 아닌지 궁금합니다. 그리고 0x00~0xFFF 까지의 4096의 depth를 사용하기 때문에 12bit도 충분하지 않은가 생각했었는데 0~4095가 아닌 1~4096을 사용하는 이유도 궁금합니다..
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
AXI Verification IP와 실제 PS 연결 후 동작 차이
안녕하세요, 맛비님. 유익한 강의 감사드립니다.Lab 13 memory read/write 실습까지 마치고, 제가 설계한 core로 테스트해보는 중 문제가 생겨 문의 드립니다.우선, register 0~3까지 사용하는 block 이며 0, 1에서 데이터를 받아 core에 넘겨주고, core가 메모리에 어떠한 데이터를 쓴 뒤, 강의처럼 2의 메모리 주소에 있는 데이터를, 3에 넣는 방식으로 설계해보았습니다.이 동작은 AXI Verification IP에서는 의도대로 동작을 하고 있습니다.그러나 이 core를 zynq에 연결하여 bitstream을 작성 후 vitis에서 똑같이 해보려했는데, 제대로 출력되지 않고, 항상 0이 출력됩니다.이렇게 두 결과값이 다를수도 있는 것인가요..?감사합니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
BRAM 메모리 공간의 절대 주소 문의
안녕하십니까?이 강의에서 BRAM 영역의 Width와 관계없이,Addr[0], Addr[1]로 표현하셨는데,이 메모리 공간의 실제 주소(절대 주소)가 어떻게 되는지 궁금합니다.예로 0x4000 0000 에 BRAM을 할당 했을때,Addr[0] :Addr[1] :각강의 주소가 어떻게 되나요?Width : 16 or 32일 때 가정해서Width와 관계없이, 무조건 1씩 증가하는 것으로 봐야 하나요?만약 VITIS에서 접근할려고 할 때, 주소를 어떻게 해야 할지 궁금합니다.
-
해결됨자동차 SW - UDS 진단통신 정복하기
UDS표준내 SID(Service ID) 0~15번에 대한 정의가 별도로 있는지 궁금합니다.
유익하고 잘 설명된 강의 감사드립니다.처음 접하는 입문자이므로 질문이 명확하지 않아도 이해 부탁드립니다."USD 진단 통신의 개요" 강의 동영상 2:56 ~ 3:29초의 설명에 따르면, SID(Service ID) 0~15번은 OBD(PID)를 위해 비워놓았다고 설명되어 있습니다. 궁금한점별도의 OBD 표준이 있는데 UDS 표준에서 OBD PID를 위해 비워뒀다는 것은 OBD 표준이 UDS표준으로 귀속된다는 의미 인지요?그렇다면, USD 표준내에 0~15번 SID 내용이 별도로 기술되어 있는지 궁금합니다.
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
CNN 연산 모듈 질문입니다.
안녕하세요 맛비님.맛비님께서 3차원 Convolution 연산 모듈을 설계하기 위해서 3개의 계층을 가진 모듈로 설계하셨던 것에 궁금한 게 생겨서 질문드립니다.1차원 연산을 위한 최하위 계층, 그 위의 2차원 연산을 위한 하위 계층, 그 위의 3차원 연산을 위한 Top 계층, 이렇게 세 개의 계층을 나누셨는데,1.한 모듈에서 Register를 많이 추가하여 이 기능을 전부 할 순 없나요? (FSM으로) 즉 하나의 계층을 가진 모듈로 3차원 연산 모듈을 구현할 수는 없는 건가요?2. 이와 같이 할 경우 단점이란 것이 존재할까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
chapter_2 , build 파일 실행불가...
기존에 이미 작성되어있던 코드를 지우고 제가 영상보면서 연습 차 다시 작성했는데..-_-;저장하고 그 후에 ./build 실행하니 다양한 오류가 뜨더라구요... raineesm@DESKTOP-VLU7A79:~/Matbi_VerilogHDL_Season1/chapter_2$ ./buildWARNING: [XSIM 43-3479] Unable to increase the current process stack size.INFO: [VRFC 10-2263] Analyzing Verilog file "/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v" into library workINFO: [VRFC 10-311] analyzing module tb_clock_generatorERROR: [VRFC 10-8414] extra comma in port association list is not allowed [/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v:56]ERROR: [VRFC 10-8530] module 'tb_clock_generator' is ignored due to previous errors [/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v:21]Vivado Simulator v2022.2Copyright 1986-1999, 2001-2022 Xilinx, Inc. All Rights Reserved.Running: /home/raineesm/tools/Xilinx/Vivado/2022.2/bin/unwrapped/lnx64.o/xelab tb_clock_generator -debug wave -s tb_clock_generatorMulti-threading is on. Using 2 slave threads.ERROR: [XSIM 43-3225] Cannot find design unit work.tb_clock_generator in library work located at xsim.dir/work.ERROR: Please check the snapshot name which is created during 'xelab',the current snapshot name "xsim.dir/tb_clock_generator/xsimk" does not exist
-
미해결FreeRTOS 프로그래밍
freeRTOS도 GDB 사용이 가능할까요?
고수님 안녕하세요?FreeRTOS 디버깅이 GDB로 가능하다면 해보려고 하는데,가능할지 여쭙고 싶습니다.미리 답변 감사합니다. 좋은 하루 되세요 :)
-
해결됨ARM Cortex-M 프로세서 프로그래밍
r7 레지스터 관련 질문 드립니다.
강사님. 강의 잘 보고 있습니다.r7 레지스터가 강의 초반부에 스택 포인터와 관련된 레지스터라고 말씀해주셨던 것 같은데 왜 필요한지 잘 이해가 가지 않습니다.익셉션 호출시 하드웨어에서 자동으로 sp를 포함한 8개의 레지스터를 저장한다고 강의에서 설명해주셨는데, 왜 따로 r7에 스택 포인터를 저장하고 필요시 저장까지 하는지 이해가 필요할 것 같습니다.
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
CNN 알고리즘 + FPGA 연동 방법
맛비님 안녕하세요! 항상 좋은 강의 감사합니다. 다름이 아니라, 질문 사항이 있어 글 남기게 되었습니다.CNN 가속기를 설계한 후 YOLO나 Lesnet과 같은 알고리즘과 접목하여 CNN 객체 인식을 동작하고 싶은 상황입니다. 하단의 프로세스로 진행하는 것을 생각하고 있는데 각 단계별 가능여부가 궁금합니다. 1) XIlinx 상에서 CNN 알고리즘 library를 import한다-> (vitis AI 라이브러리가 있으나, 이를 지원하는 보드가 한정적이라, 해당 라이브러리가 아닌 다른 라이브러리 혹은 tool이 있는지 궁금합니다)2) 알고리즘에서 CNN 연산 가속기 부분만 따로 가져와 연산을 돌린 후 Vitis 상에서 입력 받는다-> 이러한 구상이 적용 가능한지 궁금합니다. 편하실 때 답변 부탁드리겠습니다. 감사합니다.
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
bashrc 경로 설정
제가 복습하며 공부하다가 실수로 파일을 몇개 지워서 일부를 복구했고 .bashrc를 다시 설정하려는데 어떤 것이 문제인지 도저히 모르겠습니다.위와 같이 source를 직접 설정해주고 하면 실행은 됩니다.위 사진은 .bashrc 에디터로 들어와 source 경로를 설정하였습니다. home의 상위 디렉토리에 mnt/d드라이브를 설치하였기 때문에 위와 같이 디렉토리를 설정하였습니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
RTL analysis와 관련해서....
강의와는 조금 벗어난 질문이라 드리기가 조심스럽지만, 디버깅 과정에서 너무 답답하여 맛비님께 질문드립니다.RTL anlysis를 통해서 schematic이 제대로 생성되었는지 확인하였는데,다음 synthesis 과정에서 constraint wizard로 적절히 파일을 생성해준 다음 synthesis를 진행하였습니다.그런데 error와 warning은 없는데 schematic이나 utilization 정보를 보면 터무니 없는 정보들이 나옵니다.혹시 어떤 부분을 확인하면 도움이 될까요?제가 vivado 관련 기본 개념들이 너무 없어서 막히는 부분이 많은 것 같습니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
강의자료가 다운로드 안됩니다
안녕하세요 강의 보면서 열심히 따라 하고 있습니다.우선 좋은 강의 제공해주셔서 감사합니다다름이 아니라, 강의 자료 다운 받으려고 하니까 .zip 파일 내에 내용이 아무것도 없고 압축 풀기를 진행해도 계속 오류가 발생합니다.One Drive 내에 있는 강의 자료 다시 한번 확인해주실 수 있을까요??
-
해결됨ARM Cortex-M 프로세서 프로그래밍
테일 체이닝 관련 질문 드립니다.
강사님. 강의 잘 보고 있습니다. 감사합니다.테일체이닝 관련 실습 진행 중 질문이 생겨 글 남깁니다.이번엔 질문이 좀 많습니다.최대한 잘 정리해보도록 하겠습니다.상황 - 테일 체이닝이 발생될거라 생각되는 지점에 Breakpoint를 걸었습니다.먼저 예상되는 상황은 EXTI0_IRQHandler 함수가 호출되기 전 스크래치 레지스터[r0-r3]와 그 외 사용되는 레지스터들이 스택에 저장될 것이라 생각됩니다. 1. 1.EXTI0_IRQHandler 함수 호출 전의 어셈블리어를 볼 수 없어 이 부분도 사실인지는 잘 모르겠습니다. 여기서 if(SCB->ICSR & (1<<26) ) 가 참이라면, EXTI0_IRQHandler 동작이 끝난 후 SysTick_Handler가 실행될거라 예상이 됩니다.2. 테일 체이닝이 없다면 EXTI0_IRQHandler가 끝나고 복귀가 이뤄질 때, 먼저 저장했던 r7과 lr값을 pop한 후 EXTI0_IRQHandler 호출 전 스택에 저장한 스크래치 및 그 외 레지스터들을 pop할 것으로 생각이 됩니다.그 후에 SysTick_Handler가 호출이 될텐데... 호출 전에 레지스터들이 스택에 먼저 push될 것이고 {r7, lr}도 push될 것이라 생각이됩니다.테일 체이닝은 레지스터 복원없이 바로 다음 인터럽트가 실행될 수 있다고 하셨습니다.그렇다면 위 예제에서 EXTI0_IRQHandler 끝난 후 복원없이 SysTick_Handler가 실행된다는 말인데, 제 생각엔 {r7, lr}은 복원되어야하고, 그 외 레지스터들은 따로 복원없이 실행되어야할 것 같은데 맞나요? 3. EXTI0_IRQHandler 호출 전 사용되는 레지스터들이 스택에 push되는게 맞다면 그것을 disassembly 창같은 것으로 확인할 수 있는 방법이 있나요? 4. if (SCB->SHCSR & (1<<11))에서 SHCSR의 11번째 비트는 SYSTICKACT인데, 즉 SysTick 타이머 인터럽트 동작 중에 우선순위가 더 높은 EXTI0가 발생했고, 결과적으로 SysTick_Handler가 실행되다 중단되고EXTI0_IRQHandler가 실행하여 저 구문이 실행된 것으로 이해해도 될까요? 많은 질문을 드려 죄송합니다.