묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
- 
      
        
    미해결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가 실행하여 저 구문이 실행된 것으로 이해해도 될까요? 많은 질문을 드려 죄송합니다.
 - 
      
        
    해결됨ARM Cortex-M 프로세서 프로그래밍
Memory fault, Bus fault 관련 질문드립니다.
강사님. 강의 잘 보고 있습니다.수업을 듣다보니 Bus fault, Memory fault에 대해 궁금해져서 질문 드립니다.구글링해도 명확한 답을 못 찾아서 그런데, 둘은 어떤 오류가 감지될 때 실행되는 익셉션인지 설명해주실 수 있을까요?
 - 
      
        
    미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
ILA 생성 관련 문의
단순한 LED/SWITCH 입력 예제를 작성해서 ILA를 추가해 보고자 했습니다. 그런데, Bitstream 생성 후 Program Device를 하고 ILA 활성화가 되지 않네요.아래와 같은 경고메시지가 나오며, Resolution: 1. Make sure the clock connected to the debug hub (dbg_hub) core is a free running clock and is active. 2. Make sure the BSCAN_SWITCH_USER_MASK device property in Vivado Hardware Manager reflects the user scan chain setting in the design and refresh the device. To determine the user scan chain setting in the design, open the implemented design and use 'get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub]'. For more details on setting the scan chain property, consult the Vivado Debug and Programming User Guide (UG908). Program Device 창에는 There are no debug cores 와 같은 상태 메시지가 표시됩니다.구글링 결과https://support.xilinx.com/s/article/64764?language=en_US와 같은 내용이 나오는데, 혹시나 어떻게 조치를 해야 할까요?VIVADO 2021.2 사용중입니다.
 - 
      
        
    미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
다른 보드 및 강의자료
나중에 2편도 살 예정인데 현재 보드는 basys3로 하고있습니다. 제가 초보자이고 학생이라 다른 보드는 구입하는게 무리입니다. 이 보드로 쭉 진행해도 괜찮을까요 ? 또한 강의자료 ppt는 따로 못구하나요 ?
 - 
      
        
    해결됨FreeRTOS 프로그래밍
taskr간 context switching 관련하여 질문이 있습니다.
안녕하세요 강사님. 컨텍트 스위칭 관련하여 궁금한점이 있어 질문드립니다.아래와 같은 상황에서 우선 순위사 제일 높은 task를 컨텍트 스위칭 전에 cpu 자원을 사용하게 하고 싶습니다.task1 : 우선 순위 5 (suspend 상태)task2 : 우선 순위 4task3 : 우선 선위 4우선 task2가 실행하던 도중 task1을 resume 하고 바로 portyield를 실행하게 되면 우선 순위가 동일한 task3번이 cpu를 점유하여 일을 처리하다가 컨텍트 스위칭이 발생하게 되면 task1이 cpu를 점유가게 될텐데 제가 궁금한건 task2에서 task1을 resume 한 후 컨택트 스위칭이 발생하기 전에 cpu를 task1이 점유하게 하는 방법이 없는지 궁금합니다. 감사합니다.
 - 
      
        
    해결됨ARM Cortex-M 프로세서 프로그래밍
Fault 관련 질문 드립니다.
강사님. 강의 잘 보고 있습니다. 감사합니다.질문이 있는데요.Hardfault 같은 경우 다양한 원인으로 익셉션이 발생할 수 있는 것으로 알고있습니다.그만큼 디버깅이 어려운데설명을 들어보니까 SCB:SHCSR에서 USGFAULTENA, BUSFAULTENA, MEMFAULTENA를 enable하지 않으면 위와 같은 문제가 발생할 경우 전부 Hardfault 익셉션으로 처리가 되는 것 같은데요.만약 USGFAULTENA, BUSFAULTENA, MEMFAULTENA를 전부 1로 설정하고 각각 익셉션을 정의하면 적어도 어떤 문제로 fault가 발생했는지 더 알기 쉬울 것 같은데 왜 이 값을 default로 설정한 것인지 또 실무에서 자주 사용이 되는지 궁금합니다. 정리하자면 USGFAULTENA, BUSFAULTENA, MEMFAULTENA를 1로 설정하지 않은(default) 상태에서 Hardfault 가 발생한다면 원인 찾기가 어려울 것 같지만, USGFAULTENA, BUSFAULTENA, MEMFAULTENA를 1로 설정하면 디버깅에 좀 더 도움이 되지 않는가?그런데 왜 default로 설정되어 있는지실무에서는 많이 사용 안하는지가 되겠네요.
 - 
      
        
    미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
build 파일이 실행이 안돼요...
우선 맛비실습압축파일을 제 사용자 파일에다 복사하고 unzip실행을 했는데 안되더라구요;그래서 아예 explorer.exe 명령어 실행해서 어거지로 클릭해가면서 파일 압축 풀었고,그런다음에 ./build 파일 실행시키니까 permission denied 되었다고 해서 chmod +x 명령어 해서 실행파일로 설정 한 다음에 다시 또 ./build 하니까 이런 상황이 벌어졌습니다...^0ㅜ.... gcc 는 root 계정에서도 그리고 사용자 계정에서도 sudo apt install gcc 해가면서 설치만 5번 한거 같아요... 어떡해야 좋을까요? (눈물...
 - 
      
        
    해결됨FreeRTOS 프로그래밍
portYIELD() 사용법에 대해 질문드립니다.
안녕하세요. portYIELD() 사용법에 대해 궁금한게 있어 질문드립니다. portYIELD()를 실행하게 되면 task가 점유하고 있던 CPU를 반납하는 명령으로 알고 있습니다. 그런데 아래의 그림과 같이 실행을 하게 되면 TaskMain은 실행 되지 않아야 하지 않는지요? #define TASK_MAIN_PRIO 5 #define TASK_TASK1_PRIO 4 #define TASK_TASK2_PRIO 3 #define TASK_TASK3_PRIO 2 TaskHandle_t xHandleMain, xTask1Handle, xTask2Handle; void userThread(void) { xTaskCreate((TaskFunction_t)TaskMain, "TaskMain", 128, NULL, TASK_MAIN_PRIO, &xHandleMain); xTaskCreate((TaskFunction_t)vTask1, "vTask1", 128, NULL, TASK_TASK1_PRIO, &xTask1Handle); } void TaskMain(void const *pvParameters) { while(1) { for(uint8_t i=0; i<5; i++) { HAL_GPIO_TogglePin(GPIO5_BEAD_GPIO_Port, GPIO5_BEAD_Pin); HAL_Delay(1); } vTaskSuspend(xHandleMain); } } void vTask1(void const *pvParameters) { while(1) { for(uint8_t i=0; i<5; i++) { HAL_GPIO_TogglePin(GPIO4_BEAD_GPIO_Port, GPIO4_BEAD_Pin); HAL_Delay(1); } portYIELD(); vTaskResume(xHandleMain); //portYIELD(); } } 위 소스를 보게 되면최초 MainTask가 실행을 하다가 5번 GPIO를 5번 토굴하고 block 상태로 전환Task1번에서 gpio를 5번 토굴하고 vTaskResume을 실행하기 전에 portYIELD()를 만나기 때문에vTaskResume(xHandleMain) 실행이 안되어야 하지 않는지요?실행 결과 TaskMain이 실행되어 이렇게 문의드립니다. 감사합니다.
 - 
      
        
    미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
질문사항
맛비님 안녕하세요 ! 궁금사항이 생겨 글 남기게 되었습니다. NVIDIA의 GPU 같은 경우 '쿠다'라는 소프트웨어 플랫폼을 제가 이용해봤습니다. 수업시간에 설명해주신 inference를 위한 NPU 소프트웨어 플랫폼도 학생이 무료로 이용할 수 있는게 있을까요 ?MNIST 모델에 대해 설명해주실때 0~9까지 표현하기 위해 one-hot label을 10bit를 사용하셨는데, 4 bit를 사용해도 0~9가지 다 표현 가능하지 않나요 ?
 - 
      
        
    미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
build가 되지 않습니다!!
실습 중 ./build를 실행하면 아래와 같이 뜨면서 실행이 되지 않습니다..vi로 script를 수정하는것은 문제없이 진행이 되는데 build는 이런 식으로 뜨는데 혹시 뭐가 잘못된걸까요?
 - 
      
        
    해결됨FreeRTOS 프로그래밍
정적/동적 Task 생성의 메모리 할당 영역
안녕하세요. 수업을 듣던 중 정적/동적 Task 생성 시 할당되는 메모리 영역과 관련해 질문 사항이 생겨 글 남깁니다.태스크와 메모리 파트 강의를 듣고 Task Stack 메모리는 동적/정적 할당이 가능하고, RTOS의 동적 할당은 RTOS 커널에서 지원하는 동적 메모리 할당자 함수를 쓰기 때문에 heap영역이 아닌 bss 영역에서 할당된다. 라고 이해하였습니다.즉, xTaskCreate() 함수를 사용하면 동적 할당이지만 데이터가 bss 영역에 할당되는 특성이 있다고 생각했었는데, '태스크 스택의 크기를 결정하기' 부분의 강의 끝부분에서 xTaskCreate() 는 heap 영역에 xTaskCreateStatic() 은 bss 영역에서 Task Stack을 쓴다고 말씀하여 기존에 제가 이해했던 부분과 일치하지 않았습니다.이와 관련해 인터넷에 검색해 보니, freertos.org 사이트에서는 xTaskCreate()를 사용하여 작업을 생성하면 필요한 RAM이 FreeRTOS 힙에 자동으로 할당된다. 라고 적혀있더군요.xTaskCreate() 함수는 bss 영역에 자동 할당되기도 하고, heap 영역에 자동 할당되기도 한다는 의미인가요?
 - 
      
        
    미해결자동 손소독제 디스펜서 만들기
3D 프린팅 도안
3D 프린팅 도안 공유받을 수 있다고 봤는데 3D 프린팅 도안 어떻게 받을 수 있을까요?
 - 
      
        
    미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
10강 진행중 어드레스 관련 에러
안녕하세요 맛비님!10강 진행 중 마지막 run as 시 아래와 같은 에러가 발생하여 진행이 불가능합니다 ㅠㅠ 어드레스 관련 문제인거같은데 어드레스와 range 같은 값들이 이전 강의까지는 강의 속 맛비님과 동일하게 생성되다가 10강 진행할때는 상이한 값이 나오네요 개인적으로 이것과 연관이 있지않을까 예상을 해보는데 혹시 어떻게 진행해야하는지 질문 드립니다 ㅠㅠ
 - 
      
        
    미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
타 PC에서 mobaxterm 계정 로그인하는 법
안녕하세요 맛비님! 이번에 리눅스 환경을 처음 써보는 수강자입니다.다름이 아니라, 맛비님께서 season 1에서 알려주신대로 ubuntu와 mobaxterm, 그리고 xilinx for lunux를 설치하여 실습을 따라갔었습니다.다만 그때는 데스크톱에 설치를 하였었는데 이번에는 노트북에도 같은 환경을 구축하고자 위 세가지를 동일하게 설치하였습니다. 혹시 이때, 데스크톱에 설치하고 작업했던 리눅스 계정을 노트북에서도 똑같이 사용할 수 있도록 로그인을 하는 방법이 있을까요? 구글링을 해보았는데 잘 이해를 하지 못해 질문 드립니다!