ebay で売っていたもの。 J-Link OB と書いてあってかなり怪しい製品。STM32 に J-Link として動くファームが書いてあるっぽいがよくわからない。試した感じは使えることは使えそう。

接続までの基本

ケーブルが色分けされているが赤がGNDで白がVCC(3.3V)だったりするので気をつける。逆挿しされてんのか? と思ったけど、逆挿しできないコネクタだったので、ケーブルの配線が適当なんじゃないか。

試しに BLE Nano と接続してみた。nRF51 なので

openocd -f interface/jlink.cfg -c "transport select swd" -f target/nrf51.cfg

で繋げることができる。

ただし、NRF_POWER->RESET = 1; していると SWD の信号でリセットがかかりまくるっぽいので外しておくこと。

書きこむには

#!/bin/sh

set -x

# SoftDevice を .bin 形式にしておく
arm-none-eabi-objcopy -I ihex -O binary mbed-dev/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s130_nrf51822_1_0_0/s130_nrf51_1.0.0_softdevice.hex .build/softdevice.bin

# Softdevice S130 でのアプリケーションスタート位置 リンカの FLASH ORIGIN
STARTADDRESS=0x0001C000

# write softdevice
openocd -f interface/jlink.cfg -c "transport select swd" -c "set WORKAREASIZE 0" -f target/nrf51.cfg -c "init; reset halt; nrf51 mass_erase; sleep 500; flash write_image .build/softdevice.bin 0x0; verify_image .build/softdevice.bin 0x0; mww 0x4001e504 1 ; mww 0x10001000 $STARTADDRESS; mww 0x4001e504 0; reset run; shutdown"

# write application
openocd -f interface/jlink.cfg -c "transport select swd" -c "set WORKAREASIZE 0" -f target/nrf51.cfg -c "program .build/keyboard.bin $STARTADDRESS verify reset exit"

SoftDevice は一回書きこんだら基本的に変えないのでコメントアウトしても良い。

書きこみに時間がかかる。アプリケーション 45KB で 14秒ぐらいかかった。

gdb 使うのはまた今度 (ほんとは gdb したくて ebay で買ってみたんだけど、届くのに時間がかかってる間に熱がさめてしまった)

ref.

↓ の Makefile 使うと簡単に書けそう。結局ここから最低限抜き出した感じになった。program で .elf 書けば一発だろと思ったけど、そんなことはなくてダメだった (たぶん余計な情報があるから?)。

  1. トップ
  2. tech
  3. 中華製の J-Link OB を使い OpenOCD で nRF51 に書きこむ

これは思いのほか大変だった。。本体部分が途中で微妙に膨らんでいて、なおかつ線が全周に入っているので、それをどうフィーチャにするかで悩んだ。結局側面にスケッチを書いて push/pull したけど、完全に正しいモデルではない感じ。まぁ見た目の問題だけだからいいんだけど……

オフセット平面とか、中立平面とか、3Dでのコンストラクションを使ってフィーチャをミラーするみたいなのに多少は慣れてきた。ヒストリーの編集もだいぶ使っている。ヒストリー編集してるときは後続フィーチャがぶっこわれないかヒヤヒヤする。

図面的に、最初にできるだけ1枚のスケッチに複数平面にわたる全てのジオメトリを書きがち。これだととからオフセットさせてスケッチをコピーみたいなのがやりたくなるけど、スケッチのコピーというのはできないっぽい。コピーではなく、プロジェクト(投影って意味のほう)を使って別のスケッチのジオメトリを新規オフセットスケッチに投影するのが正しいっぽい? やりたいことはこれでできることがわかった。


あと、これとは関係ないけど、コンポーネントのインスタンス化のとき、ユーザパラメータを指定することはできないんだろうか? コンストラクタ引数を渡したいという感じなんだけど…… コンポーネント自体をコピペするしかないんだろうか?

  1. トップ
  2. tech
  3. Fusion 360 - RCサーボモータ S03T 2BBMG

相変らずバカにされているという感じを毎日感じている。何かしら製作しているときはそれを遠ざけることができるが、部品待ちでちょっとやることがないとか、あるいはやる気がちょっとなくなってきたりすると、即座に沸きあがってくる。


主観的には「自分は良くやっている」と思っても、たびたび客観的に自分を見るように強制される (例えば人事評価など) 。「他人の評価を気にするな」というのは無理な話というか、それをすることは社会生活上許されていないように思える。金が無限にあればいいんだろうけど、金がないのでしかたない。「他人の評価を気にするな」とか平気で言ってる人は金持ちなのだろう。

主観的な「自分は良くやっている」は、振り替えったときに「この頃よりもできることが増えたな」というときに感じることができる。


自分はソフトウェアエンジニアというかプログラマである自己認識があるが、それだけやってれば楽しいだろうという気持ちはない。根本的には自分が作りたいものを自分で作りたいのであって、それはソフトウェアに限らない。

しかし社会的には特定分野のスペシャリストが求められており、広く浅いことをしていても無視される。場合によっては遊んでるんじゃねーよみたいに言われる。スペシャリストはもちろん必要。ただ、おおむね絶対数としてはなんでもできるほうが求められているはずだと自分は思ってるけど、社会的にはそうではないらしい。

どんな分野でも「自分でやってみる」ことによって初めて理解できることがとてもたくさんある。もし全ての人が「自分でやってみる」ことを心掛けたら優しい世の中になると思う。でも大抵の人はそんなことをしようと思わないらしい。そもそも想像だけで相互理解なんて無理な話なのだ。想像力は経験からしか生まれない。


価値観に関して。自分の中では「箸の持ちかたを正しくする」とか「モールスを聞けるようになる」とかが特にカッコイイという価値観なのだけど、これは一般的ではないようで、他人からは見向きもされない。これに限らないが、こういう評価のギャップというのはたくさんあって、積もり積もって「一般」を司る社会全体への不信に繋がっている。