* 워크숍 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)
- 발표자료 : 용량이 커서 두 개의 파일로 분할압축하였습니다.
- 보드 이름 : 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에 명시된 숫자를 사용하면 됩니다.
* 타이젠 드라이버 포팅하기
- 강의 : 다인시스 안효복 대표
- 강의자료
* SDTA7D 보드에 타이젠 이미지를 플래싱하기
- 참고자료 :
- [이미 만들어진 이미지 사용하기] SDTA7D용 이미지 파일용 저장소 : 여기
부트 이미지 : 다운로드
플랫폼 이미지 : 다운로드
- [이미지 직접 만들기] 주요 소스 : 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로 위의 소스들을 빌드하기
$ 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}
- [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
* 해커톤 참가자들에게 배포된 이미지 중 SPI 부분만 갱신하기
- 신규 부트 바이너리 : tizen-unified_iot-boot-armv7l-sdta7d.tar.gz
- 신규 부트 바이너리의 압축을 풀면 아래와 같은 파일을 나옴.
$ tar zxvf tizen-unified_iot-boot-armv7l-sdta7d.tar.gz
modules.img
u-boot.img
SPL
sdta7d.dtb
zImage
- 위에서 sdta7d.dtb와 zImage만 업데이트 해기
1. u-boot에서 USB mass storage utility 실행
=> ums 0 mmc 0
2. Host Linux에서 신규 boot image 복사
(1) 환경 설정
$ export kernel_version=4.20.6-0-sdta7d
$ export DISK=/dev/sdc
(2) 타깃보드 마운트(아래는 개인 환경에 따라 설정해주세요)
$ sudo mount ${DISK}1 /media/hbahn/boot/
(3) Copy Kernel Image
$ sudo cp -v zImage /media/hbahn/boot/boot/vmlinuz-${kernel_version}
(4) Copy Kernel Device Tree Binaries
$ sudo cp sdta7d.dtb /media/hbahn/boot/boot/dtbs/${kernel_version}/
'IT > Tizen' 카테고리의 다른 글
SDC19 프로모션 코드[Dev Promo Code] (1) | 2019.08.31 |
---|---|
[2019 서울 하드웨어 해커톤] 5일차 : SmartThings with Tizen (0) | 2019.08.30 |
타이젠 + 제어컨트롤러 (2) | 2019.08.27 |
[2019 서울하드웨어해커톤] 4일차 : Peripheral I/O 사례 공유(I2C, PWM) (0) | 2019.08.23 |
[2019 서울 하드웨어 해커톤] 3일차 : Peripheral I/O 기본(GPIO, I2C, SPI) (0) | 2019.08.23 |
[2019 서울 하드웨어 해커톤] 1일차 : 타이젠 환경설정(RPI3) 및 앱 개발 기초 (0) | 2019.08.17 |
'19년 타이젠에 대한 간략한 소개 영상 (0) | 2019.08.06 |
[동영상 강의] Tizen IoT : Nubison과 연동하기 (0) | 2019.08.04 |
Tizen IoT 관련 자료 (0) | 2019.07.31 |
[Tizen] System Information 변경하기 (0) | 2019.07.29 |