LoginSignup
0
2

More than 3 years have passed since last update.

u-bootのnetconsole

Last updated at Posted at 2019-02-19

シリアルが出てないモジュールでu-bootを使う場合はnetconsoleという機能が便利です。

u-bootのビルド設定に以下を追加します。

#define CONFIG_NETCONSOLE       /* include NetConsole support   */
#define CONFIG_NET_MULTI        /* required for netconsole      */
#define CONFIG_PREBOOT          "setenv stdout nc;setenv stdin nc"

CONFIG_IPADDRとCONFIG_SERVERIPも自分が使っているネットワークの設定にしてください。

これでビルドしたバイナリーをOpenOCDなどで焼くとnetconsoleで起動します。netconsoleはUDPのポート6666で通信をおこないます。

KS8695で試してみました。tools/ncb.cというコマンドも用意されていますがncコマンドだけでも使えました。

% nc -l -u 6666

ターゲットの電源を入れて"Hit any key to stop autoboot"が表示されたら(少し時間がかかります)リターンキーを何度か入力します。

これで止める事が出来ますが、止まらない時は何度か試してみてください。

mruby on Yet Another Bare Metalでも同じポートにメッセージを送るようにスクリプトを書いてみました。

def fib n
  return n if n < 2
  fib(n-2) + fib(n-1)
end

begin

yabm = YABM.new

addr = "10.10.10.202"
mask = "255.255.255.0"
gw = "10.10.10.3"
dns = "10.10.10.3"

yabm.netstart(addr, mask, gw, dns)

dist = "10.10.10.3"

yabm.udpinit

while 1 do
   yabm.print "."
   yabm.udpsend(dist, 6666, ".", 1)
   start = yabm.count() 
   fib(32)
   time = (yabm.count() - start) / 1000
   res = "fib(32): " + time.to_s + "sec¥n"
   yabm.udpsend(dist, 6666, res, res.length)
end

rescue => e
  yabm.udpsend(dist, 6666, e.to_s, e.to_s.length)
end

これをflashに焼いて実行すると以下のようにncに表示されます。

.fib(32): 37sec

ubootの起動出力を受けた場合、一度止めてもう一度ncを起動する必要があるようです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2