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

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

set svn:mime-type to files

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