update
[fsij-homepage-html.git] / monthly-meetings / 2015 / Nov.html
1 <!DOCTYPE html>
2 <html lang="ja">
3 <head>
4         <meta charset="utf-8" />
5         <title>11月の技術講座</title>
6         <link rel="stylesheet" href="/theme/css/main.css" />
7         <link href="http://www.fsij.org/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Free Software Initiative of Japan Atom Feed" />
8         <link href="http://www.fsij.org/feeds/all_rss.xml" type="application/rss+xml" rel="alternate" title="Free Software Initiative of Japan RSS Feed" />
9
10         <!--[if IE]>
11             <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
12         <![endif]-->
13 </head>
14
15 <body id="index" class="home">
16         <header id="banner" class="body">
17           <h1><a href="/"><img src="/images/FSIJ-s.png" /></a>
18               <p id="h1">Free Software Initiative of Japan</p>
19 <p id="h2">特定非営利活動法人 フリーソフトウェアイニシアティブ</p></h1>
20           <nav><ul>
21               <li><a href="/category/gnuk.html">gnuk</a></li>
22               <li class="active"><a href="/category/monthly-meetings.html">monthly-meetings</a></li>
23               <li><a href="/category/news.html">news</a></li>
24               <li><a href="/category/system.html">system</a></li>
25               <li><a id="ARCHIVE" href="/archives.html">ARCHIVE</a></li>
26           </ul></nav>
27         </header><!-- /#banner -->
28
29         <aside id="page-side"><nav>
30   <ul>
31     <li><a href="/pages/monthly-meetings/join.html">FSIJ 月例会への参加の方法</a></li>
32     <li><a href="/pages/monthly-meetings/misc.html">SEA&amp;FSIJ月例会について</a></li>
33     <li><a href="/pages/monthly-meetings/place.html">FSIJ 月例会の場所</a></li>
34     <li><a href="/feeds/monthly-meetings_rss.xml"><img src=/theme/images/icons/rss.png /></a></li>
35   </ul>
36 </nav></aside> <!-- /#page-side -->
37         <section id="page-main">
38 <section id="content" class="body">
39   <article>
40     <header>
41       <h1 class="entry-title">
42         <a href="/monthly-meetings/2015/Nov.html" rel="bookmark"
43            title="Permalink to 11月の技術講座">11月の技術講座</a></h1>
44     </header>
45
46     <div class="entry-content">
47 <footer class="post-info">
48   <abbr class="published" title="2015-11-09T00:00:00">
49     2015-11-09
50   </abbr>
51
52 </footer><!-- /.post-info -->      <div class="section" id="orange-pi-pc">
53 <h2>テーマ: Orange Pi PCを使ってみる</h2>
54 <p>開催日時 2015年11月27日(金曜日)18:30 ~ 19:30</p>
55 <table class="docutils field-list" frame="void" rules="none">
56 <col class="field-name" />
57 <col class="field-body" />
58 <tbody valign="top">
59 <tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
60 </tr>
61 </tbody>
62 </table>
63 <p>なお今後の開催日時は以下を予定しています。</p>
64 <ul class="simple">
65 <li>12/11(金曜日) 18:30-19:30</li>
66 </ul>
67 <p>(場所はいずれも東京体育館第四会議室です)</p>
68 </div>
69 <div class="section" id="id2">
70 <h2>概要</h2>
71 <p>9月の月例会でChopstxをCortex-A7に移植するという話が小島さんから発表されました。この会でRaspberry Pi 2は、(目的によっては良い製品ですが)自由ソフトウェア運動の観点では残念ながら、ブートローダ、(カーネルやブートローダを作るに必要な)技術情報、一部の必須のドライバの点において「プロプライエタリ・プラットフォーム」と言わざるをえない、と論議されました。</p>
72 <p>関連して、FSIJでは、かつてKurobox/ProのCPUのバグを突き止めたり、玄柴の配布を発売当時(主に会員に)斡旋したりしてきました。最近ではwandboardとFreescaleのCPUはいいのではないか、と議論しています。</p>
73 <p>今回はCortex-A7ということでハードルが高いのですが、Orange Pi PCとAllwinner H3が、完璧からは程遠いですが、比較優位として、まぁマシなプラットフォームでしょう、という話をします。</p>
74 <p>JTAG debuggerをつないで4つのコアをデバッグしてみる、また、間に合えば、Chopstxを動かすデモが見られるでしょう。</p>
75 </div>
76 <div class="section" id="id3">
77 <h2>話題提供</h2>
78 <ul class="simple">
79 <li>g新部 裕</li>
80 </ul>
81 <!-- BREAK -->
82 </div>
83 <div class="section" id="id4">
84 <h2>まだ充分ではなく残念な点</h2>
85 <ul class="simple">
86 <li>Allwinner H3の技術情報開示は必ずしも充分ではない。<ul>
87 <li>linux-sunxi.org に解明された情報、マニュアルなどはある。</li>
88 <li>u-bootのsource codeがある。</li>
89 <li>Linux 3.4のsource codeがある。</li>
90 <li>bootの仕組みも(必ずしもベンダから積極的に開示されているわけではないが)解明されている。</li>
91 </ul>
92 </li>
93 <li>回路図の取得にはユーザ登録が必要。</li>
94 <li>Allwinner H3のMMCのハードウェアは高速な転送モード(UHS)をサポートしていない模様。</li>
95 </ul>
96 </div>
97 <div class="section" id="id5">
98 <h2>良い点</h2>
99 <ul class="simple">
100 <li>www.orangepi.org からたどると有用な情報にたどり着ける。</li>
101 <li>上記から、すぐ使える u-boot, Linux kernel, Debian のimageが提供されている。</li>
102 <li>JTAG debuggerをつなげて動かすことができる。</li>
103 <li>Allwinnerからは(他の半導体ベンダのように)意地悪をするという感じはない。</li>
104 </ul>
105 </div>
106 <div class="section" id="id6">
107 <h2>注意点</h2>
108 <ul class="simple">
109 <li>Cortex-M3などを使っていると半導体ベンダからのマニュアルにドライバを書くのに充分な情報とサンプルコードが提供される、と思いがち。</li>
110 <li>Cortex-A7のSoCでは、それは期待しても無駄。u-boot, Linux kernelがsourceであれば御の字。マニュアルは詳細は記述されずレジスタのアドレスと概念図程度である(それでもあればマシ)。</li>
111 <li>Cortex-M3などを使っているとJTAG debuggerは当たり前と考えるが、そもそもCortex-A7のSoCではデフォルトで使えなくなっているものもある。</li>
112 <li>Cortex-A7(など)のSoCでは、ベンダ(の周辺)がブートローダ、カーネルなどを提供するからユーザは黙って使えという向きもある。ユーザが別のカーネルを用意することは前提とされてなかったり。</li>
113 </ul>
114 </div>
115 <div class="section" id="orange-pi-pcjtag">
116 <h2>Orange Pi PCのJTAG接続</h2>
117 <p>手持ちのOlimexのARM-USB-TINYをつないでOpenOCD 0.9.0で動きました。</p>
118 <p>Allwinner H3の設定で PA0, PA1, PA2, PA3をJTAGに使う(デフォルトはMMCと重なっている)。
119 PA0:JTAG_MS, PA1:JTAG_CK, PA2:JTAG_DO, PA3:JTAG_DI の役割。</p>
120 <p>接続は下記のとおり。</p>
121 <pre class="literal-block">
122 Orange Pi PC extention pins
123
124 Vcc3V3    1 2
125           3 4
126           5 6
127           7 8
128 GND       9 10
129 JTAG_CK  11 12
130 JTAG_MS  13 14
131 JTAG_DI  15 16
132          17 18
133          19 20
134          21 22 JTAG_DO
135          ...
136
137 ARM-USB-TINY pins
138
139            1 2  Vapp
140            3 4  GND
141 Target DI  5 6
142 JTAG_MS    7 8
143 JTAG_CK    9 10
144           11 12
145 Target DO 13 14
146           ...
147 </pre>
148 <p>接続の様子。</p>
149 <a class="reference external image-reference" href="/images/monthly-meetings/2015/orange-pi-pc.jpg"><img alt="Orange Pi PC with ARM-USB-TINY" src="/images/monthly-meetings/2015/orange-pi-pc.jpg" style="width: 320px;" /></a>
150 <p>scriptは sun8iw7.cfg として下記のとおり:</p>
151 <pre class="literal-block">
152 # Orange Pi PC
153
154 telnet_port 4444
155 gdb_port 3333
156
157 adapter_khz 300
158
159 if { [info exists CHIPNAME] } {
160    set  _CHIPNAME $CHIPNAME
161 } else {
162    set  _CHIPNAME sun8iw7
163 }
164
165 if { [info exists DAP_TAPID] } {
166     set _DAP_TAPID $DAP_TAPID
167 } else {
168     set _DAP_TAPID 0x5ba00477
169 }
170
171 jtag newtap $_CHIPNAME dap -expected-id $_DAP_TAPID -irlen 4 -ircapture 0x01 -irmask 0x0f
172
173 set _TARGETNAME0 $_CHIPNAME.cpu0
174 set _TARGETNAME1 $_CHIPNAME.cpu1
175 set _TARGETNAME2 $_CHIPNAME.cpu2
176 set _TARGETNAME3 $_CHIPNAME.cpu3
177
178 target create $_TARGETNAME0 cortex_a -chain-position $_CHIPNAME.dap -coreid 0
179 target create $_TARGETNAME1 cortex_a -chain-position $_CHIPNAME.dap -coreid 1
180 target create $_TARGETNAME2 cortex_a -chain-position $_CHIPNAME.dap -coreid 2
181 target create $_TARGETNAME3 cortex_a -chain-position $_CHIPNAME.dap -coreid 3
182 target smp $_TARGETNAME0 $_TARGETNAME1 $_TARGETNAME2 $_TARGETNAME3
183
184 $_TARGETNAME0 configure -event gdb-attach {
185     cortex_a dbginit
186 }
187 $_TARGETNAME1 configure -event gdb-attach {
188     cortex_a dbginit
189 }
190 $_TARGETNAME2 configure -event gdb-attach {
191     cortex_a dbginit
192 }
193 $_TARGETNAME3 configure -event gdb-attach {
194     cortex_a dbginit
195 }
196 </pre>
197 <p>コマンド起動は、こうします。</p>
198 <pre class="literal-block">
199 $ openocd -f interface/ftdi/olimex-jtag-tiny.cfg -f sun8iw7.cfg
200 </pre>
201 </div>
202
203     </div><!-- /.entry-content -->
204
205   </article>
206 </section>
207         </section>
208         <section id="extras" class="body">
209         </section><!-- /#extras -->
210
211         <footer id="contentinfo" class="body">
212           <address id="about" class="vcard body">
213             Powered by <a href="http://getpelican.com/">Pelican</a> with <a href="http://python.org">Python</a>.
214           </address><!-- /#about -->
215
216           <p>Source is available at a <a href="http://git.fsij.org/">Git repository</a>.</p>
217         </footer><!-- /#contentinfo -->
218
219 </body>
220 </html>