인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.

HAL드라이브 없이 GPIO제어 하기 2

GPIO 제어의 방식 이해

해결된 질문

작성

·

36

0

안녕하세요 이제 막 강의를 듣기 시작해서 세션 7까지 수강을 마쳤습니다.

 

제가 임베디드 분야에 무지한 상태로 임베디드 리눅스를 사용하는 회사에 취업을 몇가지 업무를 진행하였는데,

그 때 GPIO를 제어하기 위해선 해당 pin에 맞는 file 내부에 작성된 값을 제어했습니다.

이 부분과 차이가 있는듯 하여 궁금한점이 있느데

  1. 임베디드 리눅스의 경우에는 운영체제가 존재하고, 지금 강의에서 진행하는 과정의 경우 운영체제가 없기 때문에 진행방식의 차이가 있는건가요?

  2. mcu를 사용해서 gpio를 제어하는 경우에는 결국 해당 레지스터의 bit를 제어하는 방식으로 진행이 되는건가요?

    이렇게 두가지 내용에 대해서 우선 궁금증이 생겨 문의 드립니다. 답변주시면 감사드리겠습니다.

 

답변 2

1

ojtube5님의 프로필 이미지
ojtube5
지식공유자

보통 pin과 매핑된 address가 있어요.
그래서 그 address에 값을 쓰면, gpio가 제어가 됩니다.

이런 큰 틀은 99% 변하지 않아요.

 

운영체제가 있다면, 중간에 드라이버가 존재하고,

그 드라이버가 결국 특정 address에 접근해서 gpio를 제어하는 구조를 가집니다.

운영체제가 없다면, 그냥 다이렉트로 해당 address로 접근해서 gpio를 제어하는 구조를 가집니다.

 

결론은 운영체제가 있든 없든 동작의 큰 틀은 동일합니다.

 

운영체제가 있는 상태에서 하드웨어를 제어하는 코딩을 하시려면,

운영체제에서 드라이버를 어떻게 제작하는지 그 규칙을 알아야합니다.

거기에 더하여, 결국 하드웨어를 제어하려면 여기 강의에서 말하는 내용을 알아야지만, 드라이버 구현이 가능합니다.

 

조금 더 쉽게 이야기를 하면, 결국은 특정 주소로 접근해서 gpio를 제어하는 것은 똑같지만,

운영체제가 있으면 운영체제는 특정 주소를 어플리케이션에서 바로 접근하는 것을 차단하기 때문에,

드라이버라는 중간 매개체를 통해서 특정 주소를 접근해야합니다.

그래서, gpio를 제어하는 지식 + 드라이버를 구현하는 지식이 있어야, 이 강의에서 말하는 똑같은 기능을 리눅스 등등의 환경에서 구현할 수 있습니다.

0

안녕하세요, 인프런 AI 인턴입니다. nmk1188님.

임베디드 분야에서의 GPIO 제어는 임베디드 시스템의 구조에 따라 달라집니다. 질문 주신 내용에 대해 간단히 정리해 보겠습니다.

  1. 임베디드 리눅스와 운영체제에 따른 차이점:

    • 임베디드 리눅스의 경우, 운영체제가 하드웨어와 직접 상호 작용하지 않습니다. 대신, 운영체제가 제공하는 파일 시스템을 통해 GPIO와 같은 하드웨어 자원을 제어하게 됩니다. 이는 /sys/class/gpio 와 같은 파일 경로를 통해 특정 파일들을 읽거나 쓰는 방식으로 GPIO를 조작합니다.
    • 반면, 강의에서 다루는 내용은 운영체제가 없는 베어 메탈 환경이나 간단한 RTOS 환경에서의 GPIO 제어 방식일 수 있습니다. 이 경우 개발자는 직접 MCU의 하드웨어 레지스터를 조작하여 GPIO를 제어하게 됩니다.
  2. MCU를 사용한 GPIO 제어 방식:

    • MCU에서 GPIO를 제어할 때, 각 GPIO 핀은 특정 레지스터의 비트로 매핑됩니다. 개발자는 해당 레지스터의 특정 비트를 설정하거나 클리어하여 해당 핀의 전압 상태(HIGH/LOW)를 제어합니다.
    • 이는 매우 저수준의 제어 방식으로, GPIO 제어가 필요할 때 마이크로컨트롤러의 데이터시트나 매뉴얼에 명시된 레지스터 맵을 참조해야 합니다.

GPIO와 관련된 질문과 유사한 이전 게시물을 추천해드리니 참조하시면 도움이 되실 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기