wiki:rubycfg_ssp

TOPPERS/SSP Kernel用 Ruby版コンフィギュレータ向け追加ファイル

これは何か

TOPPERS/SSPカーネル1.3.0でRuby版コンフィギュレータを使用するために必要な追加ファイルです.
Mac版 Docker を使用して Ubuntu 16.04 LTS (Xenial Xerus) コンテナでの動作を確認しています.

利用方法については Docker を用いた動作確認手順を示しますので,参考にしてください.

動作確認に必要なもの

  • Docker : Docker上のコンテナ(仮想環境)を動かすために使います.
  • Git : Dockerのスクリプトを取得するのに使います.
  • コマンドライン環境:コマンドの実行にbashシェルを使います.Mac ならターミナルアプリ,Windowsなら MinGW など.

Dockerを用いた動作確認手順

以下ではMacOSのターミナルアプリで実行した際の様子を示します.他のホストOSで使用する場合もほぼ同様と思います.

# Dockerスクリプトの取得
$ git clone https://github.com/nmiri-nagoya-nsaito/docker-toppers-ssp.git
Cloning into 'docker-toppers-ssp'...
remote: Counting objects: 26, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 26 (delta 4), reused 25 (delta 3), pack-reused 0
Unpacking objects: 100% (26/26), done.
Checking connectivity... done.

# スクリプトのディレクトリへ移動
$ cd docker-toppers-ssp

# コンテナ起動してシェルに入る(詳細はスクリプトを参照してください)
$ ./start_shell.sh
Building ssp
Step 1/16 : FROM ubuntu:xenial
 ---> 0ef2e08ed3fa
Step 2/16 : MAINTAINER Naoki Saito <saito.naoki@nmiri.city.nagoya.jp>
(略)
Successfully built 51a7d3533fb4
Creating network "dockertoppersssp_default" with the default driver
Creating dockertoppersssp_ssp_1
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

saito@99c8ea0640a6:~$ 

この時点で Linux コンテナ内のシェルが起動していますので,次は Ruby版コンフィギュレータを使用してSSPカーネルをビルドします.

# 適当な作業ディレクトリへ移動(dockerの設定でコンテナの ~/workdir ディレクトリをホストと共有する設定にしている)
$ cd workdir

# 本パッケージをダウンロード
$ svn co http://dev.toppers.jp/svn_user/contrib/rubycfg_ssp/trunk rubycfg_ssp

# SSPカーネルコードのセットアップ及びビルド
$ rubycfg_ssp/build_ssp_ruby.sh 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  579k  100  579k    0     0  1524k      0 --:--:-- --:--:-- --:--:-- 1528k
./asp3/configure.rb
./asp3/MANIFEST
./asp3/README.txt
./asp3/doc/asp_spec.txt
(略)
./asp3/target/dummy_gcc/target_timer.cfg
./asp3/target/dummy_gcc/target_timer.h
./asp3/target/dummy_gcc/target_unrename.h
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  161k  100  161k    0     0  1374k      0 --:--:-- --:--:-- --:--:-- 1372k
./ssp/configure
./ssp/MANIFEST
./ssp/doc/ssp_spec.txt
(略)
./ssp/extension/dataqueue.c
./ssp/extension/eventflag.h
./ssp/extension/eventflag.c
A    rubycfg_ssp/syssvc_sym.def
A    rubycfg_ssp/install.sh
A    rubycfg_ssp/alarm.trb
(略)
A    rubycfg_ssp/target_check.trb
A    rubycfg_ssp/prc_kernel.trb
A    rubycfg_ssp/target_kernel.trb
リビジョン 284 をチェックアウトしました。
patching file arch/arm_m_gcc/Makefile.prc
patching file sample/Makefile
patching file sample/sample1.cfg
patching file target/cq_frk_fm3_gcc/Makefile.target
Generating Makefile from ../sample/Makefile.
ruby ../cfg/cfg.rb --pass 1 --kernel ssp -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel --api-table ../kernel/kernel_api.def --symval-table ../kernel/kernel_sym.def --symval-table ../syssvc/syssvc_sym.def   --symval-table ../arch/arm_m_gcc/prc_sym.def \
					-M deps/cfg1_out_c.d ../target/cq_frk_fm3_gcc/target_kernel.cfg ../sample/sample1.cfg
[cfg.rb] Generated cfg1_out.c
arm-none-eabi-gcc -c -MD -MP -MF deps/cfg1_out.d -O2 -Wall -g   -mcpu=cortex-m3 -mthumb -mthumb  -DTOPPERS_OMIT_TECS  -DROM_BOOT -DTOPPERS_LABEL_ASM  -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel -DTOPPERS_CB_TYPE_ONLY  -mcpu=cortex-m3 -mthumb -DALLFUNC  -fno-strict-aliasing -mcpu=cortex-m3 -mthumb -I../kernel -I ../extension  cfg1_out.c
arm-none-eabi-gcc -c -O2 -Wall -g   -mcpu=cortex-m3 -mthumb -mthumb  -DTOPPERS_OMIT_TECS  -DROM_BOOT -DTOPPERS_LABEL_ASM  -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel -DALLFUNC  -fno-strict-aliasing -mcpu=cortex-m3 -mthumb -I../kernel -I ../extension ../arch/arm_m_gcc/start.S
arm-none-eabi-gcc -O2 -Wall -g   -mcpu=cortex-m3 -mthumb -mthumb  -DTOPPERS_OMIT_TECS  -DROM_BOOT -DTOPPERS_LABEL_ASM  -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel -nostdlib -nostdlib  --entry _start   -T ../target/cq_frk_fm3_gcc/cq_frm_fm3_rom.ld  -o cfg1_out \
					 cfg1_out.o 
arm-none-eabi-nm -n cfg1_out > cfg1_out.syms
arm-none-eabi-objcopy -O srec -S cfg1_out cfg1_out.srec
ruby ../cfg/cfg.rb --pass 2 --kernel ssp -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel -T ../target/cq_frk_fm3_gcc/target_kernel.trb
=====================================
Task priority configuration result: 
	INIT_TASK:	IPRI = 1, EXEPRI = 1
	LOGTASK:	IPRI = 2, EXEPRI = 2
	MAIN_TASK:	IPRI = 3, EXEPRI = 3
	TASK1:	IPRI = 4, EXEPRI = 4
	TASK2:	IPRI = 5, EXEPRI = 5
	TASK3:	IPRI = 6, EXEPRI = 5
=====================================
=====================================
Stack size configuration result:
	Estimated task stack size = 768
	Specified interrupt stack size = INTERRUPT_STACKSIZE(value=1024)
	Allocated total stack size = ALL_STACKSIZE(value=2048)
=====================================
[cfg.rb] Generated kernel_cfg.h
[cfg.rb] Generated kernel_cfg.c
arm-none-eabi-gcc -c -MD -MP -MF deps/sample1.d -O2 -Wall -g   -mcpu=cortex-m3 -mthumb -mthumb  -DTOPPERS_OMIT_TECS  -DROM_BOOT -DTOPPERS_LABEL_ASM  -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel  ../sample/sample1.c
(略)
arm-none-eabi-gcc -c -MD -MP -MF deps/dataqueue.d -O2 -Wall -g   -mcpu=cortex-m3 -mthumb -mthumb  -DTOPPERS_OMIT_TECS  -DROM_BOOT -DTOPPERS_LABEL_ASM  -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel -DALLFUNC  -fno-strict-aliasing -mcpu=cortex-m3 -mthumb -I../kernel -I ../extension ../extension/dataqueue.c
rm -f libkernel.a
arm-none-eabi-ar -rcs libkernel.a  target_support.o  prc_support.o  target_config.o target_serial.o prc_config.o prc_timer.o startup.o task.o task_manage.o interrupt.o exception.o sys_manage.o cyclic.o alarm.o time_manage.o time_event.o eventflag.o dataqueue.o 
arm-none-eabi-ranlib libkernel.a
arm-none-eabi-gcc -O2 -Wall -g   -mcpu=cortex-m3 -mthumb -mthumb  -DTOPPERS_OMIT_TECS  -DROM_BOOT -DTOPPERS_LABEL_ASM  -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel -nostdlib -nostdlib  --entry _start   -T ../target/cq_frk_fm3_gcc/cq_frm_fm3_rom.ld  -L. -o ssp \
		  sample1.o log_output.o vasyslog.o        banner.o serial.o syslog.o logtask.o  kernel_cfg.o  \
		-lkernel -lc  -lgcc  
arm-none-eabi-nm -n ssp > ssp.syms
arm-none-eabi-objcopy -O srec -S ssp ssp.srec
ruby ../cfg/cfg.rb --pass 3 --kernel ssp -O -I. -I../include -I../arch  -I../target/cq_frk_fm3_gcc -I../arch/arm_m_gcc/ -I.. -I../sample -I./gen -I../tecs_kernel -T ../target/cq_frk_fm3_gcc/target_check.trb \
			--rom-symbol ssp.syms --rom-image ssp.srec
configuration check passed

以上で,<カレントディレクトリ>/ssp_ruby/build/ に実行プログラムファイル(ssp)が生成されます.

注意事項

  • SSP-1.3.0 のパッケージに含まれるファイルの文字コードは EUC-JP でしたが,Ruby版コンフィギュレータを使用するために UTF-8 に変換しています.したがってファイルを追加,編集する場合は UTF-8 を使用してください.
  • Windows版のgitで core.autocrlf が true に設定されている場合,シェルスクリプトの実行に失敗することがあるようです.その場合は git config コマンドで core.autocrlffalse に設定してみてください.
Last modified 5 months ago Last modified on 08/05/17 13:37:32