묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
vbar register
안녕하세요,vbar_el1 이 random 하게 부팅 때마다 정해진다고 하셨는데,Armv8 만의 특징인가요?Armv7 은 0xFFFF0000 이런 주소였던 것 같아요보안 이슈 때문에 매번 다르게 하는 건가요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
vbar register
안녕하세요,vbar_el1 이 random 하게 부팅 때마다 정해진다고 하셨는데,Armv8 만의 특징인가요? Armv7 은 0xFFFF0000 이런 주소였던 것 같아요보안 이슈 때문에 매번 다르게 하는 건가요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
학습 진행 시, 사용하는 Board에 대한 문의 드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님! 이번에 ARM Cortex-M 강의를 수강하고자 합니다.수업에 들어가기에 앞서 한가지 궁금한 점이 있어 문의 드립니다.제가 현재 가지고 있는 STM32 보드는, STM32F769I - Discovery Board 인데,선생님께서 강의해서 사용하시는 보드는 STM32F429I-DISCOVERY Board와 종류가 다른데,혹시 수업 진도를 따라가는데 큰 제약이 있을까 해서 여쭤봅니다.제가 가지고 있는 769I Board로 그대로 진행해도 괜찮을까요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
System call register
system call register 로 쓰인다는 x8 의 경우는 arm architecture 호출 규약에 나와 있는 것인가요 아니면리눅스 커널에서 임의로 그렇게 정한 것인가요?
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
8강 AXI4_Lite (zcu104)
안녕하세요, 맛비님. 수업 잘 듣고 있습니다.저는 일단 zcu104 board를 사용하고 있고 vivado, vitis 버전 모두 2020.2를 사용하고 있습니다.해당 영상에서와 같이 Makefile을 전부 바꾼 뒤, build를 하였을 시 error가 발생하여 이와 같이 질문 올립니다.첫번째 캡처사진을 보시면 아래 4개의 error가 발생한 것을 확인할 수 있고, Launch on Hardware를 돌리면두번째 캡처사진과 같이 해당 경로가 생성되지 않았음을 확인할 수 있습니다. 무엇이 문제인지 찾기가 어려워 이렇게 메일 보냅니다.(참고로 3번째 캡처본은 vivado에서 어떻게 ip를 생성했는지 보여드리기 위해 올려놓았습니다)==================
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
GIC programmer model
안녕하세요,memory mapped i/o 라는 것이msr 명령어를 통해 core 에서 특정 주소 값을 변경하면해당 gic 나 interface register 값을 변경할 수 있다는 뜻인가요?그리고 memory mapped 라는 것은 hardware 적으로 메모리 스토어만 하면 알아서 주변 gic 나 cpu interface 의 레지스터가 자동으로 바뀌게 되는 회로(메모리와 연결되는)가 있는 것인가요? (그리고 바뀌는 타이밍은 즉시 바뀌나요?)감사합니다.
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
exception handler code
안녕하세요0xffffff8008082580: d53201f nop...이런 식의 exception handler 코드는 어디서 볼 수 있나요? 코딩-> 컴파일을 해서 나온 결과 인가요 아니면 저렇게 일일이 주소: 명령어 다 넣게 된 것인가요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
arm mode
안녕하세요ARM 에서 sys mode 나 undef 모드나 이런 것들은virtual memory 를 사용하지 못할 것 같은데, (kernel 이 virtual memory를 지원할 것 같아서요)그러면 다른 모드는 physical memory 기반 assembly code 로 작성이 되나요?감사합니다
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
exception vector table
exception vector table 에서 명시된 주소 값은실제 physical memory 주소 인가요?그런데 physical memory 주소면 커널이 그 메모리에 들어간 함수를 어떻게 구현하게 되나요..?
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
CH4 설정하는 핀이 bank0인지 bank1인지는 어떻게 확인하나요
안녕하세요 🙂[1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요.[2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂[3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.) ================ 다음 내용은 읽어보시고 지우시면 됩니다.=================질문 내용을 작성해주실 때, 위의 3단계로 제가 이해할 수 있게 작성해주시면 정확한 답변을 드릴 수 있을 것 같아요!!현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================FPGA4장 8:11에서 UART RX TX핀이 VCC1V8로 설정되어야 하는 건 schematic 상에서 확인할 수 있다는 설명은 들었습니다만 Vivado MIO configuration에서 이를 반영할 때 왜 bank1 I/O voltage를 설정하게 되는지는 설명이 없어서 질문드립니다.저는 Arty z7보드를 가지고 있어서 유튜브에 올려주신 hello matbi world 영상과 노션을 보고 있습니다. Arty z7 10의 UART0핀은 MIO 14/15인데 여기서도 bank 1 voltage(혹은 bank0 bank1 둘 다) 값을 확인하라고 하시더라구요 동작은 잘 되는데 이해가 어렵습니다zynq-7000 메뉴얼에서 MIO[0:15]는 bank0이고 MIO[16:53]은 bank1이라고 표시되어있어서 MIO[48:49]를 설정할 땐 bank1이 맞지만 Arty z7에서는 MIO[14:15]이니 bank0 voltage 값만 중요한 것 같은데 강조하신 내용과 달라서 이렇게 판단하는게 아닌지 확신이 안서네요
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
exception 문제
같은 exception level 이나, exception 종류가 계속 연속해서 들어오게 되면 어떻게 처리가 되나요? spsr_mode 가 계속 덮어 씌워질 것 같아요
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
리눅스 커널 동작 모드별 스택 포인터 초기화
동작 모드를 변경하는 어셈블리 명령어 부분에서sp를 모드 별로 초기화 해 주는 데요, 이게 부트 로딩 과정에서 모드 별로 실제 physical memory를 모드별 스택으로 나누는 과정인가요?그리고 모드별로 아예 physical memory를 따로 쓰게 되는 것인가요? 그리고 모드별로 #0 #12 .. 이렇게 작게 스택을 지정하는 것 같은데.. 너무 작지 않나 하는 생각이 듭니다. 뭔가 잘못 이해하고 있는 것 같습니다. 정정 부탁드립니다
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
exception handler 구현
exception handler 는 소프트웨어 적으로 어떻게 구현이 이루어 지나요? exception vector 에 써진 주소값에 handler 를 넣어 주어야 할 것 같은데, 주소를 직접 넣어서 프로그래밍 할 수 있는 것인가요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
ST-Link 연결
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 수강생인데 처음에 따라하다가 다시 처음부터 해보려고 하는데 st-Link update 진행 시 Error 발생이 지속적으로 됩니다. 연결이 계속 되었던 상태인데 왜그럴까요? 끄고 디버그 진행 시 Host 응답이 안되어서 디버그도 Error 발생 합니다. 해결방법좀 부탁드립니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
fpga4강 serial terminal
안녕하세요 🙂vitis 2024.1버전입니다.과거 버전과 다르게 vitis serial terminal이 존재하지 않고 찾아보니까 serial monitor라고 해서.. 하던데정확하게 새로운 버전에서는 어떻게 해야하는지 잘 모르겠습니다.serial terminal을 어디서 찾아야 하나요..위에 terminal창 누르면 serial terminal이 아닌 일반 창만 나옵니다 ================ 다음 내용은 읽어보시고 지우시면 됩니다.=================질문 내용을 작성해주실 때, 위의 3단계로 제가 이해할 수 있게 작성해주시면 정확한 답변을 드릴 수 있을 것 같아요!!현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
ds18b20 의 address 내부 값
안녕하세요 강의를 보고 온도센서를 사용하기 위해라이브러리 포팅 후 해당 코드를 작성하였습니다. 그런데 구조체 내부의 데이터가 0에서 변화하지 않습니다. 문제를 해결하기 위해 확인해야할게 어떤것이 있을까요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
"UART로 printf()를 구현해보자! 4" 강의에서 문제 발생.
강의 - 섹션16 - "UART로 printf()를 구현해보자! 4" 강의를 따라하던 도중 문제가 발생하여 질문을 올려봅니다.이게 사실 지금은 무시해야 할 문제이긴 한데, 해결하는 걸 워낙에 좋아해서... 그래서 신경쓰지 말고 지금은 무시하라고 답해주셔도 됩니다! 혹여 봐주신다면 알고 계신 문제인지, 문제 해결 과정에 오류가 있는지 봐주시면 감사합니다!해결 과정에서 적은 노트는 아래에 적었습니다.Xshell에 "i = 1"이, 코드 업로드 후 최초 1회 더 출력되는 문제가 있다. 원인을 찾아보자.->printf() 함수에 내부적으로 사용되는 _write() 함수가, "syscalls.c" 소스파일에 weak symbol로 정의가 되어 있어서, _write() 함수를 "main.c" 파일에서 retarget하여 printf() 함수를 강의대로 Xshell에 출력하도록 했다.int _write(int file, char *ptr, int len) { HAL_UART_Transmit(&huart1, (const uint8_t*)ptr, len, 10); return len; }결과i = 1 // user가 설정한 딜레이와 관계없이, 다음의 "i = 1"과 대략 1초 정도의 간격 i = 1 // user가 설정한 HAL_Delay(100), 이후로 동일한 100ms 딜레이 i = 2 i = 3 i = 4 ... "main.c" 코드만으로 보았을 때, 분명 'i'는 1이 증가하여 출력되었으므로, 문제는 printf() 함수에 있음이 분명하다.->write() 함수를 통해 원인을 찾고자, write() 함수가 최초 1회는 무시하도록 코드를 다음과 같이 수정한다.bool ignoreFirstWrite = true; int _write(int file, char *ptr, int len) { if (ignoreFirstWrite) { ignoreFirstWrite = false; } else { HAL_UART_Transmit(&huart1, (const uint8_t*)ptr, len, 10); } return len; }결과i = 1 // user가 설정한 HAL_Delay(100), 이후로 동일한 100ms 딜레이 i = 2 i = 3 i = 4 ...!!! _write() 함수가 최초 1회 더 실행되는 것을 확인했다.int _write(int file, char *ptr, int len) { HAL_UART_Transmit(&huart1, (const uint8_t*)ptr, len, 10); return len; }위의 _write() 함수로 하여 두 가지의 테스트를 추가로 진행해본다.->1.'i' 초기값만 바꿔서 코드를 업로드한다.2.코드 업로드가 아니라, debug로 실행해본다. (최초 HAL_Init() 함수에서 걸리고, 곧바로 breakpoint 없이 resume한다.)->!!! 최초 1회 출력 문제가 사라졌다. 1.'i' 초기값을 변경하여 업로드한다.int i = 10;결과i = 1 i = 11 i = 12 i = 13 i = 14 ...다시 'i' 초기값을 변경하여 업로드한다.int i = 0;결과i = 11 i = 1 i = 2 i = 3 i = 4 ...!!! 이전에 업로드할 때 _write() 함수로 처음 출력한 문자열이, 다음 업로드 때 출력된다.정리1._write() 함수가 최초 1회 더 실행된다.2.디버그 환경에서는 문제가 발생하지 않는다.->전혀 모르겠다.->[수정]: float로 테스트 후부터는, 디버그 환경에서도 정수/실수 모두 동일하게 문제가 발생한다.3.이전에 업로드할 때 _write() 함수로 처음 출력한 문자열이, 다음 업로드 때 출력된다.->마지막에 출력한, 혹은 출력 대기중인 문자열도 아니고, 왜 이전 업로드 때 처음 출력한 문자열일까?->원인이 어디인지 찾아보자.board, FT232, Xshell 혹은 그 사이 어디서 문제인지 찾으려 했으나, 애초에 _write() 함수가 1회 더 실행되는 것이 확실하니,->?????"stdio.h" 구조로 접근해야 하나?아니, 코드는 새롭게 업로드하는 거고,이전의 정보가 'board'에 남아있다는 건데,printf() 함수가, 이전 업로드할 때 최초로 출력했던 문자열을 어떻게 가지고 있을 수 있지?아니면 PA9 USART1 transmitter에 buffer가?어떻게 접근해야 하지?->전혀 모르겠다. 포기. 끝. 무시하고 강의 진행하자.
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
FND 제어 시 2자리수 제어가 잘 안됩니다.
강의 대로 위와 같이 코드를 작성하였습니다.LOW -> HIGH에서 HIGH->LOW로 바꾸고 output level도 바꿔가면서 해봤습니다.디버깅 시 강의에서는 1부터 빠르게 숫자가 바뀌는데제 코드로 디버깅해보니 위사진과 같은 상태로 멈춰있고 숫자가 바뀌지 않습니다. 혹시 몰라서 뒤의 내용인 4자리수 제어를 진행해봤는데 4자리수는 정상적으로 올라갑니다.두자리수만 잘 안되는건 뭐가 문제인지 궁금합니다.
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
OneWire_WriteBit와 OneWire_ReadBit함수에 대해 궁금한 점이 있습니다.
if (bit){/* Set line low */ONEWIRE_LOW(OneWireStruct);ONEWIRE_OUTPUT(OneWireStruct);ONEWIRE_DELAY(10); /* Bit high */ONEWIRE_INPUT(OneWireStruct); /* Wait for 55 us and release the line */ONEWIRE_DELAY(55);ONEWIRE_INPUT(OneWireStruct);} 위는 OneWire_WriteBit의 한 부분으로 이 부분에서 LOW로 만들어서 output모드로 만든 다음에 10us만큼 딜레이를 줘서 input 모드로 만들어서 버스를 high로 만드는 것이라고 이해했습니다. 그런데 이 이후에 딜레이를 55us 만큼 준 다음에 다시 input 모드로 만드는 이유는 무엇인가요?inline uint8_t OneWire_ReadBit(OneWire_t* OneWireStruct){uint8_t bit = 0; /* Line low */ONEWIRE_LOW(OneWireStruct);ONEWIRE_OUTPUT(OneWireStruct);ONEWIRE_DELAY(2); /* Release line */ONEWIRE_INPUT(OneWireStruct);ONEWIRE_DELAY(10); /* Read line value */if (HAL_GPIO_ReadPin(OneWireStruct->GPIOx, OneWireStruct->GPIO_Pin)) {/* Bit is HIGH */bit = 1;} /* Wait 50us to complete 60us period */ONEWIRE_DELAY(50); /* Return bit value */return bit;}그리고 OneWire_ReadBit에서 input모드로 바꾸는 것이 버스를 high로 만든다는 것을 주석으로 짐작한거라서 정확히 바꾼 이유를 잘 모르겠습니다. input모드가 디폴트 모드인건가요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
UART 통신 실습 중 궁금한 점이 있습니다.
Pinout & Configuration 을 통해 핀설정을 하고 실습을 진행하고 있습니다.USART 2 또는 USART 3로 설정했을 때는, 정상적으로 터미널을 통해 결과가 넘어오는 것을 확인했습니다.하지만, USART 1으로 설정하고 통신할 경우 터미널에서 데이터가 넘어오지 않습니다. USART 2와 USART 3 APB1 클럭을 사용하고,USART 1 은 APB2 클럭을 사용하기 때문에 클럭 또한 맞춰 주었습니다.핀 위치도 몇번이나 확인했지만, 원인을 모르겠어요...제대로 된 신호가 넘어가는지는 확인하지 못했습니다 ㅜ(오실로스코프가 배달중입니다 ㅎ..) 현 이슈 원인에 대한 선생님의 직관이나 조언을 얻을 수 있을까요? === 2024-12-22 추가 작성 ====remap 기능을 사용하여 PinA9 대신 PinB6을 사용하니 정상적으로 데이터가 전송되는 것을 터미널에서 확인했습니다. 혹시나 해서 확인해봤는데, PinA9가 죽어있었네요.다른 모든 핀도 살펴봤는데 PinB14도 죽어있었구요. (GPIO로 LED 키는 방식으로 테스트 했습니다.) SW를 작성하기 전에, 하드웨어 동작 여부부터 확인해야 한다는 교훈을 얻어갑니다... 죽은 핀을 다시 살릴 수 있는 방법이 있나요?
주간 인기글
순위 정보를
불러오고 있어요