こんにちは。日本の半導体事業を応援する大根です。先日、Renesasのマイコンの開発環境を作ってて思ったんです。データシートからレジスタの番地を手動で書き出すの、面倒じゃね?と。
そこで、(だいたい)自動で複数ページに渡るPDF中の表をCSVに変換するスクリプトを書きました。
作ったものはこちら
使ってないサブルーチンとか、謎の変数とかある気がするけど、気にしたら負けです。計画性のあるプログラミングなんて、してません。
実行環境
- perlインタープリタ
- XML::Simple(CPANからDL出来ると思う)
- pdftotext(poppler付属のユーティリティ)
が必要です。Debian的環境なら、
apt-get install perl libxml-simple-perl poppler-utils
で導入できます。自分でDLしなきゃいけないとか、Windows最低だな。
使い方
./read_sfr.pl PDFファイル 開始ページ 終了ページ
で実行します。実行すると、何回か質問されて、答えるとCSVを標準出力に吐きます。
質問はエラー出力を使うので、標準出力をファイルにリダイレクトしてやれば普通のCSVが得られます。
使い方がよく分かんなかったら、ソースを読むと分かると思います。読めない人は、読めるようになりましょう。
性能
認識精度は、今回読んでいた、RX63NのデータシートのIOレジスタの表を読ませるのに必要な程度。他のデータシートでもそこそこ使えます。文字の位置以外は解析に利用していないので、同じセルの中のデータを他のセルと誤認することは割とありえます。面倒なのであんまり対策してません。それは手動でやったら良いんじゃないかな。
ところで、R8CとかRL78ではSFRって呼んでたのに、なんでIOレジスタっていう名前にしたんでしょうね?SFRの方が、呼び名としては好きだったんだけどな・・・。まあ、他のメーカはIOレジスタって呼んでることが多いような気がするけど、それよりパッケージの呼び名をもっとわかりやすくしてくれませんかね?
聞かれてないのに勝手にQ&A
- なんでメーカのヘッダファイル使わないの?
フリーソフトウェア信仰病の所為です。 - データシートからヘッダを作ったら、それにRenesasの著作権は無いの?
しりません。 - 既存のもっと良いツール無いの?
知りません。知らないから作った。探したらあるかも知れないけど、探してないから知らない。 - なんでperlなの?pythonとか使えよ
perlが好きだからです。それ以上の理由は必要ない。 - なんでRenesasはそれをcsvで公開しないの?
Renesas先生、教えてください。公開してたら、ごめんなさい。どこで公開してるんですか? - なんで学祭直前で忙しいのにこんなことしてるの?
なんででしょうね