2017-01-01から1年間の記事一覧

STM32のTips (Flash関係)

開発環境はIARのEWARMです。 binファイルの生成 デフォルトではプロジェクトをビルドするとoutファイルが生成されます。outファイルからbinファイル(バイナリイメージ)を生成するには、プロジェクトの[オプション]の[出力コンバータ]にて、[追加出力ファイル…

CubeMXのコードを流用して音声再生

この記事はMbed Advent Calendar 2017の23日目の記事です。 STM32のCubeMXの吐いたコードをmbedにコピペしても、ふつうにコンパイルできます。HALライブラリのAPIもふつうに使えます。そこで、Nucleo-F767ZIをmbedで使用しつつ、CubeMXで生成したコードをコ…

twitterの検索の演算子

twitterの検索で、ユーザーや日付を指定することができるようだ。今ごろ知った。 (例) from:@lipoyang ←ユーザー名@lipoyang since:2017-01-01 ←2017年1月1日から until:2017-12-20 ←2017年12月20日まで UIとしてはtwilogのほうが便利だけど、twilogに登録…

音声/画像データの雑な扱い方

WAVファイルは先頭44バイトを読み飛ばす。 BMPファイルは先頭54バイトを読み飛ばす。 ※ BMPファイルの画像データは「左下」から「BGR」の順なので要注意。

Nucleo/mbedのタイマリソースの調査

この記事はMbed Advent Calendar 2017の19日目の記事です。 目的 mbedベースでお手軽に開発しつつ、痒い所だけ本気出して底からコード書くようなスタイルが好みです。ただしそのとき問題になるのが、mbedライブラリがどういうリソースの使い方をしているかと…

Windowsメジャーアップデート後の儀式

自分用メモ。 毎回いろいろ設定が消えてしまうので、やり直す。 ディスプレイの色調整 自分のThinkPadは液晶が青っぽいので、主観で調整する。 デスクトップで右クリックして「グラフィックプロパティ」を選択して、「インテルグラフィック/メディアコントロ…

nRF52ミニ基板「斑鳩」の試作

この記事はMbed Advent Calendar 2017の8日目の記事です。 BLEマイコンnRF52搭載のミニ基板「斑鳩」の試作について書きます。「斑鳩」はオープンソースハードウェアです。今はまだ試作段階ですが、そのうちイベント等で頒布するかも。12/16(土)・17(日)開催…

IARコンパイラのWarning抑制

IAR C/C++コンパイラで、使われていない関数や変数についての警告を抑制するおまじない。 (あくまでデバッグ用。最終的にはそんなものは残さない。) #pragma diag_suppress=Pe177 // never referenced function #pragma diag_suppress=Pe550 // never used…

CubeMX環境でprintfを使う

UART出力 STM32マイコンのCubeMX環境(HAL Driver使用)でprintfを使ってUARTに文字列を出力したい場合、下記のようなputchar関数を実装すればよい。この例では標準出力をUART2に出力している。もちろん、あらかじめCubeMXで対応するUARTの設定をおこなって初…

IARのプロジェクトのバージョン管理メモ

IAR Embedded Workbenchのプロジェクトでバージョン管理から除外するファイルは、以下の通り。(たぶん) 除外すべきファイル EWARM/プロジェクト.dep EWARM/settings/ EWARM/プロジェクト/Obj/ 除外するかどうかはお好みで(最終生成物) EWARM/プロジェクト/…

ぼくのボスはお釈迦さま

つらつらと思うことを書いてみる。長らく社会人やってて、現代語で文章を書くことにもずいぶん慣れたけれど、いまだに魂の言葉は漢文体になっちゃうね。 吾人、年少より俗を厭ふるの性有り。長じて洛陽に在ること四年、濃州に赴くこと三年、河州の塵網に囚は…

ホーザンのパーツケース&ダイソーのジョイントA4ラック

ホーザンのパーツケースをいくつも積んでると出し入れに難儀しますが、ダイソーのジョイントA4ラック(1段100円)を積んで収納すると出し入れかんたん!

Arduino互換ボードの条件コンパイル

がじぇっとるねさすコミュニティの記事よりメモメモ。 元記事 GR-SAKURA、GR-KURUMI、Arduino 等でのプログラムの共用 要点 ソースは .ino ではなく、ふつうに .cpp/.c と .h で 機種ごとにヘッダのインクルードを条件コンパイル ここで分かりやすい機種分け…

光るお嬢様聖水

お嬢様聖水にブラックライトを当てると、光る。

PSoC CreatorのCコンパイラ

PSoC Creatorで使われるCコンパイラは、PSoC3(コア:8051)はKeilのPK51ですが、PSoC4/5(コア:ARM Cortex-M)はGCCです。PSoC3のコンパイラに関しては、KeilがPSoC Creator用に無償でライセンスしてくれているようです。(CypressがKeilにライセンス料払ってる…

AndroidをUSBシリアルのホストに

usb-serial-for-androidを使用する方法をメモ。 他にFTDriverというのもある。 (1) usb-serial-for-androidのソースを入手 下記サイトからプロジェクト一式をダウンロード(またはgitでclone)する。 usb-serial-for-android (2) Android Studioでプロジェクト…

標準Cライブラリいろいろ(GNUを中心に)

※ 独断と偏見が混ざっています。 glibc 言わずと知れたGNUの標準Cライブラリ 主にLinuxで使われる POSIXなどUNIX系OSの標準機能を提供 組込み系で使うには重くてデカい、無用の機能が多い uClibc 組込みLinux向けのGNUの標準Cライブラリ uClinux向けに開発さ…

我流パターンカット法

自責は心のリストカット。そんなことよりパターンカットしようぜ! パターンカットといえば、プリント基板の修正のために銅箔のパターンをカットすることですが、正しいパターンカットの方法というものを教わったことはないような… 下記はあくまで僕の我流で…

STM32マイコンの開発環境について(雑談)

STM32マイコンの開発環境はいろいろあるいけど、ぶっちゃけ言って次の3パターンに絞られると思う。 (※個人の感想です。) 金があるなら IAR(EWARM) か Keil(uVision/MDK-ARM) 金がないなら SW4STM32 お手軽志向なら mbed IARやKeil(カイルと読む)は、ン十万円…

Cortex-M4FのFPUを使う

ARM Cortex-M4は、M3にDSP(SIMD,MAC)命令を追加したものだが、Cortex-M4Fと呼ばれるものは、さらに単精度のFPU(浮動小数点ユニット)を持っている。どれくらい効果があるものか、三角関数の計算で速さを比較してみた。 方法 Cortex-M4Fをコアに持つLPC4370を…

LPC4370のRAM上実行について

LPC4370は、282kBのRAMを内蔵するかわりFlashを内蔵しておらず、RAM上で実行することを前提としている。204MHzという高速な動作クロックのため、内蔵Flash上の動作では読み出しアクセスがボトルネックになるためである。(回路の特性上、SRAMはFlashより高速…

Nucleo種類多すぎ

Nucleoボード種類多すぎて、どれがどれか分からないのでまとめ。 STM32のラインナップ まず、STM32マイコンのラインナップについて アルファベットの次が7ならM7、4ならM4、0ならM0、これは分かりやすい。 でも3ならM3かと思いきやM4。1か2ならM3。おおむね…

LPCマイコンのコードのRAM実行

LPC-Link2をLPC4370ボードとして用い、コードを実行させてみると、なぜかLPCXpresso LPC1769と比べて10倍以上遅かった。LPC-Link2は Cortex-M4 @ 204MHz、LPCXpresso LPC1769は Cortex-M3 @ 120MHzである。ぜったいに何かおかしい。 調べてみると、どうやらL…

比較演算子と型

間抜けなバグにハマってしまった。 代入演算子と違って比較演算子は右辺の型にキャストされる。 何年C言語やってるねん? uint32_t T = 10; int32_t t = -10; if(t >= T){ printf("over!\n"); }

LPCXpressoでのRAMブロック指定

LPCマイコンのたとえばLPC1549は、合計36kバイトのSRAMを持っていますが、16kバイト/16kバイト/4kバイトの3つのブロックに分かれています。第一のブロック以外は、省電力のために個別にディセーブルすることが可能です。LPCXpressoでソフトウェアを開発する…

ESP32のフラッシュメモリの読み書き

WindowsでESP32のArduino開発環境がセットアップされていること。 esptool.exeのあるディレクトリにパスを通しておきます。通常は、C:\Users\ユーザ名\Documents\Arduino\hardware\espressif\esp32\tools ESP32を書き込みモードで起動してシリアルポートをPC…

いまさらTWELITE

数年前、TWELITE (旧称 TWE-Lite、例のマッチ棒アンテナのやつ) ていう無線マイコンモジュールが流行ったことがあって、でも最近あんまり聞かないなと思ってたんですが、ちょっと縁があって触ってみることになりました。 やりたいこと PLC(シーケンサ)をコン…

毎日決まった時刻にAndroidの画面をオフする方法

Androidタブレットを展示用のディスプレイとして用い、展示を終了する毎日決まった時刻に自動で画面をオフする方法を検討しました。(画面オンは毎朝手動で。電源はUSBで常時給電。) 画面をオフするアプリ 「Screen Off and Lock」 指定の時刻にアプリを起…

VSCodeでMarkdownからHTMLを生成

Wordでドキュメント書くのクソかったるいし、もうMarkdownでええやろと思いつつ、客に読めないと言われたら面倒だからVSCodeの拡張機能でHTMLに変換してみたら見た目が気に入らなくてスタイルシートいじりだして、だんだん何やってるのか分からなくなってき…

バージョン管理で無視するべきファイル

Visual Studio 【昔】 *.suo bin/ obj/ 【今】 .vs Debug *.vcxproj.user Android Studio /.gradle/ /.idea/ /app/build/ /build/ /local.properties /*.iml