5/27/2015

DSRC (근거리 전용통신 ) 기본개요

1. DSRC의 기본설명 및 기본기능 

Dedicated short-range communications 의 약어로 DSRC로 불리우며, IEEE 802.11a 기반으로 아래와 같이 진행이 되고 있다.


  • DSRC 기본기능 및 설명
  1. • 5.850-5.925 GHz range
  2. • divided into 7 channels (each 10 MHz)
  3. • Short range radio
  4. • 300m (1000m max)
  5. • High data rate
  6. • 6-27 Mbps
  7. • Half-duplex
  8. • station can only send or transmit, but not both at the same time

1.1 DSRC의 표준 

각 링크 및 자료수집용 
  
   http://www.csie.ndhu.edu.tw/webv3/cht/speech/NDHU20101001.pdf
   http://www2.hh.se/staff/kasj/SAFER_sem_Katrin_Bilstrup.pdf

   http://www.krnet.or.kr/board/data/dprogram/1832/J2-2.pdf
   http://en.wikipedia.org/wiki/Dedicated_short-range_communications
   http://brainwave.tistory.com/328
   http://www.its.dot.gov/DSRC/
   http://www.its.dot.gov/factsheets/dsrc_factsheet.htm

   http://www.mogi.bme.hu/TAMOP/jarmurendszerek_iranyitasa_angol/math-ch08.html
   http://www.its.dot.gov/DSRC/dsrc_faq.htm
   http://library.kaist.ac.kr/thesis02/2008/2008M020063668_S1Ver2.pdf

   http://csi.dgist.ac.kr/uploads/Seminar/1409_DSRC_SSH.pdf
   http://www.ieee-vnc.org/2011/talks/panel.pdf


2. 802.11 기본이해 WLAN 표준 

즉, WIFI 와 DSRC의 기본 차이를 알아야함 


2.1 802.11 a와 p 구성

   http://en.wikipedia.org/wiki/IEEE_802.11
   http://en.wikipedia.org/wiki/IEEE_802.11a-1999
   http://en.wikipedia.org/wiki/IEEE_802.11p


2.2 변조이해 

대충알면됨 
   http://www.ktword.co.kr/abbr_view.php?m_temp1=396
    http://ko.wikipedia.org/wiki/%EC%A7%81%EA%B5%90_%EC%A3%BC%ED%8C%8C%EC%88%98_%EB%B6%84%ED%95%A0_%EB%8B%A4%EC%A4%91_%EB%B0%A9%EC%8B%9D


2.3 WIFI와 DSRC의 차이

   http://www.rohde-schwarz.cz/file_12631/1MA152_2e.pdf


3. OSI 와 WAVE 모델 

3.1 WAVE (Wireless Access for Vehicular Environments)

3.2 OSI와 WAVE 차이

3.3 WAVE의 구성

   http://en.wikipedia.org/wiki/OSI_model
   http://en.wikipedia.org/wiki/IEEE_802.11p
   ftp://ftp.cs.ntust.edu.tw/yhl/mobile12/vanet/5c-DSRC.pdf
   http://etexas.harmonia.com/blog/?p=69
   http://www.2cm.com.tw/technologyshow_content.asp?sn=1203220008
   http://www.hindawi.com/journals/ijvt/2010/797405/
   http://www.kazirahman.com/
   http://groups.engin.umd.umich.edu/vi/w5_workshops/guo_DSRC.pdf
   http://cseric.or.kr/new_Cseric/yungoostep/content.asp?idx=821

4. V2V와 V2I 와 DSRC의 관계

V2V와 V2I 의 기능 설명 

   http://en.wikipedia.org/wiki/Vehicle-to-vehicle
   http://en.wikipedia.org/wiki/Vehicular_communication_systems
   http://www.its.dot.gov/research/v2v.htm
   http://www.its.dot.gov/research/v2i.htm
   http://www.hindawi.com/journals/ijvt/2010/797405/

V2V, V2I, V2P I2V, C2I, I2C 

  1. V2I : Vehicle to Infrastructure
  2. I2V : Infrastructure to Vehicle
  3. V2V : Vehicle to Vehicle
  4. C2V : Center to Vehicle 
  5. I2C : Infrastructure to Center 
  6. C2I : Center to Infrastructure
  7. C2C : Center to Center



5. ITS 관련문서 

ITS: Intelligent Transportation Systems


5.1 적용사례비교 

   http://www.its.go.kr/opInfo/cits.jsp
   http://www.iteris.com/itsarch/html/standard/dsrc5ghz.htm
   http://www.its.go.kr/upload/1.%20C-ITS%20%EA%B5%AD%EB%82%B4%EB%8F%84%EC%9E%85%20%EC%84%9C%EB%B9%84%EC%8A%A4(%EC%95%88).pdf

6. CAR 내부 구현


6.1  NXP 와 Cohda Wireless

제품군 비교 및 정리 
MK3 MK4

   http://www.nxp.com/campaigns/connected-mobility/pdf/whitepaper_mk3_v05.pdf
   http://www.kr.nxp.com/news/press-releases/2013/07/nxp-and-cohda-unveil-new-v2x-device-for-connected-vehicles.html

   http://cohdawireless.com/Products/Hardware.aspx

   http://cohdawireless.com/Portals/0/PDFs/CohdaWirelessMKXSDK.pdf


Car to Car,
Car to Infrastructure,
Car to Portable


I. DSRC(Dedicated Short Range Communication)

간단히 요약정리 

A. DSRC 개요

- DSRC란 노변기지국(RSE:Road Side Equipment)과 차량탑재단말(OBE:OnBoard Equipment)이 근거리 무선통신을 통해 각종 정보를 주고 받는 시스템으로서,ITS의 핵심기술
- System 방식으로는 수동형/능동형 DSRC 등이 있음

B. DSRC 특징

- 노변-차량간 양방향 근거리 통신(Coverage 100m 이하)
- 일 대 다수의 통신기능
- LOS(Line of Sight)를 유지할 수 있는 통신환경
- 고속전송(~1Mbps) 기능

C. DSRC의 기본적인 요구사항

- 광범위한 응용서비스: 국내 14개 서비스 선정
- 고속 패킷 데이터 전송
- 차량단말기의 소형화및 저렴화

II.수동방식 DSRC, 능동방식 DSRC


A. 수동방식 DSRC

- 차량 단말기와 노변기지국간 여러개의 차량단말기와 다원접속 지원
- 단말기를 간단하게 구현하기 위해 단말기내 주파수 발진기를 내장하지
    않고 기지국에서 연속적으로 반송파를 송신함으로써 단말기가 수신된
    연속파를 내부 주파수 발진기 신호로 사용하는 방식으로 재발신
    (Backscattering) 방식


B. 능동방식 DSRC

  - 한대의 노변기지국이 여러 대의 차량 단말기와 다원접속 지원
  - 주파수 재 사용을 위한 노변기지국간 거리가 최소 60m 이상으로 수동방식에 비해 cell 크기가 큼

III. DSRC의 고려사항

  - 정통부와 도로공사는 ETCS를 포함한 ITS용 통신 인프라로 능동형 DSRC와 능동형 IR 기술을 병행 사용하기로 함
  - 능동형 ITS시장이 확산되기 위해서는 앞으로 단말기 보급 등 실질적인
    상용화 방안이 관건이 될 것


** 문서가 아직 미정리 되었으며, 추후 시간이 있을 경우, 더 정리진행 

5/17/2015

Kernel 설정 및 기본구성

1. Kernel의 make 사용법

아래와 같이 각각의 Kernel 압축을 풀거나, Kernel source에 가면 된다.
우선 본인의 Makefile은 보자

$ make help

// kernel Make 명령어를 확인 가능하다 , 
// 요즘은 이것으로 확인하고 하는 것 이 맞는 것 같다.
 
요즘 커널이 version 3.x 넘어 4.x  사용한다고 하지만, 이전의 Make 명령어들도
아직 잘 동작한다.

다만 ARM에서 사용할 경우 make에 아래와 같은 argument들을 넣어주자.

빌드를 하게 된다면, 아래와 같이 두개를 다 설정

$ make zImage ARCH=arm  CROSS_COMPILE=arm_xxx_gcc 


Kernel 관련 설정 한다면 ARCH만 설정

$ make menuconfig ARCH=arm  


1.1  Kernel Config 설정 

ARM을 사용하면 Linux에서 Config들은 는 아래의 위치에 존재하지만 설정은 되어 있지 않다.

$ ls /arch/arm/configs
acs5k_defconfig           collie_defconfig       imote2_defconfig      magician_defconfig   nuc950_defconfig        realview_defconfig   tct_hammer_defconfig
acs5k_tiny_defconfig      corgi_defconfig        imx_v4_v5_defconfig   mainstone_defconfig  nuc960_defconfig        rpc_defconfig        tegra_defconfig
am200epdkit_defconfig     davinci_all_defconfig  imx_v6_v7_defconfig   mini2440_defconfig   omap1_defconfig         s3c2410_defconfig    tisdk_am335x-evm_defconfig
assabet_defconfig         dove_defconfig         integrator_defconfig  mmp2_defconfig       omap2plus_defconfig     s3c6400_defconfig    trizeps4_defconfig
at91_dt_defconfig         ebsa110_defconfig      iop13xx_defconfig     moxart_defconfig     orion5x_defconfig       s5pv210_defconfig    u300_defconfig
axm55xx_defconfig         efm32_defconfig        iop32x_defconfig      multi_v5_defconfig   palmz72_defconfig       sama5_defconfig      u8500_defconfig
badge4_defconfig          em_x270_defconfig      iop33x_defconfig      multi_v7_defconfig   pcm027_defconfig        shannon_defconfig    versatile_defconfig
bcm2835_defconfig         ep93xx_defconfig       ixp4xx_defconfig      mv78xx0_defconfig    pleb_defconfig          shmobile_defconfig   vexpress_defconfig
bcm_defconfig             eseries_pxa_defconfig  jornada720_defconfig  mvebu_v5_defconfig   prima2_defconfig        simpad_defconfig     vf610m4_defconfig
.....

이제 선택하여, 본인의 Kernel Config 를 설정하자 (둘 중 하나로)

$ make davinci_all_defconfig  ARCH=arm       // .config 생성   /arch/arm/configs/  찾아 설정 ,  "make ${PLATFORM}_defconfig"    

$ make defconfig  ARCH=arm PLATFORM=davinci  // .config 생성  /arch/arm/defconfig or /arch/arm/configs/ 에서 찾아 설정   

상위에서 설정된 Kernel Config들을 변경해보자. ( .config 설정 변경)

$ make menuconfig  ARCH=arm 

$ make xconfig  ARCH=arm // X window Qt 

$ make gconfig  ARCH=arm  // X window GTK 

이제 기반이 되는 Kernel config 는 Kernel Main source의  .config 이며,
아래와 같이 동시에 파일이 존재할 것이다.

아래의 실제 .config의 설정들이 존재한다.

 ./include/linux/autoconf.h  

// 이 파일은 상위 .config가 각각 설정이 y로 저장이 되어있다면, #define으로 변경한 것으로 생각하면된다. 
// Kernel version에 따라 위치가 변경될 수 있으니 주의 아래 주소 참고 

./include/config/auto.conf
./include/generated/autoconf.h
 

  https://wiki.gentoo.org/wiki/Kernel/Configuration
  https://stackoverflow.com/questions/41885015/what-exactly-does-linux-kernels-make-defconfig-do

1.2 make를 이용한 Kernel Image/Module 생성

아래의 명령어로 Linux Kernel을 생성이 가능하다.

$ make vmlinux //ELF 파일인 Linux Kernel vmlinux 생성 

$ make zImage  or bzImage ARCH=arm CROSS_COMPILE=arm_xxx_gcc

$ make moudles  ARCH=arm CROSS_COMPILE=arm_xxx_gcc

$ make modules_install  ARCH=arm INSTALL_MOD_PATH=/home/... 


상위와 같이 하면 Kernel의 이미지가 생성이 될 것이며, 다만 넣어야만 제대로 동작할 것이다.

vmlinux :

ELF format의 Linux Kernel Image로 실행이 가능한 가장 기본이 되는 파일
항상 중요한 것이 System.map 이며, 이를 확인해서 봐야한다.

zImage or bzImage:

vmlinux를 strip하고  arch/arm/boot/compressed/ 압축을 푸는 head.x 파일을 넣고,
이 파일을 압축한다.

uImage:

uboot에서 booting 하기위해서 사용하는 Image이며, zImage 기반으로 64byte 헤더를 넣고,
mkimage tool을 이용하여 각 Image의 정보를 넣어준다.

  https://linux.die.net/man/1/mkimage


1.3 make를 이용한 Kernel Image 제거 

아래와 같이 보면 가장 많이 사용하는 것이 make clean 일 것이다.
config 까지 지우고 싶다면, mrproper를 사용하자.
distclean은 더불어 editor에서 생긴 backup swp 파일 및 patch 모두를 다 지운다.

$ make mrproper    //  Remove all generated files + config + various backup files

$ make distclean   //  mrproper + remove editor backup and patch files'

$ make clean       //  Remove most generated files but keep the config and enough build support to build external modules



2. Kernel의 기본 구성 

만약 driver를 만들게 된다면, Kernel의 기본구성 부터 알아야 할 것이다.

Kconfig   ( menuconfig 할때 화면 설정)
Makefile  ( 빌드 내용)


  • Kconfig
menuconfig 할때 구성되는 화면이며, 기본구성은 앞에 .config에서 CONFIG_ 제거한 내용과 동일하다.
그리고, 각각의 설정에는 의미가 있다.

depends on : 이 모듈을 실행하려면 필요한 다른 설정
defalut    : 기본 설정
tristate   : 3개의 모두가 설정 가능  모듈/설정/비설정
bool       : 모듈을 제거하고, 설정/비설정


$ vi drivers/usb/Kconfig
....
config USB_EHCI_BIG_ENDIAN_MMIO
        bool

config USB_EHCI_BIG_ENDIAN_DESC
        bool

menuconfig USB_SUPPORT
        bool "USB support"
        depends on HAS_IOMEM
        default y
        ---help---
          This option adds core support for Universal Serial Bus (USB).
        bool

....

if USB

source "drivers/usb/core/Kconfig"

source "drivers/usb/mon/Kconfig"

source "drivers/usb/wusbcore/Kconfig"

source "drivers/usb/host/Kconfig"

source "drivers/usb/renesas_usbhs/Kconfig"

source "drivers/usb/class/Kconfig"

source "drivers/usb/storage/Kconfig"

source "drivers/usb/image/Kconfig"

source "drivers/usb/usbip/Kconfig"

endif


  • Makefile 
아래와 같이 directory 및 파일을 쉽게 빌드 가능하다.

$ vi drivers/usb/Makefile
obj-$(CONFIG_USB)               += core/
obj-$(CONFIG_USB_SUPPORT)       += phy/

obj-$(CONFIG_USB_DWC3)          += dwc3/
obj-$(CONFIG_USB_DWC2)          += dwc2/
obj-$(CONFIG_USB_ISP1760)       += isp1760/

obj-$(CONFIG_USB_MON)           += mon/
.....


  • Kbuild
주로 강제로 Makefile을 설정하는 곳으로 Kconfig가 없는 곳에 존재한다.
상위 Makefile 처럼 일정한 규칙을 가지고 있으므로, 이에 맞게 수정해야한다.

Header와 Source 부분을 같이 보자.

$ vi ./include/uapi/linux/Kbuild
header-y += android/
header-y += byteorder/
header-y += can/
header-y += caif/
header-y += dvb/
header-y += hdlc/
header-y += hsi/
header-y += iio/
header-y += isdn/
header-y += mmc/
header-y += nfsd/
header-y += raid/
header-y += spi/
header-y += sunrpc/
header-y += tc_act/
header-y += tc_ematch/
header-y += netfilter/
header-y += netfilter_arp/
header-y += netfilter_bridge/
header-y += netfilter_ipv4/
header-y += netfilter_ipv6/
header-y += usb/
.....
$ vi ./drivers/gpu/drm/nouveau/nvkm/subdev/i2c/Kbuild
nvkm-y += nvkm/subdev/i2c/base.o
nvkm-y += nvkm/subdev/i2c/nv04.o
nvkm-y += nvkm/subdev/i2c/nv4e.o
nvkm-y += nvkm/subdev/i2c/nv50.o
nvkm-y += nvkm/subdev/i2c/g94.o
nvkm-y += nvkm/subdev/i2c/gf117.o
nvkm-y += nvkm/subdev/i2c/gf119.o
nvkm-y += nvkm/subdev/i2c/gk104.o
nvkm-y += nvkm/subdev/i2c/gm204.o

nvkm-y += nvkm/subdev/i2c/pad.o
nvkm-y += nvkm/subdev/i2c/padnv04.o
nvkm-y += nvkm/subdev/i2c/padnv4e.o
nvkm-y += nvkm/subdev/i2c/padnv50.o
nvkm-y += nvkm/subdev/i2c/padg94.o
nvkm-y += nvkm/subdev/i2c/padgf119.o
nvkm-y += nvkm/subdev/i2c/padgm204.o

3. UBOOT와 KERNEL Parameter 

상위에 Config를 했지만, 막상 설정을 변경해야하거나, Driver는 존재하지만, 추가적으로 더사용해야 할 경우
Kernel Parameter를 이용하여 쉽게 추가하여 설정 및 Driver를 변경할 수 있다.

대표적으로 많이 사용되는 것이 Filesystem 설정변경 (NFS 설정) ,  I2C , HDMI  ,alsa
아래의 사이트에서 확인을 해보고 본인의 Kernel에서 확인을 해보자


  https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html