modify 2015-Nov
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 10 Nov 2015 12:12:29 +0000 (21:12 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 10 Nov 2015 12:12:29 +0000 (21:12 +0900)
content/images/monthly-meetings/2015/orange-pi-pc.jpg [new file with mode: 0644]
content/monthly-meetings/2015/Nov.rst

diff --git a/content/images/monthly-meetings/2015/orange-pi-pc.jpg b/content/images/monthly-meetings/2015/orange-pi-pc.jpg
new file mode 100644 (file)
index 0000000..11ad350
Binary files /dev/null and b/content/images/monthly-meetings/2015/orange-pi-pc.jpg differ
index 66d160a..80d1ec4 100644 (file)
@@ -34,3 +34,141 @@ JTAG debuggerをつないで4つのコアをデバッグしてみる、また、
 ===============
 
 * g新部 裕
+
+
+まだ充分ではなく残念な点
+================================
+
+* Allwinner H3の技術情報開示は必ずしも充分ではない。
+
+  - linux-sunxi.org に解明された情報、マニュアルなどはある。
+
+  - u-bootのsource codeがある。
+
+  - Linux 3.4のsource codeがある。
+
+  - bootの仕組みも(必ずしもベンダから積極的に開示されているわけではないが)解明されている。
+
+* 回路図の取得にはユーザ登録が必要。
+
+* Allwinner H3のMMCのハードウェアは高速な転送モード(UHS)をサポートしていない模様。
+
+
+良い点
+================
+
+* www.orangepi.org からたどると有用な情報にたどり着ける。
+
+* 上記から、すぐ使える u-boot, Linux kernel, Debian のimageが提供されている。
+
+* JTAG debuggerをつなげて動かすことができる。
+
+* Allwinnerからは(他の半導体ベンダのように)意地悪をするという感じはない。
+
+
+注意点
+================
+
+* Cortex-M3などを使っていると半導体ベンダからのマニュアルにドライバを書くのに充分な情報とサンプルコードが提供される、と思いがち。
+
+* Cortex-A7のSoCでは、それは期待しても無駄。u-boot, Linux kernelがsourceであれば御の字。マニュアルは詳細は記述されずレジスタのアドレスと概念図程度である(それでもあればマシ)。
+
+* Cortex-M3などを使っているとJTAG debuggerは当たり前と考えるが、そもそもCortex-A7のSoCではデフォルトで使えなくなっているものもある。
+
+* Cortex-A7(など)のSoCでは、ベンダ(の周辺)がブートローダ、カーネルなどを提供するからユーザは黙って使えという向きもある。ユーザが別のカーネルを用意することは前提とされてなかったり。
+
+
+Orange Pi PCのJTAG接続
+=================================
+
+手持ちのOlimexのARM-USB-TINYをつないでOpenOCD 0.9.0で動きました。
+
+Allwinner H3の設定で PA0, PA1, PA2, PA3をJTAGに使う(デフォルトはMMCと重なっている)。
+PA0:JTAG_MS, PA1:JTAG_CK, PA2:JTAG_DO, PA3:JTAG_DI の役割。
+
+接続は下記のとおり。 ::
+
+   Orange Pi PC extention pins
+                                     
+   Vcc3V3    1 2
+             3 4
+             5 6
+             7 8
+   GND       9 10
+   JTAG_CK  11 12
+   JTAG_MS  13 14
+   JTAG_DI  15 16
+            17 18
+            19 20
+            21 22 JTAG_DO
+            ...
+   
+   ARM-USB-TINY pins
+     
+              1 2  Vapp
+              3 4  GND
+   Target DI  5 6
+   JTAG_MS    7 8
+   JTAG_CK    9 10
+             11 12
+   Target DO 13 14
+             ...
+
+接続の様子。
+
+.. image:: /images/monthly-meetings/2015/orange-pi-pc.jpg
+   :alt: Orange Pi PC with ARM-USB-TINY
+   :width: 320
+   :target: /images/monthly-meetings/2015/orange-pi-pc.jpg
+
+  
+scriptは sun8iw7.cfg として下記のとおり: ::
+
+    # Orange Pi PC
+
+    telnet_port 4444
+    gdb_port 3333
+
+    adapter_khz 300
+
+    if { [info exists CHIPNAME] } {
+       set  _CHIPNAME $CHIPNAME
+    } else {
+       set  _CHIPNAME sun8iw7
+    }
+
+    if { [info exists DAP_TAPID] } {
+       set _DAP_TAPID $DAP_TAPID
+    } else {
+       set _DAP_TAPID 0x5ba00477
+    }
+
+    jtag newtap $_CHIPNAME dap -expected-id $_DAP_TAPID -irlen 4 -ircapture 0x01 -irmask 0x0f
+
+    set _TARGETNAME0 $_CHIPNAME.cpu0
+    set _TARGETNAME1 $_CHIPNAME.cpu1
+    set _TARGETNAME2 $_CHIPNAME.cpu2
+    set _TARGETNAME3 $_CHIPNAME.cpu3
+
+    target create $_TARGETNAME0 cortex_a -chain-position $_CHIPNAME.dap -coreid 0
+    target create $_TARGETNAME1 cortex_a -chain-position $_CHIPNAME.dap -coreid 1
+    target create $_TARGETNAME2 cortex_a -chain-position $_CHIPNAME.dap -coreid 2
+    target create $_TARGETNAME3 cortex_a -chain-position $_CHIPNAME.dap -coreid 3
+    target smp $_TARGETNAME0 $_TARGETNAME1 $_TARGETNAME2 $_TARGETNAME3
+
+    $_TARGETNAME0 configure -event gdb-attach {
+       cortex_a dbginit
+    }
+    $_TARGETNAME1 configure -event gdb-attach {
+       cortex_a dbginit
+    }
+    $_TARGETNAME2 configure -event gdb-attach {
+       cortex_a dbginit
+    }
+    $_TARGETNAME3 configure -event gdb-attach {
+       cortex_a dbginit
+    }
+
+コマンド起動は、こうします。 ::
+
+    $ openocd -f interface/ftdi/olimex-jtag-tiny.cfg -f sun8iw7.cfg