TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門がじぇるね IoT 部門作品のタイトル : TOPPERS_ASP3 カーネルと astah*-uml による状態マシン図でのソフト設計と動作検証の試み作成者 : 塩出武 ( しおでたけし ) 共同作業者 : 対象者 使用する開発成果物 目的 狙い : Astah を使用してソフト設計をされている方 状態マシン図について学習中の方など : TOPPERS_ASP3 カーネル astah*-uml( もしくは Professional も可 ) astah*-m2t プラグイン astah*-toppers_flow プラグイン QEMU( バージョン 2.12.0) まだ簡易的ではありますが astah*-uml と m2t プラグインを用いて TOPPERS_ASP3 カーネルのサンプルコード上で動くプログラムを出力します 加えて サンプルプログラム上の状態を astah* の状態マシン図にフィードバックして F/W と状態マシン図が連動して動く ( 色が変わる ) ようにしています 設計モデルからコード生成することで実装作業を短縮し かつシミュレーションによってその設計モデルを実機レスで検証することで ソフトウェアの開発工程を短縮できないか検討してみました
2 1 3 2 3 2.1.............................................. 3 2.2........................................ 3 2.3.................................... 3 3 4 3.1 Toppers_Flow............................................. 4 3.1.1 Toppers_Flow............................................. 4 3.1.2 Toppers_Flow DLL................... 4 3.2 QEMU................................................ 5 4 5 4.1....................................................... 5 4.1.1 TOPPERS-ASP3................................... 5 4.1.2 astah* m2t........................................... 6 4.1.3 TOPPERS................................ 6 4.1.4 astah* Toppers_Flow..................................... 7 4.2.............................................. 7 4.2.1.................................................... 7 4.3....................................................... 8 5 8 6 9
3 1 astah*-uml Toppers_ASP3 astah* PC 1 m2t プラグインによりモデルからコード出力 Toppers_flow プラグインによりリアルタイムに状態を反映 1 2 2.1 ICE LED Printf QEMU astah* 2.2 m2t ( ) m2t 2.3 ( ) ( )
4 3 3 ( ) 1 1 ASP3 F/W astah*-uml(64bit ) community *1 m2t Topeprs_Flow ( ) F/W astah* DLL * 2 asta*-plugin-sdk Toppers_Flow Java-jdk Toppers_Flow astah-build jna Java Win32 Java-Native-Access QEMU F/W 2.12.0 (64bit ) MSYS2 QEMU 64bit VisualStudioExpress2015 Toppers_Flow DLL 64bit 1 asta*-api 2 toppers_flow.dll 3.1 Toppers_Flow QEMU F/W astah* TOPPERS Toppers_Flow astah* *3 ECMAScript(JavaScript) QEMU DLL.dll JavaScript 2 Toppers_Flow 3.1.1 Toppers_Flow 1. 100ms QEMU (Idle Drvie Hold ) 2. astah* 3. 4. 5. Toppers_Flow 6. 3.1.2 Toppers_Flow DLL QEMU.dll astah* Toppers_Flow C toppers_flow.dll C:\work\toppers\toppres_flow.dll *3 https://ja.astahblog.com/sample-scripts/#changecolor
3.2 QEMU 5 3.2 QEMU ASP3 QEMU(realview-eb-mpcore ) Toppers_Flow 3 "realview-eb-toppers" 0x10000000 0x10001000 Systemregisters. Systemcontroller. 省略 0x10009000 UART0. 0x1000a000 UART1. 0x1000b000 UART2. 0x1000c000 UART3. 0x1000d000 SSPI. 0x1000e000 SCI. 0x1000f000 Reserved. 0x10010000 Watchdog. 0x10011000 Timer0 1 0x10012000 Timer2 3 0x10013000 GPIO0 0x10014000 GPIO1 0x10015000 GPIO2 省略 0x10120000 ステート名 1 保存用 0x10040000 GIC1.(EB) 0x10050000 GIC2.(EB) 0x10060000 GIC3.(EB) 0x10070000 GIC4.(EB) 0x10080000 SMC. 0x10120080 ステート名 2 保存用 ( 未使用 ) 0x10120000 TOPPERS 0x1e000000 GIC1.(PB) 0x1e001000 GIC2.(PB) 0x1e002000 GIC3.(PB) 0x1e003000 GIC4.(PB) 0x10120100 DCモータ1 2 制御用 ( 未使用 ) 省略 0x60000000 PCI. 0x10120124 割込み制御用 ( 未使用 ) 0x68000000 PCI 3 QEMU ( ) 4 4.1 4.1.1 TOPPERS-ASP3 ASP3 ( Core Tile for ARM11 MPCore ARM ) make QEMU Toppers_Flow ( ) 1.../configure.rb -T ct11mpcore_gcc -O "-DTOPPERS_USE_QEMU" 2. export PATH=$PATH:D: \GNU Tools ARM Embedded\4.9 2015q2\bin (D ) 3. make(m2t.cpp(c++) C++ make 4../qemu-system-arm -M realview-eb-toppers -semihosting -m 128M -smp 1 -serial vc -kernel asp
6 4 4.1.2 astah* m2t 1. m2t astah*-uml 2. dcmotor.asta ( ) 3. TOPPERS ( ) *4 4 4. m2t 5. TOPPERS make 4 TOPPERS m2t 4.1.3 TOPPERS m2t ( ) Motor.cpp void tprs_event(tprs_event event) { switch(event){ // set case for event.. case EVENT_IDLE: motor_ctrl->transition(motor_ctrl::evidle); break; case EVENT_DRIVE: motor_ctrl->transition(motor_ctrl::evdrive); break; case EVENT_BRAKE1: motor_ctrl->transition(motor_ctrl::evbrake1); break; case EVENT_BRAKE2: motor_ctrl->transition(motor_ctrl::evbrake2); break; case EVENT_HOLD: motor_ctrl->transition(motor_ctrl::evhold); break; default: break; } motor_ctrl->doaction(); } *4 Arduino
4.2 7 4.1.4 astah* Toppers_Flow m2t 2 3.1.2.dll topers_flow.dll C:\work\toppers\toppres_flow.dll 4.2 DC * 5 4.2.1 1. TOPPES-ASP3 2. astah* dcmotor.astah Toppers_Flow 5 OK 3. s 4. 2 astah* 5. astah* dcmotor.astah Toppers_Flow End 2 ( ) s setup() Idle i Idle Drive d Drive Brake1 b Brake1 Brake2 B Brake2 Hold h Hold Idle Shif t + Q 5 Toppers_Flow *5
8 5 4.3 1. Toppers_Flow astah* 2. Tooppers_Flow TOPPES Toppers_Flow DLL 3. Toppers_Flow Toppers_Flow 5 1. astah* TOPPERS m2t 2. F/W astah* Toppers_Flow 3. 4. ( )
9 6 ASP eclipse zylin TOPPERS 1. eclipse Zylin 6 2. QEMU./qemu-system-arm -S -gdb tcp::1234 -M realview-eb-toppers -semihosting -m 128M -smp 1 -serial vc -kernel asp 3. eclipse main 4. 6 6 eclipse
10 6 7 eclipse