Changes between Initial Version and Version 1 of ssp_aarch64


Ignore:
Timestamp:
Jun 8, 2018, 11:01:01 AM (6 years ago)
Author:
nmir-saito
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ssp_aarch64

    v1 v1  
     1= ARM AArch64 プロセッサ向け TOPPERS/SSP カーネル =
     2
     3== これは何か
     4ARM AArch64 向けの TOPPERS/SSPカーネル実装です.QEMU の Virt仮想ボードでの動作を確認しています.[[BR]]
     5利用方法については [https://www.docker.com/ Docker] を用いた動作確認手順を示しますので,参考にしてください.[[BR]]
     6
     7== 動作確認に必要なもの
     8
     9* Docker : Docker上のコンテナ(仮想環境)を動かすために使います.
     10* Git : Dockerのスクリプトを取得するのに使います.
     11* コマンドライン環境:コマンドの実行にbashシェルを使います.Mac ならターミナルアプリ,Windowsなら MinGW など.
     12
     13== Dockerを用いた動作確認手順
     14以下ではMacOSのターミナルアプリで作業する際の様子を示します.他のホストOSで使用する場合もほぼ同様と思います.
     15
     16=== 1. Dockerコンテナの構築およびシェルの起動
     17{{{
     18# Dockerスクリプトの取得(カレントディレクトリに docker-toppers というディレクトリが作成されます)
     19$ git clone https://github.com/nmiri-nagoya-nsaito/docker-toppers.git
     20Cloning into 'docker-toppers'...
     21remote: Counting objects: 85, done.
     22remote: Compressing objects: 100% (55/55), done.
     23remote: Total 85 (delta 36), reused 70 (delta 27), pack-reused 0
     24Unpacking objects: 100% (85/85), done.
     25
     26# スクリプトのディレクトリへ移動し,コンテナのシェルを起動する(詳細はスクリプト参照)
     27$ cd docker-toppers
     28$ ./start_shell.sh
     29Building cli
     30Step 1/16 : FROM ubuntu:xenial
     31 ---> 0ef2e08ed3fa
     32Step 2/16 : MAINTAINER Naoki Saito <saito.naoki@nmiri.city.nagoya.jp>
     33 ---> Using cache
     34 ---> 1bec673845d0
     35Step 3/16 : RUN apt-get update
     36 ---> Using cache
     37 ---> 2dd9e0f61959
     38(中略)
     39Step 16/16 : RUN chmod -R +x ./scripts     && sync     && ./scripts/setup_user.sh
     40 ---> Running in d9b928e37d60
     41Removing intermediate container d9b928e37d60
     42 ---> f77b5e071680
     43Successfully built f77b5e071680
     44Successfully tagged docker-toppers_cli:latest
     45Creating docker-toppers_cli_1 ... done
     46To run a command as administrator (user "root"), use "sudo <command>".
     47See "man sudo_root" for details.
     48
     49saito@fbd67644c60e:~$
     50}}}
     51
     52この時点で Linux コンテナ内のシェルが起動していますので,次はSSPカーネルのソースコードをセットアップしてビルドします.
     53
     54=== 2. ソースコードのセットアップおよびビルド
     55
     56{{{
     57# 作業ディレクトリへ移動(dockerの設定により ~/workdir ディレクトリをホストと共有可能)
     58saito@fbd67644c60e:~/workdir$ cd workdir
     59
     60# 本パッケージをダウンロード
     61saito@fbd67644c60e:~/workdir$ svn co http://dev.toppers.jp/svn_user/contrib/ssp_aarch64/trunk ssp_aarch64
     62
     63# SSPカーネルコードのセットアップ及びビルド
     64saito@fbd67644c60e:~/workdir$ ssp_aarch64/build_ssp.sh
     65--2018-06-08 10:04:07--  https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/aarch64-elf/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf.tar.xz
     66releases.linaro.org (releases.linaro.org) をDNSに問いあわせています... 13.228.101.204
     67releases.linaro.org (releases.linaro.org)|13.228.101.204|:443 に接続しています... 接続しました。
     68HTTP による接続要求を送信しました、応答を待っています... 302 Found
     69(略)
     70gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf/lib/gcc/aarch64-elf/7.2.1/plugin/include/tree-iterator.h
     71gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf/lib/gcc/aarch64-elf/7.2.1/plugin/libcp1plugin.so.0.0.0
     72gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf/lib/libmpfr.a
     73ヒット:1 http://archive.ubuntu.com/ubuntu xenial InRelease
     74取得:2 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
     75取得:3 http://archive.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
     76(略)
     77patching file sample/Makefile
     78Generating Makefile from ../sample/Makefile.
     79ruby ../cfg/cfg.rb --pass 1 --kernel ssp -I. -I../include -I../arch  -I../target/qemu_virt_gcc -I../arch -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 ../target/qemu_virt_gcc/target_sym.def --symval-table ../arch/arm64_gcc/prc_sym.def \
     80                                        -M deps/cfg1_out_c.d ../target/qemu_virt_gcc/target_kernel.cfg ../sample/sample1.cfg
     81[cfg.rb] Generated cfg1_out.c
     82aarch64-elf-gcc -c -O2 -Wall -g   -Werror -mgeneral-regs-only -ggdb3 -fno-pic -fno-builtin -mstrict-align -mtune=cortex-a53 -mcpu=cortex-a53+nofp  -DTOPPERS_OMIT_TECS    -I. -I../include -I../arch  -I../target/qemu_virt_gcc -I../arch -I.. -I../sample -I./gen -I../tecs_kernel -DALLFUNC   -I../kernel -I ../extension ../target/qemu_virt_gcc/start.S
     83aarch64-elf-gcc -c -MD -MP -MF deps/cfg1_out.d -O2 -Wall -g   -Werror -mgeneral-regs-only -ggdb3 -fno-pic -fno-builtin -mstrict-align -mtune=cortex-a53 -mcpu=cortex-a53+nofp  -DTOPPERS_OMIT_TECS    -I. -I../include -I../arch  -I../target/qemu_virt_gcc -I../arch -I.. -I../sample -I./gen -I../tecs_kernel -DTOPPERS_CB_TYPE_ONLY  -DALLFUNC   -I../kernel -I ../extension  cfg1_out.c
     84aarch64-elf-gcc -O2 -Wall -g   -Werror -mgeneral-regs-only -ggdb3 -fno-pic -fno-builtin -mstrict-align -mtune=cortex-a53 -mcpu=cortex-a53+nofp  -DTOPPERS_OMIT_TECS    -I. -I../include -I../arch  -I../target/qemu_virt_gcc -I../arch -I.. -I../sample -I./gen -I../tecs_kernel -nostdlib   -T ../target/qemu_virt_gcc/qemu_virt.ld  -o cfg1_out \
     85                                        start.o cfg1_out.o
     86(略)
     87aarch64-elf-ranlib libkernel.a
     88aarch64-elf-gcc -O2 -Wall -g   -Werror -mgeneral-regs-only -ggdb3 -fno-pic -fno-builtin -mstrict-align -mtune=cortex-a53 -mcpu=cortex-a53+nofp  -DTOPPERS_OMIT_TECS    -I. -I../include -I../arch  -I../target/qemu_virt_gcc -I../arch -I.. -I../sample -I./gen -I../tecs_kernel -nostdlib   -T ../target/qemu_virt_gcc/qemu_virt.ld  -L. -o ssp \
     89                start.o  sample1.o log_output.o vasyslog.o       target_serial.o  banner.o serial.o syslog.o logtask.o  kernel_cfg.o  \
     90                -lkernel -lc -lgcc 
     91aarch64-elf-nm -n ssp > ssp.syms
     92aarch64-elf-objcopy -O srec -S ssp ssp.srec
     93ruby ../cfg/cfg.rb --pass 3 --kernel ssp -O -I. -I../include -I../arch  -I../target/qemu_virt_gcc -I../arch -I.. -I../sample -I./gen -I../tecs_kernel -T ../target/qemu_virt_gcc/target_check.trb \
     94                        --rom-symbol ssp.syms --rom-image ssp.srec
     95configuration check passed
     96}}}
     97
     98以上が成功すると <カレントディレクトリ>/ssp/build/ に実行プログラムファイル(ssp)が生成されます.
     99
     100=== 3. 実行確認
     101
     102{{{
     103# QEMU で実行開始
     104saito@fbd67644c60e:~/workdir$ cd ssp/build
     105saito@fbd67644c60e:~/workdir/ssp/build$ qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -kernel ssp
     106
     107TOPPERS/SSP Kernel 1.3.0  for QEMU Virt(Cortex-A53) (Jun  8 2018 , 10:05:15)
     108Copyright (C) 2010 by Meika Sugimoto
     109Copyright (C) 2010 by Naoki Saito
     110            Nagoya Municipal Industrial Research Institute, JAPAN
     111
     112System logging task is started on port 1.
     113Sample program starts.
     114#act_tsk(1)
     115task1 is running (001).   |
     116task1 is running (002).   |
     117task1 is running (003).   |
     118}}}
     119
     120QEMUを終了するには,Ctrl-a を押してから x を押します.
     121また,コンテナのシェルを抜ける場合は exit を実行します.
     122再度シェルを起動する場合は ./start_sherll.sh を実行します.
     123
     124{{{
     125QEMU: Terminated
     126saito@fbd67644c60e:~/workdir/ssp/build$ exit
     127ログアウト
     128alpha:docker-toppers saito$
     129}}}
     130
     131== 注意事項
     132* SSP-1.3.0 のパッケージに含まれるファイルの文字コードは EUC-JP でしたが,Ruby版コンフィギュレータを使用するために UTF-8 に変換しています.したがってファイルを追加,編集する場合は UTF-8 を使用してください.
     133* Windows版のgitで core.autocrlf が true に設定されている場合,シェルスクリプトの実行に失敗することがあるようです.その場合は `git config` コマンドで `core.autocrlf` を `false` に設定してみてください.
     134
     135== 謝辞
     136本実装に関しては [https://github.com/takeharukato/asp3-aarch64 AArch64対応 TOPPERS/ASP3 カーネル]およびARMプロセッサ向けTOPPERS/ASPおよびASP3カーネルの実装を参考にさせていただきました.[[BR]]
     137カーネルコードを提供してくださっているTOPPERSプロジェクトおよびその関係者に感謝します。