원본 문서는 아래  링크 참조 바랍니다.

COMPUTE MODULE ATTACHING & ENABLEING PERIPHERALS GUIDE

개요

 

This guide is designed to help developers using the Compute Module get to grips with how to wire up peripherals to the Compute Module pins, and how to make changes to the software to enable these peripherals to work correctly.

가이드는 컴퓨팅 모듈을 사용하는 개발자가 컴퓨팅 모듈핀에 주변 기기를 연결하는 방법과 제대로 동작하려면 이러한 주변 장치를 사용할 있도록 소프트웨어를 변경하는 방법을 이해할 있도록 설계되었습니다.

 

The Compute Module contains the Raspberry Pi BCM2835 System On Chip (SoC) or "processor", memory and eMMC (eMMC is basically like an SD card but soldered onto the board, eMMC (unlike SD cards) is specifically designed to be used as a disk and has extra features that make it more reliable in this use case). Most of the pins of the SoC (GPIO, 2 CSI camera interfaces, 2 DSI display interfaces, HDMI etc.) are freely available and can be wired up as the user sees fit (or if unused can usually be left unconnected). The Compute Module is a DDR2 SODIMM form factor compatible module, so any DDR2 SODIMM socket should be able to be used (note the pinout is NOT the same as an actual SODIMM memory module).

컴퓨터 모듈은 라즈베리파이 BCM2835 시스템 (SoC) 또는 프로세서 메모리, eMMC 구성되어 있습니다.(eMMC 기본적으로 SD카드와 동일하지만 보드에 납땜이 되어있으며, eMMC SD 카드와는 다르게 특별하게 Disk 사용될 있으며 여기서는 신뢰할 있도록 추가 기능을 갖도록 설계되어있습니다.) SoC 대부분의 핀들은(GPIO,2 CSI 카메라 인터페이스, 2 DSI 디스플레이 인터페이스, HDMI etc) 자유롭게 사용할 있으며, 사용자가 적절하게 연결하여 사용할 있습니다.(사용하지 않을 경우 연결하지 않아도 됩니다.) 컴퓨터 모듈은 DDR2 SODIMM 폼펙터 호환 모듈이므로, DDR2 SODIMM 소켓을 사용해야 합니다.

 

To use the Compute Module a user needs to design a (relatively simple) 'motherboard' that can provide power to the Compute Module (3.3V and 1.8V at minimum) and wires the pins up to the required peripherals for the user's application. Raspberry Pi provide a minimal motherboard for the Compute Module (called the Compute Module IO Board or CMIO Board) which powers the module, brings out the GPIO to pin headers, brings the camera and display interfaces out to FFC connectors, provides HDMI, USB and an 'ACT' LED as well as the ability to program the eMMC of a module via USB from a PC or Raspberry Pi.

This guide first explains the boot process and how Device Tree is used to describe attached hardware (which are essential things to understand when designing with the Compute Module). It then provides a worked example of attaching an I2C and an SPI peripheral to a CMIO Board and creating the Device Tree files necessary to make both peripherals work under Linux (starting from a vanilla Raspbian OS image).

가이드는 처음에 부트 프로세스를 설명하고, 장착되어 있는 하드웨어를 표현하는 디바이스 트리가 어떻게 사용되는지 설명합니다. CMIO 보드에 I2C SPI 주변장치를 부착하는 것과 리눅스에서 두가지 주변장치가 동작될 있도록 디바이스 트리 파일을 만드는 사례를 제공합니다.

 

Note that using Device Tree is the officially supported method of doing things (for both a Compute Module and a Raspberry Pi), you can at the moment turn off device tree in the kernel altogether but we won't be providing support for this.

디바이스 트리를 사용하는 것을 공식적으로 지원합니다.(컴퓨터 모귤과 라즈베리 파이). 당신이 디바이스 트리를 커널에서 해제할 있지만 우리는 그에 대한 지원을 제공하지 않습니다.

 

BCM283X GPIOS

BCM283x has 3 banks of General Purpose Input Output (GPIO) pins (28 pins on Bank0, 18 pins on Bank1 and 8 pins on Bank2; 54 pins in total). These pins can be used as true GPIO (i.e. software can set them as inputs or outputs, read and/or set state and use them as interrupts) but also can be set to 'alternate functions' such as I2C, SPI, I2S, UART, SD card and others.

BCM283X 3 뱅크 구조의 범용입출력(GPIO) 가지고 있습니다.( Bank 0 -28pin, Bank 1-18pin, Bank 2 – 8pin, 으로 54pin) 이들 핀들은 실제 GPIO(, input 또는 output, 설정값을 읽거나 인터럽트로 설정가능합니다.) 사용할 있을 뿐만 아니라, I2C, SPI, I2S, UART, SD 카드등과 같은 대체 기능으로 설정할 있습니다.

 

On a Compute Module both Bank0 and Bank1 are free to use with Bank2 used for eMMC and HDMI hot plug detect and ACT LED / USB boot control.

컴퓨터 모듈에 있는 Bank0 Bank1 둘다 Bank2 이용해서 자유롭게 eMMC HDMI Hot flug 검출과 ACT LED/USB boot control 있다.

 

It is useful on a running system to look at the state of each of the GPIO pins (what function they are set to, and the voltage level at the pin) - so that one can see if the system is set up as expected (this is particularly useful to see if a Device Tree is working as expected or to get a look at the pin states during hardware debug).

시스템 동작중에 GPIO 핀들의 각각의 상태를 보는데 유용합니다.(어떤 기능으로 설정되어 있는지, 그리고 그핀의 전압레벨이 얼마인지) 시스템이 예상되로 설정되어 있는지 있습니다.(이것은 하드웨어 디버깅하는 동안에 상태를 보거나 디바이스 트리가 예상되로 동작하는지 보는데 특히 유용합니다.

 

Raspberry Pi provide the raspi-gpio package which is a tool for hacking / debugging GPIO (NOTE you need to run it as root). To install raspi-gpio:

라즈베리파이는 GPIO 해킹/디버깅(:루트로 실행) 위한 툴인 raspi-gpio 패키지를 제공합니다.

 

sudo apt-get install raspi-gpio

 

If apt-get can't find the raspi-gpio package you need to do an update first:

만약 apt-get으로 raspi-gpio 패키지를 찾을 없다면 먼저 update 해야 합니다.

sudo apt-get update

 

To get help on raspi-gpio run it with the help argument:

Raspi-gpio 대한 도움말을 보려면, help 인수와 함꼐 실행하십시오.

sudo raspi-gpio help

 

For example to see the current function and level of all GPIO pins use:

예를들어 모든 GPIO핀들의 현재의 기능과 레벨을 보기 위해서는 다음의 명령어를 사용할 있습니다.

sudo raspi-gpio get

 

Note raspi-gpio can be used with the funcs argument to get a list of all supported GPIO functions per pin, it will print out a table in CSV format. The idea is to pipe the table to a .csv file and then load this file using e.g. Excel:

) raspi-gpio 핀마다 지원하는 GPIO 기능 모두의 리스트를 얻기 위한 인수인 funcs 같이 사용할 있으며, 이것은 CSV 형식 테이블로 출력됩니다. .csv 파일로 테이블이 보내지고나서 이파일을 엑셀등을 이용해서 로드합니다.

sudo raspi-gpio funcs > gpio-funcs.csv

 

 

BCM283X BOOT PROCESS

BCM283x devices consist of a VideoCore 'GPU' and ARM 'CPU' cores. The GPU is in fact a system consisting of a DSP processor and hardware accelerators for imaging, video encode and decode, 3D graphics and image compositing.

BCM283X 디바이는 VideoCore’GPU’ ARM’CPU’ 코어로 구성되어있습니다. GPU DSP 프로세서와 이미징, 비디오 인코드와 디코드, 3D 그래픽과 이미지 합성하는 하드웨어 가속기로 이루어진 시스템입니다.

 

In BCM283x devices it is the DSP core in the GPU that boots first and is responsible for general setup and housekeeping before booting up the main ARM processor(s).

BCM283x 디바이스에서 GPU DSP 코어는 첫번째로 부트되고 메인 ARM processor 부팅전에  일반적인 설정과 관리를 담당한다.

 

The BCM283x devices as used on Raspberry Pi and Compute Module boards have a 3 stage boot process:

라즈베리파이와 컴퓨터 모듈 보드에 사용되는 BCM283x 디바이스는 3단계 부트 프로세스를 가지고 있다.

 

1. The GPU DSP comes out of reset and executes code from a small internal ROM (the Boot ROM). The sole purpose of this code is to load a 'second stage' boot loader via one of the external interfaces. On a Pi or Compute Module this code first looks for a 2nd stage boot loader on the SD card (eMMC) and expects it to be called bootcode.bin and be on the first partition (which must be FAT32). If no SD card is found or no bootcode.bin is found, the Boot ROM sits and waits in 'USB boot' mode, waiting for a host to give it a second stage boot loader via the USB interface.

1. GPU DSP 작은 내부 ROM(Boot ROM)으로부터 코드를 리셋하고 실행합니다. 코드의 유일한 목적은 특정 외부 인터페이스를 통해 두번째 단계 부트로더를 로딩하는 것입니다. 파이 또는 컴퓨터 모둘에서 이코드는 먼저SD 카드(eMMC)에서 첫번째 파티션(FAT32이어야함) 있을 것으로 기대되는bootcode.bin  2단계 부트로더를 찾습니다. 만약 SD카드가 없거나 bootcode.bin  없으면, USB 인터페이스를 통한 2단계 부트로더를 제공하는 Host 기다리기 위해 ‘USB boot’ 모드로 대기한다.

 

2. The second stage boot loader (bootcode.bin on the sdcard or usbbootcode.bin for usb boot) is responsible for setting up the LPDDR2 SDRAM interface and various other critical system funcions and then loading and executing the main GPU firmware (called start.elf, again on the primary SD card partition).

2. 2단계 부트로더(bootcode.bin on the sdcard or usbbootcode.bin for usb boot) LPDDR2 SDRAM 인터페이스와 다양한 다른 중요 시스템 기능을 설정하고, 메인 GPU 펌웨어를 로딩하고 실행한다. (called start.elf, again on the primary SD card partition)

3. start.elf takes over and is responsible for further system setup and booting up the ARM processor subsystem, and contains the firmware that runs on the various parts of the GPU. It first reads dt-blob.bin to determine initial GPIO pin states and GPU-specific interfaces and clocks, then parses config.txt. It then loads an ARM device tree file (e.g. bcm2708-rpi-cm.dtb for a Compute Module) and any device tree overlays specified in config.txt before starting the ARM subsystem and passing the device tree data to the booting Linux kernel.

 

3. start.elf  ARM 프로세서 서브시스템의 부팅과 추가 시스템 설정할 책임이 있으며 GPU 다양한 부분들을 실행하는 펌웨어를 포함하고 있습니다.

초기 GPIO 상태와 GPU-특정 인터페이스와 클럭를 결정하기 위해 dt-blob.bin 먼저 로드하고나서 config.txt 구분 분석을 한다. ARM 디바이스 트리 파일(e.g. bcm2708-rpi-cm.dtb for a Compute Module) 로드하고, ARM 서브 시스템을 시작하고 디바이스 트리 데이터를 부팅 리눅스 커널에 전달하기 전에 config.txt  지정된 특정 device tree 덮어씌운다.

 

 

 

 

 

 

 

 

 

 

 

 

 

DEVICE TREE

Device Tree is a special way of encoding all the information about the hardware attached to a system (and consequently required drivers).

디바이스 트리는 시스템에 부착된 하드웨어에 관한 모든 정보를 인코딩하는 특별한 방법이다 (필요한 드라이버)

 

On a Pi or Compute Module there are several files in the first FAT partition of the SD/eMMC that are binary 'Device Tree' files. These binary files (usually with extension .dtb) are compiled from human readable text descriptions (usually files with extension .dts) by the Device Tree compiler..

Pi 컴퓨터 모듈에는 SD/eMMC FAT 파티션내에 바이너리’Device Tree’ 파일들이 여러개 있습니다. 이들 바이너리 파일들은(일반적으로 확장자가 .dtb) 디바이스 트리 컴파일러에 의해 인간이 읽을 있는 텍스트 설명서로 컴파일 됩니다.

 

On a standard Raspbian image in the first (FAT) partition you will find two different types of device tree files, one is used by the GPU only and the rest are standard ARM device tree files for each of the BCM283x based Pi products:

  • dt-blob.bin (used by the GPU)
  • bcm2708-rpi-b.dtb (Used for Pi model A and B)
  • bcm2708-rpi-b-plus.dtb (Used for Pi model B+ and A+)
  • bcm2709-rpi-2-b.dts (Used for Pi 2 model B)
  • bcm2708-rpi-cm.dtb (Used for Pi Compute Module)

표준 라즈베리안 이미지의 첫번째(FAT) 파티션내에서 두종류의 디바이스 트리 파일을 발견할 있다. 하나는 GPU에서만 사용되고, 나머지 하나는 BCM283x 기반 PI 제품들 각각에 대한 표준 ARM 디바이스 트리 파일이다.

 

NOTE on Raspbian releases 2015-05-05 and earlier bcm2708-rpi-cm.dtb is missing, do a sudo rpi-update to get it.

(참고) 2015-05-05 릴리즈한 Raspbian 이전에는 bcm2708-rpi-cm.dtb  없습니다. sudo rpi-update  실행해서 설치하십시요.

 

NOTE dt-blob.bin by default does not exist as there is a 'default' version compiled into start.elf, but for most Compute Module projects it will be necessary to provide a dt-blob.bin (which overrides the default in-built one).

 

(참고)start.elf 컴파일한 기본 버전인 dt-blob.bin  기본적으로 존재하지 않지만, 대부분의 컴퓨터 모듈 프로젝트를위해서는 dt-blob.bin  준비할 필요가 있다.(기존에 설치되어 있는 것을 덮어씌워진 )

 

Note that dt-blob.bin is in compiled device tree format, but is only read by the GPU firmware to set up functions exclusive to the GPU - see below.

(참고) dt-blob.bin  디바이스 트리형식으로 캄파일되어 있지만, GPU 전용 기능 설정을 위해 GPU 펌웨어에 의해 읽혀집니다.

 

A guide to creating dt-blob.bin is here. A comprehensive guide to the Linux Device Tree for Raspberry Pi is here.(추가번역 )

Dt-blob.bin 만드는 가이드는 here. 있다. 라즈베라파이에 대한 디바이스 트리에 포괄적인 가이드는 here. 있다.

 

During boot, the user can specify a specific ARM device tree to use via the device_tree parameter in config.txt (e.g. add the line device_tree=mydt.dtb to config.txt  where mydt.dtb is the dtb file to load instead of one of the standard ARM dtb files).

 

부팅하는 동안, 사용자는 config.txt  device_tree  파라메터를 통해 특정 ARM 디바이스 트리를 지정할 있습니다. (예를 들어 config.txt   line device_tree= mydt.dtb 추가하면 표준 ARM dtb 파일 대신에 mydt.dtb  로드 됩니다.)

 

In addition to loading an ARM dtb, start.elf supports loading aditional Device Tree 'overlays' via the dtoverlay parameter in config.txt. (e.g. add as manydtoverlay=myoverlay lines as required overlays to config.txt noting that overlays live in /overlays and are suffixed -overlay.dtb e.g. /overlays/myoverlay-overlay.dtb). Overlays are merged with the base dtb file before the data is passed to the Linux kernel when it starts.

ARM dtb 로딩뿐만 아니라, start.elf  config.txt 내의 ‘overlays’ dtoverlay 파라메터를 통해 추가적인 디바이스 트리의 로딩을 지원한다.( 예를 들어

 Overlays 데이터가 리눅스 커널에 전달되기전에 기준 dtb 파일과 병합된다.

 

Overlays are used to add data to the base dtb that describes non board-specific hardware, which includes GPIO pins used and their function as well as the device(s) attached (so correct drivers can be loaded). The convention is that on a Raspberry Pi all hardware attached to the Bank0 GPIOs (the GPIO header) should be described using an overlay. On a Compute Module all hardware attached to the Bank0 and Bank1 GPIOs should be described in an overlay file.

You don't have to follow these conventions (you can roll all information into one single dtb file, replacing bcm2708-rpi-cm.dtb) but following the conventions means that you can use a 'standard' Raspbian release with its standard base dtb and all the product-specific information is contained in a separate overlay. Occasionally the base dtb might change - usually in a way that will not break overlays - which is why using an overlay is suggested.

 

오버레이는 장착된 디바이스 뿐만 아니라 사용된 GPIO 핀들과 기능을 포함한 비특정 하드웨어의 설명을 기준 dtb 데이터를 추가하기 위해 사용됩니다. (따라서 올바른 드라이버가 로드됩니다.) 규칙은 라즈베리파이의 Bank 0 GPIO(GPIO Header) 장착된 모든 하드웨어는 오버레이를 사용해서 설명되어야 합니다. 컴퓨터 모듈의 Bank0 Bank1 GPIO 설치된 모든 하드웨어는 어버레이 파일 내에 설명되어져야 합니다. 규칙을 따를 필요는 없습니다(bcm2708-rpi-cm.dtb 교체하여 특정한 하나의 dtb 파알안에 모든 정보를 롤백 있습니다.) 하지만  규칙을 따른 다는 것은 표준에 기반한 dtb 갖는 표준 라즈베리안 배포 사용할 있음을 의미하고, 모든 제품 규격 정보는 분리된 오버레이내에 포함되어야 합니다. 가끔 기본 dtb 변경되므로 일반적으로 오버레이가 분리되지 않는 방법으로 -  오버레이를 사용하도록 제안하는지 이유입니다.(?)

 

 

 

 

 

 

 

 

 

 

 

DT-BLOB.BIN

When start.elf runs it first reads something called dt-blob.bin which is a special form of Device Tree blob which tells the GPU how to (initially) set up the GPIO pin states, and also any information about GPIOs/peripherals that are controlled (owned) by the GPU (rather than being used via Linux on the ARM). For example the Raspberry Pi Camera peripheral is managed by the GPU, and the GPU needs exclusive access to an I2C interface to talk to it (I2C0 on most Pi Boards and Compute Module is nominally reserved for exclusive GPU use) as well as a couple of control pins. The information on which GPIO pins the GPU should use for I2C0 and to control the camera functions comes from dt-blob.bin. (NOTE the start.elf firmware has a 'built-in' default dt-blob.bin which is used if no dt-blob.bin is found on the root of the first FAT partition, but most Compute Module projects will want to provide their own custom dt-blob.bin).

 

Note that dt-blob.bin specifies which pin is for HDMI hot plug detect (though this should never change on Compute Module) and can also be used to set up a GPIO to be a GPCLK output and specify and ACT LED that the GPU can use while booting. Other functions may be added in future. For information on dt-blob.bin see here.

 

start.elf  실행될 GPU 초기 GPIO 상태를 어떻게 설정할지를 설명하고, GPU 의해(ARM 리눅스를 통해 사용되기 보다는) 콘트롤되는 GPIOs/주변회로에 대한 특정 정보인 디바이스 트리 집합체의 특별한 형태인dt-blob.bin  제일 먼저 읽는다. 예를 들어 라즈베리파이 카메라 장치는 GPU 의해 관리되고 GPU I2C 인터페이스에 카메라 장치와 연결하기 위해 단독으로 엑세스할 필요가 있다. (대부분의 파이 보드와 컴퓨터 모듈의 I2C0 통상 단독으로 GPU 사용하도록 예약되어 있습니다.) GPU I2C0 사용해서 카메라 기능을 콘트롤해야 하며, GPIO 핀들의 정보는 dt-blob.bin.로부터 옵니다.

((참고) start.elf 펌웨어는. 만약 dt-blob.bin  첫번째 FAT 파티션의 루트에서 찾을 없을 경우 사용되는 내장된 기본 dt-blob.bin. 가지고 있습니다. 하지만 대부분의 컴퓨터 모듈 프로젝트는 사용자 정의의 dt-blob.bin 준비해야 합니다.)

((참고) dt-blob.bin. HDMI hot plug 검출(비록 컴퓨터 모듈에서는 절대 변경할 없습니다만) 위한 핀을 명시합니다. 그리고 또한 GPU 부팅되는 동안에 사용할 있는 ACT LED, GPIO GPCLK 출력을 설정하고 명시하는데 사용될수 있습니다. 다른 기능들은 미래에 추가 될것이며 상세한 정보는 여기를 참고 하세요.

minimal-cm-dt-blob.dts is an example .dts device tree file that sets up the HDMI hot plug detect and ACT LED (these are GPIOs 46 and 47 which we state must be used only for these functions on all Compute Module designs) and sets all other GPIOs to be inputs with default pulls.

minimal-cm-dt-blob.dts.dts  디바이스 트리 파일의 예제로 HDMI hot plug detect ACT LED(모든 컴퓨터 모듈 설계에 적용되는 GPIO 46, 47 사례) 설정하고 다른 GPIO 기본 레벨를 갖도록 설정합니다.

 

To compile the minimal-cm-dt-blob.dts to dt-blob.bin use the Device Tree Compiler dtc:

minimal-cm-dt-blob.dts  dt-blob.bin  컴파일 하기 위해서는 디바이스 트리 컴파일러 dtc: 사용합니다.

dtc -I dts -O dtb -o dt-blob.bin minimal-cm-dt-blob.dts

 

 

ARM LINUX DEVICE TREE

After start.elf has read dt-blob.bin and set up the initial pin states and clocks, it reads config.txt which contains many other options for system setup (see here for a comprehensive guide).

start.elf  dt-blob.bin 읽고 초기 상태와 클럭들을 설정 후에, 시스템 설정을 위한 많은 다른 옵션들 포함하는 config.txt (포괄적인 가이드는here를 참조) 읽습니다.

 

After reading config.txt another device tree file specific to the board the hardware is running on is read; this is bcm2708-rpi-cm.dtb for a Compute Module. This file is a standard ARM Linux device tree file, which details how hardware is attached to the processor (what peripheral devices exist in the SoC and where, which GPIOs are used, what functions those GPIOs have, and what physical devices are connected). This file will set up the GPIOs appropriately (it will overwrite pin state set up in dt-blob.bin if it is different) and will also try and load driver(s) for the specific device(s).

config.txt  읽은 후에, 하드웨어가 실행되고 있는 보드 고유의 다른 디바이스 트리 파일을 읽습니다. 이것은 컴퓨터 모듈을 위한 bcm2708-rpi-cm.dtb 입니다. 이파일은 표준 ARM 리눅스 트리 파일로 어떻게 하드웨어가 프로세서에 설치되는지 방법을 상세하게 나타낸다.(어떤 주변 장치가 SoC 어디에 존재하는지와 어떤 GPIO 사용하는지, 어떤 기능의 GPIO 가지고 있는지, 어떤 주변 장치와 연결되어 있는지등..) 이파일은 GPIO들을 알맞게 설정하고( 만약 차이가 난다면 dt-blob.bin  덮어쓰고 상태를 설정합니다.) 특정 디바이를 위한 드라이버를 로드하고 시도합니다.

Although the bcm2708-rpi-cm.dtb file can be used to load all attached devices, the recommendation for Compute Moudule users is to leave this file alone (i.e. just use the one supplied in the standard Raspbian software image) and add devices using a custom 'overlay' file as previously described. The bcm2708-rpi-cm.dtbfile contains (disabled) entries for the various peripherals (such as I2C, SPI, I2S etc.) and no GPIO pin definitions (apart from the eMMC/SD Card peripheral which has GPIO defs and is enabled, because it is always on the same pins). The idea is the separate overlay file will enable the required interfaces, describe the pins used, and also describe the required drivers. The start.elf firmware will read and merge the bcm2708-rpi-cm.dtb and overlay data before giving the merged device tree to the Linux kernel as it boots up.

 

bcm2708-rpi-cm.dtb 파일이 모든 부착된 디바이스를 로드하기 위해 사용될 있으므로, 컴퓨트 모듈 사용자를 위한 권장사항으로 이파일 하나를 두고 (표준 라즈베리안 소프트웨어 이미지내 제공된 하나만을 사용) 이전 글에 설명한 것처럼 사용자 정의 오버레이파일을 사용해서 디바이스를 추가 하십시오. bcm2708-rpi-cm.dtb 파일은 다양한 주변장치의 비활성화된 항목(I2C,SPI,I2S, 같은)   정의되지 않은 GPIO핀을 포함하고 있습니다.( 항상 같은 핀을 사용하는 eMMC/SD 카드 주변 장치는 GPIO defs으로 설정되므로 제외합니다) 별도의 오버레이 파일이은 필요한 인터페이스를 사용할 있게 사용된 핀들을 설명하며, 필요한 드라이버들을 설명할 것입니다. start.elf  펌웨어는 bcm2708-rpi-cm.dtb 읽거나 통합된 디바이스 트리를 리눅스 커널이 부팅되기 전의 오버레이 데이터와 합칠 것입니다.

 

DEVICE TREE SOURCE AND COMPILATION

The Raspbian image provides compiled dtb files, but where are the source dts files? They live in the Raspberry Pi Linux kernel branch, on GitHub. Look in the arch/arm/boot/dts folder.

라즈베리안 이미지는 컴파일된 dtb 파일들을 제공합니다. dts 소스 파일들은 어디에 있을까요? 그들은 GitHub 라즈베리파이 리눅스 커널 브렌치내에 있으며, arch/arm/boot/dts 폴더를 보세요.

Some default overlay dts files live in arch/arm/boot/dts/overlays(corresponding overlays for standard hardware that can be attached to a Raspberry Pi in the Raspbian image are on the FAT partition in the /overlays directory - note these assume certain pins as they are for use on a Raspberry Pi, so in general use the source of these standard overlays as a guide to creating your own unless you are using the exact same GPIO pins as you would be using if the hardware were plugged into the GPIO header of a Raspberry Pi).

기본 오버레이 dts 파일들은 arch/arm/boot/dts/overlays 있습니다. ( 라즈베리안 이지지에 라즈베리파이에 설치되어져 있는 표준 하드웨어에 해당되는 오버레이들은 FAT 파티션인 /overlays  있습니다.) (참고) 이들은 라즈베리 파이에서 사용하기 위한 특정 핀을 통제합니다. 따라서, 라즈베리파이의 GPIO 헤더 장착된 하드웨어로 사용되는 동일한 GPIO 사용하지 않는한 일반적으로 사용자가 새롭게 만들기 위한 가이드로서 이들 표준 오버레이의 소스를 사용합니다.

 

To compile these dts files to dtb files requires an up-to-date version of the Device Tree compiler dtc. More info can be found here, but the easy way to install an appropriate version on a Pi is to run:

dts 파일들을 dtb 파일들로 컴파일 하기위해서는 업데이트된 버전의 디바이스 트리 컴파일러 dtc. 필요하다. 추가적인 정보는 here에서 찾을 수 있다. 하지만 파이에 적절한 버전을 설치하기 쉬운 방법은 다음을 설치하는 것입니다.

sudo apt-get install device-tree-compiler

 

If you are building your own kernel then the build host also gets a version in scripts/dtc, and you can arrange that your overlays are built automatically by adding them to Makefile in arch/arm/boot/dts/overlays and using the "dtbs" make target.

사용자 정의 커널을 빌드하고 Host 구축한다면 scripts/dtc내에 버전을 가져와서 그것들 arch/arm/boot/dts/overlays 내에서 Makefile “dtbs” 이용하여 타겟을 만들어 사용자 오버레이가 자동으로 빌드될수 있도록 정렬할 있습니다.

 

DEVICE TREE DEBUGGING(디바이스 트리 디버깅)

When the Linux kernel is booted on the ARM core(s) the GPU provides it with a fully assembled device tree (assembled from the base dts and any overlays). This full tree is available via the Linux proc interface in /proc/device-tree, where nodes become directories and properties become files.

리눅스 커널이 ARM 코어들에서 부팅될 , GPU 종합적으로 생산된 디바이스 트리(기본 dts 다른 오버레이들로부터 생산된) 제공합니다. 종합 트리는/proc/device-tree 내에 있는 리눅스 프로세스 인터페이스를 통해 사용 가능합니다.

 

You can use dtc to write this out as a human readable dts file for debugging (you can see the fully assembled device tree which is often very useful):

dtc -I fs -O dts -o proc-dt.dts /proc/device-tree

 

dtc  사용해서 사람이 읽을 있는 디버깅을 위한 dts파일로 출력할 있습니다.(종합 생산된 디바이스 트리를 보는데 유용한 합니다.)

 

As previously explained in the GPIO section it is also very useful to use raspi-gpio to look at the setup of the GPIO pins to see if they are as you expect:

raspi-gpio get

 

GPIO 섹션에서 이미 설명한 처럼, raspi-gpio  사용하여 GPIO 핀의 설정을 보거나 기대값을 확인하는데 매우 유용하게 사용할 있다.

 

If something seems to be going awry useful information can also be found by dumping the GPU log messages:

sudo vcdbg log msg

 

만약 무언가 잘못된 같을 경우에 대한 유용한 정보를 GPU 로그 메시지를 덤핑해서 찾을 수도 있다.

 

You can include more diagnostics in the output by adding dtdebug=1 to config.txt.

config.txt dtdebug=1  줌으로서 출력에 추가적인 진단루틴을 포함할 있다.

 

GETTING HELP

Please use the Device Tree subforum on the Raspberry Pi forums to ask Device Tree related questions.

디바이스 트리 관련된 질문을 하기 위한 라즈베리파이 포럼에 있는 Device Tree subforum을 사용하세요

 

 

 

 

EXAMPLES

For these simple examples I used a CMIO board with peripherals attached via jumper wires.

간단한 예제로서 점프선이 통해 설치된 주변회로를 갖는 CMIO 보드를 사용합니다.

 

For each of the examples we assume a CM+CMIO board with a clean install of the latest Raspbian version on the CM. See instructions here.

각각 예제를 위해 CM 보드에 최신의 라즈베리안 버전이 설치된 깨끗한 CM+CMIO 보드를 사용합니다.

 

The examples here require internet connectivity, so a USB hub plus keyboard plus WiFi dongle (or Ethernet dongle) plugged into the CMIO USB port is recommended.

예제들은 인터넷 연결이 필요하며, USB 허브와 키보드, WiFi 동글(또는 이더넷 동글) 꼽혀있는 CMIO USB 포트를 추천한다.

 

For Raspbian versions 2015-05-05 or earlier do a sudo rpi-update to make sure you have the latest firmware and bcm2708-rpi-cm.dtb.

2015-05-05일자 라즈베리안 버전이나 이전 것은 “sudo rpi-update” 통해 최신 펌웨어와 bcm2708-rpi-cm.dtb. 설치하시오.

 

If you suspect any issues or bugs with Device Tree it is always best to try a sudo rpi-update to make sure you are using the latest firmware (WARNING if you have edited any of the default .dtb files in /boot or /boot/overlays these may be overwritten by rpi-update).

만약 디바이스 트리에 어떤 이슈나 버그가 의심된다면 sudo rpi-update  시도해서 최신 펌웨어를 사용하는 것이 항상 최선이다.(주의, 만약 /boot 또는/boot/overlays  기본 .dtb 파일을 수정했다면 이것들은 rpi-update 이해 덮어 씌어질 것입니다.)

Please post any issues / bugs / questions on the Raspberry Pi Device Tree subforum.

라즈베리파이 디바이스 트리 서브포럼에 있는 이슈/버그/질문들을 게시해 주세요.

 

EXAMPLE 1 - ATTACHING AN I2C RTC

In this simple example we wire an NXP PCF8523 real time clock (RTC) to the CMIO board GPIO pins (3V3, GND, I2C1_SDA on GPIO44 and I2C1_SCL on GPIO45).

예제에서는 NXP PCF8523 real time clock (RTC) CMIO 보드 GPIO 선으로 연결한다.(3V3, GND GPIO44 I2C1_SDA, GPIO45 I2C1_SCL)

Download minimal-cm-dt-blob.dts and copy it to the SD card FAT partition (located in /boot when the CM has booted).

minimal-cm-dt-blob.dtsSD 카드 FAT 파티션에 다운로드하고 카피하시오.(CM이 부팅될 때  /boot  위치한다.)

 

Edit minimal-cm-dt-blob.dts and change the pin states of GPIO44 and 45 to be I2C1 with pull-ups:

sudo nano /boot/minimal-cm-dt-blob.dts

 

minimal-cm-dt-blob.dts  I2C1 풀업되도록 GPIO44 45 핀상태를 수정하고 변경하시오.

Change lines:

pin@p44 { function = "input"; termination = "pull_down"; }; // DEFAULT STATE WAS INPUT NO PULL
pin@p45 { function = "input"; termination = "pull_down"; }; // DEFAULT STATE WAS INPUT NO PULL

 

to:

pin@p44 { function = "i2c1"; termination = "pull_up"; }; // SDA1
pin@p45 { function = "i2c1"; termination = "pull_up"; }; // SCL1

 

NOTE we could use this dt-blob.dts with no changes, as the Linux Device Tree will (re)configure these pins during Linux kernel boot when the specific drivers are loaded, so it is up to you whether you modify dt-blob.dts.  I like to configure dt-blob.dts to what I expect the final GPIOs to be, as they are then set to their final state as soon as possible (during the GPU boot stage) but this is not strictly necessary. You may find that in some cases you do need pins to be configured at GPU boot time so they are in a specific state when Linux drivers are loaded (e.g. maybe a reset line needs to be held in the correct orientation).

(참고) 특정 드라이버가 올라올는 리눅스 커널 부팅 기간에 이들 핀들은 리눅스 디바이스 트리가() 설정하므로 변경없는 dt-blob.dts  사용할 있습니다. 따라서 dt-blob.dts 수정할지 말지 결정해야 합니다. 여기서는 기대되는 최종 GPIO 되도록  dt-blob.dts  설정합니다. 핀들은 최종 상태로 가능한 빨리 설정됩니다.(GPU 부팅 단계 동안에)하지만 이것은 절대적으로 필요한 것은 아닙니다. 어떤 경우는 그들은 리눅스 드라이버들이 로드될 특정 상태에 있는지(예로서 리셋라인 올바른 방향으로 유지될 필요가 있다)   GPU 부팅 시간에 설정되어지기 위한 필요한 핀들을 찾을 있습니다.

 

Compile dt-blob.bin:

sudo dtc -I dts -O dtb -o /boot/dt-blob.bin /boot/minimal-cm-dt-blob.dts

 

Grab example1-overlay.dts and put it in /boot then compile it:

example1-overlay.dts를 받아서 /boot  넣고 그것을 컴파일 하시오.

sudo dtc -@ -I dts -O dtb -o /boot/overlays/example1-overlay.dtb /boot/example1-overlay.dts

 

Note the '-@' in the dtc command line - this is necessary if you are compiling dts files with external references, as overlays tend to be.

(참고) dtc 명령어 라인에 있는 ‘-@’ 오버레이되는 방향으로 dts 파일들을 외부 참조하여 컴파일 하는 경우에 필요합니다.

 

Edit /boot/config.txt and add the line:

dtoverlay=example1

/boot/config.txt  변경될 있도록 라인에 추가하시오

 

Now save and reboot. 저장하고 다시 부팅하시오.

Once rebooted you should see an rtc0 entry in /dev and running:

/dev내에 rtc0 항목을 있어야 하며 동작한다면 다시 리부팅 된다.

sudo hwclock

하드웨어 클럭 타임으로 되돌아 가고, 에러는 없다.

EXAMPLE 2 - ATTACHING AN ENC28J60 SPI ETHERNET CONTROLLER

 

In this example we take the first RTC example and add another peripheral - an ENC28J60 SPI Ethernet Controller. The Ethernet controller is connected to SPI pins CE0, MISO, MOSI and SCLK (GPIO8-11 respectively), as well as GPIO12 for a falling edge interrupt, and of course GND and 3V3.

이번 예제는 첫번째 RTC 예제와 다른 주변 회로인 ENC28J60 이더넷 콘트롤러를 추가한다. 이더넷 콘트롤러는 SPI 핀들인 CE0,MISO,MOSI SCLK(GPIO8-11 각각) 뿐만 아니라, GND, 3V3 폴링 엣지 인터럽트를 위한 GPIO12 연결된다.

 

In this example we won't change dt-blob.bin (though of course you can if you wish) and we should see that Linux Device Tree correctly sets up the pins.

이번 예제에서는 dt-blob.bin  변경되지 않고서(물론 당신이 원할수 있지만) 리눅스 디바이스 트리가 핀들을 올바르게 설정하는 것을 있다.

 

Grab example2-overlay.dts and put it in /boot then compile it:

sudo dtc -@ -I dts -O dtb -o /boot/overlays/example2-overlay.dtb /boot/example2-overlay.dts

example2-overlay.dts를 다운받고 /boot  넣은후 컴파일 하시오.

 

Edit /boot/config.txt and add the line:

dtoverlay=example2

 

Now save and reboot.

Once rebooted you should see, as before, an rtc0 entry in /dev and running:

sudo hwclock

will return with the hardware clock time, and not an error.

You should also have Ethernet connectivity: 이더넷 연결할수 있다.

ping 8.8.8.8

 

should work.

 

finally running:

sudo raspi-gpio get

 

should show that GPIO8-11 have changed to ALT0 (SPI) functions.

GPIO8-11 ALT0(SPI) 기능으로 변경된 것을 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ATTACHING A CAMERA OR CAMERAS

To attach a camera or cameras see the documentation here

 

This document is a work in progress and is intended for advanced users.

(이문서는 진행중인 작업이며, 고급 사용자를 위한 것입니다.)

 

For the camera to work with the compute module, the firmware needs to be July 23rd 2014 or newer (use vcgencmd version to check).

컴퓨터 모듈에서 카메라를 작동하기 위해서는, 2014 7 23일자나 이후 최신 펌웨어가 필요합니다. 확인하기 위해 vcgencmd version  사용하시오.

 

QUICKSTART

  1. On the compute module, run sudo raspi-config and enable the camera.
  2. Next, run sudo wget http://goo.gl/lozvZB -O /boot/dt-blob.bin
  3. Connect adapter board and camera to CAM1 port.

 

    4. Connect GPIO pins together as shown below.

 

5. (Optional) To add an additional camera, repeat step 3 with CAM0 and connect the GPIO pins for the second camera.

6. Finally, reboot for the dt-blob.bin file to be read

 

Software support

Recent raspicam binaries (raspivid and raspistill) have the -cs (--camselect) option to specify which camera should be used

최신 라즈파이캠 바이너리는(raspivid raspistill) 어떤 카메라를 사용할지 정의하기 위한 –cs (--camselect) 옵션을 가지고 있다.

(sudo raspistill –cs 1 –o ex.jpg  같이 사용한다.)

 

From other applications, MMAL can be told which camera to use by setting MMAL_PARAMETER_CAMERA_NUM accordingly.

다른 어플리케이션으로부터, MMAL MMAL_PARAMETER_CAMERA_NUM 설정에 맞춰서 어떤 카메라를 사용할지 표현해 준다.

MMAL_PARAMETER_INT32_T camera_num = {{MMAL_PARAMETER_CAMERA_NUM, sizeof(camera_num)}, CAMERA_NUMBER};
status = mmal_port_parameter_set(camera->control, &camera_num.hdr);

 

ADVANCED

The 15-way 1mm FFC camera connector on the Raspberry Pi model A and B is attached to the CAM1 interface (though only uses 2 of the 4 available lanes).

라즈베리파이 모델 A B에는 15-way 1mm FFC 카메라 콘넥터가 CAM1 인터페이스에 설치되어있다.(비록 4개의 가능한 레인중 2개만 사용하지만..)

 

The Compute Module IO Board has a 22-way 0.5mm FFC for each camera port, with CAM0 being a 2-lane interface and CAM1 being the full 4-lane interface.

컴퓨터 모듈 IO 보드는 카메라 포트를 위한 22-way 0.5mm FFC 가지고 있으며, CAM0 2-lane 인터페이스와 CMA1 4-lane 인터페이스로 되어 있다.

 

To attach a standard Raspberry Pi Camera to the Compute module IO Board a small adaptor board is available that adapts the 22W FFC to the Pi 15W FFC.

표준 라즈베리파이 카메라를 컴퓨터 모듈에 IO 보드에 설치하기 위해서는 22W FFC Pi 15W FFC 적용할수 있는 작은 어뎁터 보드로 가능하다.

 

To make the Raspberry Pi Camera work with a standard Raspian OS the GPIOs and I2C interface must be wired to the CAM1 connector. This is done by bridging the correct GPIOs from the J6 GPIO connector to the CD1_SDA/SCL and CAM1_IO0/1 pins on the J5 connector using jumper wires. Additionally, a dt-blob.bin file needs to be provided to override default pin states (the dt-blob.bin file is a file that tells the GPU what pins to use when controlling the camera, for more information on this see the relevant section in the guide to attaching peripherals to a Compute Moule here).

 

표준 라즈베리안 OS에서 라즈베리파이 카메라를 동작시키기 위해서는 GPIO I2C 인터페이스가 CAM1 콘넥터에 연결되어 있어야 합니다. 이것은 점퍼선을 이용하여 J6 GPIO 콘넥터에 있는 CD1_SDA/SCL CAM1_IO0/1 핀을 J5 콘넥터에 연결하여 수행됩니다. 추가적으로, dt-blod.bin 파일은 기본 상태를 우선 제공할 필요가 있습니다.(dt-blob.bin 파일은 GPU 카메라를 콘트롤할때 사용하는 핀을 말해주는 파일로서 많은 정보는 관련된 섹션을 참조하시오 here앞에서 설명한 부분임.)

The pin numbers below are provided only as an example. LED and SHUTDOWN pins can be shared by both cameras, if required. The SDA and SCL pins must be either GPIO0 and GPIO1 or GPIO28 and 29 and must be individual to each camera.

아래의 핀번호들은 단지 예로서 제공됩니다. LED SHUTDOWN 핀들은 양쪽 카메라에 의해서 공유될수 있습니다. 필요한 것은 SDA SCL핀은 GPIO0 GPIO1 또는 GPIO28 29 둘중 하나로 연결되어야 하며 카메라에 개별적이어야 합니다.

 

STEPS TO ATTACH A RASPBERRY PI CAMERA (TO CAM1)

  1. Attach the 0.5mm 22W FFC flexi (included with the adaptor board) to the CAM1 connector (flex contacts face down).
  2. Attach the camera adaptor board to the other end of the 0.5mm flex (flex contacts face down).
  3. Attach a Raspberry Pi Camera to the other, larger 15W 1mm FFC on the camera adaptor board (contacts on the Raspberry Pi Camera flex must face up).
  4. Attach CD1_SDA (J6 pin 37) to GPIO0 (J5 pin 1).
  5. Attach CD1_SCL (J6 pin 39) to GPIO1 (J5 pin 3).
  6. Attach CAM1_IO1 (J6 pin 41) to GPIO2 (J5 pin 5).
  7. Attach CAM1_IO0 (J6 pin 43) to GPIO3 (J5 pin 7).

The numbers in brackets are conventional, physical pin numbers, numbered from left to right, top to bottom. The numbers on the silkscreen correspond to the Broadcom SoC GPIO numbers.

괄호안에 있는 번호는 일반적으로 물리적 핀 번호이고 번호는 좌에서 우로, 위에서 아래로 붙여진다. 실크스크린 위의 번호들은 Broadcom SoC GPIO 번호에 상응하는 것이다.

.CONFIGURING DEFAULT PIN STATES

The GPIOs used by the camera, default to input mode on the compute module. In order to override the default pin states and define the pins used by the camera, we need to create a dt-blob.bin file from a source dts file with the relevant information for the GPU, and place this on the root of the first FAT partition.

카메라에 사용되는 GPIO 컴퓨터 모듈에서 기본적으로 입력모드이다. 기본 상태를 무시하고 카메라에 사용되는 핀들을 정의하기 위해서는 GPU 위한 관련된 정보를 갖는 소스 dts 파일로부터 dt-blob.bin 파일을 만들어야 하고, 이것을 루트의 FAT 파티션에 놓아야 한다.

(노란색 바탕에 대한 기술은 추가 정리해야 한다)

 

Sample device tree source files are provided at the bottom of this document.

The pin_config section in the pins_cm { } (compute module) section of the source dts needs the camera's LED and power enable pins set to outputs:

소스 dts (컴퓨터 모듈) 섹션내의 Pin_config 섹션 pins_cm { }  카메라의 LED 파워 인에이블 핀을 출력으로 설정한다.

 

pin@p2  { function = "output"; termination = "no_pulling"; };
pin@p3  { function = "output"; termination = "no_pulling"; };

 

To tell the firmware which pins to use and how many cameras to look for, add the following to the pin_defines section:

어떤 핀을 사용하고 얼마나 많은 카메라를 사용하지를 펌웨어에게 알려주기 위해서 pin_defines 섹션에 다음을 추가하시오.

pin_define@CAMERA_0_LED { type = "internal"; number = <2>; };
pin_define@CAMERA_0_SHUTDOWN { type = "internal"; number = <3>; };
pin_define@CAMERA_0_UNICAM_PORT { type = "internal"; number = <1>; };
pin_define@CAMERA_0_I2C_PORT { type = "internal"; number = <0>; };
pin_define@CAMERA_0_SDA_PIN { type = "internal"; number = <0>; };
pin_define@CAMERA_0_SCL_PIN { type = "internal"; number = <1>; };
 

 

 

HOW TO ATTACH TWO CAMERAS

 

Attach the second camera to the (CAM0) connector as before.

Connect up the I2C and GPIO lines.

  1. Attach CD0_SDA (J6 pin 45) to GPIO28 (J6 pin 1).
  2. Attach CD0_SCL (J6 pin 47) to GPIO29 (J6 pin 3).
  3. Attach CAM0_IO1 (J6 pin 49) to GPIO30 (J6 pin 5).
  4. Attach CAM0_IO0 (J6 pin 51) to GPIO31 (J6 pin 7).

5.    The compute module's pin_config secion needs the second camera's LED and power enable pins configured:

6.  pin@p30 { function = "output"; termination = "no_pulling"; };
7.  pin@p31 { function = "output"; termination = "no_pulling"; };

8.    In the compute module's pin_defines section of the dts file, change theNUM_CAMERAS parameter to 2 and add the following:

9.  pin_define@CAMERA_1_LED { type = "internal"; number = <30>; };
10.pin_define@CAMERA_1_SHUTDOWN { type = "internal"; number = <31>; };
11.pin_define@CAMERA_1_UNICAM_PORT { type = "internal"; number = <0>; };
12.pin_define@CAMERA_1_I2C_PORT { type = "internal"; number = <0>; };
13.pin_define@CAMERA_1_SDA_PIN { type = "internal"; number = <28>; };
14.pin_define@CAMERA_1_SCL_PIN { type = "internal"; number = <29>; };

SAMPLE DEVICE TREE SOURCE FILES

Enable a CAM1 only,

Enable both cameras

As of 2015-04-17 some users are reporting issues with GPIO pin 2 and 3 for camera control. Pin 4 and 5 is reported to work. The issue is being investigated.

 

CHANGING THE DEFAULT PIN CONFIGURATION (23페이지 상단의 CONFIGURING DEFAULT PIN STATES에 관련된 내용임)

This feature is intended for advanced users. ( 기능은 고급 사용자를 위한 것입니다.)

As of July 15th 2014, the Raspberry Pi firmware supports custom default pin configurations through a user-provided device tree blob file. In order to ensure that your firmware is recent enough, please run vcgencmd version.

2014 715일자로 라즈베리 파이 펌웨어는 사용자가 제공하는 디바이스 트리 blob 파일을 통해 사용자 정의 기본 구성을 지원합니다. 펨웨어가 최근 것인지 확인하기 위해서 vcgencmd version. 실행해 주십시오.

 

PROVIDING A CUSTOM DEVICE TREE BLOB

In order to compile a device tree source (dts) file into a device tree blob (dtb) file, the device tree compiler must be installed by running sudo apt-get install device-tree-compiler. The dtc command can then be used as follows:

디바이스 트리 소스(dts) 파일을 디바이스 트리 blob(dtb) 파일로 컴파일 하기 위해서, 디바이스 트리 컴파일러는 sudo apt-get install device-tree-compiler. 실행함으로서 설치 되어져야 합니다. 다음의 dtc 명령이 사용되어 있습니다.

sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob.dts

 

NOTE: In the case of NOOBS installs, the dtb file should be placed on the recovery partition instead.

참고:NOOBS 설치된 경우, dtb 파일은 리커버리 파티션에 대신 배치해야 합니다.

 

Similarly, a dtb file can be converted back to a dts file, if required.

마찬가지로 필요한 경우, dtb파일은 dts 다시 변환될 있습니다.

dtc -I dtb -O dts -o dt-blob.dts /boot/dt-blob.bin                                                                                                                                                                                                                                                                                                                  

 

 

SECTIONS OF THE DT-BLOB

The dt-blob.bin is used to configure the binary blob (Videocore) at boot time. It is not something that the linux kernel uses (at the moment) although a kernel section will be added at a later stage when we move the Raspberry Pi kernel to use a dt-blob for configuration. The dt-blob is capable of configuring each of the different versions of the Raspberry Pi including the Compute Module to set up the alternate settings correctly. The following sections are valid in the dt-blob.

Dt-blob.bin 부팅시간에 바이너리 blob(Videocore) 환경 설정에 사용됩니다. 환경 설정용  dt-blob 사용하기 위해서 라즈베리파이 커널로 이동할 비록 커널 섹션이 이후 단계에 추가 될지라도 리눅스 커널이 사용하는 것은 아니다(잠깐 동안). Dt-blob 컴퓨터 모듈을 포함한 라즈베리파이의 다른 버전의 각각에 대해 대안 설정을 올바르게 설치하기 위해 환경 설정을 있다.다음 섹션은 dt-blob 유효합니다.

 

1.videocore

This section contains the whole videocore blob information, all subsequent sections must be enclosed within this section(이 섹션은 전체 비디오코어 blob 정보를 포함하며, 이후의 모든 섹션은 이 섹션내에 묶어야 합니다.)

2.pins_*

There are up to eight separate pins_* sections, namely: (최대 8개의 별도의 pins_* 섹션이 있으며, 이름은: )

    pins_rev1 Rev1 pin setup. There are some difference because of the moved I2C pins

    pins_rev2 Rev2 pin setup. This includes the additional codec pins on P5

    pins_bplus1 Model B+ rev 1.1, including the full 40pin connector

    pins_bplus2 Model B+ rev 1.2, swapping the low-power and lan-run pins

    pins_aplus Model A+, lacking Ethernet

    pins_2b1 Pi 2 Model B rev 1.0, controls the SMPS via I2C0

    pins_2b2 Pi 2 Model B rev 1.1, controls the SMPS via software I2C on 42&43

    pins_cm The Compute Module, note the default for this is the default for the chip so can be a useful source of information about default pullups / downs on the chip.

Each pins_* section can contain pin_config and pin_definessections.

각각의 pins_*  섹션은 pin_config  pin_defines 섹션을 포함할 있다.

3. pin_config

The pin_config section is used to configure the individual pins, each item in this section must be a named pin section, such as pin@p32 meaning GPIO32. There is a special section pin@default which has the default settings for anything not specifically named in the pin_config section.

pin_config 섹션은 개별 핀들의 환경 설정을 위해 사용되어지며, 섹션의 아이템들은 반드시 GPIO32 의미하는 pin@p32  같은 형식으로 이름이 붙여져야 한다. 특별한 섹션인 pin@default pin_config 섹션내에 특별하게 이름이 붙여지지 않는 기본 설정을 갖는다.

 

4. pin@pinname

This section can contain any combination of the following items

(1)polarity

o      active_high

o      active_low

(2)termination

o      pull_up

o      pull_down

o      no_pulling

(3)startup_state

o      active

o      inactive

(4)function

o      input

o      output

o      sdcard

o      i2c0

o      i2c1

o      spi

o      spi1

o      spi2

o      smi

o      dpi

o      pcm

o      pwm

o      uart0

o      uart1

o      gp_clk

o      emmc

o      arm_jtag

(5) drive_strength_ma The drive strength is used to set a strength for the pins, please note you can only set the bank to a single drive strength. <8> <16> are valid values

 

 

5. pin_defines

This section is used to set specific videocore functionality to particular pins, this enables the user to move the camera power enable pin to somewhere different or the hdmi hotplug postion (i.e. things that linux have no control over). Please refer to the example dts file below

섹션은 특정 핀에 특정 비디오코어 기능을 설정하는 사용됩니다. 이것은 카메라 파워 설정 핀이나 hdmi hotplug 위치 어딘가 다른곳으로 이동하는 것을 가능하게 합니다.(, 리눅스에서는 콘트롤하지 않는 일임) 아래의 예제 dts 파일을 참조해 주세요.

 

CLOCK CONFIGURATION

It is possible to change the configuration of the clocks through this interface, although very difficult to predict the results! The configuration of the clocking system is very very complex, there are five separate PLLs each one has its own fixed (or variable in the case of PLLC) VCO frequency. Each VCO then has a number of different channels which can be set up with a different division of the VCO frequency. Then each of the clock destinations can then be configured to come from one of the clock channels (although there is a restricted mapping of source to destination so not all channels can be routed to all clock destinations).

인터페이스를 통해서 비록 결과를 예측하는 것이 매우 어렵지만 클럭 확경 설정을 변경하는 것이 가능합니다. 시스템 클럭킹의 환경설정은 매우 매우 복잡하며, 다섯개의 구분된 PLL들이 있으며 각각은 VOC 주파수로 고정됩니다.(또는 PLLC 경우에서는 변수) 각각 VCO VOC 주파수의 다른 부문으로 설정될 있는 다른 채널의 수를 갖습니다. 클럭 각각의 목적지는 클럭 채널중 하나로부터 나오도록 환경 설정될수 있습니다.(비록 목적지에 소스의 제한된 맵핑이 있지만, 모든 채널은 모든 클럭 목적지에 라우팅될 없습니다.)  - 무슨 말인지 이해 못하겠음.??

 

 For this reason I'll just add here a couple of example configurations that you can use to alter very specific clocks. Beyond this it is something we'll add to when requests for clock configurations are made.

이러한 이유 때문에, 매우 특별한 클럭을 변경하는데 사용될 있는 환경설정 예제 가지를 여기에 추가할 것입니다. 외에도 클럭 환경설정을 위해서 만드는 것이 요청될 추가할 것입니다.

clock_routing {
   vco@PLLA  {    freq = <1966080000>; };
   chan@APER {    div  = <4>; };
   clock@GPCLK0 { pll = "PLLA"; chan = "APER"; };
};
 
clock_setup {
   clock@PWM { freq = <2400000>; };
   clock@GPCLK0 { freq = <12288000>; };
   clock@GPCLK1 { freq = <25000000>; };
};

 

The above will set the PLLA to a source VCO running at 1.96608GHz (the limits for this VCO are 600MHz - 2.4GHz), the APER channel to /4 and configures GPCLK0 to be sourced from PLLA through APER. This is used specifically to give an audio codec the 12288000Hz it needs to do the 48000 range of frequencies.

위에서 1.96608GHz( VCO 대한 한계는 600MHz-2.4GHz) 동작하는 소스 VCO PLLA 설정하고, PLLA 소스로하여 APER 채널을 4 나누고 이를 GPLCLK0 환경설정한다. 이것은 48000 주파수 범위를 하기 위해 필요로 하는 오디오 코덱 12288000Hz 인가하기 위해 특별하게 사용됩니다.

 

SAMPLE DEVICE TREE SOURCE FILE

NOTE: As this is a new feature, there is no reference dts file which is guaranteed to be supported by future firmware revisions.

(참고) 이것은 새로운 기능이기 때문에 미래 펌웨어 리비전에 의해 지원되는 보장된 참조용 dts 아닙니다.

The dts file used for the dtb compiled into the May 30th 2015 firmware can be downloaded from here.

dts 파일은 2015 530일자 펌웨어를 컴파일한 dtb 사용되어진다.

 

Posted by 이미지쿡

( Hardware 정보 )


Raspberry Pi compute Module Development kit


라즈베리파이의 동작 원리를 이해 하려면 우선 Compute Module를 사용해 보는 것을 권장합니다. 이유는 우선 H/W와 S/W에 대한 설명이 잘 되어 있기 때문입니다. 특히 회로도, BOM(부품 리스트) 거버파일, 주변회로를 연결하는데 필요한 가이드등이 제공 되므로 GPIO를 설정하거나 활용하는데 큰 도움이 됩니다.


H/W는  (1) Comput Module과(하늘색) (2) I/O board(노란색)로 구성됩니다.


(상세 설명) Raspberry Pi compute Module Development kit


(1) Compute Module 보드는 SoDIMM Type에 조립되어 있으며 6Layer PCB로 구성 되어 있습니다.

 

SODIMM Type으로 구성된 이유는 바로 탈부착이 용이 하도록 하기 위함이나 실제로는 (이건 개인적인 생각입니다만) 1G DRAM과 BCM2835가 SOC type로 제작되어 있고, 이것을 일반인에게 팔지 않고, 모듈 type을 제작하여 팔기 위한것 같습니다. 가격이 25$ 이며(2017.1월 기준) 새로나온 CM3(위의 기준은 CM1)는 30$(배송비,세금불포함) 입니다.

(참고 자료_ CM1 vs CM3 vs CM3 Lite 비교 )

 


(2) I/O Board 전체에 대한 Design Data가 open 되어 있으므로 활용가치가 높다고 할 수 있습니다.

* Schematics Source 위치

* 거버 및 BOM List Source 위치

 

 

아쉽게도 BOM List는 I/O 보드만 있고 Compute Module은 없습니다. 회로도를 참고해야 합니다.

주요 부품들의 위치는 아래와 같습니다.

 

 

 

 

 

 

무엇보다 아쉬운 것은 시중에서 BCM2835와 4G eMMC를 구할 수 없으며, 회로, BOM,거버 정보가 있다하더라도(물론 회로도만 있습니다.) 실제로 제작할 수 없는 문제가 있습니다.

 

 

Posted by 이미지쿡

 

Impossible photography

TEDSalon London Fall 2011 · 6:21 · Filmed Nov 2011

 

 

놀라운 사진술에 대한 강연입니다.

카메라로 찍을 수 없는 사진술에 대한 설명이라는 군요. ^^!

 

사실 내용을 설명하기가 쉽지 않습니다.

보면 "와~~"하고 와닿지만요...

 

현실적이면서 매우 아름다운 합쳐진 사진들에 대한 이야기를 들려주고 있으며, 누구나 만들 수 있지만 아쉽게도 그것을 제한시키는 유일한 것은 "우리의 상상력"이라고 합니다.

 

정말...우리의 상상력이 우리의 사고와 행동을 제한하는 걸까요?

맞는것 같습니다.

 

 

 

 

Posted by 이미지쿡

블로그 이미지
Raspberry pi 카메라로 영화 매트릭스 처럼 촬영하기
이미지쿡

공지사항

Yesterday
Today
Total