묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결ARM Cortex-M 프로세서 프로그래밍
no-stlink
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. MAC M1에서 수강중이고이전에 어떻게어떻게 해서 잘 실습까지 진행했습니다.이번에 다시 강의를 들으려고 cube ide에서 디버깅을 눌러보니no-stlink detected! 가 나오네요..이유가 뭘까요??할 수 있는 방법은 전부 해본 상태입니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
4개의 CPU 사이클이 필요한 이유
안녕하세요 질문이 있어 글 남깁니다.플레시메모리 읽기 작업은 한번에 128비트를 읽을 수 있다로 이해했는데 왜 순차코드의 경우 명령줄을 실행하려면 적어도 4개의 CPU사이클이 필요한지 잘 모르겠습니다. 첫번째 클럭에 128비트를 한번에 다 읽을 수 있는건가요? 아니면 128비트를 읽는데 4사이클로 나눠서 읽는다는 건가요?(1사이클에 32비트씩) 이 128비트를 읽는게 'FETCH' 랑은 다른건가요? CPU4개의 사이클 동안 플레시메모리 버퍼가 채워진다고 하셨는데, 한번에 128비트를 읽을 수 있다고 했는데 이 한번이 한 사이클이 아닌건가요? 앞서 하버드 구조로 순차적으로 한 클럭에 동시에 F, D, E가 수행될 수 있음은 이해했습니다.
-
미해결리눅스 커널의 구조와 원리: 인터럽트 [저자 직강 1부-5]
강의안 자료는 따로 제공이 안 되나요?
안녕하세요1부-4,5,6 강의가 전부다 강의안 제공이 안 되고 있는데추후 업로드 예정이신지 질문 드립니다.(혹시 1부-1 강의도 강의안 업로드 예정이 있나요?)
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
고아(?) 프로세스의 부모 선정이 어떻게 되는지 궁금합니다
안녕하세요java 프로세스를 생성하니 생각대로 sshd로 접속한 프로세스 하위로 java 프로세스가 생성되는걸 볼 수 있었습니다. 996 996 996 ? 00:04:20 sshd 279106 279106 279106 ? 00:00:00 sshd-session 279140 279106 279106 ? 00:00:00 sshd-session 279141 279141 279141 pts/0 00:00:00 bash 279253 279253 279141 pts/0 00:00:37 java여기서 java 프로세스를 백그라운드로 실행한 상태였는데 접속한 sshd 프로세스를 끊어버리니 systemd 하위로 간 것을 볼 수 있었습니다. 1 1 1 ? 00:01:25 systemd 996 996 996 ? 00:04:20 sshd 279309 279309 279309 ? 00:00:00 sshd-session 279343 279309 279309 ? 00:00:00 sshd-session 279344 279344 279344 pts/0 00:00:00 bash 279362 279362 279344 pts/0 00:00:00 ps 279253 279253 279141 ? 00:00:37 java여기서 java 프로세스의 부모가 sshd 하위가 아니라 systemd 하위로 간 이유가 궁금하네요좀 더 정확히는 부모가 결정되는게 어떤 기준으로 결정되는지 궁금합니다부모가 죽었으면 그 바로 위 부모가 새로운 부모가 되는 것인지요..? 시간이 날 때마다 보고있습니다감사합니다
-
미해결ARM Cortex-M 프로세서 프로그래밍
MAC으로 진행 질문드려요..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. MAC으로 진행하고 있는데,혹시 ST-link server를 따로 다운받아야할까요???아니면 그냥 이 영상에 있는 설명대로만 하면 되는지요???맥 터미널을 시리얼 출력으로 사용하는 코드는 이미 ./zshrc에 넣어놓은 상태입니다.MAC용 실습환경 구성 영사도 찍어주시면 좋을 것 같아요!요즘 MAC사용비율도 상당히 높아져서요
-
미해결신입 개발자를 위한 Armv7-A Architecture Overview (저자 직강)
Trace32 Armv7-A 시뮬레이터는 제공 안되나요?
이번 강의에서 진행(디버깅 실습)하는 TRACE32 프로그램은 제공하지 않습니다.TRACE32 교육용 실습 프로그램을 내려 받으셔서 상세하게 어셈블리 명령어를 디버깅하시려면, 이미 배포된 시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부/2부 저자 직강 강의를 수강하세요. 라고 하셔서, T32_Edu_sp2_240223_Arm1.zip파일과 T32_Edu_sp2_240223_Arm2.zip파일에 있는 2개다 다운로드 해서 확인해 보았는데요, Armv8-A 시뮬레이터입니다. Armv8-A시뮬레이터를 가지고 Armv7-A 시뮬레이터로 변경되나요?AARCH32는 어떻게 변경해야 되는 건가요? CPU메뉴에 System Setting에서 CPU 아키텍처를 A7이나 A15로 변경하더라도 프로그램에 타이틀 바 부분에 항상 Debugging:Register- Armv8-A(Aarch64)로만 표현됩니다.Trace32 Armv7-A 시뮬레이터는 제공되지 않는 건가요?
-
미해결신입 개발자를 위한 Armv7-A Architecture Overview (저자 직강)
강의자료 문의
안녕하세요 강사님.강의자료(PPT파일) 제공이 가능한지 문의드립니다!
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
arm 아키텍처는 4를 빼는 이유가 무엇일까요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 찬란한 프로세스의 삶-5 를 듣던 도중 5분 56초 경 arm 아키텍처는 파이프라인을 적용해서 4바이트를 빼야한다고 하셨는데 해당 이유가 궁금합니다. 강의 잘 듣고 있습니다감사합니다.
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
배리어 관련 질문
현재 메모리 모델에 대해 공부를 진행하고 있는데, 몇 가지 궁금한 것이 있어 질문드립니다.메모리 리오더링이라는 개념이 주로 나오고, DSB에서는 명령어 리오더링 개념도 한 번씩 나오는데, 이것에 대해서 Arm 아키텍처가 성능 향상을 위해 하드웨어적으로 out-of-order-execution을 수행하게 되고 그 일환으로, 각각 메모리 리오더링과 명령어 리오더링이 진행된다. 라고 이해해도 되는걸까요? 또한, 리오더링이라는 작업이 명령어를 파이프라인에서 fetch한 다음 그 안에서 순서를 바꿔서 실행을 하는 것인지, 아니면 처음부터 바뀐 순서대로 fetch를 해서 실행을 시키는 것인지 궁금합니다! dmb 배리어 명령어에 대해서, Arm 문서에는 dmb가 실행완료를 보장하지는 않는다는 식으로 나와있는데, 예를 들어,strdmbldr 이런 순서로 명령어가 있을 때 실행 순서만 잡아주는 것이라면 str 이후에 바로 ldr이 수행되는데 ldr이 먼저 완료되는 경우도 있지 않을까요? 그렇다면 이런 경우에는 str과 ldr의 실행 순서를 유지하는게 효과가 없을 것 같은데 이러한 경우에는 어떻게 되는 것인지 궁금합니다. shareability에 대한 궁금증이 있습니다… shareability라고 하는 것이 배리어 명령어를 수행할 때 적용되는 범위인데, 그렇다면, 정확히 어떤 것에 대한 범위라는 것인지 잘 이해되지 않습니다. 위의 예시에서 dmb명령어가 있는 부분에 <qual>을 추가해준다고 할 때, 여기서 shareable의 의미가 배리어 명령어 이전의 작업을 모두 진행한 뒤에, 해당 데이터에 대해 정해진 범위에 동기화를 해준다고 이해하는 것이 맞을까요? 그렇다면 CPU0가 dmb/dsb/isb를 읽고 실행할 때, 동시에 CPU1이 ldr로 해당 영역에 접근하려고 하는 상황이 있다면 CPU0의 str 동작이 완료되고나서 접근하는 것인지, 그냥 업데이트되기 전의 str된 값을 읽어들이는 것인지 그런 부분들이 확실하게 이해가 잘 안됩니다. 또한, shareable domain의 영역에 대한 구분을 좀 알고 싶습니다..! 만약에 칩 안에 메인 클러스터와 서브 클러스터가 존재하고, 각각 클러스터에는 CA73 quad core, CA53 quad core와 같이 구성되어 있다면 이런 상황에서는 non-shareable, inner-shareable, outer-shareable의 범위가 어떻게 정해지는지 알고 싶습니다. 또한, outer shareable domain과 full system domain이 영역이 어떤 부분부터 다른 건지 알고 싶습니다..! 마지막으로 책이 나와있는 shareable domain에 적용하는 범위 중에서(591p), 배리어 실행 전/후 차이에서 스토어 명령어는 실행 후에 로드가 없고 스토어만 있는지 궁금합니다..!
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
DSB 리소스 관련
DSB 배리어가 리소스를 더 사용한다고 하셨는데 혹시 구체적으로 어떤 리소스를 더 사용하는건지, 그런 내용을 알 수 있을까요?
-
미해결Arm 아키텍처: 트러스트존(TrustZone) [저자직강 3부-1]
TEE OS뭔가요?
안녕하세요. 트러스티드 커널이 TEE OS를 의미하는 건가요?
-
해결됨Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]
MMU와 캐시의 관계
안녕하세요, 최근 TF-A 기반 부트로더에 대해 공부중인데, 부팅 단계에서 MMU가 특별히 물리주소를 별도의 가상주소로 매핑할 필요 없이, 지정된 물리영역을 가상주소에 그대로 1대1 매핑하여 사용한다는 사실을 알게되었습니다. (물리주소 0x0000_0000 -> 가상주소 0x0000_0000 이런식으로요)그 이유가 캐시를 활성화 하기 위함이라고 들었는데, 이런 상황에서 캐시는 가상주소라고 해도 그 주소가 곧 물리주소와 동일한데, 왜 MMU를 꼭 켜야만 캐시를 사용할 수 있는 것인지 궁금합니다.
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
xshell 와이파이 연결이 안됌.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이렇게 xshell이 연결이 안됩니다.. 동영상 보고 그대로 따라 했는데 왜 안되는 걸까요,,>?
-
미해결Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]
실무적인 내용 문의드립니다!
최근 회사에서 팀을 옮기면서 소프트웨어 관련 업무를 하고 있습니다. 전 개발자도 아니였고, 이전 근무지에서 관련 업무를 하지 않았기 때문에 최근 열심히 임베디드/소프트웨어 관련 강의를 열심히 듣고 있는데요. (열심히 듣다보니 개념을 이해하고 있는 수준입니다) 궁금한건, 현업에선 보통 RAM/EEPROM 등 메모리 관련 충돌(읽기/쓰기중 인터럽트시 등) 등 메모리 문제점이 많아서 해당 내용의 설계 관련된 내용을 좀 실무적으로 딥하게 알고 싶은데... 강사님 강의 포함해서 인프런의 다른 강의를 봐도 메모리 설계 관련 실무적인 내용은 찾기가 어렵더라구요... 혹시 위와 같은 괴리를 좀 해결하기 위한 답변 혹은 도움이 가능하실지(강의 혹은 교재 추천 등) 싶어 문의드립니다.ㅎ
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
스택공간에 데이터를 저장할 떄
캐시에만 데이터를 저장하는 것인지 캐시와 ram영역 모두에 데이터를 저장하는 과정을 거치는지 궁금합니다
-
미해결Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]
MMU의 Page Table과 관련된 질문이 있습니다.
TTBR_ELn 레지스터가 가지고 있는 값은 물리 메모리 주소값을 가지고 있는 건가요?TTBRn레지스터와 가상주소 변환(멀티 레벨) 강의에서 12:12 쯤에 말씀해주신 "페이지 테이블에 적힌 물리 메모리 주소를 다시 가상 메모리로 변환해서 다음 페이지 테이블의 정보에 접근한다." 라는 부분이 잘 이해가 안되는데, 조금 더 부연 설명을 해주실 수 있으신가요? 제가 이해한 바로는 MMU가 TTBR_ELn 에 적힌 주소를 이용해서 멀티 레벨 Page Table의 모든 변환 과정을 수행해주는 것으로 이해했는데, 변환 과정 중간에 얻어진 다음 레벨의 Page Table의 엔트리 주소를 다시 가상 주소로의 변환한다는게 어떤말인지를 잘 이해못하겠습니다. 각각의 EL마다 MMU를 켜는 설정을 해줘야 하는 건가요? 만약, EL1에서는 MMU를 활성화하고, EL2에서는 MMU를 활성화하지 않게 되면 EL1에서 접근하는 주소는 가상 주소인 반면, EL2에서 접근하는 주소는 실제 물리주소에 접근하는 식인가요?
-
미해결Arm 아키텍처: 트러스트존(TrustZone) [저자직강 3부-1]
Trusted OS에 대해 질문이 있습니다.
강의에서 Trusted OS는 논 시큐어 월드에서 구동하는 RTOS나 Linux의 하나의 쓰레드처럼 동작한다고 말씀해주셨는데, 이는 Trusted OS는 Linux와 같이 부팅 시 메모리 해당 이미지가 로드되는 별도의 OS가 아니라, 논 시큐어 월드에서 동작하고 있는 커널 코드를 시큐어 월드 전용 쓰레드로 실행시킨다고 이해하면 될까요?
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
시즌 2, 3 는 언제 수강할 수 있을까요?
안녕하세요.너무 좋은 강의 재밌게 잘 들었습니다.시즌 1으로만 끝나면 너무 아쉬울것 같습니다.혹시 시즌 2, 3 를 계획하고 계시다면 언제쯤 수강할 수 있을까요?
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
전체적인 맥락에 대해서 질문이 있습니다.
안녕하세요. 1강, 2강, 3강 모두 잘 들었습니다. 문득 3강을 듣다가 궁금한 점이 생겨서 이렇게 질문 드립니다.만약 EL2, EL3에서 동작할 Software Entity를 구현하지 않은 시스템에서 hvc, smc와 같은 명령어를 실행시키면 어떻게 되는지 궁금합니다. EL2, EL3를 구현하지 않았다면 VBAR_EL2, 3 레지스터를 초기화하지 않았을 것 이므로, Exception 발생 시 PC가 이상한 주소를 가리켜 MMU가 Fault를 유발할 것 같다고 생각하고 있는데, 해당 흐름이 맞는지 궁금합니다. 만약 틀렸다면 올바른 흐름은 어떻게 되나요?SMP와 같은 멀티 코어 프로세서에서 모든 코어에서 실행중인 User App이 각각 Exception을 발생시키면, 모든 코어에서 동시에 Kernel Code가 동작하게 되는 것 인가요?Kernel, Hypervisor, Secure Monitor는 결국, Exception이 발생하고 이에 대해 HW가 대응되는 동작(SPSR_ELn, ELR_ELn, PSTATE, PC 값 수정)을 수행한 뒤에 Exception Handler의 서브루틴이 실행되는 단순한 소프트웨어 덩어리로 이해해도 괜찮을까요? 즉, User App과 같은 경우는 Linux에서 task_struct라는 구조체로 관리가 되는데 반해, Kernel, Hypervisor, Secure Monitor와 같은 소프트웨어들은 이러한 구조체로 관리되지 않을 것 같아서 문득 궁금해졌습니다.답변 주시면 감사하겠습니다!
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
reordering
안녕하세요, 4-2 강의 5분쯤되는 예시에서 질문이 있습니다. 명령어 셋들이 연관성이 있을 수도 있지 않나요? 포인터라면 memory 가 겹칠 수 도 있으니 사실 같은 주소를 그리킬 수도 있을 것 같아서요, (예, R1 이 R3+8 과 연관이 있다든지)그렇게 되면 어떤 주소가 들어올 지 모르니 Out of Order Execution 알고리즘이 보수적으로 진행되는 것이 맞을 것 같은데, Arm core 알고리즘 상에서는 레지스터 이름이 다르면 dependency 가 없는 것으로 파악하게 되나요?