source: ssp_aarch64/trunk/qemu_virt_gcc/target_user.txt@ 353

Last change on this file since 353 was 353, checked in by nmir-saito, 6 years ago

initial import

File size: 4.5 KB
Line 
1=====================================================================
2 QEMU-VIRTターゲット依存部 (ssp-1.3.0対応)
3 Last Modified: '18/05/29
4=====================================================================
5
6○概要
7
8QEMU-VIRTターゲット依存部は,プロセッサにCortex-A53 を搭載した
9QEMUの仮想ボードVIRTをサポートしている.
10
11
12○カーネルの使用リソース
13
14カーネルは以下のリソースを使用する.
15
16 ・ROM
17 コードをé…
18ç½®ã™ã‚‹ï¼Ž
19 使用量は使用するAPIの数に依存する.
20
21 ・RAM
22 データをé…
23ç½®ã™ã‚‹ï¼Ž
24 使用量はオブジェクト数に依存する.
25
26 ・Generic Timer
27 カーネル内
28部のティックの生成に用いる.
29
30 ・UART0 (PL011)
31 コンソールの出力に使用.
32
33○デバッグ環境
34
35デバッグ環境として,QEMUのGDBサーバ機能を利用して,GDBによるデバッグが可能.
36
37○コンパイラ
38
39GCC で動作確認を行った.動作確認した GCC は,以下のサイトから
40バイナリパッケージをダウンロードすることができる.
41動作確認バージョンは 5.3.1 で行った.
42
43 https://releases.linaro.org/components/toolchain/binaries/
44
45○割込み優å…
46ˆåº¦
47
48割込み優å…
49ˆåº¦ã¨ã—て指定可能な範囲は,-15 〜 -1 である.
50
51○コンソール出力
52
53コンソール出力には PrimeCell UART (PL011)を使用する.
54
55通信フォーマットは以下の通りである.
56
57 ・38400bps, Data 8bit, Parity none, Stop 1bit, Flow制御なし
58
59
60○各種設定の変更
61
62幾つかのパラメータは変更可能になっている.設定ファイル毎に設定可能項
63目
64は次のようになっている.
65
66●Makefile.target の設定項
67目
68
69・GCC_TARGET
70 GCCの target triplet を定義
71
72・TEXT_START_ADDRESS/DATA_START_ADDRESS
73 テキストセクション,データセクションの開始アドレス
74
75・INCLUDES
76 インクルード指定
77
78・COPTS
79 Cコンパイラへのオプション
80
81・LDFLAGS
82 リンカへのオプション
83
84●target_config.h の設定項
85目
86
87・DEFAULT_ISTKSZ
88 デフォルトの非タスクコンテキスト用のスタックサイズ
89
90○動作確認方法
91
92● QEMUを用いて動作を確認する場合,以下のようにコマンドを実行する.
93
94(実行例)
95$ qemu-system-aarch64 -M virt -cpu cortex-a53 -serial stdio -kernel ssp
96
97TOPPERS/SSP Kernel 1.3.0 for QEMU Virt(Cortex-A53) (May 29 2018 , 15:51:44)
98Copyright (C) 2010 by Meika Sugimoto
99Copyright (C) 2010 by Naoki Saito
100 Nagoya Municipal Industrial Research Institute, JAPAN
101
102System logging task is started on port 1.
103Sample program starts.
104#act_tsk(1)
105task1 is running (001). |
106task1 is running (002). |
107
108
109● GDBによるデバッグ手順
110
111GDBを用いたデバッグを行う場合,シェルを2つ用意する.
112一つはqemuを起動しGDBサーバとして起動する.
113
114(1つ目のシェル)
115$ qemu-system-aarch64 -M virt -cpu cortex-a53 -serial stdio -s -S
116VNC server running on 127.0.0.1:5900
117
118これで localhost:1234 でGDBサーバが接続を待
119ち受ける状æ…
120‹ã«ãªã‚‹ï¼Ž
121
122もう一つのシェルでGDBを起動し,GDBサーバに接続する.
123
124(2つ目のシェル)
125$ aarch-elf-gdb ssp
126(gdb)
127
128ここで各種の設定,サーバへの接続,ロードを行うとステップや実行等の
129デバッグ動作を行うことができる.
130
131(gdb) set architecture aarch64
132The target architecture is assumed to be aarch64
133(gdb) set debug aarch64
134(gdb) target extended-remote localhost:1234
135Remote debugging using localhost:1234
1360x0000000000000000 in ?? ()
137(gdb) load
138Loading section .note.gnu.build-id, size 0x24 lma 0x0
139Loading section .text, size 0x5040 lma 0x40000000
140Loading section .rodata, size 0x650 lma 0x40005040
141Loading section .rodata.str1.8, size 0x5b8 lma 0x40005690
142Loading section .data, size 0x8 lma 0x40005c48
143Start address 0x40000000, load size 23668
144Transfer rate: 11556 KB/sec, 1577 bytes/write.
145(gdb) s
146aarch64: prologue analysis gave up addr=0x0x40000000 opcode=0xd50343df
14758 ldr x0, =vectors
148(gdb) c
149Continuing.
150
151'c' コマンドで実行を継続すると,GDBサーバ側の画面にシリアルメッセージが表示される.
152キーå…
153¥åŠ›ã‚‚サーバ側のシェル画面で行う.
154
155qemuを終了する場合はCtrl-Cで終了する.
156gdb を終了する場合はプロンプトで'q'コマンドを実行して終了する.
157
158
159○変更履歴
160 ・2018/05/29
161  新規作成
Note: See TracBrowser for help on using the repository browser.