Guide for the Raspberry PI 3 with Tizen 4.0

From Tizen Wiki
Jump to: navigation, search

How to flash platform image for Tizen

The pre-built image of Raspberry PI 3 has already implemented almost everything you need.
You can use Tizen 4.0 by simply fusing it to the SD card.
Making micro sd card to be possible to boot.
A method of fusing an image to a micro SD card.
The contents of the script used for fusing are as follows.

#!/bin/bash

declare FORMAT=""
declare DEVICE=""

# Binaires array for fusing
declare -a FUSING_BINARY_ARRAY
declare -i FUSING_BINARY_NUM=0

declare CONV_ASCII=""
declare -i FUS_ENTRY_NUM=0

# binary name | part number | bs
declare -a PART_TABLE=(
	"boot.img"			1	512
	"rootfs.img"			2	4M
	"system-data.img"		3	4M
	"user.img"			5	4M
	"modules.img"			6	512
	"ramdisk.img"			7	512
	"ramdisk-recovery.img"		8	512
	)

declare -r -i PART_TABLE_ROW=3
declare -r -i PART_TABLE_COL=${#PART_TABLE[*]}/${PART_TABLE_ROW}

# partition table support
function get_index_use_name () {
	local -r binary_name=$1
	for ((idx=0;idx<$PART_TABLE_COL;idx++)); do
		if [ ${PART_TABLE[idx * ${PART_TABLE_ROW} + 0]} == $binary_name ]; then
			return $idx
		fi
	done

	# return out of bound index
	return $idx
}

function print_message () {
	local color=$1
	local message=$2

	tput setaf $color
	tput bold
	echo ""
	echo $message
	tput sgr 0
}

function fusing_image () {
	local -r fusing_img=$1

	# get binary info using basename
	get_index_use_name $(basename $fusing_img)
	local -r -i part_idx=$?

	if [ $part_idx -ne $PART_TABLE_COL ];then
		local -r device=$DEVICE${PART_TABLE[${part_idx} * ${PART_TABLE_ROW} + 1]}
		local -r bs=${PART_TABLE[${part_idx} * ${PART_TABLE_ROW} + 2]}
	else
		echo "Not supported binary: $fusing_img"
		return
	fi

	local -r input_size=`du -b $fusing_img | awk '{print $1}'`

	print_message 2 "[Fusing $1]"
	umount $device
	dd if=$fusing_img | pv -s $input_size | dd of=$device bs=$bs
	resize2fs -f $device
}

function fuse_image_tarball () {
	local -r filepath=$1
	local -r temp_dir="tar_tmp"

	mkdir -p $temp_dir
	tar xvf $filepath -C $temp_dir
	cd $temp_dir

	for file in *
	do
		fusing_image $file
	done

	cd ..
	rm -rf $temp_dir
	eval sync

}

function fuse_image () {
	if [ "$FUSING_BINARY_NUM" == 0 ]; then
		return
	fi

	for ((fuse_idx = 0 ; fuse_idx < $FUSING_BINARY_NUM ; fuse_idx++))
	do
		local filename=${FUSING_BINARY_ARRAY[fuse_idx]}
		case "$filename" in
		    *.tar | *.tar.gz)
			fuse_image_tarball $filename
			;;
		    *)
			fusing_image $filename
			;;
		esac
	done
	echo ""
}

# partition format
function mkpart_3 () {
	# NOTE: if your sfdisk version is less than 2.26.0, then you should use following sfdisk command:
	# sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
	# NOTE: sfdisk 2.26 doesn't support units other than sectors and marks --unit option as deprecated.
	# The input data needs to contain multipliers (MiB) instead.
	local version=`sfdisk -v | awk '{print $4}'`
	local major=${version%%.*}
	local version=${version:`expr index $version .`}
	local minor=${version%%.*}
	local sfdisk_new=0

	if [ $major -gt 2 ];  then
		sfdisk_new=1
	else
		if [ $major -eq 2 -a $minor -ge 26 ];  then
			sfdisk_new=1
		fi
	fi

	local -r DISK=$DEVICE
	local -r SIZE=`sfdisk -s $DISK`
	local -r SIZE_MB=$((SIZE >> 10))

	local -r BOOT_SZ=64
	local -r ROOTFS_SZ=3072
	local -r DATA_SZ=512
	local -r MODULE_SZ=20
	local -r RAMDISK_SZ=8
	local -r RAMDISK_RECOVERY_SZ=12
	local -r INFORM_SZ=8
	if [ $sfdisk_new == 1 ]; then
		local -r EXTEND_SZ=8
	else
		local -r EXTEND_SZ=4
	fi

	let "USER_SZ = $SIZE_MB - $BOOT_SZ - $ROOTFS_SZ - $DATA_SZ - $MODULE_SZ - $RAMDISK_SZ - $RAMDISK_RECOVERY_SZ - $INFORM_SZ - $EXTEND_SZ"

	local -r BOOT=boot
	local -r ROOTFS=rootfs
	local -r SYSTEMDATA=system-data
	local -r USER=user
	local -r MODULE=modules
	local -r RAMDISK=ramdisk
	local -r RAMDISK_RECOVERY=ramdisk-recovery
	local -r INFORM=inform

	if [[ $USER_SZ -le 100 ]]
	then
		echo "We recommend to use more than 4GB disk"
		exit 0
	fi

	echo "========================================"
	echo "Label          dev           size"
	echo "========================================"
	echo $BOOT"		" $DISK"1	" $BOOT_SZ "MB"
	echo $ROOTFS"		" $DISK"2	" $ROOTFS_SZ "MB"
	echo $SYSTEMDATA"	" $DISK"3	" $DATA_SZ "MB"
	echo "[Extend]""	" $DISK"4"
	echo " "$USER"		" $DISK"5	" $USER_SZ "MB"
	echo " "$MODULE"	" $DISK"6	" $MODULE_SZ "MB"
	echo " "$RAMDISK"	" $DISK"7	" $RAMDISK_SZ "MB"
	echo " "$RAMDISK_RECOVERY"	" $DISK"8	" $RAMDISK_RECOVERY_SZ "MB"
	echo " "$INFORM"	" $DISK"9	" $INFORM_SZ "MB"

	local MOUNT_LIST=`mount | grep $DISK | awk '{print $1}'`
	for mnt in $MOUNT_LIST
	do
		umount $mnt
	done

	echo "Remove partition table..."
	dd if=/dev/zero of=$DISK bs=512 count=16 conv=notrunc

	if [ $sfdisk_new == 1 ]; then
		sfdisk $DISK <<-__EOF__
		4MiB,${BOOT_SZ}MiB,0xE,*
		8MiB,${ROOTFS_SZ}MiB,,-
		8MiB,${DATA_SZ}MiB,,-
		8MiB,,E,-
		,${USER_SZ}MiB,,-
		,${MODULE_SZ}MiB,,-
		,${RAMDISK_SZ}MiB,,-
		,${RAMDISK_RECOVERY_SZ}MiB,,-
		,${INFORM_SZ}MiB,,-
		__EOF__
	else
		sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
		4,$BOOT_SZ,0xE,*
		,$ROOTFS_SZ,,-
		,$DATA_SZ,,-
		,,E,-
		,$USER_SZ,,-
		,$MODULE_SZ,,-
		,$RAMDISK_SZ,,-
		,$RAMDISK_RECOVERY_SZ,,-
		,$INFORM_SZ,,-
		__EOF__
	fi

	mkfs.vfat -F 16 ${DISK}1 -n $BOOT
	mkfs.ext4 -q ${DISK}2 -L $ROOTFS -F
	mkfs.ext4 -q ${DISK}3 -L $SYSTEMDATA -F
	mkfs.ext4 -q ${DISK}5 -L $USER -F
	mkfs.ext4 -q ${DISK}6 -L $MODULE -F
	mkfs.ext4 -q ${DISK}7 -L $RAMDISK -F
	mkfs.ext4 -q ${DISK}8 -L $RAMDISK_RECOVERY -F
	mkfs.ext4 -q ${DISK}9 -L $INFORM -F

	# create "reboot-param.bin" file in inform partition for passing reboot parameter
	# It should be done only once upon partition format.
	umount ${DISK}9
	mkdir mnt_tmp
	mount -t ext4 ${DISK}9 ./mnt_tmp
	touch ./mnt_tmp/reboot-param.bin
	sleep 1
	umount ./mnt_tmp
	rmdir mnt_tmp
}

function show_usage () {
	echo "- Usage:"
	echo "	sudo ./sd_fusing*.sh -d <device> [-b <path> <path> ..] [--format]"
}


function check_partition_format () {
	if [ "$FORMAT" != "2" ]; then
		echo "-----------------------"
		echo "Skip $DEVICE format"
		echo "-----------------------"
		return 0
	fi

	echo "-------------------------------"
	echo "Start $DEVICE format"
	echo ""
	mkpart_3
	echo "End $DEVICE format"
	echo "-------------------------------"
	echo ""
}

function check_args () {
	if [ "$DEVICE" == "" ]; then
		echo "$(tput setaf 1)$(tput bold)- Device node is empty!"
		show_usage
		tput sgr 0
		exit 0
	fi

	if [ "$DEVICE" != "" ]; then
		echo "Device: $DEVICE"
	fi

	if [ "$FUSING_BINARY_NUM" != 0 ]; then
		echo "Fusing binary: "
		for ((bid = 0 ; bid < $FUSING_BINARY_NUM ; bid++))
		do
			echo "  ${FUSING_BINARY_ARRAY[bid]}"
		done
		echo ""
	fi

	if [ "$FORMAT" == "1" ]; then
		echo ""
		echo "$(tput setaf 3)$(tput bold)$DEVICE will be formatted, Is it OK? [y/n]"
		tput sgr 0
		read input
		if [ "$input" == "y" ] || [ "$input" == "Y" ]; then
			FORMAT=2
		else
			FORMAT=0
		fi
	fi
}

function print_logo () {
	echo ""
	echo "Raspberry Pi3 downloader, version 0.1"
	echo ""
}

print_logo

function add_fusing_binary() {
	local declare binary_name=$1
	FUSING_BINARY_ARRAY[$FUSING_BINARY_NUM]=$binary_name

	FUSING_BINARY_NUM=$((FUSING_BINARY_NUM + 1))
}

declare -i binary_option=0

while test $# -ne 0; do
	option=$1
	shift

	case $option in
	--f | --format)
		FORMAT="1"
		binary_option=0
		;;
	-d)
		DEVICE=$1
		binary_option=0
		shift
		;;
	-b)
		add_fusing_binary $1
		binary_option=1
		shift
		;;
	*)
		if [ $binary_option == 1 ];then
			add_fusing_binary $option
		else
			echo "Unkown command: $option"
			exit
		fi
		;;
	esac
done

check_args
check_partition_format
fuse_image


The contents of the script used for fusing are as follows.

sudo ./sd_fusing_rpi3.sh -b tizen-4.0-unified_20171211.3_iot-boot-arm64-rpi3.tar.gz tizen-4.0-unified_20171211.3_common-wayland-3parts-armv7l-rpi3.tar.gz --format

After fusing is finished, put the SD card in Rpi 3 and start up. After starting, the screen of each profile is as shown in the following figure

Raspberry PI 3 Tizen 4.0 has 64bits for the kernel and rootfs is a 32bits system.

Bluetooth Firmware

You can download and install the rpm.

     http://download.tizen.org/snapshots/tizen/4.0-unified/latest/repos/standard/packages/armv7l/
bluetooth-firmware-bcm-rpi3-0.2.0-3.1.armv7l.rpm

Or change the script directly in the project below, but it does not seem to be necessary to actually change it.

     Tizen Project: platform/adaptation/bluetooth-firmware-bcm
Branch: Tizen 4.0

Wireless(WiFi) Firmware

The wireless LAN soc of RPi 3 has The Cypress CYW 43438. The firmware of this SOC can be downloaded by searching the Internet, such as the Debian package.
https://packages.debian.org/sid/firmware-brcm80211
If using Ubuntu on the host PC, can find the firmware files from "/lib/firmware/brcm" directory. Other settings and the like are already prepared in the deployment image.

    brcmfmac43430-sdio.bin
brcmfmac43430-sdio.txt
copy the firmware files into <RPi3>/lib/firmware/brcm directory.

Create a file with the contents of the box below and save it as "<RPi 3> /usr/bin/wlan.sh" and grant execution authority.
Please refer to Tizen porting guide for the reason for creating the script.
https://wiki.tizen.org/Tizen_3.0_Porting_Guide#Porting_OAL_Interface_10

    chmod 777 /usr/bin/wlan.sh
#!/bin/sh

IFACE_NAME=wlan0

start()
{
    /sbin/ifconfig ${IFACE_NAME} up
}

stop()
{
    /sbin/ifconfig ${IFACE_NAME} down
}

softap()
{
    echo "softap\n"
}

p2p()
{
    echo "p2p\n"
}

case $1 in
    "start")
         start
         ;;
    "stop")
     stop
         ;;
    "softap")
     softap
         ;;
    "p2p")
     p2p
         ;;
    *)
    /bin/echo wlan.sh [start] [stop]
    exit 1
    ;;
esac

GPU Vendor GL / EGL driver

According to Tizen's porting guide, the GPU vendor GL / EGL driver must be installed in the following path:

    https://wiki.tizen.org/Tizen_3.0_Porting_Guide#Multimedia
Library path File
/usr/lib/driver libEGL.so

libGLESv1_CM.so

libGLESv2.so

But in order to install the GL library of the same name from three places RPM, traffic control is necessary.

package Library path File
platform/core/uifw/coregl /usr/lib libCOREGL.so libEGL.so libGLESv1_CM.so libGLESv2.so
platform/upstream/mesa /usr/lib/driver libEGL.so libGLESv1_CM.so libGLESv2.so
platform/adaptation/broadcom/libomxil-vc4 /opt/vc/lib libEGL.so libGLESv2.so libbrcmEGL.so libbrcmGLESv2.so

For more information about OpenGL ES, see the following URL:

    https://wiki.tizen.org/3.0_Porting_Guide/Graphics_and_UI/OpenGL#Tizen_OpenGL_ES_and_EGL_Architecture

Sensor

Sensor devices are used in most mobile devices to enhance user experience. Tizen 4.0 supports a framework which manages hardware and virtual sensors on the platform and provides convenient API to the application. Refer to the architecture of sensor framework and porting guide for adding new hardware sensors in detail on this

Overview

The following list of sensors is supported by default on Tizen 4.0. so you can check the operation for using existed sensor or adding new sensor before.

Sensor Functions Model I2C address
Accelerometer LSM9DS0(BerryGPS-IMU) 0x1E
Magnetometer LSM9DS0(BerryGPS-IMU) 0x1E
Gyroscope LSM9DS0(BerryGPS-IMU) 0x6A
Pressure BMP280 (BerryGPS-IMU) 0x77
Temperature BST-BMP280-DS001-11 0x76
HRM LED IR MAX30100 0x57
HRM LED RED MAX30100 0x57
Proximity vcnl4010 0x13
Light TSL2561 0x29 or 0x39 or 0x49

Environment

Sensor Connection

Sensor module have to be connected by power and i2c signal from target platform board as the following diagram.

SensorForTizen40.jpg
                           Sensor Connection Diagram

Install plugin & test program

Package For
peripheral-bus-0.1.0-9.1.armv7l.rpm command
external-sensor-plugins-artik7-0.0.2-0.armv7l.rpm Artik710
external-sensor-plugins-artik5-0.0.2-0.armv7l.rpm Artik530
external-sensor-plugin-rpi3-0.0.2-0.armv7l.rpm Raspberry PI3

Connection Check

you can check connected sensors in the contents of log message using Dlogutil after boot as the following examples.

root:~> dlogutil SENSOR
I/SENSOR  ( 2156): sensor_manager.cpp: show(390) > ========== Loaded sensor information ==========
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #1[http://samsung.com/sensor/healthinfo/pedometer/sa 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://samsung.com/sensor/healthinfo/pedometer/samsung_pr
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = samsung_pedometer
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #2[http://tizen.org/sensor/general/accelerometer/acc 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/accelerometer/acceleromer
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = LSM9DS0
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #3[http://tizen.org/sensor/general/auto_rotation/tiz 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/auto_rotation/tizen_defat
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = tizen_default
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #4[http://tizen.org/sensor/general/geomagnetic_rotat 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/geomagnetic_rotation_vect
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = tizen_default
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #5[http://tizen.org/sensor/general/gravity/tizen_low 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/gravity/tizen_lowpass
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = tizen_lowpass
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #6[http://tizen.org/sensor/general/light/light]: 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/light/light
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = TSL2651
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #7[http://tizen.org/sensor/general/linear_accelerati 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/linear_acceleration/tizet
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = tizen_default
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #8[http://tizen.org/sensor/general/magnetic/magnetom 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/magnetic/magnetometer
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = LSM9DS0
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #9[http://tizen.org/sensor/general/pressure/pressure 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/pressure/pressure
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = BMP280
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #10[http://tizen.org/sensor/general/proximity/proxim 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/proximity/proximity
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = VCNL4010
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #11[http://tizen.org/sensor/general/temperature/temp 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/general/temperature/temperature
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = BMP280
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #12[http://tizen.org/sensor/healthinfo/heart_rate_mo 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/healthinfo/heart_rate_monitor.ler
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = MAX30100
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(394) > Sensor #13[http://tizen.org/sensor/healthinfo/heart_rate_mo 
I/SENSOR  ( 2156): sensor_info.cpp: show(275) > URI = http://tizen.org/sensor/healthinfo/heart_rate_monitor.led
I/SENSOR  ( 2156): sensor_info.cpp: show(276) > Model = MAX30100
...............
I/SENSOR  ( 2156): sensor_manager.cpp: show(397) > ===============================================

Sensor Operations

Run the following command to check the value of connected sensor. in case of ARTIK710,

$ ./external-sensor-plugins-artik7-test ./libexternal-sensor-plugins-artik7.so

or in case of ARTIK530 or Raspberry PI3, run the following command instead of above command.

$ ./external-sensor-plugins-artik5-test ./libexternal-sensor-plugins-artik5.so
$ ./external-sensor-plugins-rpi3-test ./libexternal-sensor-plugins-rpi3.so

Then, scroll the measured values on terminal.

VCNL4010:SENSOR PROXIMITY:+2371.00000
TSL2651:SENSOR LIGHT:+55.00000
LSM9DS0:SENSOR GYROSCOPE:+96.53000 +137.13000 +178.00999
BMP280:SENSOR TEMPERATURE:+33.91000
MAX30100:SENSOR HRM LED RED:+51199.00000
LSM9DS0:SENSOR ACCELEROMETER:+0.09692 +0.00022 -0.01237
LSM9DS0:SENSOR GEOMAGNETIC:-258.92001 -107.33600 -246.03200
..........

Tizen Compliance Tests(TCT)

Overview

Tizen Compliance Tests (TCT) verify conformance to the Tizen Compliance Specification (TCS). These tests are intended to be used by Tizen device implementers to enable the Tizen-compliant development environment for Tizen application developers. Tizen Compliance Tests consist of Web TCT and Native TCT, which include test suites and tools for testing on the Tizen web stack and the native stack, respectively.

refer to the this site

Environment

install TCT program

TCT Stack TCT program name
Native NativeTCT_4.0_20171120_arm.tar.gz
Web csharp-tct_4.0_20171204.tar.gz

Just make a folder and decompress TCT program.

Initialize

Before running the TCT test, the initial environment for testing each function must be set first on Artik/RaspBerry board. And execute sdb enable command as the following because it is used for TCT test remotely, with write permission.

mount -o remount,rw /
direct_set_debug.sh –sdb-set

Check model-config.xml file in /etc/config on ARTIK board as the following. the boolean of armv7 must be "true" and set the test function to "true".

# cat /etc/config/model-config.xml
...
<key name="tizen.org/feature/platform.core.cpu.arch" type="string">armv7</key>
<key name="tizen.org/feature/platform.core.cpu.arch.armv6" type="bool">false</key>
<key name="tizen.org/feature/platform.core.cpu.arch.armv7" type="bool">true</key>
<key name="tizen.org/feature/platform.core.cpu.arch.armv8" type="bool">false</key>
...

Skip this stage if there are no modifications, or run the commands in the following list to apply modified model-config.xml

rm /etc/system_info_db
system_info_init_db 
chsmack -a "_" /etc/system_info_db
sync
reboot

TCT Test

Move to the folder installed Native TCT program or Csharp TCT in host PC, run as the following;

HOST$ sudo python tct-setup.py clean
clean option is given
HOST$ sudo python tct-setup.py

In case of Native TCT

HOST$ python /opt/tct/tizen_native_4.0/scripts/tct-config-device.py

In case of Csharp TCT

HOST$ python /opt/tct/tizen_csharp_4.0/scripts/tct-config-device.py

and run TCT manager

HOST$ tct-mgr

Select "mobile" in profile menu, check the test function required and click 'run' button, then start testing. Some of examples between target functions and test items in Tizen 4.0 is refer to the below table.

Framework TCT Native TCT C#
Sensor tct-sensor-native-utc
tct-sensor-native-itc
Tizen.Sensor.Tests
Location tct-location-manager-native-itc
tct-location-manager-native-utc
Tizen.Location.Tests
Multimedia
Audio FW
Media Player
Camera
tct-sound-manager-native-itc
tct-sound-manager-native-utc
tct-audio-io-native-utc
tct-audio-io-native-utc
tct-player-native-itc
tct-player-native-utc
tct-camera-native-itc
tct-camera-native-utc
Bluetooth tct-bluetooth-native-utc
tct-bluetooth-native-itc
Wlan
WiFi
WiFi-Direct
tct-wifi-manager-native-utc
tct-wifi-manager-native-itc
tct-wifi-direct-native-utc
tct-wifi-direct-native-itc
tct-wifi-direct-native-ctc
Tizen.Network.Tests
Tizen.WiFidirect.Tests
System tct-device-native-ctc
tct-device-native-itc
tct-device-native-utc
tct-dlog-native-itc
tct-dlog-native-utc
Tizen.Device.Tests
Tizen.System.Tests

TCT Test Results

After finish testing, you can check the result included log message how many items is pass or not. The report of TCT results is saved on following directory in host PC.

TCT-Native results : /opt/tct/tizen_native_4.0/manager/result/
TCT-CSharp results : /opt/tct/tizen_csharp_4.0/manager/result/

Location

For the location framework of Tizen 4.0, please refer to the following URL.

https://wiki.tizen.org/Tizen_3.0_Porting_Guide#Location_Framework

Raspberry pi 3 (RPI3) has a sample project that uses the GPS moudule "BerryGPS-IMU". If you want to see more information for this module, please refer to http://ozzmaker.com/product/berrygps-imu.

Project: platform/adaptation/rpi3/lbs-plugin-gps-rpi3
Branch : tizen_4.0

This module is operated in UART mode in this project. You have to disable CONSOLE in RPI3 to operate correctly in this project. This module also use Tizen PIO interface (Project Name: platform/core/api/peripheral-io and platform/core/system/peripheral-bus) to communicate with device (/dev/ttyS0). This plugin is managed by lbs-server (Project Name: platform/core/location/lbs-server) and is located in /usr/lib/liblbs-plugin-gps-rpi3.so.

GPS Configuration

View the replay mode setting value

vconftool get db/location/replay/ReplayMode

Set the replay mode

vconftool set -t int db/location/replay/ReplayMode 1 -f

Start the location manager

systemctl start location-manager

Stop the location manager

systemctl stop location-manager

NFC

NFC OAL interface is the same as tizen 3.0.

Please refer to NFC in Tizen Porting Guide 3.0, https://wiki.tizen.org/Tizen_3.0_Porting_Guide#NFC.

NFC PROJECTs

Tizen has several projects for NFC. The branch name is tizen_4.0.

Description Project Name
nfc-manager platform/core/connectivity/nfc-manager
nfc-plugin for emulator platform/adaptation/emulator/nfc-plugin-emul
NFC api platform/core/api/nfc

NFC PLUGIN Library Location

The location of nfc plugin library is /usr/lib/nfc/libnfc-plugin.so.

NFC CONFIGURATION

Below is the configuration commands for nfc-manager to configure NFC process.

Start NFC-MANAGER

systemctl start nfc-manager

Stop NFC-MANAGER

systemctl stop nfc-manager

View the status of NFC service

vconftool get db/nfc/enable

Enable NFC service

vconftool set -t bool db/nfc/enable 1 -f

OP-TEE

Op-tee(Open Portable Trusted Execution Environment) has been ported to Raspberry pi 3.

https://www.op-tee.org/\

OpTEE OS userspace libraries and devkit for OpTEE OS.

 Project: platform/core/security/tef-optee_os
 Branch : tizen_4.0

TEF Trustzone OpTEE provides daemon to support OpTEE OS solution and libteec library.

 Project: platform/core/security/tef-optee_client
 Branch : tizen_4.0

Tizen bootloader for RPI3 boards based.

 Project: platform/kernel/u-boot
 Branch : tizen_4.0

Enable TEE drivers

 Project: platform/kernel/linux-rpi3
 Branch : tizen_4.0
 Kernel config: Device Drivers → TEE drivers → <*> OP-TEE

System Framework

For the LED/HAPTIC HAL of Tizen 4.0, please refer to the following URL.

https://wiki.tizen.org/Tizen_3.0_Porting_Guide#LED_HAL

LED HAL

Raspberry pi 3 has a sample project that uses the BlinkM - I2C Controlled RGB LED. If you want to see more information for this module, please refer to https://thingm.com/products/blinkm/.

 Project: platform/core/system/libdevice-node
          platform/adaptation/RPI3/device-manager-plugin-RPI3
 Branch : tizen_4.0

This module uses Tizen PIO interface (Project Name: platform/core/api/peripheral-io and platform/core/system/peripheral-bus) to communicate with device (/dev/i2c-1). The plugin library is located in /usr/lib/hw/led.so. This plugin library is managed by deviced (Project Name: platform/core/system/deviced). You have to check platform/core/system/deviced/packaging/deviced.spec file to include the plugin in the deviced. If not, the plugin is not included and not loaded in runtime.

[ file: devcied.spec ]

%cmake .. \
	-DTZ_SYS_ETC=%TZ_SYS_ETC \
	-DCMAKE_INSTALL_PREFIX=%{_prefix} \
	-DARCH=%{ARCH} \
	-DARCH_BIT=%{ARCH_BIT} \
	-DDPMS=%{DPMS} \
	-DENGINEER_MODE=%{engineer_mode} \
	-DPROFILE=mobile \
	-DBATTERY_MODULE=on \
	-DDISPLAY_MODULE=on \
	-DEXTCON_MODULE=on \
	-DIR_MODULE=on \
	-DLED_MODULE=on \             # ON is required to include this plugin
	-DPOWER_MODULE=on \
	-DSDB_PRESTART=%{sdb_prestart} \
	-DTOUCHSCREEN_MODULE=on \
	-DTZIP_MODULE=on \
	-DUSB_MODULE=on \
	-DUSBHOST_MODULE=on \
	-DTIZEN_FEATURE_USBHOST_TEST=on \
	-DTIZEN_FEATURE_BATTERY_OVER_TEMPERATURE=off \
	-DTIZEN_FEATURE_CPU_MODULE=on \
	-DTIZEN_FEATURE_TELEPHONY_MODULE=on \
	-DTHERMAL_MODULE=on \
	-DPASS=on \

HAPTIC HAL

Raspberry pi 3 has a sample project that uses the Adafruit DRV2605L - I2C Controlled haptic Motor Controller. If you want to see more information for this module, please refer to https://www.adafruit.com/product/2305.

 Project: platform/core/system/feedbackd
 Branch : tizen_4.0

This module uses Tizen PIO interface (Project Name: platform/core/api/peripheral-io and platform/core/system/peripheral-bus) to communicate with device (/dev/i2c-1). The plugin library is merged into feedbackd. There is not the plugin library. This plugin library is managed by feedbackd (Project Name: platform/core/system/feedbackd).

Configuration

Start deviced

systemctl start deviced

Stop deviced

systemctl stop deviced

Start feedbackd

systemctl start feedbackd

Stop feedbackd

systemctl stop feedbackd