-
디바이스 드라이버 / 개발 방법Linux/Linux Device Driver 2020. 9. 1. 12:31
[파일 전송 연결]
호스트에서 코드를 작성, 빌드하여 파일을 전송하고 타깃 보드에서는 실행만 하는 경우
타깃 보드에서는 전송받은 프로그램 파일을 실행만하는 경우다. 호스트 PC에서 컴파일을 하기 때문에 타깃 보드에서 동작하는 커널 버전의 소스가 필요하다. 일반적으로 호스트 PC와 타깃 보드의 플랫폼(CPU or SOC)이 다를 수가 있고, 플랫폼이 같더라도 커널 버전이 다를 수가 있기 때문에 보통 크로스 컴파일러가 필요하다.
수정중..
더보기크로스 컴파일러 설치
1. tool chain 설치
apt-get install gcc-arm-linux-gnueabihf
2.크로스 컴파일러 패스 설정
nano /root/.bashrc
3. 크로스 컴파일러 적용 테스트
크로스 컴파일러 패스를 갱신하려면 리눅스를 재부팅하거나 아래 명령을 통해서 가능하다.
./bashrc 스크립트 갱신
source /root/.bashrc
크로스 컴파일러 버전 출력
아래 명령을 입력했을 때, gcc 버전이 출력되면 툴체인의 경로가 정상적으로 설정된 것이다.
arm-linux-gnueabi-gcc --version
컴파일 테스트
nano helloworld
연결 방법
파일 전송 연결: 호스트 PC의 파일을 타깃 보드에서 사용할 수 있도록 한다.
- 호스트 PC의 하드디스크 공간을 타깃 B/D가 공유하는 NFS연결은 이더넷을 사용한다.
- 호스트 PC의 파일을 SCP 명령어를 사용해서 타깃 보드로 복사한다. SSH에서 설정된 무선 연결을 사용한다.
[명령 전송 연결]
호스트에서는 명령만 전송하여 타깃 보드에서 코드를 작성, 빌드, 실행하는 경우
타깃 보드에서 코드를 작성하고 컴파일하여 실행까지하는 경우다. 타깃 보드에서 컴파일을 하기 때문에 타깃보드에 커널 소스가 필요하다. 일반적으로 타깃 보드에서 다운로드한 커널 소스로 자신을 재설정하기 때문에 크로스 컴파일러가 필요 없다. 나는 후자를 선택했기 때문에 타깃 보드에 커널 소스를 다운로드하였다.
연결 방법
1. 라즈베리파이의 SSH를 enable 시켜준다.
2. 라즈베리파이에서 ifconfig 명령으로 IP주소를 알아낸다.
3. 호스트 PC에서 Tera Term or Putty(터미널을 이용한 network 통신 프로그램)을 다운로드한다.
4. Tera term을 켜고 라즈베리파이 IP주소와 포트 22번으로 접속한다. (디폴트 ID는 pi이고 PASSWORD는 raspberry다. 변경했으면 당연히 변경된 아이디와 패스워드로 접속해야 한다. SSH가 disable 되어있으면 원격 접속이 불가능하다.)
5. 호스트 PC상에 라즈베리파이 터미널 창이 열린다. 끗
※ 만약 요청 시간이 만료되었다는 말이 나온다면 호스트 PC에서 제어판 -> 네트워크 및 인터넷 -> 네트워크 및 공유 센터 -> 어댑터 설정 변경 -> 현재 연결되어있는 항목의 속성 -> 공유 -> 다른 네트워크 사용자가 이 컴퓨터의 ~~ 해제하면 되는 것 같다(확실하지 않음)
나는 명령 전송 연결 방식을 택했다. 이제 모듈 프로그래밍을 할 수 있게 이제 라즈베리파이에서 리눅스 커널을 다운로드하고 설정하자~
https://johnjarrer.tistory.com/70
디바이스 드라이버 / 실습 환경 설정 및 준비
디바이스 드라이버은 커널에 적재되기 때문에 디바이스 드라이버 코드를 컴파일하기 위해서는 커널 소스가 따로 필요하다. https://johnjarrer.tistory.com/110 디바이스 드라이버 / 커널 소스가 필요한 �
johnjarrer.tistory.com
'Linux > Linux Device Driver' 카테고리의 다른 글
디바이스 드라이버 / 커널 소스가 필요한 이유 (0) 2020.09.01 디바이스 드라이버 / 실습 환경 설정 및 준비 (1) 2020.09.01 디바이스 드라이버 / 헤더 파일별 함수 정의 (0) 2020.08.30 디바이스 드라이버 / 알게 된 것들 (0) 2020.08.28 디바이스 드라이버 / 드라이버를 잘 만드려면 (0) 2020.08.24