라즈베리파이 명령어
sudo su - // su 계정으로 변경
Ctrl + Alt + "F1~F6" // 가상콘솔 (마우스 안됨)
Ctrl + Alt + F7 // X-Window
원격 네트워크를 위한 설정
wlan0 선택 후, Automatically configure empty options 항목은 체크해제
위의 그림과 같이 설정한다.
ssh 설정
ssh : 원격으로 다른 컴퓨터에 접속해서 커맨드 라인 명령을 보내서 작업하는걸 도와주는 프로토콜이다.
즉, Telnet과 같은 기능을 보안성을 높여서 하는 프로토콜
sudo halt // sudo 계정으로 시스템 종료 명령어
네트워크 설정이 끝났으면, 이제 윈도우에서 putty를 통한 원격 접속이 가능해진다.
계정명 pi / 비밀번호 입력후 엔터
접속되면 로그인 시각과 계정명을 볼 수 있다.
편의를 위한 설정
계정의 홈 디렉토리 내 .bashrc 파일의
#주석이 붙은 부분을 아래와 같이 수정 및 삽입
.vimrc 파일 수정후 위의 명령어들이 visual editor에 계속 적용된다.
비쥬얼 에디터로 main.c 소스 작성
:q! // vi 강제종료
:wq // 저장후 종료
프리웨어 컴파일러 gcc
(GNU is Not Unix) 프로젝트의 프리웨어(freeware) 컴파일러.
본래 C 언어용 컴파일러로 시작하였으므로 GNU C Compiler의 약자였으나 후에 여러 언어를 지원하면서 GNU Compiler Collection으로 개명했다.
cc --version이라고 명령어를 쳐도 버전을 확인할 수 있다. // C Compiler 버전
gcc main main.c 는 main.c를 main이란 파일로 컴파일하라는 명령어이다.
--save-temps - 옵션
// 컴파일 과정에서 생성되는 중간 파일인 전처리 파일(test.i), 과 어셈블리 파일(test.s)을 지우지 않고 현재 디렉토리에 저장된다.
-o 옵션
// 컴파일 과정에서 생성되는 Binary파일(*.o)이 추출된다.
TightVNC Viewer로 원격접속하기
1. 최신 패키지 확인
apt-get update
2. VNC 서버(tightvncserver) 설치
apt-get install tightvncserver
3. VNC 서버 실행(암호 두번 입력, 짧으면 튕김)
vncserver
4. 서버 실행 확인(포트 5901, 6001)
netstat -tulpn
5. 컴퓨터에 VNC 다운로드 후 설치
http://www.tightvnc.com/download.php
6. 컴퓨터에서 VNC 뷰어실행
IP주소::5901 입력 후 3번의 비번 입력
6-1 android-vnc-viewer 로 안드로이드 폰에서도 접속 가능
위는 윈도우에서 TightVNC Viewer로 라즈베리 파이에 원격접속한 화면이다.
라즈베리 파이 SD카드를 이미지 파일로 백업하기
드라이브 명 잘 확인하고 디렉토리 선택후 Read를 누르면 백업 된다.
read가 끝나면 백업된 파일을 확인할 수 있다.
인터넷의 역사
unix - AT&T 벨
BSD : 버클리
알파넷(국방성,버클리,AT&T 개발) -> 인터넷으로 발전
protocol : 컴퓨터 상호간 혹은 컴퓨터와 단말간에서 통신을 할 때에 필요한 통신규약
TCP/IP 에서 P가 protocol을 말함.
C언어 보강
num10
A=++num; // 전치연산의 값은 A 11 num 11
A=num++; // 후치연산의 값은 A10 num 11
c++에서 전자를 쓰는게 속도향상에 도움이 됨
헷갈릴때 둥근 괄호로 싸면 우선순위가 제일 높아 알기 쉽다.
auto 자동변수 (프로그램 종료하면 사라짐)
(auto) int A; // auto가 사실은 생략된 형태이다.
cl /P // 전처리 파일 생성 main.i
cl /FA // 어셈블리 파일 생성 main.asm
cl / C //main.c 기계어 파일 생성 main.ob
어셈블리 코드 살펴보기
main.c
| #include <stdio.h>
int main()
{
int iCnt;
for(iCnt = 0; 100>iCnt ; ++iCnt);
return 0;
} |
main.asm
위는 main.c파일의 어셈블리 소스이다.
; 는 주석을 말한다.
소스를 간단화하면 위와 같다.
명령어 jmp는 점프, cmp는 비교하다, jge는 크거나 같으면(작으면 무효)의 의미이다.
$LN2@main을 보면 ++iCnt가 어셈블리 코드가 대략 어떻게 처리되는지를 알 수 있다.
mov eax, iCnt
add eax, 1
mov iCnt, eax
cl /O2 /Fa main.c는 속도 최적화를 해서 컴파일하라는 명령어이다.
코드가 어떻게 처리되었는지는 위와 같이 실제 어셈블리 코드를 보면 자세히 알 수 있다.