source: rtos_arduino/trunk/README.txt@ 139

Last change on this file since 139 was 139, checked in by ertl-honda, 8 years ago

サンプルの記載の変更.

File size: 10.5 KB
Line 
1=====================================================================
2 TOPPERS RTE/RTOS compatible with Arduino libraries : RCA
3 Last Modified:2015 Nov 25 00:32:02
4=====================================================================
5
6○ToDo
7・SPI/I2Cのå…
8±æœ‰ã®ãŸã‚ã®ã‚»ãƒžãƒ•ã‚©ã®è¿½åŠ 
9
10○概要
11
12TOPPERS RTE/RTOS compatible with Arduino libraries(RCA)は,TOPPERS上で
13Arduino ライブラリを使用するための環境である.
14
15多くのコードをArduino IDE付属の物をベースとしているため,ライセンスは
16GPLである.各コードのライセンスはコード毎のライセンスに従う.
17
18○サポート
19
20サポートしているプロセッサは,Arduino M0/M0 Pro である.
21
22○動作確認済みのバージョン
23
24動作確認済みのバージョンは次の通りである.
25
26・Arduino IDE 1.7.8
27・TOPPERS/ASPカーネル 1.9.2
28 Atmel Studio 7.0 (build 594)
29
30○クイックスタート(デバッガなし)
31
32Windows環境でのデバッガなしの実行方法について説明する.
33
34●インストール
35
36Arduino IDE のインストール
37 ・http://www.arduino.org/ からダウンロードしてインストール.
38 ・インストーラに従ってインストールを実施する.
39
40Arduino IDE のインストールパスの設定
41 ・C:\Program Files (x86)\Arduino にインストールした場合は必
42要ない
43 ・インストールしてフォルダを以下のファイルに設定する
44 ・example/do_path.bat
45 SET ARDUINO_DIR=C:\Program Files (x86)\Arduino
46 ・asp_1.9.1/target/arduino_m0_gcc/
47 ARDUINO_BASE_DIR_WIN = C:\Program Files (x86)\Arduino
48
49●ビルド
50 ・フォルダ ./example/basic を開く
51 ・./do_make.bat を実行
52
53●実行
54 ・ボードのPROGRAMポートとUSBを接続する.
55 ・Arduino IDEを起動する
56 ・ツール -> ポート -> COMx(Arduino M0 Pro (Programmmming Port)) を選択.
57 ・ツール -> シリアルモニタ を選択してシリアルモニタを実行する.
58 ・シリアルモニタの右下の速度を115200bpsに変更
59 ・フォルダ ./example/basic を開く
60 ・./do_run.bat を実行
61
62●デバッグ
63 ・フォルダ ./example/basic を開く
64 ・./do_debug.bat を実行
65
66●クリーン
67 ・フォルダ ./example/basic を開く
68 ・./do_clean.bat を実行
69
70
71○クイックスタート(デバッガあり)
72
73Windows環境でのデバッガありの実行方法について説明する.
74
75●インストール
76
77Atmel Studio のインストール
78 ・ http://www.atmel.com/ja/jp/tools/ATMELSTUDIO.aspx からダウンロードしてインストール.
79 ・インストーラに従ってインストールを実施する.
80
81●プロジェクトを開く
82
83各サンプルのフォルダ以下にある,
84
85\example\basic\asp.atsln
86
87をタブルクリックするとAtmel Studioが起動する.
88
89●ビルド
90
91メニュー -> Build -> Build Solution を実行
92
93●実行
94
95メニュー -> Debug -> Start Debugging and Brake を実行
96
97メモリに書き込まれるため,実行を開始する.
98ファイルメニューからrca_app.cpp を選択してブレークポイントを置くことが
99可能.
100
101
102○動作モデル
103
104Arduinoライブラリを実行するためのタスクとして,メインタスクとタスク1,
105タスク2,...(RCAタスク)を用意している.メインタスクは必
106ず生成され,RCA
107タスクは,幾つ生成するかはマクロで定義可能である.現状最大数は4個である.
108
109それぞれのタスク名は次の通りである.
110
111 メインタスク : RCA_MAINTASK
112 タスク1 : RCA_TASK1
113 タスク2 : RCA_TASK2
114 タスク3 : RCA_TASK3
115 タスク4 : RCA_TASK4
116
117
118各タスクは,次の関数を実行する.これらの関数の本体を記述する.
119
120 メインタスク : setup/loop
121 タスク1 : task1_setup/task2_loop
122 タスク2 : task2_setup/task2_loop
123 タスク3 : task3_setup/task3_loop
124 タスク4 : task4_setup/task4_loop
125
126各setup/loopの振る舞いはArduinoと同等である.
127
128○スケジューリング
129
130基本的には優å…
131ˆåº¦ãƒ™ãƒ¼ã‚¹ã®ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã§ã‚る.
132
133各タスクのsetup実行時(起動時)とloop実行時の優å…
134ˆåº¦ã‚’それぞれマクロで指
135定可能である.
136
137オプションでラウンドロビンスケジューリングを選択可能である.ラウンドロ
138ビンの周期とラウンドロビンの対象とする優å…
139ˆåº¦ã‚’マクロで指定可能である.
140
141○ライブラリ
142
143次のライブラリは動作確認済みである
144
145コアライブラリ
146
147コアライブラリは常にコンパイル&リンクされる.
148
149 ・PWM
150 ・digitalå…
151¥å‡ºåŠ›
152 ・delay
153 ・analogå…
154¥å‡ºåŠ›
155 ・attachInterrupt()
156 noInterrupt() : Primaskを使用しているため問題ない
157 ・USB Uart
158 ・Tone
159
160その他のライブラリ
161
162次のライブラリは使用する場合はMakefileで各マクロをtrueに定義すること.
163
164 ・SPI : USE_ARDUINO_SPI
165 ・SD : USE_ARDUINO_SD
166 ・TFT : USE_ARDUINO_TFT
167 ・RTC : USE_ARDUINO_RTC
168 ・I2C : USE_ARDUINO_WIRE
169 ・ETHERNET2 : USE_ETHERNET2
170 ・NAXESMOTION : USE_NAXESMOTION
171 ・NCESCAN : USE_NCESCAN
172
173次のライブラリは動作未確認である.
174
175○ファイル
176./lib
177 ・RCA関連のライブラリ
178./example
179 ・RCAのサンプル
180./arduino_lib
181 ・Arduino IDE付属のライブラリ(パッチ済み)
182 ・ディレクトリ構成はオリジナルと同等だが以下のフォルダは必
183要ないので削除している.
184 ./hardware/arduino/avr
185 ./hardware/arduino/sam
186 ./hardware/arduino/samd/bootloaders
187 ./tools/avr
188 ./tools/gcc-arm-none-eabi-4.8.3-2014q1
189 ./tools/OpenOCD-0.9.0-arduino
190 ./tools/CMSIS/CMSIS_RTX
191 ./tools/CMSIS/CMSIS/Driver
192 ./tools/CMSIS/CMSIS/DSP_Lib
193 ./tools/CMSIS/CMSIS/Lib
194 ./tools/CMSIS/CMSIS/RTOS
195 ./tools/CMSIS/CMSIS/SVD
196 ./tools/CMSIS/CMSIS/UserCodeTemplates
197 ./tools/CMSIS/Device/ARM
198 ./tools/CMSIS/Device/ATMEL/samd21 以外
199./libraries
200 以下のフォルダは必
201要無いので削除している
202 ./Ethernet
203 ./Scheduler
204 ./SpacebrewYun
205 ./WiFi
206 以下のファイルを追加している
207 ./ESP8266
208 下記でå…
209¬é–‹ã•ã‚Œã¦ã„るコードをベースにM0に対応
210 https://github.com/itead/ITEADLIB_Arduino_WeeESP8266
211 ./NcesCan
212 ・Seeedの2015/11/08版をベースにAPIを変更
213 https://github.com/Seeed-Studio/CAN_BUS_Shield
214./asp_1.9.2
215 ・ASPカーネルのソースコード
216
217○サンプルプログラム
218./Basic
219 ・Arduinoの基本的なプログラムの詰め合わせ.
220 ・ソースのå…
221ˆé ­ã®ifdefで実行するプログラムを選択する.
222./CompositeExample
223 ・各種機能を組み合わせたサンプル
224./MultiTtask
225 ・マルチタスクのサンプル.
226./NAxesMotion
227 ・9軸モーションシールドのサンプル.
228./NCESCan
229 ・NCES CAN シールドのサンプル.
230./Profiling
231 ・プロファイリングのサンプル
232./RRscheduling
233 ・ラウンドロビンスケジューリングのサンプル.
234
235
236○コンフィギュレーション項
237目
238
239●rca_app.h
240
241以下の項
242目を rca_app.h に設定可能である.
243
244メインタスク以外のRCAタスク数の指定 : 現状5個までサポート
245 RCA_NUM_TASK : 0~5
246
247優å…
248ˆåº¦ : 定義しないと初期値を使用
249 RCA_MAINTASK_SETUP_PRI
250 RCA_MAINTASK_LOOP_PRI
251
252 RCA_TASK1_SETUP_PRI
253 RCA_TASK1_LOOP_PRI
254 ...
255
256スタック : 定義しないと初期値を使用
257 RCA_MAINTASK_STACK_SIZE
258
259 RCA_TASK1_STACK_SIZE
260 ...
261
262スケジューリング :
263 RCA_RR_SCEDULE :
264 ビット指定した優å…
265ˆåº¦(0は無視)をラウンドロビンスケジューリングする
266 RCA_RR_SCEDULE_CYCLE : ラウンドロビンスケジューリングの周期
267
268●Makefile
269
270以下の項
271目を指定可能である.
272
273ARDUINO_SERIAL
274シリアル(Serial)の扱いを設定以下のいずれかに定義
275NOUSE_SERIAL : Serialは使用しない.syslog/logtaskを使用した出力が可能.
276USE_SERIAL : Serialを使用する.logtaskは使用しない.syslogは低レベル
277 出力となる.
278
279○Arduinoライブラリへのパッチ : 対象 IDE 1.7.8
280
281●バグ
282./hardware/arduino/samd/cores/arduino/USB/samd21_device.c : 152行目 メモリリーク
283
284 for (i = 0; i < sizeof(usb_endpoint_table)/4; i++) {
285 (*(uint32_t *)((uint32_t *)(&usb_endpoint_table[0])+i)) = 0;
286 }
287
288arduino/samd/variants/arduino_zero/variant.h : 68行目 定義ミス
289#define portOutputRegister(port) ( &(port->OUT.reg) )
290#define portInputRegister(port) ( &(port->IN.reg) )
291
292libraries\TFT\src\utility\いくつかのファイル
293ARDUINO_ARCH_SAM -> ARDUINO_ARCH_SAD
294glcdfont.c:1:#ifndef ARDUINO_ARCH_SAMD
295Adafruit_ST7735.cpp:334:#if defined(ARDUINO_ARCH_SAMD)
296Adafruit_ST7735.h:138: #if defined(ARDUINO_ARCH_SAMD)
297
298libraries\NAxesMotion\NAxisMotion.h : 139行目
299M0の時はアドレスを変更する.さらにシールドのADRESSのジャンパを外す
300
301#if defined(ARDUINO_ARCH_SAMD)
302 void initSensor(unsigned int address = 0x29);
303#else /* !defined(ARDUINO_ARCH_SAMD) */
304 void initSensor(unsigned int address = 0x28);
305#endif /* defined(ARDUINO_ARCH_SAMD) */
306
307
308hardware/arduino/samd/cores/arduino/wiring_analog.c
309å…
310ˆé ­ã«ä»¥ä¸‹ã‚’追加.
311
312// Wait for synchronization of registers between the clock domains
313static __inline__ void syncDAC() __attribute__((always_inline, unused));
314static void syncDAC() {
315 while (DAC->STATUS.bit.SYNCBUSY == 1)
316 ;
317}
318
319●TOPPERS対応
320/hardware/tools/CMSIS/CMSIS/Include/core_cm0plus.h : 646行目
321割込み禁止・許可をAPIを呼び出すように変更
322
323__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
324{
325// NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
326 extern void rca_ena_int(uint32_t intno);
327 rca_ena_int(IRQn);
328}
329
330
331/** \brief Disable External Interrupt
332
333 The function disables a device-specific interrupt in the NVIC interrupt controller.
334
335 \param [in] IRQn External interrupt number. Value cannot be negative.
336 */
337__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
338{
339// NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
340 extern void rca_dis_int(uint32_t intno);
341 rca_dis_int(IRQn);
342}
343
344●機能追加
345
346Serial3の追加
347SERCOM2を使用
348ピン
349 5 : RX
350 4 : TX
351http://ehbtj.com/electronics/arduino-m0-hacks
352
353○本パッケージの名称
354
355Aruduinoのガイドライン(https://www.arduino.cc/en/Main/FAQ)では,
356
357Arduino Xxxxxx : NG
358Xxxxxx for Arduino : OK
359
360とあり,Arduinoとの関係が分かる書き方なら問題ないとのこと.
361
362TOPPERS RTE/RTOS Compatible with Arduino libraries : RCA
363
364以上.
Note: See TracBrowser for help on using the repository browser.