1. 카메라 동작확인
  -. PiCAM 구입 후 파란색이 USB, 은색이 hdmi쪽을 향하게 모듈을 삽입한다.
  -. sudo raspi-config 명령어에서 5번 메뉴 camera를 enable시킨다.
     (안되면 sudo apt-get update, sudo ap-get upgrade 선행)
  -. 메뉴를 빠져나오면서 재부팅을 한다.
  -. raspistill -o image.jpg 라고 입력하여 이미지가 잘 생성되는지 확인한다.

2. 먼저 필요한 라이브러리를 설치
   $ sudo apt-get install libjpeg8-dev imagemagick libv4l-dev

3. build시 필요한 파일을 include해 두기
   $ sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h

4. mjpg-streamer 소스를 받는다
  -. Git에서 받아도 되고 검색해서 일반 사이트에서 받아도 된다.

5. 빌드
   $ cd mjpg-streamer-code-182/mjpg-sreamer
   $ make mjpg_streamer input_file.so output_http.so (Makefile에서 필요한거 주석 풀어준다)
  (위에가 귀찮으면 make clean all)

6. 주요 library root로 복사
   $ sudo cp mjpg_streamer /usr/local/bin
   $ sudo cp outpu_http.so input_file.so /usr/local/lib/
   $ sudo cp -R www /usr/local/www

7. stream이 될 jpg파일이 저장될 폴더 생성
   $ mkdir /tmp/stream

8. 실행
   $ raspistill --noreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 & (임시 저장 폴더에 이미지를 반복하여 저장)
   $ LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w /usr/local/www"

9. 포트 변경
기본 포트는 8080으로 mjpeg stream 서버가 열리는데 이를 바꿔 주기 위해서는 -p 옵션을 사용한다.
   $ LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -p 8888 -w /usr/local/www"

*동작원리는 mjpeg용 서버를 열어서 실제 웹페이지에서는 해당 서버의 스트리밍을 받아서 사용.(포트가 겹치지 않도록 주의)


참고 사이트 :

http://jskorl.blog.me/220379225762


1. 툴체인 받기
   $ git clone https://github.com/raspberrypi/tools raspi_toolchain

2. 툴체인 환경 변수에 추가
   $ cd raspi_toolchain
   $ cp -av  arm-bcm2708/ /opt/toolchains/
   $ vi ~/.bashrc
   
* 추가 내용
export PATH="$PATH:/opt/toolchains/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian:/opt/toolchains/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin"
추가 후 저장 종료

   $ source ~/.bashrc
   $ echo $PATH   <-- 잘 적용 됬는지 확인

3. 소스 받기
   $ git clone --depth=1 https://github.com/raspberrypi/linux raspi_kernel

4. 소스 빌드
   $ cd raspi_kernel

   $ KERNEL=kernel7
   $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
   $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs(-j n옵션으로 빠르게 빌드 가능)


Target board에서 Kernel build!!

1. Source 받기
   $ git clone --depth=1 https://github.com/raspberrypi/linux

2. bc라는 패키지 설치(근데 이게 먼지 찾아봐도 모르겠음..)
   $ sudo apt-get install bc

3. Build configuration 설정
 -. 라즈베리파이 1은...
   $ cd linux
   $ KERNEL=kernel
   $ make bcmrpi_defconfig

-. 라즈베리파이 2는...
   $ cd linux
   $ KERNEL=kernel7
   $ make bcm2709_defconfig

4. build 하기
   $ make zImage modules dtbs

5. 모듈도 build 하기
   $ sudo make modules_install

6. 빌드한거 적용하기
   $ sudo cp arch/arm/boot/dts/*.dtb /boot/
   $ sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
   $ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
   $ sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img

* 라즈베리파이 2는 kernel7.img 로 복사한다.


라즈베리 파이의 부팅 순서는 다음과 같다.


1. 보드에 전원이 들어오고 GPU가 활성화된다.

2. SoC 내 ROM에 있는 첫번째 부트로더(Firmware)를 읽어들인다.

3. 첫번째 부트로더가 SD카드에 있는 두번째 부트로더(bootcode.bin)을 호출한다.

4. 두번째 부트로더가 SD카드에 있는 config.txt를 읽고 실행한다.

4. 두번째 부트로더가 세번째 부트로더(start.elf)를 호출 및 실행하여, ARM Core를 활성화한다.

6. ARM Core가 활성화되면 네번째 부트로더(kernel.img)를 호출, 실행한다.

+ Recent posts