Make: AVR Programming pt.03

squeuei.hatenablog.com

Chapter 8

 割り込みを扱うときはISR()を使う。厳密に言うところは関数じゃなくてマクロ。 引数として割り込みベクタを与える。割り込みベクタの定義はio.hに書いてある。

外部割り込み

 外部割り込みを有効化するときは、2段階ある事を忘れないようにする。

  1. 使いたい割り込みベクタを有効化する
  2. 割り込みシステム全体をsei()で有効化する。

 普通は割り込みに入るときにglobal interrupt enableがオフになるので、割り込み中に更なる割り込みが発生することは無い。それを許可したい場合は、ISRのなかでsei()を呼ぶか、ISR_NOBLOCKでISRを定義するかのどっちかにする。

 割り込みを生じさせたくない場合はcli()を使ってglobal interrupt enableをオフにする。再開したいときはsei()を。

ピン変化割り込み

 Pin-Change InterruptではPxyPCINTxが対応する。ただしxはアルファベットと数字で対応してるのでややこしい。PByはPCINT0,PCyはPCINT1、PDyはPCINT2みたいに。 割り込みベクタは全部のピンで共通なので、ISRの中でどのピンからの割り込みなのかを判定して処理しないといけない。

  1. 制御レジスタ(PCICR)で使いたい割り込みを有効化する。
  2. 使いたいピンをピンマスクレジスタで設定する。
  3. global interrupt enableをsei()で有効化する。

 割り込みを受けるときは

  1. 同じバンクの複数のピンからトリガを受ける場合にはbit_is_clear(BUTTON_IN, BUTTON)のようにどのピンからの割り込みなのかを調べる。
  2. 同じバンクに一つしかトリガを受けない場合には、立ち上がりと立ち下がりの両方に反応することに注意。どちらなのかを確認する必要がある。

ISRで変数を操作したいとき

 ISRは引数を取れないので、mainからもISRからもアクセスできるグローバル変数を宣言する。 ただし、その変数はvolataileを付けること。つけないと、一度もmain内で変更されない変数とみなされて、コンパイラが定数に変更してしまうことがある。 空のforループを回すときにも同じ事をする。

Chapter 9

タイマ

 タイマにはノーマルモードとCTCモードがある。 ノーマルモードではカウンタがオーバフローするまで動作する。タイマの種類にもよるが255あるいは65535。 CTCモードではOCRnAレジスタで指定した値までカウントする。 ATMega168の場合はTimer1が16bit、そのほかは8bit。現在のタイマーの値はTCNTxに格納されている。

 CTCモードの場合はTCCRxAレジスタWGM01を設定する。また、outputモードにする場合はTCCRxAレジスタCOMxA0を設定する。また、outputモードにする場合は Output Compare Resister OCRxAビットに

 どのモードにせよ、プリスケーラを設定しなければ、タイマは動作しない。CSx2CSx1CSx0の値を、データシートの表にしたがって設定する。

CPUスピード

 CPUスピードを変える方法には“ヒューズ”を書き換える方法と、ソースコードの中で設定する方法の2つがある。

 この本のサンプルコードに付属するMakefileではmake set_fast_fuseすることで8MHz動作に変更される。戻すときはmake set_default_fuses

 そのほかにもAVRDUDEで設定変更ができるけど、例えばSPIEN-enable fuse bitを変更してしまうとSPIでのプログラミングができなくなったり(設定を戻すこともSPIではできない!)、CPUクロックソースを外部クロックに設定してしまったり(こっちはクロックや他のマイコンから1MHzの信号を印可してやればよいので、まだ対処しやすい)するので、注意が必要。

 ソースコードで設定する場合には、Clock Prescalar Change Enableビットをセットしてから4クロック以内にプレスケーラの値を変更しないと行けない。これはけっこうやっかいなので、avr/power.hにクロック変更用のマクロがすでに用意されている。

#include <avr/power.h>
clock_prescale_set(clock_div_1);

などとすればよい。

 power.hにはAVRに内蔵されている特定のモジュールの電源を落とすマクロなども用意されているので、省電力化したい場合には活用すると良い。

Make: AVR Programming pt.02

 まだまだ続く。けど夏休み中に終わらせるのは無理っぽい。

squeuei.hatenablog.com

Chapter 6

 ボタンスイッチをマイコンのデジタルIOに接続する時は、プルアップ抵抗を使うこと。プルアップ抵抗はボタンがオープンの時にレベルを確実にハイにするために必要な抵抗。ただし、AVRの場合は全てのピンにプルアップ抵抗が組み込まれていて、設定で有効化できる。

 Chapter 2で言及したように、DDRxが0(入力)のとき、PORTxはプルアップの設定になる。

プッシュボタンを使うときのチェックリスト

  1. DDRxレジスタを入力にする。
  2. プルアップのために抵抗素子を使わない時は、PORTxで内蔵のプルアップを有効にする。
  3. コードの中でボタンの電圧を読む。
  4. ボタンが押されてる間に何かをしたいのか、ボタンが押されたときに何かをしたいのかをヨーク考える。
  5. ボタンが押された時に何かをしたいのなら、デバウンシングすることを考える。たとえば一度押されたことを確認して、さらに一定時間後にも押されてたら、そのとき初めて何かを実行する、のような。

Chapter 7

LDRについて

 LDRを使う際、組み合わせる抵抗は

{\displaystyle
\mathrm{R} =\sqrt{
\mathrm{R}_{\mathrm{LDR}\mathrm{bright}}\cdot\mathrm{R}_{\mathrm{LDR}\mathrm{dark}}
}
}

で決定するのがよい。

ADCを使う時の注意

 アナログ回路設計のグッドプラクティスとしては、高速なスイッチングがあり、スパイクが乗るチップと、性格で安定した値が要求されるADCとで、独立した電源を供給するのが望ましい。特に、小信号や高周波信号を扱う時には重要となる。

  1. AVCCに給電した? システムのVccからの差は0.3 V以内でなきゃダメ。
  2. ADMUXのREFSxを設定した? デフォルトではAREFの外部電圧を基準とする。AVCCを基準にしたいのならREFS0をセットしないといけない。
  3. ADCのプレスケーラを設定した? ADCにはクロック源が必要。
  4. ADENを設定してADCを有効化した?
  5. マルチプレクサで正しいchを選択した? 設定はbitじゃなくてbinaryだよ?
  6. 最後に、ADCの値を別々に読むときはADCL(下位ビット)から読み込んでる? 10bit読むときはADCLを読み込んでからじゃないとADCH(上位ビット)は更新されないよ?

 上記の設定をしてから、ADCSRAのADSCを設定することで、ADCは変換を開始する。

 ADCSRAのADATEを有効にしてフリーランニングを使う時も、最初の一回はプログラマがADSCを設定しなきゃいけない。

 ADLAR=0のときはADCHの下位2ビットとADCLの8ビットがADCの出力となる。

 ADLAR=1のときはADCHの8ビットとADCLの上位2ビットがADCの出力となる。

 ADMUXでマルチプレクサを設定するときは、上位4ビットの値を保ったまま、下位4ビットを設定しなきゃいけない。 よくやるのはこんな感じ。

ADMUX = (0xf0 & ADMUX) | channel;

Make: AVR Programming pt.01

 買ってから優に一年間放置していた“Make: AVR Programming”を夏休みに読んでしまおう計画。

squeuei.hatenablog.com

Chapter 1

 AVRISPmk2を入手しておいたのだけど、こいつは自分で+5Vを供給してくれないので、ACアダプタでブレッドボードに5Vを給電するとかしないといけない。かつ、私の環境ではavrdudeでうまくmake flashしてくれないので、Arduino ISPを活用することにする。ISP買った意味がない。

 システムやユーザの環境変数を通すのが嫌だったので、PATHを通すバッチファイルを書いて、そこから操作することにする。

PATH=%PATH%;foo\bar\avr8-gnu-toolchain\bin;hoge\fuga\avrdude_utilities;
cd mado\homu\AVR-Programming

といった内容の.batファイル(ここでは安易にavr.batとした)を作成した後、エクスプローラから

C:\Windows\System32\cmd.exe /k "yui\azu\avr"

というショートカットを作る。フォルダやファイルの場所は各自修正のこと。ショートカットがリンクする先の最後にあるavrは.batファイルのファイル名にする。拡張子を付けないのが個人的にポイントだった。

 このショートカットを開けば、コンパイラとユーティリティへのPATHが通ったコマンドプロンプトが開く。

 サンプルコードを書き込む際には、Makefile

PROGRAMMER_TYPE = avrisp
PROGRAMMER_ARGS = -b 19200 -P com3

などとして、PATHが通ったコマンドプロンプトからmake flashする。

Chapter 2

 RAMに変数をつくることと、ピンへの書き込みやピンの入出力設定は同じインタフェース(代入)で行われるけど、これは実際に同じ事をレジスタに対して行っているから。そのレジスタの情報はio.hに格納されてる。

重要なハードウェアレジスタ

  • DDRx : data-direction registers port x

    インプットかアウトプットかを決める。

  • PORTx port x data registers

    • アウトプットに設定したとき:high or lowを設定
    • インプットに設定したとき:pull-upするかどうか(chapter 6参照)を設定
  • PINx port x input pins address

    • インプットに設定したピンのhigh or lowを読んだ結果が格納される。

 デフォルトで全部のピンはインプット。

 DDRの設定をせずにPORTを設定してしまうパティーンが多いので気をつけよう。

Chapter 3

 MOSFETはLEDのGNDとプログラマのGNDをいちいち手で接続したり外したりするのがめんどうなので使う、とのこと。

 正直肉眼で見ても全然わからなかったので写真に撮る。

f:id:squeuei:20160815001430j:plain

 Analog Discovery2のロジアナで見るとこんな感じ。ありがとうAD2。

f:id:squeuei:20160815001520j:plain

Chapter 4

サイロン (Cylon) は、SFテレビドラマ『宇宙空母ギャラクティカ』に登場する架空のキャラクター。
サイロン - Wikipedia

 さすがにわからん。

 プリアンプルの#defineは大文字をアンダースコアで区切って書くのが慣例。

  • ビットの設定:OR
  • ビットの消去:AND
  • ビットの反転:XOR

Chapter 5

 UARTのRT/TXの関係はSPIとは違って送り手と受け手で逆になるから気をつけよう。

 以下はこの本の著者が用意した便利関数の数々。

 initUSARTは、ボードレートの設定、2Xモードの設定、RXTXの有効化、データ長とストップビットの設定を行う。

void initUSART(void) {
  UBRR0H = UBRRH_VALUE;
  UBRR0L = UBRRL_VALUE;
#if USE_2X
  UCSR0A |= (1 << U2X0);
#else
  UCSR0A &= ~(1 << U2X0);
#endif
  UCSR0B = (1 << TXEN0) | (1 << RXEN0);
  UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
}

 送信時はUCSR0A(USART Control and Status Register 0 A)レジスタのUDRE0(USART Data Register Empty)が1になるまで待って、それからUDR0(USART Data Register)に送信したいデータを格納する。

void transmitByte(uint8_t data) {
  loop_until_bit_is_set(UCSR0A, UDRE0);
  UDR0 = data;
}

 受信時はUCSR0AレジスタのRCX0(receive-complete bit)が1になるまで待って、それからUDR0の値を読みに行く。

uint8_t receiveByte(void) {
  loop_until_bit_is_set(UCSR0A, RXC0); 
  return UDR0;
}

 私が持っていたUSB-RS232C変換ケーブルだと、PCで入力した文字と送信された文字が食い違う現象が発生した。

 これもAnalog Discovery 2のロジアナが無ければ、何が起きているのかわからないままだった。ありがとうAD2(2回目)。

 そういえばRaspberry Pi2Bを買ったまま死蔵していたなという事を思い出したので、下記サイトを参考に、シリアルコンソールによるログインを無効に設定してから

  • RPi2B Pin 5 <-> AVR GND
  • RPi2B Pin 7 <-> AVR Pin 2
  • RPi2B Pin 9 <-> AVR Pin 3

で接続し、cu -s 9600 -l /dev/ttyAMA0すると、ちゃんと動作した。

備忘録 Raspberry PiでUART、シリアル通信

Raspberry PIのGPIO上シリアルとArduinoの通信 - Qiita

RPi2 Model B IO Pins – Raspberry Pi Projects

 意外なところで意外なものが役に立つものだなあと、感心することしきりである。

2016年度版、これが私の手帳の書き方

 それは、考えなしになるための方法論。

イントロダクション

 手帳の使い方についていろいろ考えたのでまとめる。

覚えておくために書く

 まず何でもいいから、その日あったこと、考えたことを書く。何でも書く。ニュースに頼ってもいいから書く。

 放っておいたら何もかもを忘れてしまう。確かにあったはずのことなのに、思い出せないなんてことが許せると思える? 私には無理です。

 書くことは最もプリミティブな記録のひとつです。どんな悪文でどんなクソみたいな内容が書かれていても、それがいつかきっとあなたの財産になる(その価値はあなたの頭の中だけにしかないとしても)。  たとえば、レフト式の手帳を使うなら、左ページの余ったスペースにN行日記を書く、というのはいかがでしょう。

 本当は電子化したほうが、検索性の上で便利ですが、そこのところは私もどうしたらいいのかはかりかねているところです。

忘れるために書く

 覚えておきたいことを書いておくことは、思い出そうと思った時に思い出せる、ということに他ならなりません(実際にはどうインデックスを作っておくかが問題になるのですが)。

 逆に言えば、いつでも思い出せるなら、忘れてしまってもかまわない、ということでもあります。ある事項について、それを忘れてしまえば、そのことについて考えずにすみます。思考のリソースは有限なのです。

 六月最終週に新クールの録画予約するということを書いておき、定期的にその記述を確認しておけば、その日まで毎日覚え続けておく必要はないし、それまでに忘れてしまう確率も下がることでしょう。

 思いついたやるべきことはすぐに書く。書いたものは定期的に見直す。この合わせ技で、何かをし忘れるということはそれなりに減ります。サボりとかを除けば。

 どこでも最低限のメモを残せるように、小さなメモ帳を常に持ち歩くというのもよいでしょう。ダイヤメモとか、すぐメモとか、あるいは野帳とか。これらは、手帳がポケットに入らないくらい大きい、上着の中ポケットに手帳を入れると膨らんでかっこ悪い、などの場合に有利です。

考えなしになるために書く

 これは、やることを覚えておかなくてもいいようにしたら、次は「これから何をするべきか」を考えることすらしないようになりたい、という怠惰な発想に基づいた行動スキームです。

 まず、やるべきことのリストを整理します。これはwikipediaのGTD項を参考にしました。

foreach やるべきことのリスト:
    if 行動すべき?:
        if 所要時間 <= 2分:
            いますぐやる
        else if 達成にいくつもステップが必要?: 
            “プロジェクト”リストへ追加
        else if 自分がする必要がある?:
            誰かに依頼する
            依頼した内容を“連絡待ち”リストへ追加
        else if やる日程が決まってる?:
            日時を指定して手帳やカレンダーに追加
        else:
            “次のアクション”リストへ追加
    else:
        if いつかはやりたい?:
            “いつかする”リストへ追加
        else if 記録しておく価値がある?:
            “資料”リストへ追加
        else: 
             忘れる

 重要なのは、具体的で実行可能なステップに分解することです。

「これをするためにはどうすればいいんだろう?」と考えるようではダメです。何も考えること無く書いてあることに従えるようにするのが肝要です。

 また、優先度があまりにも異なることを、リストに並べないほうが良いかと思います。締め切りなどで、明確に優先すべきことがあるならスケジュールに入れてしまう方がよろしいかと。

 そうしないと「このリストのどれから手を付けよう」と考えなければなりません。思考は敵です。「どれも同じくらいの優先度だから、どれから手をつけても同じ」という状況を作るのです。

 私はNOLTYの手帳と手帳専用の補充ノート、それに普通のキャンパスノートを使って、下記の様に整理してます。

 基本的には場所毎のアクションへの落とし込みを意図しています。が、これは私にとっても持続不可能なくらい、項目が細かすぎるかもしれませんので、そこは各自うまくやりましょう。

  • “プロジェクト”
    • 業務:手帳に挟んだノート
    • プライベート:手帳に挟んだノート
  • “連絡待ち”
    • 業務:手帳に挟んだノート
    • プライベート:手帳に挟んだノート
  • カレンダー:
    • 日付が決まってる:手帳の月間ページ
    • 日時が決まってる:手帳の週間ページ
  • “次のアクション”
    • 業務:手帳に挟んだノート
    • 家:手帳に挟んだノート
    • 市内:手帳に挟んだノート
    • 市外:手帳に挟んだノート
    • 通販:手帳に挟んだノート
  • “いつかする”
    • 設備:手帳本体のノート欄
    • 読む本、聞く音楽、見るアニメ :手帳本体のノート欄
    • 勉強したいこと:手帳本体のノート欄
    • 旅行先:手帳本体のノート欄
  • “資料”:独立したノート

 あとは、前のアクションが終わったら、自分のいる場所の“次のアクション”リストを順次実行するだけです。どれも同じ優先度なら、どれから手を付けても、上から下でも、乱択しても、問題ないですよね?

 個人的な感覚として、このGTD(もどき)で2番目に大事なのは「具体的で実行可能なステップに分解する」で、1番目は「2分以内にできることはすぐやる」です。

予約をする

 絵に限らず、何事も突然上手くなることはありません。時間で殴る必要があるのです。

 レフト式やバーティカル式の手帳を使っているなら、そのための時間を先にallocしてしまうのです。特に、長期目標の場合には、上記したプロジェクトリストの中身と連携するのが良いのだと思われます。目標から逆算して分解した具体的な行動を、実施する時間を確保しておくことで着実に推進するのです。

 実のところ、ここのパートは自分もまだうまくできてないのですが、毎日一定の時間を確保して作業するのは脳にいいって『できる研究者の論文生産術 どうすれば「たくさん」書けるのか』にも書いてあったし、上手くいって欲しいし、上手くいくようになりたい。

結論

 tl;dr: 二分以内にできることはすぐやれ、やることリストを作るなら明確で具体的な行動の形で書け、やりたいことがあるなら時間を決めて毎日やれ。

余談

 来年にはまた“最高の手帳活用法”を“発見”して書き方変わってる予感しかない。

参考文献

意志力の話

WILLPOWER 意志力の科学

WILLPOWER 意志力の科学

GTD関連

全面改訂版 はじめてのGTD ストレスフリーの整理術

全面改訂版 はじめてのGTD ストレスフリーの整理術

www.lifehacker.jp

その他

できる研究者の論文生産術 どうすれば「たくさん」書けるのか (KS科学一般書)

できる研究者の論文生産術 どうすれば「たくさん」書けるのか (KS科学一般書)

kaiteki.hateblo.jp

getnews.jp

chromebook flip C100PA 雑感

はじめに

 前記事にて言及した通り、ASUS Chromebook flip C100PAをamazon.comから調達した。以下に所感を述べる。

導入の経緯

 近年、筆者は小型軽量のモバイルPC端末について、幾つかの環境構築を行ってきた。

これらの端末から、以下の知見が得られた。

  • Atomと2GB RAMにWin8はやや荷が重い。また、ドッキングさせるタイプの2-in-1には難がある
  • ACアダプター込みで1.5 kgの端末を携帯すること、および低品質なディスプレイの使用は人道に反する
  • Appleは早急にiOSの外付けキーボード使用時にもサードパーティーIMEを開放しろ

 以上の経緯を踏まえた上で、まだ見ぬ(潜在的に居もしない)青い鳥を求めて、新たにモバイル端末の導入を決定した。

調達

 緒言の通り、導入対象はASUS Chromebook flip C100PAを選定した。

 10インチ級のサイズ感、ACアダプタ込みで1kg前後の軽量性、IPSの液晶、ファンレス動作などが選定理由の一部である。

(もうすぐ絶滅するという)Atomを搭載した廉価な小型Windowsタブレットも検討されたが、T100TAの経験もあり、選定外とした。フルHD液晶やC100PAと比較して更に小型軽量な筐体など、こちらも魅力のある選択肢となるだろう。

 chromebookとは、その名が示唆する通りに、Google Chromeブラウザの使用に特化した、ややトチ狂ったPCである。

 しかしながら昨今のウェブ系技術の進展は目覚ましい物があり、テキストエディタから図形描写、果てはオフィススイートに至るまで、多彩なアプリが導入可能となっている。

 2016年のGoogle I/Oでは、他の機種に先駆けてGoogle Play Storeが導入される機種に選定された(余談としては、大して互換性高くならねーんだろーなという個人的な予想を立てている)

 ややメニアックな話題として、C100PAはRockchip製Cortex-A17クアッドコアプロセッサRK3288を搭載していること、Chrome OSLinuxベースであり、croutonを用いることで、Ubuntuなどへchrootする使用法が一部界隈で見られること、などが挙げられる。

 日本国内で民間向けに販売されているのは2GB RAM、JIS配列キーボードのモデルであるが、国内法人向けモデル、および日本国外においては、4GB RAMのUS配列キーボードモデルが販売されている。

Amazon.com: ASUS C100PA-DB02 10.1-inch Touch Chromebook Flip (1.8GHz, 4GB Memory, 16GB eMMC, Google Operation System), Silver: Computers & Accessories

 2016-05における販売価格は法人モデルで50544円、amazon.comで$269である。購入時の為替レートはUSDJPY=110程度であったため、クレジットカードの手数料を考慮しても、国内民間向けモデルのヨドバシカメラ実質価格34254円とほぼ同等の価格にて、メモリが4GBになる。

 初期不良等サポートへの不安(筆者にはASUSの完成品に関して嫌な思い出が幾つかある)を天秤にかけた上で、初めての海外通販に踏み切った。

 Amazon Global Priority Shippingを使用して315 USD、手数料込みで36000円弱となった。

 配送はUPS Worldwide Saverおよびクロネコヤマトで、発注から3日後には到着した。配達はクロネコヤマトだったため、噂に聞くUPSの再配達地獄には巻き込まれることはなかった。

使用感

  • 薄く、小さく、軽い。持ち歩きの快適度がかなり高い。
  • ACアダプタも小型軽量で良いが、独自端子であることが不安要素。
  • キーボードは問題なくタッチタイプ可能。右半分で無理している感のあるJIS配列より、US配列の方がまともさが高い。
  • ディスプレイの解像度は物足りないが、広い視野角は至って快適。
  • Chrome OSを使っていると至って快適で、重厚長大Windowsとは何だったのかという気分にさせられる。
  • しかしながら、これ一台でなんでもできる、というOSではない。少なくとも私にとっては。
  • 常日頃Tweetdeckとgoogle chromeを画面に並べておくタイプのユーザには最適と言えるだろう。
  • 4GB RAMの恩恵は比較対象がないため実感できないが、そもそも2GBのRAMは人道に反する。
  • 時折、日本語変換がもたつく。変換効率はgoogle日本語だけあって不自由なし。
  • croutonのchroot環境はやや不安定で、しかし動作速度に不満はそんなに出ない。
  • armhfアーキテクチャは面白みであると同時に、提供されるバイナリの少なさが時にネックとなる。それでもRaspberry Pi2などの普及によりさほど不自由はない。必要ならば野良ビルドも可能だ。

おわりに

tl;dr、薄くて小さくて軽くて、液晶の視野角が広くて、キーボードがまともで、Chrome OSに囚われている限りはなんの不自由もなく、croutonのLinuxはちょっと不安定だけど実用的な速度で走るから、今のところこの端末はサイコー。

chromebook flip C100PA でlinux環境づくり

amazon.comからchromebook flip C100PAのメモリ4GBモデルを購入したので、小型軽量ファンレスlinuxマシンとして使わんとする人々に有用と思われるTipsを以下に示す。

UPDATE 2017-06-06

mainline kernelを用いたArch Linux ARMの環境構築については下記記事を参照のこと。

squeuei.hatenablog.com

各種テスト

このあたり参考に。

  1. Ctrl-Alt-t でcroshを起動
  2. memory_testbattery_testなどがある。

shortcut keys

  • Reset : Reflesh + 電源ボタン
  • PgUp : Alt-up
  • PgDn : Alt-down
  • Home : Ctrl-Alt-up
  • End : Ctrl-Alt-down
  • Delete : Alt-backspace
  • IME on/off : C-space (US配列)

Developer Modeに入る

  1. 電源OFFの状態でEsc + Reflesh + 電源ボタン
  2. 白い画面でCtrl-dを押す
  3. スペースキーを押さずに待っているとデータの消去が始まる。
  4. 再起動したらCtrl-dを押すか、30秒待つことでChrome OSが起動する。

USBメモリへcroutonをインストール(sid編)

下記エントリを参考にインストール。-mオプションで国内ミラーを選んでおく。

chrome.hatenablog.jp

  1. Ctrl-Alt-tでshellを起動
  2. sudo umount /media/removable/hogefuga
  3. sudo cfdiskLinuxのパーテションを作る
  4. sudo mkfs.ext4 -L chromebook /dev/sda1
  5. USB stickを抜き差しする
  6. GitHubからcroutonをダウンロードする。
  7. sudo mkdir /media/removable/chromebook/crouton
  8. sudo sh ~/Downloads/crouton -r sid -t xfce -p /media/removable/chromebook/crouton -m http://ftp.nara.wide.ad.jp/debian

crouton環境はCtrl-Alt-tのcroshshellと打ってからsudo sh /media/removable/chromebook/crouton/bin/enter-chrootで起動。 Xfceを起動したい場合はsudo sh /media/removable/chromebook/crouton/bin/startxfce4

ただ、現状すんなりとstartx / startlxde4が起動しない。

crosh -> shellから

sudo rm /dev/dri/card0
sudo mv /dev/dri/card1 /dev/dri/card0

すると起動するんだけど、なんじゃこりゃ。

X11 Fails to Start (Chromebook Flip C100, 45.0.2439.4 dev) · Issue #1938 · dnschneid/crouton · GitHub

USBメモリへcroutonをインストール(trusty編)

ubuntu(trusty)の場合はこう。 sh ~/Downloads/crouton -r trusty -t xfce -p /media/removable/chromebook/crouton -m http://jp.archive.ubuntu.com/ports/

こっちはふつうにXが動く。

archlinux ARM

公式ガイドの手順通りにインストール。

インストール後の設定もろもろ。

localeつくる。

  • vi /etc/locale.genen_US.UTF-8ja_JP.UTF-8コメントアウトを外し、locale-genecho LANG=en_US.UTF-8 > /etc/locale.confexport LANG=en_US.UTF-8

タイムゾーン設定。ChromebookのHWクロックはUTC

  • timedatectl set-timezone Asia/Tokyo

パッケージの更新。

  • vi /etc/pacman.d/mirrorlistからミラーを増やす。
  • pacman -Syuでパッケージ更新。

rootのパスワード設定と通常ユーザ作成。

  • passwdでパスワード設定
  • pacman -S sudo
  • useradd -m -g wheel *username*
  • passwd *username*
  • visudoDefaults env_keep += "HOME"%wheel ALL=(ALL) ALLコメントアウトをはずす。

Xorgのインストール。

  • pacman -S xf86-video-armsoc-rockchip veyron-libgl
  • pacman -S xorg-server xorg-server-utils xorg-apps xterm xorg-xclock xorg-twm
  • sudo cp /etc/X11/xinit/xinitrc ~/.xinitrc

 croutonと比較して、本物Linuxが動くのは利点だが、Kernelが古い(3.14)など、自分でメンテを引き受けて貢献しない限り、Archのbleeding edge性は得られないであろうとの判断があり、現時点における結論としてcroutonのtrustyを使うことにした。
 使用感などは追々。取り急ぎ、環境構築まで。

iPad mini 4 雑感

Introduction

 電子書籍端末用途を主眼とし、iPad mini 4を調達してから一ヶ月が経ったので、現状での雑感を述べる。

Purchase

 ASUS MeMOPad HD7の引退以降、Kindle用端末は5インチクラスのスマートフォンとPCに依存する状況にあった。これらの端末は、画面サイズ、あるいは操作体系から、電子書籍、特に技術書の可読性に劣る傾向があった。

 この状況を打開するため、タブレット端末の新規調達を検討してきた。主用途から可搬性に優れた7インチクラスの画面が望ましく、またアスペクト比は非ワイドであることが優位となる。

 これらの条件を満たすタブレットとしてはApple iPad miniシリーズ、ASUS ZenPad S 8.0があるが、今回はiOS資産の有効活用という観点もあり、iPad miniシリーズの最新機種である、iPad mini 4を調達することになった。

 調達内容はiPad mini 4本体、AppleCare+、SmartCover、Logicool Keys-to-Go Keyboard、調達金額は概算で80kであった。

Hardware

 物理的にはかなりよい。もはやAppleが誇るアドバンテージのひとつとなったRetinaディスプレイは、解像度では他のタブレットに追いつかれつつあるも、アスペクト比がワイドでないおかげで、電子書籍を読むにも都合がいい。

 Touch IDはホームボタンをさわるだけでロック解除が可能で便利。ただ、物理ホームボタンの存在自体はダサい。

 BTやWiFiの認識が早いのはすばらしい。そういうところでストレスがないのは、ハードウェアとソフトウェアとを同じメーカが作っていることの利点であろう。

iOS ecosystem

 第四世代のiPod TouchはiOS7までしか提供されなかった。なので、フラットデザインを導入したモダンなiOSにさわるのはこれが初めて。

 下からフリックでWiFiの切り替えなどの設定ができるようになったのは便利だけど、もはや直感的というには、複雑で、文脈に大きく依存したUIであるように感じられる。

 Pagesなどの公式アプリでも、アイコンがなにを意味するのかさわってみるまでわからないなど、混乱を引き起こす要素がある。

 Androidと比較すると、戻るボタンがないせいで、「とりあえずこれを連打すれば"アプリ内でホームとなる画面"に戻れる」という操作がアプリ間でバラバラになってるのがつらい。ここで言う"アプリ内でホームとなる画面"は、たとえばTwitterアプリにおけるTL画面を指す。アプリ起動直後の画面といってもいい。

Applications

 アクセサリとして、SmartCoverとLogiool Keys-to-Go Keyboardを買った。カバーはまあこんなものかという感じ。開閉に応じて画面がオンオフされるのは便利だけど、そんなのありふれた機能だし、特に感想もない。キーボードはエンターとバックスラッシュが小さいのは減点。キータッチは悪くはないけれど、不満がないわけではない。それでもこのサイズでまともに入力できる製品は少ないので、悪いところ探しに近い。

 いままさに、この文章はiPad mini 4とLogicool Keys-to-Go Keyboard、ATOK Padを使って書かれている。

 ATOKPad はiOSIMEサードパーティに開放されてなかった時代のメモアプリで、更新が止まっているために、今更買うのはためらわれる。私は、以前使っていたiPod Touch (4th Gen.) の為に買って、あまり使わずに死蔵してしまっていたものがあったので、久しぶりに活用している。怪我の功名だ。

 ATOK Passport を契約しているにも関わらずATOK for iOSを買わなければならないのかとばかり思っていたので、キーボードを買った後で外付けキーボード向けにIMEAPIが公開されていないということを知って愕然とした。ATOK for iOSを買う前に気づいてよかった。

Conclusion

 基本的に満足している。

 その一方で、アクセサリを含むとは言え80kという調達価格は高価であり、それに見合う便益が得られるか否かには疑問の余地があると言える。とはいえ、生産性のための実用品が必要であるならば、そもそもノートPC、あるいはChromebookを買うという選択肢を考慮するべきであり、iPad自体が、余暇を楽しむための高級なガジェットである、ということであろう。

広告を非表示にする