Lichee RVでTinaを使う

# Tina

Tina LinuxはAllwinner D1における標準の開発環境です。組み込みシステム用のLinux、OpenWrtをベースにして様々なツールが同梱されています。

https://d1.docs.aw-ol.com/en/assets/img/Tina_Linux_ARCH.png

- [Tina Linux](https://d1.docs.aw-ol.com/en/study/study_1tina/)
- [OpenWrt](https://openwrt.org/)

# 準備

Lichee RVでTina Linux環境を準備します。イメージが提供されているので、ダウンロードしてSDカードを作成します。
手順は @airpocket さんの [Sipeed LicheeRV セットアップまとめ](https://qiita.com/airpocket/items/5cac38eb2a6cc3223c40) をご覧ください。

今回使用するイメージは LicheeRV_Tina_hdmi_8723ds.img です。

# 起動

前回 [Lichee RVを使ってみる](https://qiita.com/fukuebiz/items/d37a717ae1658ec55c5f) と同様にJTAG経由でシリアル接続して起動します。

```
[42]HELLO! BOOT0 is starting!
[44]BOOT0 commit : 27369ab

OpenSBI v0.6
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name          : T-HEAD Xuantie Platform
Platform HART Features : RV64ACDFIMSUVX
Platform Max HARTs     : 1
Current Hart           : 0
Firmware Base          : 0x40000400
Firmware Size          : 75 KB
Runtime SBI Version    : 0.2

MIDELEG : 0x0000000000000222
MEDELEG : 0x000000000000b1ff
PMP0    : 0x0000000040000000-0x000000004001ffff (A)
PMP1    : 0x0000000040000000-0x000000007fffffff (A,R,W,X)
PMP2    : 0x0000000080000000-0x00000000bfffffff (A,R,W,X)
PMP3    : 0x0000000000020000-0x0000000000027fff (A,

U-Boot 2018.05-g0a88ac9-dirty-config-dirty (Dec 14 2021 - 18:32:11 +0800) Allwinner Technology

[00.190]DRAM:  512 MiB
[00.192]Relocation Offset is: 1df30000
[00.196]secure enable bit: 0
[00.198]CPU=1008 MHz(1008),PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz  MBus=300Mhz
[00.205]flash init start
[00.207]workmode = 0,storage type = 1
[00.211][mmc]: mmc driver ver uboot2018:2021-04-16 14:23:00-1
[00.216][mmc]: get sdc_type fail and use default host:tm1.
[00.223][mmc]: can't find node "mmc0",will add new node
[00.227][mmc]: fdt err returned <no error>
[00.231][mmc]: Using default timing para
[00.235][mmc]: SUNXI SDMMC Controller Version:0x50310
[00.261][mmc]: card_caps:0x3000000a
[00.264][mmc]: host_caps:0x3000003f
[00.269]sunxi flash init ok
[00.271]line:714 init_clocks
__clk_init: clk pll_periph0x2 already initialized
register fix_factor clk error
[00.292]Loading Environment from SUNXI_FLASH... OK
[00.311]out of usb burn from boot: not need burn key
root_partition is rootfs
set root to /dev/mmcblk0p7
[00.323]update part info
[00.326]update bootcmd
[00.329]change working_fdt 0x5eaefda8 to 0x5eacfda8
[00.348]update dts
Hit any key to stop autoboot:  0
Android's image name: d1-nezha
No reserved memory region found in source FDT
[00.780]
Starting kernel ...

[00.783][mmc]: MMC Device 2 not found
[00.786][mmc]: mmc 2 not find, so not exit
formating /dev/by-name/UDISK to ext4
/etc/preinit: line 1: mkfs.ext4: not found
Please press Enter to activate this console.



BusyBox v1.27.2 () built-in shell (ash)

    __  ___     _        __   _
   /  |/  /__ _(_)_ __  / /  (_)__  __ ____ __
  / /|_/ / _ `/ /\ \ / / /__/ / _ \/ // /\ \ /
 /_/  /_/\_,_/_//_\_\ /____/_/_//_/\_,_//_\_\
 ----------------------------------------------
 Maix Linux (Neptune, 5C1C9C53)
 ----------------------------------------------
root@(none):/#
```

# adb

Tina LinuxではUARTポートのシリアル以外にadb(Android Debug Bridge)で接続ができます。adbはAndroidのアプリ開発で使用するツールです。adbを使用するとUARTポートのシリアルが不要で、USBケーブル１本で接続できます。

### 準備

adbはAndroid Studioをインストールすると導入されますが、platform-toolsだけのインストールもできるようです。

デフォルトではパスが通っていないので、Windowsのコマンドプロンプトで、platform-toolsのディレクトリに移動してからadbコマンドを実行します。

adb devicesコマンドでadb接続されたデバイスが確認できます。

```
cd C:\Users\....>cd C:\Users\....\AppData\Local\Android\Sdk\platform-tools

C:\Users\....\AppData\Local\Android\Sdk\platform-tools>adb devices
List of devices attached
20080411        device
```

adb shellコマンドで接続できます。


```
C:\Users\....\AppData\Local\Android\Sdk\platform-tools>adb shell


BusyBox v1.27.2 () built-in shell (ash)

    __  ___     _        __   _
   /  |/  /__ _(_)_ __  / /  (_)__  __ ____ __
  / /|_/ / _ `/ /\ \ / / /__/ / _ \/ // /\ \ /
 /_/  /_/\_,_/_//_\_\ /____/_/_//_/\_,_//_\_\
 ----------------------------------------------
 Maix Linux (Neptune, 5C1C9C53)
 ----------------------------------------------
root@MaixLinux:/#
```

# 操作

Tina(MaixLinux)を少し触ってみます。

Lichee RVのLEDを点灯させます。

```
echo 65 > /sys/class/gpio/export
cd /sys/class/gpio/gpio65
echo out > direction
echo 1 > value

```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555397/ca993169-f55f-3fd5-45b2-24509c5b7f30.png)

消灯させます。

```
echo 0 > value

```

Dock側のLED点灯

```
cd /sys/class/leds/
#red
echo 255 > /sys/class/leds/sunxi_led0r/brightness
echo 0 > /sys/class/leds/sunxi_led0g/brightness
echo 0 > /sys/class/leds/sunxi_led0b/brightness
#green
echo 0 > /sys/class/leds/sunxi_led0r/brightness
echo 255 > /sys/class/leds/sunxi_led0g/brightness
echo 0 > /sys/class/leds/sunxi_led0b/brightness;
#blue
echo 0 > /sys/class/leds/sunxi_led0r/brightness
echo 0 > /sys/class/leds/sunxi_led0g/brightness
echo 255 > /sys/class/leds/sunxi_led0b/brightness
#white
echo 255 > /sys/class/leds/sunxi_led0r/brightness
echo 255 > /sys/class/leds/sunxi_led0g/brightness
echo 255 > /sys/class/leds/sunxi_led0b/brightness
#black
echo 0 > /sys/class/leds/sunxi_led0r/brightness
echo 0 > /sys/class/leds/sunxi_led0g/brightness
echo 0 > /sys/class/leds/sunxi_led0b/brightness

```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555397/06a5ac75-3389-5143-29dc-ba24a28aa54d.png)