* 스케쥴

 

 

* LiDAR & 미세먼지 센서 동영상

 

 

* 사례 공유 : LiDAR 센서

- 발표자 : 타이젠 스페셜리스트 방진석 연구원

- RPI3 Model B+ 보드 기반

- LiDAR 센서 발표자료

tizen 교육-gcamp-lidar.pdf
2.23MB

 

- LiDAR 센서 소스코드

LiDAR_Distance_I2C.zip
0.15MB

- LiDAR 센서 핀맵

발표자료 중

 

 

- LiDAR 읽고 쓰기 위한 비트 전달

발표자료 중

 

 

 

- OLED 핀맵

발표자료 중

 

 

- OLED 주소

발표자료 중

 

 

- OLED 비트 단위 전달

발표자료 중

 

 

- OLED Page당 8비트

발표자료 중

 

 

 

* 사례공유 : 미세먼지 센서

- 발표자 : 타이젠 스페셜리스트 방진석 연구원

- SDTA7D 보드 기반

- 미세먼지 센서 발표자료

tizen sdta7d uart 예제.pdf
0.69MB

 

- 미세먼지 센서 소스코드

DUST_UART.zip
0.21MB

 

- UART RX 테스트 프로그램 : 시리얼 포트, TCP/IP, UDP/IP 터미널 프로그램 (시리얼 통신 프로그램)

 

- SDTA7D와 먼지센서를 연결하기

발표자료 중

 

 

- UART 핸들 열기

발표자료 중

 

- 먼지센서 출력 데이터

발표자료 중

 

 

* 사례 공유 : 서보모터 

- 동영상

여기

 

- 발표자 : 다인시스 안효복 대표

- SDTA7D 보드 기반

- 참고자료

DSA5101_Tizen_DeviceDriver-r10.zip
8.37MB

 

 

- 블루투스 아키텍처

발표자료 중

 

 

- 와이파이 아키텍처

발표자료 중

 

 

- 문자 디바이스 드라이버 등록 함수 예시

발표자료 중

 

 

- I2C Peripheral Bus

발표자료 중

 

 

- PWM

발표자료 중

 

 

- Servo Motor 연결하기

발표자료 중

 

 

 

 

* 공지사항 & 스케쥴 & 타이젠스튜디오 피드백  동영상

 

 

* 공지사항

- 타이젠 스페셜리스트 선정 : https://developer.tizen.org/blog/tizen-specialist-program

 

- 후보 저장소 : RCC

  git clone ssh://[YOUR_ID]@review.tizen.org:29418/apps/native/rcc

 

 

* 스케쥴

- 타이젠 스튜디오 설치&실행 문제 점검 : 타이젠 스튜디오팀 최종우 연구원, 유지호 연구원

- 타이젠 앱 메인루프 강의 : 타이젠팀 박춘언 연구원

- GPIO 이론 & 실습 : 타이젠팀 손보연 연구원

- I2C 이론 & 실습 : 타이젠팀 윤진 연구원

- SPI 이론 & 실습 : 타이젠팀 박정훈 연구원

 

 

* 타이젠 스튜디오 설치&실행 문제 점검

- 지난 시간에 발견된 문제들

  1) 타이젠 스튜디오 설치 후 '시작' 메뉴에 아이콘이 추가되지 않는 문제

  2) 타이젠 스튜디오 대신 이클립스를 실행해야 하는 문제

  3) 신규 인증서(개발자&배포자)를 생성할 수 없는 문제

  4) 앱 설치시 개발자/배포자 인증서의 비밀번호를 요구하는 문제

      {tizen_studio_path}\tools\certificate-encryptor\wincrypt 존재 여부 확인 필요

  5) 타이젠 스튜디오에 라즈베리파이의 로그가 나오지 않는 문제

 

타이젠 스튜디오 설치 중 문제점 발견시

  C:\Users\{user}\AppData\Local\.package-manager\install-log

  위의 위치에서 로그를 추출해주세요.

 

타이젠 스튜디오에서 인증서 생성 중 문제점 발견시

  C:\Users\{user}\SamsungCertificate

 위의 위치에 저장된 정보를 추출해주세요.

 

타이젠 스튜디오 사용 중 문제점 발견시

  {tizen-studio-data}\{tool}\logs\

  위의 위치에서 로그를 추출해주세요.

 

 

* 타이젠 메인루프 강의

- 동영상

 

- 발표자료

Tizen Main-Loop 이해.pdf
0.44MB

 

- 메인루프 진행 추상화 : 이벤트 대기 -> 이벤트 처리 -> UI 객체 업데이트 -> 화면 갱신

- Event-Driven

- Tizen App Life-Cycle & Main-Loop

발표자료 중

- Ecore Main Loop

발표자료 중

- Ecore Job

발표자료 중

- Ecore Thread

발표자료 중

 

- Ecore FD Handler

 

 

* GPIO & I2C & SPI 동영상

 

 

GPIO 이론 & 실습 

- 참고자료 : http://tizenschool.org/tutorial/154

- Motion Sensor Trigger Mode

발표자료 중

 

 

 

 

I2C 이론 & 실습 

- 참고자료 : http://tizenschool.org/tutorial/153

- I2C 인터페이스 다이어그램

발표자료 중

- 데이터 쓰기

발표자료 중

 

- 데이터 읽기

발표자료 중

 

 

* SPI 이론 & 실습 

- 참고자료 : http://tizenschool.org/tutorial/152

- 아날로그-디지털 변환 : 수학적 적분

발표자료 중

 

- SPI 인터페이스 다이어그램

발표자료 중

 

- Master <-> Slave 데이터 교환

발표자료 중

 

- MCP3008 비트 단위 교환

 

 

* 워크숍 2일차 전체 동영상 : 4시간 분량

 

- Arm M시리즈

  마이컴 == 마이크로 컨트롤러 == MCU(Micro Controller Unit)

  마이컴 = 마이크로 프로세서 + 입출력 제어 모듈 + 램 + 저장장치

  메모리 : MMU나 MPU 없이 직접 접근

  OS : FreeRTOS가 올라가는 수준

  보드 : 아두이노 혹은 오렌지보드

 

- Arm R시리즈 

  메모리 : 100~200MB 램, MPU(Memory Protection Unit)로 CPU에 내장된 메모리를 관리.

    (메모리를 파티셔닝하여 구획별로 관리하지만, 가상 메모리가 없기에 프로그램에서 직접 물리주소 관리.)

  OS : Real Time OS

  

- Arm A시리즈

  AP : Application Processor

  메모리 : MMU(Memory Management Unit)로 MPU의 모든 기능 + Virtual Memory

    1) Memory fragmentation 활용 가능

    2) 메모리 최대 크기보다 큰 앱 로딩 가능

    (참고 : https://jhkim3624.tistory.com/m/75)

 

- 퓨징 :  eMMC와 같은 플래시 메모리에 0 혹은 1을 새기는 행위.

  (참고 : https://kldp.org/node/101280)

 

- Boot  Mode Selection : Serial로 부팅하거나 외부 메모리로 부팅 가능

 

- J7 Peripheral : 타이젠에 맞게 포팅된 핀

 

- NXP : SDTA7D에서 사용하는 칩인 i.MX7의 메이커

  (참고 : https://www.nxp.com/)

 

- Nexell : Anchor 시리즈에서 사용하는 칩인 NXP3225의 메이커 

  (참고 : http://www.nexell.co.kr/)  

 

- USB Type C : 전원, USB SDB 디버그, USB Mass Storage

 

- USB OTG : Console. 115200, 8 Bits, No parity

 

- Linux GPIO Number = (GPIO_BANK - 1) * 32 + GPIO_BIT

 

- U Boot : Universal Boot. 

  CPU, Memory, Peripherals, Console 등 하드웨어 장치를 초기화하기 위한 임베디드용 부트로더(BIOS와 유사)

  OS가 부팅된 이후에는 더 이상 사용되지 않는다

 

- imx_usb_loader : USB Serial을 통해 부트로드를 보드의 SRAM으로 다운로드해주는 도구

 

- SPL : i.MX7을 위한 가장 기본적인 초기화 작업용

 

- 부팅 중에 램디스크를 사용하는 이유? https://developer.ibm.com/articles/l-initrd/

사이트 캡처

 

- DFU(Device Firmware Upgrade Utilities) : http://dfu-util.sourceforge.net/

 

- lsblk : lists information about all or the specified block devices.

  The lsblk command reads the sysfs filesystem to gather information. 

  (참고 : http://manpages.ubuntu.com/manpages/trusty/man8/lsblk.8.html)

 

- extlinux : EXTLINUX is a Syslinux variant which boots from a Linux filesystem.

  (참고 : https://wiki.syslinux.org/wiki/index.php?title=EXTLINUX)

 

- Trap : https://stackoverflow.com/questions/3149175/what-is-the-difference-between-trap-and-interrupt

 

발표자료 중
발표자료 중

 

- 플랫폼 디바이스는 언제 쓰이는지? 디바이스 트리 & 디바이스 드라이버와 함께 엮어 설명해주세요.

 

 

* 일정

 

* SDTA7D 보드 소개

- 발표자 : 시그마델타 테그놀로지 윤지원 대표

  (공식 사이트 : https://www.sigma-delta.tech)

- 발표자료 : 용량이 커서 두 개의 파일로 분할압축하였습니다.

[SDT] Seoul Hardware Hackathon.vol1.egg
10.00MB
[SDT] Seoul Hardware Hackathon.vol2.egg
9.15MB

 

발표자료 중

 

- 보드 이름 : SDTA7D(Sigma Delta Technologies Arm Coretex-A7 Dual)

- 보드 구매처 : http://www.devicemart.co.kr/goods/view?no=12220510

- 보드 외형

- 보드 사양

  ① CPU - i.MX7D

      High-performance Arm® Cortex®-A7 dual core

      Real-time processing Arm® Cortex®-M4 sub core (Free RTOS용)

  ② Memory

      512MB DDR3L (1600Mbps)

      8GB eMMC (5.0) flash memory

  ③ Low Power Consumption PMIC - PF3000

      1V35, 1V5, 1V8, 3V3 output

      Coin cell charger : RTC를 위한 코인 배터리를 충전하기 위한 목적으로 사용

      OTP memory : One Time Programmable Memory로 Ethernet의 MAC Addr.를 저장하기 위한 목적으로 사용

  ④ Secure Element (SE)

      For Key & Certification

      Includes every Secure Information

  ⑤ OS Support

      Arm Mbed Linux OS

      Tizen Platform 

  ⑥ Serial Peripherals

      UART, SPI, I2C, PWM, ADC, GPIO

      Dual CAN

      RGMII for 1Gbps Ethernet

      USB Host, USB OTG

      PCIe, SD I/O

      MIPI CSI for camera

      MIPI DSI for display

 

- 보드 외형

  USB Host & USB OTG 차이 : https://www.quora.com/What-is-the-difference-between-USB-host-VS-USB-OTG

 

- 보드 핀맵 : 확대해서 보세요.

  상단과 중단에 CSPI3_SLCK / CSPI3_MOSI / CSPI3_MISO 핀이 두 개씩 존재 : Mikroe 보드(https://www.mikroe.com/weather-click)를 지원하려는 목적

 

- 핀 번호 :   Tizen Port Map에 명시된 숫자를 사용하면 됩니다.

 

 

 

* 타이젠 드라이버 포팅하기

- 강의 : 다인시스 안효복 대표

- 강의자료

DSA5101_Tizen_DeviceDriver.pdf
9.27MB

 

 

* SDTA7D 보드에 타이젠 이미지를 플래싱하기

- 참고자료 : 

User Guide - Tizen on SDTA7D.pdf
0.43MB

 

- [이미 만들어진 이미지 사용하기] SDTA7D용 이미지 파일용 저장소 : 여기

  부트 이미지 : 다운로드

  플랫폼 이미지 : 다운로드

 

SigmaDeltaTechnologiesInc/sdta7d-images

Tizen sdta7d image repository. Contribute to SigmaDeltaTechnologiesInc/sdta7d-images development by creating an account on GitHub.

github.com

 

 

- [이미지 직접 만들기] 주요 소스 : github에서 클론하기

  U Boot : https://github.com/SigmaDeltaTechnologiesInc/u-boot.git

  Kernel : https://github.com/SigmaDeltaTechnologiesInc/linux-stable.git

  Building Block : https://github.com/SigmaDeltaTechnologiesInc/building-blocks.git

  Peripheral Bus : https://github.com/SigmaDeltaTechnologiesInc/peripheral-bus.git

  Peripheral I/O : https://github.com/SigmaDeltaTechnologiesInc/peripheral-io.git

  Systemd : https://github.com/SigmaDeltaTechnologiesInc/systemd.git

  SmartThings Plugin : https://github.com/SigmaDeltaTechnologiesInc/smartthing-plugin.git

  WiFi : https://github.com/SigmaDeltaTechnologiesInc/wlandrv-plugin-tizen-ap6335.git

  Bluetooth : https://github.com/SigmaDeltaTechnologiesInc/bluetooth-firmware-bcm.git

 

- [이미지 직접 만들기] gbs 빌드를 위한 설정 파일 : .gbsSdta7d.conf

GBS빌드.zip
0.00MB

 

- [이미지 직접 만들기] gbs로 위의 소스들을 빌드하기

$ sudo gbs -c ~/.gbsSdta7d.conf build -A armv7l --include-all

 

- [이미지 직접 만들기] 킥스타터 다운로드 : 타이젠 이미지 생성 과정에서 운영체제가 필요로 하는 질문을 자동으로 응답하게 해주는 파일

  tizen-unified_iot-boot-armv7l-sdta7d.ks : [다운로드]

...더보기

# -*-mic2-options-*- -A armv7l -f loop --pack-to=@NAME@.tar.gz -*-mic2-options-*- 

 
# Do not Edit! Generated by: 
kickstarter.py 
 

lang en_US.UTF-8 
keyboard us 
timezone --utc America/Los_Angeles 
part /lib/modules --fstype="ext4" --size=50 --ondisk=mmcblk0 --active --label modules --fsoptions=defaults,noatime 


rootpw tizen  
xconfig --startxonboot 
bootloader  --timeout=3  --append="rw vga=current splash rootwait rootfstype=ext4"   --ptable=gpt --menus="install:Wipe and Install:systemd.unit=system-installer.service:test" 

desktop --autologinuser=guest   
user --name guest  --groups audio,video --password 'tizen' 

repo --name=local --baseurl=file:///home/segaon/GBS-ARTIK-ROOT/tizen_artik5/local/repos/tizen_artik5/armv7l/ --priority=1 

repo --name=unified-standard --baseurl=http://download.tizen.org/releases/milestone/tizen/unified/tizen-unified_20181024.1/repos/standard/packages/ --ssl_verify=no 

%packages 

# @ IoT Boot sdta7d 
sdta7d-linux-kernel 
sdta7d-linux-kernel-modules 
u-boot-sdta7d 
# Others 




%end 


%attachment 
/boot/u-boot/SPL 
/boot/u-boot/u-boot.img 
/boot/zImage 
/boot/sdta7d.dtb 
%end 

%post 

%end 

%post --nochroot 

%end 

%runscript 

%end

 

  tizen-unified_iot-headless-2parts-armv7l-sdta7d.ks : [다운로드]

...더보기

# -*-mic2-options-*- -A armv7l -f loop --pack-to=@NAME@.tar.gz -*-mic2-options-*- 

 
# Do not Edit! Generated by: 
kickstarter.py 
 

lang C 
keyboard us 
timezone --utc America/Los_Angeles 
part / --size=1000 --ondisk mmcblk0p --fstype=ext4 --label=rootfs --extoptions="-J size=16" 
part /opt/ --size=512 --ondisk mmcblk0p --fstype=ext4 --label=system-data --extoptions="-m 0" 
part /mnt/initrd --size=7 --ondisk mmcblk0p --fstype=ext4 --label=ramdisk --extoptions="-b 1024" 
part /mnt/initrd-recovery --size=12 --ondisk mmcblk0p --fstype=ext4 --label=ramdisk-recovery --extoptions="-b 1024 -O ^has_journal" 


rootpw tizen  
xconfig --startxonboot 
bootloader  --timeout=3  --append="rw vga=current splash rootwait rootfstype=ext4"   --ptable=gpt --menus="install:Wipe and Install:systemd.unit=system-installer.service:test" 

desktop --autologinuser=guest   
user --name guest  --groups audio,video --password 'tizen' 


repo --name=local --baseurl=file:///home/segaon/GBS-ARTIK-ROOT/tizen_artik5/local/repos/tizen_artik5/armv7l/ --priority=1 

repo --name=unified-standard --baseurl=http://download.tizen.org/releases/milestone/tizen/unified/tizen-unified_20181024.1/repos/standard/packages/ --ssl_verify=no 
repo --name=base-standard --baseurl=http://download.tizen.org/releases/milestone/tizen/base/tizen-base_20180928.1/repos/standard/packages/ --ssl_verify=no 

%packages 

# @ IoT Headless Base 
building-blocks-root-Preset_iot_core 
building-blocks-sub1-domain_Feature-Recovery 
building-blocks-sub1-domain_Feature-Smartthings_App 
dbus-tools 
system-plugin-feature-namespace 
system-plugin-feature-session-bind 
# @ IoT Adaptation Sdta7d Headless 
building-blocks-sub1-Preset_boards-SDTA7D 
building-blocks-sub1-Preset_partition-2parts_ramdisk 
building-blocks-sub1-domain_Feature-Resource_manager_Headless 
building-blocks-sub1-domain_Feature-Upgrade 
building-blocks-sub2-Preset_boards-SDTA7D-Audio 
building-blocks-sub2-Preset_boards-SDTA7D-BLE 
building-blocks-sub2-Preset_boards-SDTA7D-Bluetooth 
#building-blocks-sub2-Preset_boards-SDTA7D-Display_Headless 
building-blocks-sub2-Preset_boards-SDTA7D-Wifi 
building-blocks-sub2-domain_API-AppFramework-TPK_Installation 
building-blocks-sub2-domain_API-Base-Utils 
building-blocks-sub2-domain_API-Multimedia-Player 
building-blocks-sub2-domain_API-Network-Bluetooth_Media_Audio 
building-blocks-sub2-domain_API-Network-Curl 
capi-network-wifi-manager-tool 
system-plugin-config-env-headless 
# Others 
wlandrv-plugin-tizen-ap6335 
smartthing-plugin 

%end 



%post 
#!/bin/sh 
echo "#################### generic-adaptation.post ####################" 

# fix TIVI-2291 
sed -ri "s/(^blacklist i8042.*$)/#fix from base-general.post \1/" /etc/modprobe.d/blacklist.conf 


#!/bin/sh 
echo "#################### generic-base.post ####################" 

test ! -e /opt/var && mkdir -p /opt/var 
test -d /var && cp -arf /var/* /opt/var/ 
rm -rf /var 
ln -snf opt/var /var 

test ! -e /opt/usr/home && mkdir -p /opt/usr/home 
test -d /home && cp -arf /home/* /opt/usr/home/ 
rm -rf /home 
ln -snf opt/usr/home /home 

build_ts=$(date -u +%s) 
build_date=$(date -u --date @$build_ts +%Y%m%d_%H%M%S) 
build_time=$(date -u --date @$build_ts +%H:%M:%S) 

sed -ri \ 
-e 's|@BUILD_ID[@]|tizen-unified_20181024.1|g' \ 
-e "s|@BUILD_DATE[@]|$build_date|g" \ 
-e "s|@BUILD_TIME[@]|$build_time|g" \ 
-e "s|@BUILD_TS[@]|$build_ts|g" \ 
/etc/tizen-build.conf 

# setup systemd default target for user session 
cat <<'EOF' >>/usr/lib/systemd/user/default.target 
[Unit] 
Description=User session default target 
EOF 
mkdir -p /usr/lib/systemd/user/default.target.wants 

# sdx: fix smack labels on /var/log 
chsmack -a '*' /var/log 

# create appfw dirs inside homes 
function generic_base_user_exists() { 
user=$1 
getent passwd | grep -q ^${user}: 
} 

function generic_base_user_home() { 
user=$1 
getent passwd | grep ^${user}: | cut -f6 -d':' 
} 

function generic_base_fix_user_homedir() { 
user=$1 
generic_base_user_exists $user || return 1 

homedir=$(generic_base_user_home $user) 
mkdir -p $homedir/apps_rw 
for appdir in desktop manifest dbspace; do 
mkdir -p $homedir/.applications/$appdir 
done 
find $homedir -type d -exec chsmack -a User {} \; 
chown -R $user:users $homedir 
return 0 
} 

# fix TC-320 for SDK 
. /etc/tizen-build.conf 
[ "${TZ_BUILD_WITH_EMULATOR}" == "1" ] && generic_base_fix_user_homedir developer 

# Add info.ini for system-info CAPI (TC-2047) 
/etc/make_info_file.sh 

#!/bin/sh 
echo "#################### generic-users.post ####################" 

if ! generic_base_user_exists owner; then 
        # By default GUM will create users in /opt/etc/passwd, which is 
        # additional users database suitable for end-user created accounts. 
        # However, the 'owner' user is shipped by Tizen system itself and 
        # it's its default user.  Consequently, it should always be available 
        # and thus, it should be added to /etc/passwd. 
        conf=/etc/gumd/gumd.conf 
        origf=${conf}.orig 
        mv -v $conf $origf 
        sed -e 's,^\(PASSWD_FILE\).*,\1=/etc/passwd,' -e 's,^\(SHADOW_FILE\).*,\1=/etc/shadow,' <$origf >$conf 
        gum-utils --offline --add-user --username=owner --usertype=admin --usecret=tizen 
        mv -v $origf $conf 
fi 



#!/bin/sh 

echo "############### iot-headless-base.post ################" 

######### Execute pkg_initdb if there is no pkgmgr-tool pacakge 
rpm -qa | grep pkgmgr-tool 
if [ $? != 0 ] 
then 
pkg_initdb --ro 
fi 


#!/bin/sh 
echo "#################### generic-wayland.post ####################" 


#!/bin/sh 
echo "#################### generic-middleware.post ####################" 


#!/bin/sh 
echo "#################### generic-applications.post ####################" 


#!/bin/sh 
echo "#################### generic-bluetooth.post ####################" 


#!/bin/sh 
echo "#################### generic-multimedia.post ####################" 


#!/bin/sh 
echo "#################### generic-desktop-applications.post ####################" 

# depends on generic-base functions 
function generic_desktop_applications_fix_userhome() { 
user=$1 

generic_base_user_exists $user || return 1 
homedir=$(generic_base_user_home $user) 

echo "Fix app_info.db of $user" 
chown -R $user:users $homedir/.applications/dbspace/ 
} 

# fix TC-320 for SDK 
. /etc/tizen-build.conf 
# Disable to run below line because this results in always failure, so it can be regarded as useless. 
#[ "${TZ_BUILD_WITH_EMULATOR}" == "1" ] && generic_desktop_applications_fix_userhome developer 


#!/bin/sh 
echo "#################### generic-crosswalk.post ####################" 


#!/bin/sh 
echo "############### common-crosswalk.post ################" 

# start wrt widgets preinstall 
rpm -qa | grep wrt-widget 
if [ $? = 0 ] 
then 
prepare_widgets.sh 
fi 


#!/bin/sh 
echo "############### common-license.post ################" 

LICENSE_DIR=/usr/share/licenses 
LICENSE_FILE=/usr/share/license.html 
MD5_TEMP_FILE=/usr/share/temp_license_md5 

if [[ -f $LICENSE_FILE ]]; then 
rm -f $LICENSE_FILE 
fi 

if [[ -f $MD5_TEMP_FILE ]]; then 
rm -f $MD5_TEMP_FILE 
fi 


cd $LICENSE_DIR 
LICENSE_LIST=`ls */*` 

for INPUT in $LICENSE_LIST; do 
if [[ -f $INPUT ]]; then 
PKG_NAME=`echo $INPUT|cut -d'/' -f1` 
echo `md5sum $INPUT` $PKG_NAME >> $MD5_TEMP_FILE 
fi 
done 

MD5_LIST=`cat $MD5_TEMP_FILE|awk '{print $1}'|sort -u` 

echo "" >> $LICENSE_FILE

 

echo "" >> $LICENSE_FILE 
echo "" >> $LICENSE_FILE 
echo "" >> $LICENSE_FILE

 

echo "" >> $LICENSE_FILE 
echo "" >> $LICENSE_FILE 
echo "" >> $LICENSE_FILE

 

echo "" >> $LICENSE_FILE 

rm -rf $LICENSE_DIR/* $MD5_TEMP_FILE 

#!/bin/sh 
echo "#################### generic-dbus-policychecker.post ####################" 
for f in /etc/dbus-1/system.d/*.conf; do 
echo 
echo "$0: Checking D-Bus policy file: $f" 
dbus-policychecker "$f" 
done 

#!/bin/sh 
echo "#################### generic-security.post ####################" 

if [ -e /usr/share/security-config/set_capability ]; then 
echo 'Give capabilities to daemons via set_capability from security-config package' 
/usr/share/security-config/set_capability 
fi 
if [ -e /opt/share/security-config/test/image_test.sh ]; then 
echo 'Run security-test' 
/opt/share/security-config/test/image_test.sh 
fi  

#!/bin/sh 
echo "############### common-cleanup-directory.post ################" 

# remove manuals, docs and headers 
rm -rf /usr/include 
rm -rf /usr/share/man 
rm -rf /usr/share/doc 


%end 

%post --nochroot 
####################### buildname.nochroot ####################### 
if [ -n "$IMG_NAME" ]; then 
echo "BUILD_ID=$IMG_NAME" >> $INSTALL_ROOT/etc/tizen-release 
echo "BUILD_ID=$IMG_NAME" >> $INSTALL_ROOT/etc/os-release 
echo "$IMG_NAME tizen-unified_20181024.1" >>$INSTALL_ROOT/etc/tizen-snapshot 
fi 

echo "############### backup-data.nochroot ################" 

date +'[%m/%d %H:%M:%S %Z] backup-data.nochroot nochroot post script - start' 

if [ -e $INSTALL_ROOT/usr/bin/build-backup-data.sh ]; then 
    $INSTALL_ROOT/usr/bin/build-backup-data.sh 
fi 

date +'[%m/%d %H:%M:%S %Z] backup-data.nochroot nochroot post script - end' 


%end 

%runscript 

%end

 

- [이미지 직접 만들기] MIC로 이미지를 생성하기

$ sudo mic cr loop tizen-unified_iot-boot-armv7l-sdta7d.ks --pack-to=tizen-unified_iot-boot-armv7lsdta7d.
tar.gz --logfile=mic_build.log -A armv7l
$ sudo mic cr loop tizen-unified_iot-headless-2parts-armv7l-sdta7d.ks --pack-to=tizen-unified_iotheadless-
2parts-armv7l-sdta7d.tar.gz --logfile=mic_build.log -A armv7l

  결과물 : tizen-unified_iot-boot-armv7l-sdta7d.tar.gz, tizen-unified_iot-headless-2parts-armv7l-sdta7d.tar.gz

 

- [SRAM에 부트로더 올리기] imx_usb_loader 준비하기 : SRAM에 i.MX 보드용 이미지 설치툴

$ cd ~/tools
$ git clone https://github.com/boundarydevices/imx_usb_loader
$ cd ~/tools/imx_usb_loader/
$ make

 

- [SRAM에 부트로더 올리기] USB로 부트로더를 로드하기 위해 DAP Station 점퍼를 설정하기

 

- [SRAM에 부트로더 올리기] SDTA7D 보드의 전원을 켜고, USB 상태 확인

$ lsusb | grep Freescale
Bus 00x Device 00y: ID 15a2:0076 Freescale Semiconductor, Inc

 

- [SRAM에 부트로더 올리기] 타이젠 이미지 압축 풀기

$ cd ~/Tizen-sdta7d/mic-output

$ tar zxvf tizen-unified_iot-boot-armv7l-sdta7d.tar.gz
modules.img
u-boot.img
SPL
sdta7d.dtb
zImage

$ tar zxvf tizen-unified_iot-headless-2parts-armv7l-sdta7d.tar.gz
system-data.img
rootfs.img
ramdisk.img
ramdisk-recovery.img

 

- [SRAM에 부트로더 올리기] SDTA7D 보드에 SPL 로드하기

$ sudo ~/tools/imx_usb_loader/imx_usb SPL

 

- [SRAM에 부트로더 올리기] SDTA7D 보드에 U Boot 로드하기

$ sudo ~/tools/imx_usb_loader/imx_usb u-boot.img

 

- [eMMC에 부트로더 올리기] U Boot의 환경변수 초기화하기

(U-Boot)
=> env default -f -a
=> saveenv

 

- [eMMC에 부트로더 올리기] U Boot에서 7개의 파티션을 지정하기

(U-Boot)
=> mmc partconf 0 0 7 0

배포자료 중

 

- [eMMC에 부트로더 올리기] DFU(Device Firmware Upgrade)를 이용하여 eMMC로 SPL & U-Boot를 퓨징하기

  http://dfu-util.sourceforge.net/

(U-Boot)
=> dfu 0 mmc 0

 

(Host)
$ cd ~/tizen-imx7/u-boot
$ sudo dfu-util -D SPL -a spl
$ sudo dfu-util -R -D u-boot.img -a u-boot

 

- [eMMC에 부트로더 올리기] eMMC로 부트하도록 점퍼 설정하기

 

- [eMMC에 부트로더 올리기] Reset

 

- [eMMC에 부트로더 올리기] USB 대용량 저장장치 모드 활성화하기

(U-Boot)
=> ums 0 mmc 0

 

- [eMMC에 부트로더 올리기] eMMC 파티션 만들기

(Host)
$ sudo ./mkpart.sh ${DISK}

mkpart.s_
0.00MB

 

- [eMMC에 부트로더 올리기] 호스트에서 보드의 USB 대용량 저장장치를 확인하기

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 3.6G 0 disk
sdb4 8:20 1 1K 0 part
sdb2 8:18 1 128M 0 part
sdb5 8:21 1 1G 0 part
sdb3 8:19 1 2G 0 part
sdb1 8:17 1 32M 0 part
sdb6 8:22 1 410M 0 part
sda 8:0 0 160.1G 0 disk
sda2 8:2 0 4.5G 0 part
sda1 8:1 0 155.6G 0 part /

 

- [eMMC에 부트로더 올리기] 커널을 위한 환경변수 설정하기

$ export kernel_version=4.20.6-0-sdta7d
$ export DISK=/dev/sdc

 

- [eMMC에 부트로더 올리기] 부트 파티션을 마운트하기

$ sudo mount ${DISK}1 /media/hbahn/boot/

 

- [eMMC에 부트로더 올리기] extlinux.conf 설정하기

$ sudo mkdir -p /media/hbahn/boot/extlinux/
$ sudo sh -c “echo ‘label Linux ${kernel_version}’ > /media/hbahn/boot/extlinux/extlinux.conf”
$ sudo sh -c “echo ‘ kernel /boot/vmlinuz-${kernel_version}’ >> /media/hbahn/boot/extlinux/extlinux.conf”
$ sudo sh -c “echo ‘ append root=/dev/ram rw’ >> /media/hbahn/boot/extlinux/extlinux.conf”
$ sudo sh -c “echo ‘ fdtdir /boot/dtbs/${kernel_version}/’ >> /media/hbahn/boot/extlinux/extlinux.conf”
$ sudo sh -c “echo ‘ initrd /boot/ramdisk.img’ >> /media/hbahn/boot/extlinux/extlinux.conf”

 

- [eMMC에 부트로더 올리기] 커널이미지 복사하기

$ sudo mkdir -p /media/hbahn/boot/boot
$ sudo cp -v zImage /media/hbahn/boot/boot/vmlinuz-${kernel_version}

 

- [eMMC에 부트로더 올리기] 커널 디바이스 트리 바이너리 복사하기

$ sudo mkdir -p /media/hbahn/boot/boot/dtbs/${kernel_version}/
$ sudo cp sdta7d.dtb /media/hbahn/boot/boot/dtbs/${kernel_version}/

 

- [eMMC에 부트로더 올리기] 커널 모듈 복사하기

$ sudo dd if=modules.img of=${DISK}2 bs=1M

 

- [eMMC에 부트로더 올리기] 타이젠 플랫폼 이미지 복사하기

$ sudo dd if=rootfs.img of=${DISK}3 bs=1M
$ sudo dd if=system-data.img of=${DISK}5 bs=1M

 

- [eMMC에 부트로더 올리기] 램디스크 이미지 복사하기

$ sudo cp ramdisk.img /media/hbahn/boot/boot

 

 

 

업데이트 : '19. 8. 18, 워크숍 동영상 & 앱 개발 관련 동영상 추가

 

 

 

0. 워크숍 1일차 전체 동영상 : 4시간 분량

- G Camp 측에서 강의 전체를 인코딩해주셨습니다. 자신에게 필요한 부분만 들으세요.

 

0. 사전 준비

* 총정리 게시물 주소(본 게시물) : https://bit.ly/2MmsVii

* 슬랙 채널 : (해커톤 참가자 전용 초대장) https://join.slack.com/t/tizen-iot/shared_invite/enQtNzIzMTQzMTQzNTA1LTU2N2JmODhlMTNkYzcwOGQ4NDRiOTUzZTlmN2NlODYxOTJmYTM5MGFiNDNlY2I5MzU4ZGIzOTQ0NDU2YTdkNDY

* 타이젠 스튜디오 설치하기 : 1~4페이지 참고, http://tizenschool.org/tutorial/149/contents/1

 

1. 해커톤 소개

* 주제 : 사람들의 간절한 문제를 해결하는 탑 메이커

* 구현기술 : 타이젠을 기본으로 하는 솔루션 구축

* 일정 : 1박 2일, 9. 21(토) ~ 22(일)

  - 1일차(토)

    13:00 ~ 18:00 모두 발언, 해커톤 진행(기술지원 ~ 21:00)

  -  2일차(일)

    11:00 ~ 12:00 제출 완료

    13:00 ~ 18:00 발표

 

* 보드 : ① RPI 3 Model B+ 혹은 ② SDTA7D

* 부속기기 : 센서, LED, 카메라 등 

* 평가배점 : 100점 = 심사위원 평가 60점 + 동료 평가 40점

* 심사위원 : 5명(타이젠팀 3명, IT전문가 2명)

* 심사위원 평가기준

    

  - 발표시간 : 팀당 각 10분 이내(3분 발표, 7분 질의응답)

  - 최종결과물 시연영상 : 휴대폰 촬영 영상 / 제시된 양식으로 제출

  - 전체 프로젝트 코드리뷰 : github에 업로드 필수, 코드작성자 기록 필수, 타이젠 스튜디오로 빌드 필수

  - 단, 사업아이템인 경우에는 비공개 요청을 별도로 하여야 함.

 

* 동료평가 기준

  - 당일 참가자에 스티커를 부여하여 각 팀의 시작품 중 우수시작품에 스티커 부착하기

  - 점수 산식 : (그 팀이 받은 스티커수/벽면 부착된 스티커 총수) x 40점

 

* 혜택

 

* 타이젠 스페셜리스트 선정 : https://developer.tizen.org/blog/tizen-specialist-program

  - 코드 리뷰를 통해 우수한 개발자는 타이젠 스페셜리스트로 선정함.

 

2. 워크숍 일정

 

3. 시료 배포

- 플라스틱 케이스

- SDTA7D / WiFi 안테나 / 전원케이블

- RPI3 B+ / 마이크로 SD 카드 / 카드리더기 / 5V 2A MicroUSB 어댑터 / FTDI USB-TTL

- 5mm LED / HC-SR501 인체감지센서 /  GY-303 조도센서 / SG90 서보모터 / 사운드센서

- 빵판 / MCP3008 / 220옴 저항 / 전선(MM, MF, FF)

- SPC-A1200B

 

4. 참가팀 소개 : 총 16개팀

- IHU

- 패트와 매트

- I.o.T ( Initialize on Tizen)

개인팀 x 2

InAirPeople 

용규 

Hell Maker

- 가디언즈

- 아이터틀

Red Light

- 엄유상

- 왔다 슈트 

디하시스 

- 나우 유 씨 미(Now U C Me) 

KMC 외 한명 

- System Consultant Group

※ 개인 두 분이 원하시면 두 분 위주의 팀 구성 or 타 팀 배정

 팀에게 지원되는 지원금은 9. 22(일)까지 팀장이 사용하고, 이후 증빙자료를 제출하고 비용처리 예정

    다만, 조건부 통과팀의 경우, 팀원 충당 후에 경비를 사용 가능

 팀간 결합시 기존 팀에 지급되던 비용은 그대로 지급

    즉, 팀간 결합을 통해 단일팀 구성을 하는 경우 60만원까지 사용가능

 팀을 구성하지 못한 개인은 해커톤에 참가 불가

 프로젝트 주제는 해커톤 전날까지 변경 가능

 

5. 타이젠 스튜디오 설치 및 라즈베리파이 환경설정

* Tizen & Tizen IoT 소개 : http://tizenschool.org/tutorial/150/contents/4

* 발표자료 목차

I. Tizen

 

II. Tizen IoT

 

III. Tizen Specialist

 

VI. 관련 사이트

1. 타이젠 개발자 사이트 (http://developer.tizen.org)

- Tizen API Guide를 포함한 타이젠 관련 모든 정보가 있음. 

- Headless API Guide : https://developer.tizen.org/dev-guide/tizen-iot-headless/5.0/

- Headed API Guide : https://developer.tizen.org/dev-guide/tizen-iot-headed/5.0/

 

2. Tizen School (http://tizenschool.org)

- Tizen 입문자를 위한 사이트로 단계별로 쉽게 따라할 수 있는 핵심 강좌 수록

 

3. CraftRoom (http://craftroom.tizen.org)

- Tizen IoT에 특화된 다양한 강좌 수록 및 원하는 IoT Image 생성 가능

 

4. Topmaker (https://www.topmaker.kr/tag/tizen)

- Tizen IoT 개발 관련 다양한 동영상 컨텐츠 수록

 

5. 삼성 개발자 사이트 (http://developer.samsung.com)

- Tizen이 탑재된 Samsung Device에 관한 개발정보 수록

 

* Tizen IoT 개발 환경 구축(Windows) : http://tizenschool.org/tutorial/149/contents/1

* 발표자료 목차

I. Overview

 

II. Tizen IoT 개발환경 구축

1. Java SE Development Kit (JDK) 설치

2. Tizen Studio 설치

3. Tizen IoT Package 설치

4. Tizen Certificate(인증서) 생성

 

III. RPI3+ 개발환경 구축

1. IoT Image 제작

2. 시리얼 통신 연결

3. 네트워크 설정

4. SDB 환경 변수 설정

5. SDB 연결

 

IV. Hello World

1. 프로젝트 생성

2. 프로젝트 수정 및 실행

3. 프로젝트 실행 결과 확인

 

6. 타이젠 앱 개발 기본

* 발표 자료 : https://craftroom.tizen.org/hackathon-kick-off-a-tizen-project/

* 소스코드 : 

rcc.zip
0.62MB

* 발표자료 목차

 

* 메인루프 설명 동영상

- 본 동영상은 UI앱을 대상으로 설명하였지만, UI가 없는 앱(서비스앱)에서도 일부 유효한 내용이 있습니다.

- 영상 재해석 : 몇 가지 부분을 아래처럼 이해하시면 보다 수월할 겁니다.

  앞면 : 앱이 foreground로 나온 상태

  뒷면 : 앱이 background에 들어간 상태

  app_resume_cb & app_pause_cb : 화면이 있는 UI앱에서만 필요. 화면이 없는 서비스앱에서는 불필요.

 

* 메인루프에 대한 심화 자료 : https://www.topmaker.kr/215

 

[EFL] ecore main loop의 이해

[전 삼성전자] 서주영님의 블로그에서 가져온 글입니다. 좀 오래된 글이지만, 도움이 되실 것 같아, 올립니다. ※ 이벤트 → 상황(event), 콜백 → 대응함수(call back) 등으로 수정하여 사용 http://eglo..

www.topmaker.kr

<첨언>

- EFL(Enlightenment Foundation Libraries)은 공개 소프트웨어이다.

  https://www.enlightenment.org

- IoT Headless 환경에서는 ecore_main_loop_begin()과 ecore_main_loop_quit()를 사용한다.

  (elm_run()과 elm_exit()는 사용하지 않는다)

- 타이젠의 UI앱 & 서비스앱은 ecore_main_loop를 기본 메인루프로 사용하고 있다.

- 메인루프는 대기(Idle) 상태와 이벤트처리 상태로 나뉜다.

- Idle 상태는 idle enter / idle / idle exit 세 단계로 나뉜다.

- Idle enter에서 화면을 그리거나 갱신하는 렌더링 루틴을 수행한다. 단, 그릴 것이 없으면 렌더링 루틴을 수행하지 않는다.

- Idle 상태로 진입하기 위해 select() 함수를 이용한다.

   int select(int nfds, fd_set *readfds, fd_set *writefds,
                        fd_set *exceptfds, struct timeval *timeout);

- IF SETS : Idle -> Fd handling -> Sig to event -> Event handling -> Timing handling -> Sig to Event

 

- 주제 : 타이젠에 대한 간략 소개
- 시간 : '19. 8. 5(월)
- 장소 : G Camp
- 발표자 : 삼성전자 손기성 수석연구원님

※ 본 동영상은 타이젠 팀의 기술지원을 받아 제작되었습니다.  
※ 본 동영상은 (주) 심플랫폼의 의견을 담고 있습니다. 타이젠 팀의 공식적인 의견은 아닙니다.

- 주제 : 타이젠 플랫폼과 누비슨 서비스를 연동하기
- 영상제작 : #누비슨
- 제작지원 : #지캠프, #메이커스페이스, #중소벤처기업부, #한국창업진흥원, #서울시, #서울산업진흥원, #금천구, #한국산업단지공단
- 기술지원 : #Tizen, #타이젠

 


 

Tizen IoT with Nubison Cloud

The Nubison IoT cloud is a cloud-based IoT platform that provides smart solutions and intelligent services by connecting various things easily, as well as collecting and analyzing IoT data in real time.

Real-time data monitoring and controlling between Tizen service app and Nubison cloud is empowered through Nubison plugin.

The following diagram shows the interface between Tizen IoT device and Nubison cloud through Nubison plugin:

Figure: Architecture

 

The Nubison plugin can be installed on Tizen IoT devices compatible with as follow:

  • Platform : Tizen 5.0 IoT Headed & Headless and later
  • SDK : Tizen Studio 3.0 and later

For more information about Nubison IoT cloud service, see the following references:

Start now by importing Nubison's template in the Tizen Studio!

 


 

1-1. Tizen 알아보기 #1

1-2. Tizen 알아보기 #2

1-3. Nubison Cloud 알아보기

1-4. Tizen 기기와 Nubison Cloud를 연동하기

2-2. Tizen x Nubison : GPIO 실습 #2

2-3. Tizen x Nubison : GPIO 실습 #3

2-4. Tizen x Nubison : GPIO 실습 #4

※ 정정 : peripheral_gpio_set_direction()는 GPIO로 연결된 센서로부터 값을 '읽어올지' 아니면 센서에 값을 '쓸지'를 설정하는 함수입니다.

 

2-5. Tizen x Nubison : GPIO 실습 #5

3-1. Tizen x Nubison : I2C 실습 #1

3-2. Tizen x Nubison : I2C 실습 #2

3-3. Tizen x Nubison : I2C 실습 #3

3-4. Tizen x Nubison : I2C 실습 #4

4-1. Tizen x Nubison : SPI 실습 #1

4-2. Tizen x Nubison : SPI 실습 #2

4-3. Tizen x Nubison : SPI 실습 #3

4-4. Tizen x Nubison : SPI 실습 #4

4-5. Tizen x Nubison : SPI 실습 #5

5-1. Tizen x Nubison : IoT 데이터 분석 #1

5-2. Tizen x Nubison : IoT 데이터 분석 #2

5-3. Tizen x Nubison : IoT 데이터 분석 #3

5-4. Tizen x Nubison : IoT 데이터 분석 #4

5-5. Tizen x Nubison : IoT 데이터 분석 #5

 

 

+ Recent posts