TOPPERS BASE PLATFORM (RV) V1.4.5

担当者

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

竹内良輔

変更履歴
リリース
0.1.0
0.1.1
0.1.2
0.1.3
1.4.1
1.4.2
1.4.3
1.4.4
1.4.5

日付
2019/04/25
2019/10/22
2019/11/29
2019/12/28
2020/04/18
2020/12/18
2022/04/18
2023/02/08
2023/12/12

作成者
竹内良輔
竹内良輔
竹内良輔
竹内良輔
竹内良輔
竹内良輔
竹内良輔
竹内良輔
竹内良輔

変更内容
初版
Maix シリーズの対応
Maix 用カメラと I2C ドライバ追加
Maix 用 SD カード対応
正式リリース用に版を改定
YOLO デモ追加, Longan nano の対応
RTOS 隠蔽機能
USB ミドルウェアの最適化、sapphire SoC を追加
標準出力処理の変更、ネットワークモニタ対応、USB
デバイス MSC を追加

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

目次
変更履歴 ..................................................................................................................................................... 2
1 背景 ..................................................................................................................................................... 5
2 目的 ..................................................................................................................................................... 5
3 TOPPERS BASE PLATFORM (RV)仕様 .......................................................................................... 5
3.1
プラットフォームのターゲット .................................................................................................. 5
3.2
レイア構造 ................................................................................................................................... 5
3.3
開発環境 ....................................................................................................................................... 6
4 Device Driver 仕様 ............................................................................................................................. 6
4.1
Basic Driver ................................................................................................................................ 6
4.1.1
概要 .......................................................................................................................................... 6
4.1.2
ドライバ一覧 ............................................................................................................................ 7
4.1.3
GPIO ........................................................................................................................................ 7
4.1.3.1
データ仕様 ............................................................................................................................ 7
4.1.3.2
インターフェイス仕様.......................................................................................................... 8
4.1.3.3
フローチャート .................................................................................................................... 8
4.1.4
RTC .......................................................................................................................................... 9
4.1.4.1
データ仕様 ............................................................................................................................ 9
4.1.4.2
インターフェイス仕様.......................................................................................................... 9
4.1.4.3
設定手順 ............................................................................................................................... 9
4.1.5
WATCH DOG ........................................................................................................................ 10
4.1.5.1
データ仕様 .......................................................................................................................... 10
4.1.5.2
インターフェイス仕様........................................................................................................ 10
4.1.6
UART ..................................................................................................................................... 10
4.2Standard Driver ....................................................................................................................... 10
4.2.1
概要 ........................................................................................................................................ 11
4.2.2
SPI ......................................................................................................................................... 11
4.2.2.1
データ仕様 .......................................................................................................................... 12
4.2.2.2
インターフェイス仕様........................................................................................................ 14
4.2.2.3
フローチャート .................................................................................................................. 14
4.2.3
I2C ......................................................................................................................................... 16
4.2.3.1
データ仕様 .......................................................................................................................... 16
4.2.3.2
インターフェイス仕様........................................................................................................ 17
4.2.3.3
フローチャート .................................................................................................................. 17
5 タスクモニタ ..................................................................................................................................... 19
5.1
概要 ............................................................................................................................................ 19
5.2
標準入出力 ................................................................................................................................. 19
5.3
標準デバッグコマンド ............................................................................................................... 20
5.4
デバッグコマンド拡張 ............................................................................................................... 21
5.4.1
データ仕様 ............................................................................................................................. 21
5.4.2
インターフェイス仕様 ........................................................................................................... 21
6 API 層 ............................................................................................................................................... 21
6.1
概要 ............................................................................................................................................ 22
6.2
ファイルシステム ...................................................................................................................... 22
6.2.1
ファイルライブラリ ............................................................................................................... 22
6.2.2
Storage Device Manager ...................................................................................................... 24
6.2.2.1
データ仕様 .......................................................................................................................... 24
6.2.2.2
インターフェイス仕様........................................................................................................ 25
6.2.3
FatFs...................................................................................................................................... 26
6.3
時間管理 ..................................................................................................................................... 26
6.3.1
データ仕様 ............................................................................................................................. 26

6.3.2
インターフェイス仕様 ........................................................................................................... 27
6.4
USB ミドルウェア..................................................................................................................... 27
6.5
UI ミドルウェア ........................................................................................................................ 27
6.5.1
UI ディレクトリ .................................................................................................................... 27
6.6
RTOS 隠蔽機能.......................................................................................................................... 28
7 ファイルの構成 ................................................................................................................................. 28
7.1
共通部 ........................................................................................................................................ 28
7.2
PDIC(Base/Standard)ドライバ ................................................................................................ 29
7.3
GDIC ドライバ .......................................................................................................................... 30
8 変更履歴 ............................................................................................................................................ 30
Appendix A HI-FIVE1............................................................................................................................. 31
Appendix B Maixdino ............................................................................................................................. 32
Appendix C Longan nano ....................................................................................................................... 33
Appendix D T120 BGA324 ..................................................................................................................... 33

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

4

1 背景
TOPPERS BASE PLATFORM の拡張として RISC-V プロセッサに対応する。組込み用途で開発された RISC-V プロセッサを使用したエバレーション・ボードから最適なものを選択して組込みソフトウェ
アプラットフォームとして TOPPERS BASE PLATFORM(RV)を開発することとなった。

2 目的
本リファレンスマニュアルは、ターゲットボードとターゲットボード上に作成したソフトウェアプラ
ットフォーム(TOPPERS BASE PLATFORM(RV))の仕様について記載する。
■ターゲットボード
・HI-FIVE1 SiFive 社
・Maix ボード Sipeed 社
・Longan-nano Sipeed 社
・T120 BGA324 Efinix 社

3 TOPPERS BASE PLATFORM (RV)仕様
本章では、TOPPERS BASE PLATFORM (RV)の仕様について記載する。

3.1 プラットフォームのターゲット
TOPPERS BASE PLATFORM(RV) は上記３つのボードに対応した TOPPERS ASP-1.9.3 カーネル上で実行するデバイスドライバとミドルウェアに対応する。

3.2 レイア構造
TOPPERS BASE PLATFORM(RV)のハードウェアドライバは下層から３層のレイヤ構造を持ち、その上に API 層、ライブラリの I/F 層をもつ。FE310-G000 は他の一般的な SoC と比べ、RAM 領域が小さく、デバイス IP が少ないため、他の TOPPERS BASE PLATFORM に比べミドルウェアの対応が少ない。しかし、PDIC の API が ASP-1.9.3 カーネルを使用している TOPPERS BASE PLATFORM(ST)とほぼ同じため、
GDIC やミドルウェアは、そのまま使用可能である。また、ASP カーネルのもつデバッグ機能以外に、教育
ＷＧで提供するタスクモニタを標準に装備し、システムデバッグ用にデバッグコマンドを用いて開発補助を行う。
V1.4.3 以 上 で は RTOS の サ ー ビ ス ・ コ ー ル の 隠 蔽 機 能 を 追 加 す る 。 デ ィ レ ク ト リ pdic 直 下 の
base_platform.h にて、サービス・コールのマクロ化を行い、μITRON 系の RTOS ならばマクロを書き換えることにより、種々の RTOS への対応が可能となる。対象は pdic/gdic のデバイスドライバとミドルウェア
である。
図 3.2.1 に TOPPERS BASE PLATFORM (RV)の構造図を示す。Base Driver、Standard Driver、GDIC、
UI ミドルウェア等により、アプリケーションから以下の機能が使用可能になる。
① SPI② I2C Hi-Five1:Wire(I2C):仮実装/Maix,longan nano:正式対応③ UART④ RTC⑤ WDOG⑥ ADC:longan nano のみ

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

5図 3.2.1 TOPPERS BASE PLATFORM(RV)構造図

以下に、レイア構造の概要を示す。
(1)basic driver ハードウェア仕様により API が変わるドライバ層(2)standard driver 拡張ボードの標準化により、API がある程度標準化されているドライバ層(3)GDIC driver 下位の driver を使用して構築する特定のデバイス用 driver(4)TOPPERS BASE PLATFORM で標準化している API 層

PLATFORM(RV)
DeviceBasic
DriverDriverStandard
Drivergdic
api
middlewarehigh driver
File
SystemGraphic UI

ターゲットボード
gpio
rtc
watch doc
adc
(timer)(uart)
spi
i2c
adc

detailstdio

RTOS の機能
RTOS 上に実装
GLCD/SD card
CLCD
(longan-nano のみ)
デバイス結合標準入出力

ui

文字グラフィック表示

対象の講座
なし

注意：Maix シリーズ用のデバイスドライバはサンプル実装です。

3.3 開発環境
TOPPERS BASE PLATFORM(RV)は Windows10 上に MSYS2 をインストールし、GCC コンパイラソ
ースをビルドして開発を行っている。ソースコードを公開しているため、LINEX でも開発可能である。
(1) gcc version 8.2(GNU MCU Eclipse: riscv-none-embed 8.2.0-2.1-20190425-1021)(2) gcc version 8.2(newlib-3.0.0.20180831)

4 Device Driver 仕様
ハードウェア用デバイスドライバの仕様について記載を行う。本 TOPPERS BASE PLATFORM(RV)
では、４種類のデバイスドライバを提供する。Maix シリーズのデバイスハードウェアの正式な仕様書
はない、また、Sapphire SoC は FPGA のためソフトウェアドライバ仕様は記載しない。

4.1 Basic Driver
4.1.1 概要
Basic Driver は、ハードウェアを制御する基本的なドライバ群である。制御は簡単な制御手順であるが、初期化や拡張機能は、SoC によってまちまちの実装が行われており、標準的な API では作成できないものが多い。また、Basic Driver は直接ミドルウェアやアプリから制御を行うより、上位のドライバ
から使用機能として呼び出すケースが多い。逆に Basic Driver は他のドライバの呼び出しは行わない。
Basic Driver はハードウェアの依存性が大きいため、PLATFORM を別の SoC にポーティングする場
合、別の API の実装となる。
UART は、asp カーネルで使用されている。基本的には asp カーネルのドライバを使用する。差分のみを Basic Driver として記載する。タイマーに関しては、FE310-G000 は machine timer しか持たな
い、machine timer が asp カーネルのシステムタイマーとして使用しているので、タイマーの使用はサービス・コールに順ずる。
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL
6

4.1.2 ドライバ一覧
Basic Driver として分類するドライバは以下の４つである。
(1) gpio
汎用ＩＯドライバ(2) rtc
リアルタイム制御ドライバ(3) wdoc
ウォッチドックタイマードライバ(4) uart
シリアルインターフェイスドライバ

4.1.3 GPIO
GPIO は汎用のＩＯを制御するドライバである。GPIO はピン設定を入力または出力に設定し、ピンに対してデータを読み込むまたは書き込みことにより、外部のロジックとのデータ交換を行う機能を持つ。機能的には単純であるが、ピンアサイン、ベースの電圧設定、出力モード設定、割込みの対応等、初期化に関して SoC の設計により、設定仕様がまちまちであり、標準的な初期化手順を作ることが難しい。
FE310-G000 では GPIO ポートはひとつでピン番号は、0 から 31 までの 32 ピンである。GPIO ピン
は IP 用のピンとして設定しているものがあり、すべてのピンを GPIO として使用できるわけではない。

4.1.3.1 データ仕様
GPIO の初期化に用いるデータと構造体について記載する。GPIO の初期化には表 4.1.3.1 のGPIO_Init_t 型を使用する。
番号

項目

型

機能

1
2
3
4
5

mode
pull
otype
oxor
iof

uint32_t
uint32_t
uint32_t
uint32_t
uint32_t

対象のピンアサインの設定モード
出力 Pull-Up/Pull-Down 設定
出力タイプ Push-Pull 設定のみ設定可能
出力 XOR 設定
IOF 選択表 4.1.3.1 GPIO_Init_t 型①

mode
モードはピンアサインの GPIO モードを設定する
定義

GPIO_MODE_INPUTGPIO_MODE_IT_FALLINGGPIO_MODE_IT_RISINGGPIO_MODE_IT_RISING_FALLINGGPIO_MODE_LEVEL_LOW
GPIO_MODE_LEVEL_HIGH
GPIO_MODE_OUTPUT

値

0x00000000
0x10010000
0x10110000
0x10210000
0x10000000
0x10100000
0x00000001

内容

GPIO 入力モード
GPIO 入力フォーリングエッジ割込み
GPIO 入力ライジングエッジ割込み
GPIO 入力両エッジ割込み
GPIO 入力 LOW レベル割込み
GPIO 入力 HIGH レベル割込み
GPIO 出力モード

表 4.1.3.2 mode 設定値② pullpull は GPIO 出力設定。
定義

GPIO_NOPULLGPIO_PULLUP

値

0x00000000
0x00000001

内容

プルアップ無効
プルアップ有効表 4.1.3.3 pull 設定値③ otype
プルアップタイプのみ設定可能
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

7

定義

値

GPIO_OTYPE_PP

0x00000000

内容

プルアップタイプ

表 4.1.3.4 otype 設定値④ oxor
出力データを XOR するか否かの設定
定義

値

GPIO_OUTPUT_NORMALGPIO_OUTPUT_XOR

0x00000000
0x00000001

内容

出力データをそのまま設定
出力データを XOR して設定

表 4.1.3.5 oxor 設定値⑤ iof
IOF を使用するか、否かの設定
定義

値

GPIO_NOIOFGPIO_IOF0GPIO_IOF1

0x00000000
0x00000001
0x00000002

内容

IOF を使用しない：ソフト制御
IOF0 を使用する
IOF1 を使用する

表 4.1.3.6 iof 設定値

4.1.3.2 インターフェイス仕様
GPIO を初期設定するドライバ関数を以下に示す。
関数名

型

引数

機能

備考

gpio_setup

void

uint32_t base
GPIO_Init_t *init
uint32_t pinbase アドレスと pin 番号で指定されたポートを初期化する。

アルタネー
トの設定デ
バイスピン
の初期化の
場合もある

表 4.1.3.6 GPIO 設定関数

4.1.3.3 フローチャート
基本的な GPIO の出力設定のフローチャートを以下に示す。

図 4.1.3.3.1 GPIO の設定フローチャート
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

8

4.1.4 RTC
RTC(Real-time clock)は時刻を管理するハードウェアである。HI-FIVE1 ボードでは RTC 用のクロックは実装されているが、バックアップ用バッテリは実装されていないため電源を落とすと時刻はリセットされる。RTC は時刻管理以外にアラート機能があり、アラート時刻を設定すると割込みにより、アラート通知を受け取ることができる。

4.1.4.1

データ仕様

RTC では UNIX で使用されている時刻管理構造体 tm と共有して時刻データのやり取りを行えるように表 4.2.6.1.1 として構造体名を変えた tm2 構造体を定義する。この構造体は tm 構造体と混在して使用されても定しくデータの受け渡しを行える。
RTC のアラーム動作設定用に割込みからのコールバック関数を用意する。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9

tm_sectm_mintm_hour
tm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdst

int
int
int
int
int
int
int
int
int

秒(0～59)分(1～60)時(0～23)
月の中の日
月
年(1970 を 0 とした年数)
曜日
年の中の日
夏時間：０以外の値

表 4.1.4.1.1 tm2 構造体

4.1.4.2

インターフェイス仕様

RTC を設定するドライバ関数を以下に示す。
関数名

型

引数

機能

rtc_init
rtc_set_time
rtc_get_time
rtc_setalarm

void
ER
ER
ER

RTC の初期化を行う。引数に意味なし
時刻をセットする
時刻を取り出す
アラートをセットする

rtc_handler

void

intptr_exinf
struct tm2 *pt
struct tm2 *pt
struct tm2 *ptm
void *func
void

備考

割込みハンドラ

表 4.1.4.2.1 RTC 設定関数

4.1.4.3

設定手順

初期化は rtc_init 関数を用いて行う。ATT_INI を使用して設定が行えるように引数を用意したが、この引数に意味はない。使用は以下の手順に従う。
① rtc_set_time
時刻の設定を行う。tm2 構造体中に設定に使用するのは以下の６つの項目で他の項目は意味を持たない。
(1) tm_year(2) tm_mon(3) tm_mday(4) tm_hour(5) tm_min(6) tm_sec
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

9

② rtc_get_time
時刻を取り出す。tm2 構造体中に実際に設定される項目は以下の７つの項目である。
他の設定も設定したい場合は mktime 関数を用いて設定を行う必要がある。
(1) tm_year(2) tm_mon(3) tm_mday(4) tm_wday(5) tm_hour(6) tm_min(7) tm_sec③ rtc_setalarm
ptm の時刻と現在時刻の比較を行い、ptm の時刻に達した場合、割込みが発生しコールバック関
数が呼び出される。

4.1.5 WATCH DOG
WATCH DOG はシステムに異常が発生した場合、リセットを行う機能である。システムは WATCH
DOG TIMER を起動し、一定周期でタイマーのリセットを行うことにより WATCH DOG に正常動作を通知する。

4.1.5.1

データ仕様

WATCH DOG はポート番号により選択できる。ドライバ I/F はポート番号を用いて制御を行う。
番号

項目

値

機能

1

WDOG1_PORTID

1

Watch Dog のポート 0 を示す

表 4.1.5.1.1 WATCH DOG ポート番号

4.1.5.2

インターフェイス仕様

WATCH DOG を制御するドライバ関数は以下の通りである。wdog_init でウォッチドックタイマーを起動した場合、リセット以外停止することはできない。
関数名

型

引数

機能

wdog_initER

ID portid
uint16_t wdogtime

wdog_deinit
wdog_resetERER

ID portid
ID portid

指定ポート ID の WATCH DOG ペ
リフェラルを初期化する
wdogtime はタイムアウト時間で秒単位である
停止不可（意味をもたいない）
タイマーのリセットを行う

備考

表 4.1.5.2.1 WATCH DOG ドライバ関数

4.1.6 UART
UART 用のデバイスドライバは asp カーネルで実装済のデバイスドライバを使用しているため、ここでは記載しない。

4.2 Standard Driver
スタンダードドライバは拡張ボード（シールド）の標準化により、ドライバ API がデファクトスタン
ダードとなっているドライバを指す。但し、ペリフェラルの実装は標準化されたドライバ API 以上の機能を持つものが多く、ハードウェアを最大限に利用するのは拡張インターフェイスにて拡張を行う必要
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL
10

がある。

4.2.1 概要
BASE PLATFORM (RV)として、スタンダードドライバとしたのは、以下の SPI ペリフェラルのみである。I2C は GPIO を使用したソフトウェアドライバである。現状は SDA のデータ受信値が不安定なため送信のみ可能となっている。
① SPI
② I2C
スタンダードドライバは、基本的にポート ID を指定してハンドラを取り出しハンドラを用いてペリフ
ェラルを制御する構成を取る。

4.2.2 SPISPI はシリアル・ペリフェラル・インターフェイスの略で、I2C と同様にペリフェラル間の通信規格である。I2C が高速でも 400kbps であるのに比べ SPI は 1Mbps から 20Mbps まで高速転送が可能である。本実装では 8 つの FIFO フレームを使った実装とした。SS(Slave Select または CS)の設定については AUTO モードと、AUTO オフモードが設定可能である。Arduino コネクタ互換用には、AUTO オ
フモードを推奨する。SPI は４本の信号で通信を行う。スレーブが複数ある場合は、SS(Slave Select)
を LOW にしたスレーブに対して通信を行う。そのため、SS 信号はスレーブの数だけ必要となる。また、双方向通信時は MISO と MOSI は同時にデータ通信するので、同時にデータ交換が行われる形となる。
① SCLK
クロック信号② MISO
スレーブからのデータ信号③ MOSI
マスタからのデータ信号④ SS
スレーブのセレクト信号

図 4.2.2.1 SPI 接続図
SPI 通信は、クロックの論理（正と負）、クロックに対するデータ設定タイミングにより４つのモードのデータ・タイミングが定義されている。
① モード０：正パルス、前縁ラッチ、後端シフト② モード１：正パルス、前縁シフト、後端ラッチ③ モード２：負パルス、前縁ラッチ、後端シフト④ モード３：負パルス、前縁シフト、後端ラッチ
図 4.2.3.2 はもっとも一般的なモード０の動作タイミングを示す。

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

11図 4.2.2.2 モード０、正パルス、前縁ラッチ、後端シフトのタイミング図

4.2.2.1 データ仕様
SPI ドライバは初期化用の型として、表 4.2.2.1.1 の SPI コンフィギュレーション型と、ハンドラとして表 4.2.2.1.2 の SPI ハンドラ型を持つ。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11
12
13
14

Direction
DataSize
CLKPolarity
CLKPhase
CSModeProtocolCSDelay
SCKDelay
MinScInActTime
MaxifTime
Prescaler
SignBitsemid
smlockuint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
int
int

SPI 転送データ方向
SPI 転送データサイズ
SPI 転送クロックの極性
SPI クロック位相
SPI CS 設定モード設定

SPI プロトコル設定
SPI CS to SCK delay
SPI SCK to CS delay
SPI Minimun CS Inactive time
SPI Maximum Interface Delay
SPI クロック分周設定
SPI MSB/LSB 設定
通信用セマフォ ID（0 でセマフォなし）
排他制御用セマフォ ID(0 で排他制御なし)

表 4.2.2.1.1 SPI コンフィギュレーション型
semid はセマフォ通信用のセマフォ番号、ゼロで設定なし。このセマフォは割込みとドライバ間の伝達用に使用するため、設定なしの場合、通信遅延が発生する。smlock は、ドライバの排他制御に使用するセマフォ番号を指定する。ゼロの設定で排他制御なしとなる。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11

base
Init

uint32_t
SPI_Init_t

SPI ベースアドレス
SPI コンフィギュレーション型

pTxBuffPtr
TxXferSize
TxXferCount
pRxBuffPtr
RxXferSize
RxXferCount
xmode
xfercallback

送信データ領域へのポインタ
要求送信サイズ
送信済みサイズ
受信データ領域へのポインタ
受信要求サイズ
受信済みサイズ
転送モード
転送終了時コールバック関数

12statusuint8_t *uint16_t
uint16_t
uint8_t *uint16_t
uint16_t
uint32_t
void(*)(SPI_Handle_t *)volatile uint32_t

送信用 DMA ハンドラ

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

12

13

ErrorCodevolatile uint32_t

SPI エラーコード

表 4.2.2.1.2 SPI ハンドラ型① Direction
SPI 通信方向設定のモード設定。
定義

値

SPI_DIRECTION_2LINESSPI_DIRECTION_1LINE

0x00000000
SPI_FMT_DIR_TX

内容

２ラインモード
片方向モード

表 4.2.2.1.3 Direction 設定値② DataSize
SPI のフレーム中のビットサイズを指定する。
③ CLKPolarity
SPI 転送クロック極性定義。
定義

SPI_POLARITY_LOW
SPI_POLARITY_HIGH

値0x00000000
SPI_CLK_POL

内容

極性 LOW
極性 HIGH

表 4.2.2.1.4 CLKPolarity 設定値④ CLKPhase
SPI 転送クロック位相定義。
定義

SPI_PHASE_1EDGE
SPI_PHASE_2EDGE

値

0x00000000
SPI_CLK_PHA

内容

前縁ラッチ
後縁ラッチ

表 4.2.2.1.5 CLKPhase 設定値⑤ CSMode
SPI の CS 設定モードを設定する。
定義

SPI_CSM_AUTO
SPI_CSM_HOLDSPI_CSM_OFF

値

SPI_CSMODE_AUTO
SPI_CSMODE_HOLDSPI_CSMODE_OFF

内容

CS 自動制御
CS をホールドする
CS 制御を行わない

表 4.2.2.1.6 XferMode 設定値⑥ Protocol
本 SPI はクワッド転送が可能なためプロトコルを設定する。
定義

SPI_PROTOCOL_4LINESSPI_PROTOCOL_2LINESSPI_PROTOCOL_1LINE

値

SPI_PROTO_Q
SPI_PROTO_D
SPI_PROTO_S

内容

4 ライン転送
2 ライン転送
1 ライン転送

表 4.2.2.1.7 Protocol 設定値⑦ CSDelay
AUTO モードの場合、CS から SCLK までのデレィをクロックで設定する。レンジは 0 から 255
まで。
⑧ SCKDelay
AUTO モードの場合、SCLK から CS オフまでデレィをクロックで設定する。レンジは 0 から 255
まで。
⑨ MinScInActTime
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

13

AUTO モードの場合、CS オフから CS オンまでの最小遅延クロックを指定する。レンジは 0 から 255 まで。
⑩ MaxifTime
AUTO モード以外の設定で、CS をオフしなかった場合の２つのフレーム間の遅延クロックを設定する。レンジは 0 から 255 まで。
⑪ Prescaler
SCLK の周波数をシステムクロックの分周設定で指定する。
⑫ SignBit
SPI データ MSB/LSB 設定値。
定義

値

SPI_DATA_MSB
SPI_DATA_LSB

内容

SPI_FMT_ENDIAN_MSB
SPI_FMT_ENDIAN_LSB

転送データ MSB
転送データ LSB

表 4.2.2.1.8 SignBit 設定値

4.2.2.2 インターフェイス仕様
AUTO モードオフの場合、SPI を制御するドライバ関数は以下の通りである。SS の設定は、GPIOを使って別途制御しなければならない。TOPPERS BASE PLATFORM(ST)の SPI 設定は、AUTO モー
ドオフなので、SPI 用のサンプルプログラムは、この設定になっている。
関数名

型

引数

機能

spi_init

SPI_Handle_t*

ID portid
SPI_Init_t *spii

spi_deinit
spi_reset
spi_transmit

ER
ER
ER

spi_receiveER

spi_transrecv

ER

spi_isrvoid

SPI_Handle_t* hspi
SPI_Handle_t* hspi
SPI_Handle_t* hspi
uint32_t slave_selectuint8_t *tx_buf
uint32_t len
SPI_Handle_t* hspi
uint32_t slave_selectuint8_t *rx_buf
uint32_t len
SPI_Handle_t* hspi
uint32_t slave_selectuint8_t *tx_buf
uint8_t *rx_buf
uint32_t len
intptr_t exinf

指定ポート ID の SPI ペリフェラルを初期化し、ハンドラへのポインタを返す
SPI を未使用状態に戻す
SPI をリセットする
SPI 送信を行う。転送終了まで関数内で待ちとなる。

備考

SPI 受信を行う。転送終了まで関数内で待ちとなる。
SPI 送受信を行う。転送終了まで関数内で待ちとなる。

SPI 割込みサービスルーチン

表 4.2.2.2.1 SPI ドライバ関数

4.2.2.3 フローチャート
SPI ドライバは、FIFO による通信を指定するように設計しています。SPI の初期設定は、spi_init
関数を指定して対象ポート番号と初期設定したコンフィギュレーション構造体のポインタを指定します。
ペリフェラルには受信のみ、送信のみ、送受信があり、それぞれの転送関数を用意しています。転送
待ちは各関数内で行われます。実際はほとんどの場合、spi_transsrev ですべての転送を行えます。転送の終了待ちを行う場合、spi_wait 関数を呼び出せば関数内で終了待ちを行います。SPI ハンドラ内の
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

14

ErrorCode は表 4.2.2.3.1 のように制御中に発生したエラーを格納する。
定義

SPI_ERROR_NONE
SPI_ERROR_TIMEOUT

値

0x00000000
0x00000020

内容

エラーなし
ステート変更タイムアウト

表 4.2.2.3.1 ErrorCode の内容
図 4.2.2.3.1 に SPI の初期化フローチャートを記載します。SPI 割込み、通信と排他制御用セマフォの静的 API を用いて登録する。

図 4.2.2.3.1 SPI 初期化フローチャート
図 4.2.2.3.2 に SPI の送受信のフローチャートを記載します。複数のスレーブの対応を行う場合は、
SS の設定を行わなければならない。送受信の処理は、送信のみの通信や受信のみの通信であっても、
spi_tranrecv 関数で処理を代用できる。送信のみの通信でこの関数を使用した場合、受信データとして0xFF が受信され、受信のみの通信でこの関数を代用した場合、送信データとして 0xFF をパディング
した方が安全である。
送受信の場合、送信と同期して受信データが受信領域にセットされる。転送待ちは関数内で行う。戻
り値が E_OK 以外はエラーが発生している。
エラーの詳細は SPI ハンドラの errorcode にセットされる。

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

15

SPI送受信送受信領域をメモリ上に確保し送信データをセット

E_OK以外エラー終了

spi_transrecv関数
呼び出しで転送スタート

送受信領域の確保、送信デー
タ設定

リターン値

リターン値でエラー判定

E_OK
正常終了

図 4.2.2.3.2 SPI 送受信フローチャート

4.2.3 I2C
I2C（アイ・スクエア・シー）は周辺機との通信用にフィリップス社が開発した低速なシリアルバス
である。メインボード側がマスタ、周辺機側がスレーブとなり、スレーブアドレスをキーにデータの送受信を行う。基本的な通信速度は 100kbit/sec の通常モードと 10kbit/sec の低速モードがあるが、基本
以上、または、基本以下の速度で通信を行う場合も多い。スレーブアドレスは通常は７ビットであるが、拡張として１０ビットのスレーブアドレスも通信可能となっている。
I2C は SCL（クロック）と SDA（データ）の２つの線で通信を行う、周辺機が複数ある場合はこの２つの線を共有する形となる。マスタ側が常に制御権を持っており基本のクロック SCL はマスタ側が設定する。但し、スレーブ側で待ちが必要な場合は、スレーブ側 SCL 信号を Low に落として待ち状態を作る。送信を行う場合は、送信側がクロックに合わせて SDA 上にデータ信号を乗せる。最後の８ビ
ット目で受信側が SDA を Low にした場合は ACK となり、Hi のままならば NACK となる。スレーブ
アドレス 7bit の一般的なデータ転送を図 4.2.3.1 に示す。

図 4.2.3.1 スレーブアドレス 7bit のデータ転送

4.2.3.1 データ仕様
I2C ドライバは初期化用の型として、表 4.2.3.1.1 の I2C コンフィギュレーション型と、ハンドラと
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

16

して表 4.2.3.1.2 の I2C ハンドラ型を持つ。SoC に I2C 用の IP はないため、本ドライバは GPIO のソフト制御で実装している。SDA のデータ入力が不定のため、送信のみ実行可能となっている。
番号

項目

型

機能

1

smlockint

排他制御用セマフォ ID(0 で排他制御なし)

表 4.2.3.1.1 I2C コンフィギュレーション型
本ドライバは SCL と SDA に GPIO を指定してソフトウェア制御で I2C 制御を行う設定となっているため、コンフュギュレーション型は、ロック制御を行うセマフォ以外の設定はない。smlock は、ドライバの排他制御に使用するセマフォ番号を指定する。ゼロの設定で排他制御なしとなる。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10

base
Init
portidclkCount
sclpinsdapingpiopull
gpioiof1
sdaoe
ErrorCodeuint32_t
I2C_Init_t
uint32_t
uint32_t
uint16_t
uint16_t
uint32_t
uint32_t
uint32_t
volatile
uint32_t

I2C ベースアドレス
I2C コンフィギュレーション型
I2C ポート ID
ナノ秒単位のクロック待ち時間
SCL のピン番号
SDA のピン番号
GPIO の PULLUP 設定保存領域
GPIO の IOF 設定保存領域
現在の SDA のディレクション設定
I2C エラーコード(エラーは設定されない)

表 4.2.3.1.2 I2C ハンドラ型

4.2.3.2 インターフェイス仕様
I2C を制御するドライバ関数は以下の通りである。
関数名

型

引数

機能

i2c_init

I2C_Handler*

ID portid
I2C_Init_t *ii2ci2c_deinit
i2c_memwriteERER

i2c_memreadER

I2C_Handler* hi2c
I2C_Handler* hi2c
uint16_t DevAddr
uint16_t MemAddr
uint16_t MemAddSize
uint8_t *pData
uint16_t Size
I2C_Handler* hi2c
uint16_t DevAddr
uint16_t MemAddr
uint16_t MemAddSize
uint8_t *pData
uint16_t Size

指定ポート ID の I2C ペリフェラルを初期化し、ハンドラへのポインタを返す
I2C を未使用状態に戻す
マスターモードのデータ送信、
MemAddSize をゼロにするとアドレス設定を行わない

備考

マスターモードのデータ受信、
MemAddSize をゼロにするとアドレス設定を行わない

表 4.2.3.2.1 I2C ドライバ関数

4.2.3.3 フローチャート
I2C の初期設定は、i2c_init 関数を指定して対象ポート番号と初期設定したコンフィギュレーション
構造体のポインタを指定します。本実装ではマスタ機能のみの実装となっています。基本的に、このドライバではタスク上でデータの送受信を行います。また、スタート、ストップ、ACK 処理はソフトウ
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

17

ェア処理にて処理しますので、特別にデータを管理する項目を用意する必要はありません。
図 4.2.3.3.1 に初期化のフローチャートを示します。i2c_init で取得した I2C ハンドラへのポインタは
以後、I2C の制御用に使用する。

図 4.2.3.3.1 初期化フローチャート
図 4.2.3.3.2 にマスタのデータ送信のフローチャート、図 4.2.3.3.3 に受信のフローチャートを示します。送信ならば i2c_memwrite、受信ならば i2c_memread 関数を呼び出せば指定サイズの送受信が行えます。送受信の結果は、関数の戻り値確認できます。E_OK 以外の戻り値の場合エラー処理を行ってください。ペリフェラルには、データアドレスを持つもの（EEPROM や RTC など）があり、送受信のとき、データアドレスの設定を行う必要があります。この場合、MemAddr でデータアドレス、
MemAddSize でデータアドレスのバイトサイズを指定します。データアドレスの設定を行わない場合は、
MemAddrSize をゼロして、送受信関数を呼び出します。
I2C ペリフェラルを終了させたい場合は、引数として I2C ハンドラへのポインタを指定して i2c_deinit関数を呼び出せば、ペリフェラルとハンドラは未使用状態に戻ります。ErrorCode はアプリケーションのプログラム互換用に項目を用意しており、エラーコードは設定されません。

定義

値

I2C_ERROR_NONE

0x00000000

内容

エラーなし

表 4.2.3.3.1 ErrorCode の内容

I2C送信

E_OK以外
エラー終了

送信データをメモリ上に用意

送信データをメモリ上に用意する

i2c_memwrite関数
にてデータ送信

スレーブアドレスとデータ領域
へのポインタとサイズ、必要ならばデータアドレスを設定して
関数コール

リターン値

リターン値でエラー判定

E_OK
正常終了

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

18

図 4.2.3.3.2 I2C 送信フローチャート
I2C受信

受信データをメモリ上に確保

受信データ領域をメモリ上に用意する

i2c_memread関数にてデータ受信スレーブアドレスとデータ領域
へのポインタとサイズ、必要ならばデータアドレスを設定して
関数コール

リターン値

リターン値でエラー判定

E_OK以外
エラー終了

E_OK
正常終了

図 4.2.3.3.3 I2C 受信フローチャート

5 タスクモニタ
本章では、標準入出力機能付きのタスクモニタの仕様に関して記載する。

5.1 概要タスクモニタはタスク上で動作し、デバッグ用のコマンドを用いてプラットフォーム部の機能確認やテストを行う。デバックコマンドは設定によりコマンド追加が可能である。これによりアプリケーショ
ンでも、アプリケーション用デバッグコマンドを追加することができる。タスクモニタの入出力は標準入出力に対して行う、デフォルトの標準入出力は FMP カーネルにて実装されているシリアルデバイス
であるが、入出力の切り替えにより、telnet の端末等に切り替えが可能である。

5.2 標準入出力
タスクモニタの入出力は標準入出力に対して行う。標準入出力は FILE 型を定義し、入力、出力、エラーの３つの FILE へのポインタを以下の名称で定義することで実現する。
① stdin② stdout③ stderr
FILE 型は表 5.2.1 の構成となる。FILE 型は fread や fwrite でファイルにアクセスする場合のハンドラとして使用される。
番号

項目

型

機能

1
2
3
4
5
6
7
8

_flags_file_func_in_func_ins_func_out_func_outs_func_flush
_dev

int
int
int
int
void
int
int
void *

ファイル用フラグ
ファイル番号
1byte 入力コールバック関数
n bytes 入力コールバック関数
1byte 出力コールバック関数
n bytes 出力コールバック関数
データフラッシュコールバック関数
デバイス構造体へのポインタ

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

19

表 5.2.1 FILE 型
標準入出力では、以下の関数をサポートする。
関数名

型

引数

機能

fgetc
fgets

int
int

ファイルから 1byte 読み込みファイルから文字列読み込み

fputc

int

fputs

int

putcharputs
printf

int
int
int

sprintf

int

scanf

int

sscanfint

fflushfread

int
size_tfwritesize_tfprintf

int

putc

int

FILE *fp
char *c
FILE *fp
int c
FILE *fp
const char *str
FILE *
int c
const char *str
const char const…
char *cconst char const…
const char const…
char *cconst char const…
FILE *fp
void *buf
size_t len
size_t num
FILE *fp
const void *buf
size_t len
size_t num
FILE *fp
FILE *fp
const char *const…
int c
FILE *fp

getchar
getc

int
int

FILE *fp

備考

ファイルに 1byte 書き込みファイルに文字列書き込み
1byte 書き込み
文字列を標準出力に書き込み
標準出力へのプリント
バッファへプリント

標準入力からスキャン
スキャンしバッファにセット

ファイルのフラッシュ
ファイルからデータ読み込み

結果は項目
数
結果は項目
数
結果は項目
数
結果は項目
数

結果は num数

ファイルへデータ書き込み

結果は num数

ファイルへプリント

結果は項目数

fputc と同様
標準入力から 1byte 読み込み
fgetc と同様

表 5.2.2 サポートしている標準入出力関数

5.3 標準デバッグコマンド
タスクモニタは、標準のデバッグコマンドとして以下のコマンドをサポートする。タスクモニタのデバッグコマンドは第１（カテゴリ）、第２の２つのコマンドで機能を指定する形をとる。また、コマンドを設定する場合、最初の１文字以降を省略可能である。省略名で同一のコマンドがある場合、はじめにディスパッチするコマンドが選択される。
第１コマンド第２コマンド

引数

機能

DISPLAY

BYTE
HALF
WORD
TASK
REGISTER
BYTE
HALF

start address[hex]start address[hex]start address[hex]set address[hex]set address[hex]バイト単位でメモリ DUMP する
２バイト単位でメモリ DUMP する
４バイト単位でメモリ DUMP する
タスクの状態を表示する
CPU レジスタの内容を表示する
バイト単位で、メモリ内容を変更する
２バイト単位で、メモリ内容を変更する

SET

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

20

TASK

LOG

HELP

WORD
set address[hex]COMMAND
mode[1 or 2]
SERIAL
portnoTASKtaskidACTIVATETERMINATE SUSPENDRESUMERELEASE
WAKEUPPRIORITY
priority
MODE[logmask][lowmask]
TASK[time]
PORT[no][logno][portaddress]
Arg1
表 5.3.1 標準デバッグコマンド

４バイト単位で、メモリ内容を変更する
デフォルト 2、1 の場合最初の 1 文字のみ比較
標準入出力のシリアルポート番号を変更
TASK コマンドの対象タスクを指定する
タスクの起動要求(act_tsk)
タスクを終了する(ter_tsk)
タスクの待ち要求(sus_tsk)
タスクの待ち再開(rsm_tsk)
タスクの待ち解除(rel_wai)
タスクの起床(wup_tsk)
タスクの優先度を変更する
syslog の表示モードを変更する
タスクの実行状態表示(指定が必要)
ポートアクセスログ
コマンドヘルプ

5.4 デバッグコマンド拡張
タスクモニタは、コマンドを拡張する機能を持つ。コマンドの拡張は第１（カテゴリ）コマンド単位で追加される。

5.4.1 データ仕様
コマンド追加には２つの型を使用する。COMMAND_INFO 型は第２コマンドの設定を行い、COMMAND_LINK 型 は、 複 数 の COMMAND_INFO 型を ま と め て 登録 カ テ ゴ リ を 指 定す る。
COMMAND_LINK 型 の pcnext は デ バ ッ グ コ マ ン ド の リ ン ク に 使 用 す る 、 そ の た め 、COMMAND_LINK は値付きの変数で作成しなければならない。
番号

項目

型

機能

1
2

commandfunc

const char *int_t (*)()

第２コマンド名
第２コマンド関数へのポインタ

表 5.4.1.1 COMMAND_INFO 型
番号

項目

型

機能

1
2
3
4
5
6

pcnextnum_command
commandfunc
help
pcinfoCOMMAND_LINK *int
const char *int_t (*)()
const char *COMMAND_INFO *COMMAND_LINK のチェーン用
第２コマンドの数
第１（カテゴリ）コマンド名
カテゴリコマンドの実行関数（通常は NULL）
カテゴリの HELP メッセージ
COMMAND_INFO の配列へのポインタ

表 5.4.1.2 COMMAND_LINK 型

5.4.2 インターフェイス仕様
デバッグコマンドの追加は、COMMAND_LINK のインスタンスへのポインタを引数に以下の関数コールにて追加される。
関数名

setup_command

型

引数

機能

int

COMMAND_LINK *コマンドカテゴリを追加する

備考

表 5.4.2.1 デバッグコマンド追加定関数

6 API 層
API 層はアプリケーションに対して標準的なインターフェイスを提供する層である。この層はハード
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

21

ウェアや RTOS の仕様に影響されず、一意のインターフェイスを提供することにより、アプリケーショ
ンを汎用的に作成することができる。また、C 言語の規約や POSIX のように汎用的な API に準拠すれ
ば、LINUX 等のオープンソースのライブラリを未修整で使用することができる。

6.1 概要TOPPERS BASE PLATFORM でサポートするストレージ機能で使用するファイルシステムと時刻の管理を行う時間管理の２つの API について説明を行う。
FE310-G000 環境では、使用可能な RAM サイズが小さくファイルシステムは動作しない。

6.2 ファイルシステム
ファイルシステムは TOPPERS BASE PLATFORM で提供するストレージ機能である。ファイルシ
ステムは以下の３つのモジュールで構成される。
① ファイルライブラリ
Ｃ言語標準のファイル関数をサポートするライブラリ② ストレージデバイスマネージャー
ストレージデバイスの管理モジュール③ FATFs
赤松武史氏が開発し、フリーソフトウェアとして公開されている、FAT 仕様準拠のローカルファイルシステム
TOPPERS BASE PLATFORM アプリケーション、ハードウェアを除く部分を供給している。
アプリケーション
C言語標準ファイル関数
STDIOインターフェイス

ファイルライブラリ①
FATFsファイル関数

FATFs③
FATFsドライバ
ストレージデバイスマネージャ(SDM)②

SDMデバイスドライバ関数構造
体（StorgaeDeviceFunc_t）

MCI部
SDMMC
ドライバ

USB
MIDDLE
GDIC

SDMデバイスドライバ関数構造
体（StorgaeDeviceFunc_t）

GDIC
SPI

SDMMC/SPI/USB等ドライバ

OTG
SDカード(MMC/SPI)
USB-MMC

図 6.2.1 ファイルシステムのレイア構造

6.2.1 ファイルライブラリ
ファイルライブラリは標準入出力関数に合わせて、表 6.2.1.1 関数を提供する。これらはＣ言語上のファイル関数とファイル関係の POSIX 仕様であるが、以下の規定に従って関数の選択を行った。
・Ｃ言語標準のもの（C89,C99）
・POSIX.1-2001 でよく使われるもの
・LINUX 固有であるが、通常使用に必要なもの
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

22

関数名

型

引数

機能

備考

open

int

close
fstat

int
int
off_t

ファイルのオープン、
ファイルディスクリプタを返す
ファイルのクローズ
ファイルの状態を取り出す。
読み
出しサイズを返す
ファイルの読み書き位置を設定する。

エラー時-1 を返す
成功０、失敗-1-1 でエラー

lseek
read

long

write

long

mmap

void *

mumap

int

fopen

FILE*

fclose
fseek

int
int

stat

int

lstat

int

access

int

mkdir

int

rmdir

int

const char *pathname
int flags
int fdint fdstruct stat *buf
int fdoff_t offset
int whence
int fdvoid *buf
long countint fdconst void *buf
long countvoid *start
size_t length
int prot
int flags
int fdoff_t offset
void *start
size_t length
const char *nameconst char *attr
FILE *fp
FILE *fp
long offset
int whence
const char *namestruct stat *buf
const char *namestruct stat *buf
const char *nameint mode
const char *namemode_t mode
const char *name

chmod

int

ファイルモードの変更

removeunlinkrename

int
int
int

opendirvoid *

const char *namemode_t mode
const char *nameconst char *nameconst char *oldpath
const char *newpath
const char *path

closedirint

void *dir

readdir

struct dirent*

void *dirstatfsint

const char *path-1 でエラー

ファイルからデータを読み出す。 0 で終端、-1 で読み出しサイズを返す。
エラー
ファイルにデータを書き込む。
書
き込みサイズを返す。

-1 でエラー

ファイルをメモリ上に配置する

一部ファイルシステムのみサポート

mmap の解除
ファイルオープン
ファイルクローズファイルの読み書き位置を設定する
ファイルの状態の取出し

成功０、失敗-1

ファイルの状態の取出し

成功０、失敗-1

ファイルの状態の取出し

成功時 0、その他は-1
成功時 0、その他は-1
成功時 0、その他は-1
成功０、失敗-1

ディレクトリの作成
ディレクトリの削除

ファイル削除ファイル削除ファイル名の変更

成功０、失敗-1

path に対応したディレクトリス
トリームをオープンし、ストリー
ムのポインタを返す。
ディレクトリストリームのクローズ
順番にディレクトリから dirent
構造体を読み、dirp で指されたバッファに格納する。
マウントされたファイルシステ

エラー時 NULLTOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

成功０、失敗-1

成功０、失敗-1
POSIX とは I/F
仕様が異なる
成功０、失敗-1

23

struct statfs2*stat

ムについての情報を返す。

表 6.2.1.1 ファイルライブラリ関数

6.2.2 Storage Device Manager
Storage Device Manager は、ストレージデバイスとその下で実行される複数のローカルファイルシ
ステムを管理するモジュールである。

6.2.2.1

データ仕様

Storage Device Manager は以下の４つの型で構成される。最初の２つは関数テーブルであり、表
6.2.2.1.1 の StorageDeviceFunc_t はローカルファイルシステムのデバイスを複数のストレージに対応させるために、関数テーブル化に用いるデバイスファンクションテーブルの型である。実際使用しているローカルファイルシステムが FATFs であるため、FATFs のデバイス I/F の関数テーブルとなっている。表 6.2.2.1.2 の StorageDeviceFileFunc_t 型は、ファイルライブラリを作成するために、ローカル
ファイルシステムのファイル関数をテーブル化するための型である。
番号

項目

型

機能

1
2
3
4
5
6

_sdev_sens_sdev_diskinit_sdev_diskstatus_sdev_diskread_sdev_diskwrite_sdev_diskioctl

int (*)()
int (*)()
int(*)()
int(*)()
int(*)()
int(*)()

デバイスセンス関数
デバイスの初期化関数
デバイスの状態取出し関数
デバイスブロックリード関数
デバイスブロックライト関数
デバイス IOCTL 関数

表 6.2.2.1.1 StroageDeviceFunc_t 型
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

_sdevff_opendir_sdevff_closedir_sdevff_readdir_sdevff_mkdir_sdevff_rmdir_sdevff_unlink_sdevff_rename_sdevff_chmod_sdevff_stat_sdevff_statfs_sdevff_open_sdevff_close_sdevff_fstat_sdevff_lseek_sdevff_read_sdevff_write_sdevff_mmap

void *(*)()
int (*)()
int (*)()
int (*)()
int (*)()
int (*)()
int (*)()
int (*)()
int (*)()
int (*)()
int (*)()
int (*)()
int (*)()
off_t (*)()
long (*)()
long (*)()
void *(*)()

opendir 関数
closedir 関数
readdir 関数
mkdir 関数
rmdir 関数
unlink 関数
rename 関数
chmod 関数stat 関数
statfs 関数
open 関数
close 関数
fstat 関数
lseek 関数read 関数write 関数mmap 関数

表 6.2.2.1.2 StorageDeviceFunc_t 型
あとの２つはストレージを管理する型で、表 6.2.2.1.3 StorageDevice_t 型はストレージデバイス自体の情報管理用の型で、表 6.2.2.1.4 StorageDeviceHead_t 型は StorageDevice_t 型のインスタンスを管理するヘッダ部である。表 6.2.2.1.5 は StorageDevice_t 型の_sdev_attribute のビット指定値を示す。
SDEV_INSERTCHK がオンになっていないデバイスでは、メディアの挿抜チェックを行わない。この場合、初期化時のメディアの状態でメディアの有無を決定する。
番号

項目

型

機能

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

24

1
2
3
4
5
6
7
8
9
10
11

_sdev_attribute_sdev_devno_sdev_port_sdev_maxsec_sdev_secsize_sdev_instimer_sdev_inswait_sdev_notice_sdev_local[4]pdevf
pdevffuint16_t
uint8_tuint8_tuint32_t
uint32_t
uint16_t
uint16_t
void (*)()
void *
StorageDeviceFunc_t
StorageDeviceFileFunc_t*

デバイスの状態
デバイス番号
デバイス種別デバイスの最大セクタ数
デバイスのセクタサイズ
挿入タイマー
挿入時待ち時間
検知コールバック関数
ローカルエリア
デバイス関数テーブル
ファイル関数テーブル

表 6.2.2.1.3 StroageDevice_t 型
番号

項目

型

機能

1
2
3
4
5

_num_activedev_sdev_active_default_device_get_datetime_psd

uint16_t
uint8_tuint8_tuint32_t (*)()
StorageDevice_t *登録済ストレージデバイスの数
デバイスマネージャの有効無効
デフォルトデバイス番号
時刻取出し関数ストレージデバイス配列

表 6.2.2.1.4 StroageDeviceHead_t 型
定義

値

SDEV_ACTIVE
SDEV_INSERTCHKSDEV_CHKREMOVE
SDEV_ONEEXIT
SDEV_EMPLOY
SDEV_ERROR
SDEV_DEVNOTUSE
SDEV_NOTUSE(1<<15)(1<<14)(1<<13)(1<<12)(1<<8)(1<<7)(1<<0)
255

内容

デバイスがアクティブの状態
挿入・排出の設定あり
排出検査を行う
一度以上排出があった
デバイス動作中
デバイスエラー
デバイス使用不可
使用不可のビット定義

表 6.2.2.1.5 _sdev_attribute 設定値

6.2.2.2

インターフェイス仕様

表 6.2.2.2.1 はストレージデバイスマネージャーで使用する関数である。sdev_init 関数にてストレージデ
バイスマネージャーは有効となり、sdev_terminate 関数で無効となる。この間で、ストレージデバイスの管理を行う。まず、SDMSetupDevice 関数でストレージデバイスの登録を行う。デバイス番号を指定して、この関数を呼び出すと、ppsdev にストレージデバイス(StoregeDevice_t)がセットされて戻る。使用者は、戻されたストレージデバイスに以下の属性等をセットする。
① デバイス関数テーブル：デバイスドライバテーブル② ファイル管理テーブル：ローカルファイルシステムに対応したファイル関数テーブル③ 属性：挿抜処理の有無④ ローカルデータ：下位のデバイス等の情報を_sdev_local に設定する

ストレージデバイスに挿抜検知は SDMSense_task で行うが、デバイスに挿抜検知がない場合は、タスクレベルで検知を行う必要はない。この場合、SDEV_SENSE_ONETIME をコンパイルスイッチで定義してビルドすれば関数として設定され、デバイスの登録後、SDMSense_task(0)を関数コールすれば、メディアの有り無し処理を行う。SDMSense_task では、センス関数として psdev->pdevf->_sdevf_sense にてメディアのセンスを行うため、この関数を設定しておく必要がある。

SDMSense_task を使用しない場合は、SDMEmploy 関数を使って直接メディアの有無を設定することができる。
関数名

型

引数

機能

sdev_init

void

intptr_t exinf

ストレージデバイスマネージ

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

備考

25

sdev_terminate

void

SDMSetupDevice

ER

SDMDeviceNo

ER_ID

SDMGetStorageDevice

Storage
Device_t*

int devno

SDMEmployER

SDMSence_task

void

StorageDevice_t *psdev
bool_t sw
intptr_t exinf

int16_t devno
StorageDevice_t **ppsdev
const char **ppathname

ャーを初期化するストレージデバイスマネージ
ャーを終了する
指定のデバイスを追加する
パス名からデバイス番号を取り出す。パス名のデバイス名はスキップする
デバイス番号からストレージ
デバイスへのポインタを取り出す
デバイスの動作中(true)、停止中(false)を設定する
デバイスセンスタスク（関数の場合あり）

表 6.2.2.2.1 ストレージデバイスマネージャー関数
定義

内容

SDEV_SENSE_ONETIMENUM_STORAGEDEVICE
DEAFULT_DEVNO

SDMSense_task を関数として使用
ストレージデバイスの数(デフォルトは 4)
デフォルトのデバイス番号(通常は 0)

表 6.2.2.2.2 コンパイルスイッチ設定値

6.2.3 FatFs
PLATFORM V1.X では、FAT12,16,32 用のローカルファイルシステムとして FatFs R0.07a を RTOS対応のため一部修正して使用している。また、FatFs のデバイスドライバ(diskio.c)に関しては、複数のストレージに対応可能なようにデバイスファンクションテーブルを呼び出す形で改造を行っている。

6.3 時間管理
RTC デバイスが有効な場合、時間管理関数が有効となる。時間管理では、２つの型を用いて時刻の管理を行う。

6.3.1 データ仕様
表 6.3.1.1 の tm(tm2)構造体は時刻の管理を行う構造体である。tm 構造体はライブラリの time.h 中に定義されている時刻用構造体と同一のものである。tm2 は tm と同一の構造体で、standard device
でローカルに定義しているものである。RTC デバイスの時刻処理は tm2 構造体を使用する。もうひと
つが types.h 等で定義されている time_t 型で 1970 年 1 月 1 日からの経過時間を秒で表す。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9

tm_sectm_mintm_hour
tm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdst

int
int
int
int
int
int
int
int
int

秒(0～59)分(0～59)時(0～23)
月中の日(1～31)
月(1～12)
年：西暦、但し 0 は 1970 年
週中の日(0～6)
年中の日(1～366)

表 6.2.1.1 tm 構造体
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

26

6.3.2 インターフェイス仕様
tm 構造体と time_t 型との変換する関数として表 6.3.2.1 に関数を用意する。
関数名

型

引数

機能

備考

mktimegmtime_r

time_tstruct tm *struct tm *ptm
const time_t *pt
struct tm *ptm

tm 構造体を time_t に変換する
time_t を tm 構造体に変換する

表 6.3.2.1 時刻管理関数

6.4 USB ミドルウェア
USB ミドルウェアとして、TOPPERS USB MIDDLEWARE を対応する。これは USB OTG デバイ
ス用の USB ホスト、デバイス機能、USB デバイスに対して USB デバイス機能を提供する。内容は、
TOPPERS BASE PLATFORM(ST)を参照してください。

6.5 UI ミドルウェア
UI ミドルウェアとして、グラフィック LCD に対して、図形描画、文字描画を行うインターフェイス
を追加する。図形描画の API は GDIC/adafuit_st7735 の描画関数を使用する。文字描画は、TOPPERSECHONET WG で作成した東雲フォントの文字環境に対応できるように設計した。

6.5.1 UI ディレクトリ
UI ディレクトリ以下に東雲フォント環境を用意する。UI 機能を取り込むには Makefile のミドルウ
ェアの設定に以下のインクルードを行えばよい。
include $(SRCDIR)/ui/snfont_disp/Makefile.config

フォント

1 バイトフォント高さ

漢字フォント高さ

備考

東雲フォント

9,12,1612,16

漢 字 フ ォ ント は フ ァ イ
ルで提供

表 6.5.1.1 UI ディレクトリ
東雲フォントの漢字ビットマップデータは以下のヘッダを持つ、ファイルといて参照する。
以下に漢字フォントビットマップファイルのヘッダを示す。数値はリトルエンディアンとなる。
番号

項目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Magic
Name
Fsize
Csize
Isize
off_cnv_table1
siz_cnv_table1
off_cnv_table2
siz_cnv_table2
off_cnv_table3
siz_cnv_table3
off_2byte_font
siz_2byte_font
off_3byte_font
siz_3byte_font

0
4
36
40
44
48
52
56
60
64
68
72
76
80
84

型

機能

char [4]char [32]unsigned int
unsigned int
unsigned int
unsigned int
unsigned int
unsigned int
unsigned int
unsigned int
unsigned int
unsigned int
unsigned int
unsigned int
unsigned int“FONT”
フォント名
ファイルサイズ
ビットマップデータのコード部のバイト数
ビットマップデータのイメージ部のバイト数
UTF-8N 2 バイトコード検索テーブルへのオフセット
UTF-8N 2 バイトコード検索テーブルへのコード数
UTF-8N 3-1 バイトコード検索テーブルへのオフセット
UTF-8N 3-1 バイトコード検索テーブルへのコード数
UTF-8N 3-2 バイトコード検索テーブルへのオフセット
UTF-8N 3-2 バイトコード検索テーブルへのコード数
UTF-8N 2 バイトコード＋イメージへのオフセット
UTF-8N 2 バイトコード＋イメージのアイテム数
UTF-8N 3 バイトコード＋イメージへのオフセット
UTF-8N 3 バイトコード＋イメージのアイテム数

表 6.5.1.2 東雲フォントファイルのヘッダ部構造体
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

27

6.6 RTOS 隠蔽機能
pdic ディレクトリの直下に base_platform.h インクルード ファ イルを置く、このファイルは
TOPPERS BASE PLATFORM 内の以下のモジュールから参照される。このファイル内に RTOS との
API のマクロ化定義を行い。マクロ定義を書き換えることにより、種々の RTOS の API に対応することができる。このマクロを参照するディレクトリは 7.1 共通部に記載。
マクロの記載は一種と二種があり、以下の通り。
ASP/JSP での記載

ASP3 での記載

DELAY_TASKSLEEP_TASKTIME_SLEEP_TASKWAKEUP_TASKWAIT_SEMAPHORE
TIME_WAIT_SEMAPHORE
SIGNAL_SEMAPHORE
INTERRUPT_SIGNAL_SEMAPHORE
LOCK_CPUUNLOCK_CPU
ENABLE_INTERRUPTDISABLE_INTERRUPT
表 6.6.1 一種 RTOS マクロ定義

dly_tsk
slp_tsktslp_tsk
wup_tsk
wai_sem
twai_sem
sig_semisig_sem
loc_sem
unl_sem
ena_int
dis_int

DELAY_TASK(t)ASP に同じ
tslp_tsk(t)ASP に同じ
ASP に同じ

dly_tsk((t)*1000U)
ASP に同じ
tslp_tsk((t)+1000U)
ASP に同じ
ASP に同じ

ASP に同じ
ASP に同じ
ASP に同じ
ASP に同じ
ASP に同じ
ASP に同じ

ASP に同じ
ASP に同じ
ASP に同じ
ASP に同じ
ASP に同じ
ASP に同じ

ASP/JSP/ASP3/FMP での記載

GET_TASK_ID
ACTIVATE_TASKSTART_CYCLIC_HANDLER
STOP_CYCCLIC_HANDLERRECEIVE_DATA_QUEUE
TIME_RECEIVE_DATA_QUEUEPOLLING_SEND_DATA_QUEUEINTERRUPT_POLLING_SEND_DATA_QUEUE
表 6.6.2 二種 RTOS マクロ定義

get_tid
act_tsk
sta_cyc
stp_cycrcv_dtq
trcv_dtq
psnd_dtq
ipsnd_dtq

7 ファイルの構成
TOPPERS BASE PLATFORM のソースファイル構造について記載する。共通部はファイルシステム
やタスクモニタ等共通となる部分について記載する。BASE PLATFORM のソフトウェア部品は asp のベースディレクトリ上に配置する。

7.1 共通部
共通部のディレクトリ構成を表 7.1.1 に示す。
ディレクトリ

内容

備考

files
monitorgdic
pdic
syssvcui
usb

ファイルシステムのソースとインクルードファイル
タスクモニタと標準入手力のソースとインクルードファイル
GDIC ドライバ
PDIC ドライバ、RISC/V ボード依存ドライバを持つ
malloc,calloc,free 関数
GLCD に文字、グラフィックデータ表示
USB ホスト、デバイスのミドルウェア

RTOS 隠蔽化対応
RTOS 隠蔽化対応
RTOS 隠蔽化対応
RTOS 隠蔽化対応
RTOS 隠蔽化対応

表 7.1.1 共通部ディレクトリ
pdic の直下に RTOS 隠蔽用のインクルードファイル base_platform.h を置く。
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

28

7.2 PDIC(Base/Standard)ドライバ
FE310 用 Base/Standard 用ドライバ部は pdic/fe310 にソースファイルがある。
ファイル

内容

備考

device.cdevice.cfg
device.h
i2c.c
i2c.h
spi.c
spi.h
pinmode.hpinmode.csifive-fe310.h

GPIO,DMA,LED,SW ドライバ・ソースファイル
LED,SW の RTOS リソースファイル
GPIO,DMA,LED,SW ドライバ・インクルードファイル
I2C ドライバ・ソースファイル
I2C ドライバ・インクルードファイル
SPI ドライバ・ソースファイル
SPI ドライバ・インクルードファイル
Arduino の GPIO ピン設定・ソースファイル
Arduino の GPIO ピン設定・インクルードファイル
FE310 のデバイス定義ファイル

Base
Base
Base
制約あり
制約あり

1.4.4

表 7.2.1 FE310-G000 ドライバファイル
K210 用 Base/Standard 用ドライバ部は pdic/k210 にソースファイルがある。
ファイル

内容

備考

device.cdevice.cfg
device.h
dvp.c
dvp.cfg
dvp.h
i2c.c
i2c.h
spi.c
spi.h
spi_reg.c
pinmode.hpinmode.ckendryte-k210.h

GPIO,DMA,WDOG,RTC ドライバ・ソースファイル
RTC,WDOG の RTOS リソースファイル
GPIO,DMA,WDOG,RTC ドライバ・インクルードファイル
CAMERA ドライバ・ソースファイル
CAMARA ドライバ RTOS リソースファイル
CAMARA ドライバ・インクルードファイル
I2C ドライバ・ソースファイル
I2C ドライバ・インクルードファイル
SPI ドライバ・ソースファイル
SPI ドライバ・インクルードファイル
レガシーSPI ドライバ・ソースファイル
Arduino の GPIO ピン設定・ソースファイル
Arduino の GPIO ピン設定・インクルードファイル
K210 のデバイス定義ファイル

Base
Base
Base

1.4.4

表 7.2.2 K210 ドライバファイル
GD32VF103 用 Base/Standard 用ドライバ部は pdic/gd32vf103 にソースファイルがある。
ファイル

内容

adc.c
adc.h
device.cdevice.cfg
device.h
i2c.c
i2c.h
spi.c
spi.h
pinmode.h
usb_otg.c

ADC ドライバ・ソースファイル
ADC ドライバ・インクルードファイル
GPIO,DMA,WDOG,RTC ドライバ・ソースファイル
RTC,WDOG の RTOS リソースファイル
GPIO,DMA,WDOG,RTC ドライバ・インクルードファイル
I2C ドライバ・ソースファイル
I2C ドライバ・インクルードファイル
SPI ドライバ・ソースファイル
SPI ドライバ・インクルードファイル
Arduino の GPIO ピン設定・ソースファイル
USB-OTG ドライバ・ソースファイル（サンプル実装）

usb_otg.h
gd32vf103.h

USB-OTG ドライバ・インクルードファイル
GD32VF103 のデバイス定義ファイル

備考

Base
Base
Base

デバイスの
み評価済
1.4.4

表 7.2.3 GD32VF103 ドライバファイル
TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

29

SAPPHIRE SOC(T120 BGA324)用 Base/Standard 用ドライバ部は pdic/sapphire-soc にソースファ
イルがある。
ファイル

内容

備考

device.cdevice.cfg
device.h
spi.c
spi.h
sapphire_soc.h

GPIO ドライバ・ソースファイル
初期化、割込みの RTOS リソースファイル
GPIO ドライバ・インクルードファイル
SPI ドライバ・ソースファイル
SPI ドライバ・インクルードファイル
SAPPHIRE SOC のデバイス定義ファイル

Base
Base
Base

表 7.2.4 SAPPHIRE SOC ドライバファイル

7.3 GDIC ドライバ
ディレクトリ gdic 以下に GDIC ドライバを持つ。GDIC ドライバは PDIC に依存性し、デバイスに依存した機能を提供する。
ディレクトリ内容

備考

usb_otg

usb_otg(DWC2-OTG ドライバ)上に位置し、USB ミドルウェアにOTG 機能を提供する
SPI インターフェイスの SD カード用ドライバ、ファイルシステムに
SD カードドライバを提供する
SPI インターフェイスの Adafruit 1.8”LCD に対して、グラフィック
API を提供する
SPI インターフェイスの Adafruit 2.4”LCD に対して、グラフィック
API を提供する
SPI インターフェイスの AQM1284 LCD に対して、
グラフィック API
を提供
I2C インターフェイスの AQM0804LCD に対してキャラクタ API を提供
Arduino BLE Shield2.1 に対して、BLE-API を提供する
K210 用 ov2640 カメラ機能 API を提供
SPI インターフェイスの K210 用 st3389LCD に対して、グラフィッ
ク API を提供
SPI インターフェイスの longan nano 用 st3375LCD に対して、グラフィック API を提供

Longannano 専用

spi_driveradafruit_st7735
adafruit_ILI9341
aqm1284_st7565
aqm0804_st07032
bleshield2.1
sipeed_ov2640
sipeed_st3389
sipeed_st3375

K210 専用
K210 専用
Longannano 専用

表 7.3.1 GDIC ディレクトリ

8 変更履歴Version 1.0.0 以降の変更履歴を記載する。
versiondate

functions

1.4.2

08/31/2020
12/18/2020

1.4.3
1.4.4

04/18/2020
11/19/2022

1.4.5

12/14/2022
02/08/2023
10/26/2023

K210 用、YOLO デモ追加
longan nano 対応, ファイルシステムで long name を使用ない設定を可能する
RTOS のサービス・コール隠蔽機能を追加
USB Device HID 使用時に Win10 でデータを送れない問題の対応、USB
隠蔽化を再修正asp カーネル実装変更に伴う修正
T120 BGA324 ボード用の asp カーネル対応
ネットワークモニタ用に標準出力処理の変更

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

30

12/12/2023

USB デバイス MSC を追加

Appendix A HI-FIVE1
HI-FIVE1 のボード依存仕様を記載する。
(1)Arduino connectors 定義
CN No.

Pin No.

Pin 名

MCU pin

機能

CN6
power

1
2
3
4
5
6
7
8
1
2
3
4
5
6

NC
IOREF
RESET
+3V3
+5V
GND
GND
VIN
A0
A1
A2
A3
A4
A5

PIN_AH7(FPGA)VCC3P3
VCC5
GND
GND
VCC9
13
12
11
10
9
-

3.3V Ref
RESET
3.3V input/output
5V output
GroundGroundPower input-

CN8
analog

表 A.1.1 左 Arduino connector 設定
CN No.

Pin No.

Pin 名

MCU pin機能

CN5
digital

10
9
8
7
6
5
4
3
2
1
8
7
6
5
4
3
2
1

D15
D14
AREF
GND
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0

13
12
5
4
3
2
1
0
23
22
21
20
19
18
17
16

(SCL)
(SDA)
AVDD
Ground
CLK
MISO
MOSI
SS(CS0)
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
TX
RX

CN9
degital

表 A.1.2 右 Arduino connector 設定(2)サンプルプログラム
Program nameshieldenvironment

detailLCD
LCD2
bleshield21
ulcdshield

Adafruit 1.8 TFT
Adafruit 2.8 TFT
BLE SHIELD2.1
TEB001
UART/LCD シ ー

ROM
ROM
ROM
ROM

グラフィック LCD 表示テストプログラム
グラフィック LCD 表示テストプログラム
BLE ペリフェラルテストプログラム
LWLP の DHCP クライアント、ping テストが可能な実装

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

31

ルド

WDOG
I2C

TEB001I2C シールドROMROM

但 し 、 デ ィ レ ク ト リ lwip に LWIP の ソ ー ス 設 定(lwip-2.0.3/cntrib-2.0.1)が必要
また、設定ソースに数か所のパッチが必要
ウォッチドックタイマーテスト
AMQ0802 の表示のみ可能

Appendix B Maixdino
Maixdino のボード依存仕様を記載する。
(1)Arduino connectors 定義
CN No.

Pin No.

Pin 名

IO pin

機能

CN6
power

1
2
3
4
5
6
7
8
1
2
3
4
5
6

NC
IOREF
RESET
+3V3
+5V
GND
GND
VIN
A0
A1
A2
A3
A4
A5

PIN_AH7(FPGA)VCC3P3
VCC5
GND
GND
VCC9
IO33
IO32
IO35
IO34
IO39
IO36

3.3V Ref
RESET
3.3V input/output
5V output
GroundGroundPower input-

CN8
analog

表 B.1.1 左 Arduino connector 設定
CN No.

Pin No.

Pin 名

IO pin機能

CN5digital

10
9
8
7
6
5
4
3
2
1
8
7
6
5
4
3
2
1

D15
D14
AREF
GND
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0

IO30
IO31
IO3
IO10
IO11
IO12
IO13
IO14
IO15
IO32
IO24
IO23
IO22
IO21
IO5
IO4

(SCL)
(SDA)
AVDD
Ground
CLK
MISO
MOSI
SS(CS0)
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
TX
RX

CN9
degital

表 B.1.2 右 Arduino connector 設定(2)SD カード接続ピン
Pin No.

機能

IO26
IO27
IO28
IO29

SPI-MISOSPI-SCKSPI-MOSISPI-SSTOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

32

(3)サンプルプログラム
Program name

DEMO
I2C
SDCARD
TEST

shieldI2C シールド-

environment

detail

RAM
RAM
RAM
RAM

カメラ、グラフィック LCD 表示デモ
I2C 表示センステスト、Mainduno では電気的に動作せず
SPI-SDCARD のファイルシステム・テストプログラム
ウォッチドックタイマーテスト

Appendix C Longan nano
Longan nano のボード依存仕様を記載する。
(1)SD カード接続ピン
Pin No.

機能

PB14
PB13
PB15
PB12

SPI-MISOSPI-SCKSPI-MOSISPI-SS(2)LCD 接続ピン
Pin No.

機能

PA6
PA5
PA7
PB2
PB1
PB0

SPI-MISOSPI-SCKSPI-MOSISPI-SS
RESET
DC(3)サンプルプログラム
Program name

Shieldenvironment

detail

DEMO
I2C
ADC

-

ROM
ROM
ROM

グラフィック LCD 表示デモ
AQM0802, ADT7410 等、I2C 通信テスト
秋月 Joy Stick を使った ADC テスト(4)その他SPI を DMA で使用すると、実行中ハングアップする。
ADC を DMA で使用すると、実行中まれにハングアップ
USB はデバイスのみ実行可能、CPU クロックを 48MHz の倍数に設定する必要がある

Appendix D T120 BGA324
T120 BGA324 のボード依存仕様を記載する。
(1)J12
Pin No.

1
2
3
4
5
6

Signal Name

T120F32414 Pin 名

機能（FPGA 設定による）

PMOD_A_IO0
PMOD_A_IO2
PMOD_A_IO4
PMOD_A_IO6
GroundVCC

GPIOT_RXP20
GPIOT_RXP21
GPIOT_RXP22
GPIOT_RXP23
GND
3.3V

UART0 TX
UART0 RX(GPIO BIT1)(GPIO BIT8)TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

33

7
8
9
10
11
12

PMOD_A_IO1
PMOD_A_IO3
PMOD_A_IO5
PMOD_A_IO7
GroundVCC

GPIOT_RXN20GPIOT_RXN21
GPIOT_RXN22
GPIOT_RXN23
GND
3.3V

(GPIO BIT12)(GPIO BIT13)(GPIO BIT14)(GPIO BIT15)(2)LCD 接続ピン
Pin No.

1
2
3
4
5
6
7
8
9
10
11
12

Signal Name

T120F32414 Pin 名

機能（FPGA 設定による）

USER_LED0
USER_LED1
USER_LED2
USER_LED3
GroundVCC
USER_DIP0
USER_DIP1
USER_SWITCH0USER_SWITCH1
GroundVCC

GPIOT_RXP24
GPIOT_RXN24
GPIOT_RXP27
GPIOT_RXN27
GND
3.3V
GPIOT_RXP28
GPIOT_RXN28
GPIOT_RXP29
GPIOT_RXN29
GND
3.3V

GPIO BIT4GPIO BIT5GPIO BIT6GPIO BIT7GPIO BIT2
GPIO BIT3
io_asyncResetn
GPIO BIT0(3)サンプルプログラム
Program name

Shieldenvironment

detail

SPI
TIMER

-

RAM
RAM

FLASH ROM DUMP プログラム
USER TIMER0 テストプログラム

TOPPERS BASE PLATFORM (RV) REFERENCE MANUAL

34