« 2014年12月 | トップページ | 2015年2月 »

2015年1月

2015年1月17日 (土)

STM32F303のCCMでコード実行

STM32F303にある、CCM (Core Coupled Memory) RAMでのコード実行を試してみる。

CCM RAMの0x10000000番地に配置されるコードを吐くのはできそうだけど、それを通常のコードと一緒にFLASHに書き込んで、実行前に実体をコピーするのか...
手作業でしこしこやればできそうだけれど、面倒だな...と思っていたけれど、初期値付static変数などと同じ扱いでいいことに気付いた。

------

CCM用に専用のセクションを用意。
ここに配置したい関数を指定

例えば、

int CcmTest(int) __attribute__ ((section (".ccm")));

とかプロトタイプ宣言。

次にリンカスクリプトの中で、このセクションをCCM RAMのアドレスに配置。

MEMORY
{
  rom (rx)  : ORIGIN = 0x00000000, LENGTH = 256K
  ccm (rwx) : ORIGIN = 0x10000000, LENGTH = 8K
  ram (rw) : ORIGIN = 0x20000000, LENGTH = 40K
}

SECTIONS
{
  . = 0x10000000;
  .ccm : {
  *(.ccm)                  
} > ccm AT > rom

で最後の行で、.ccmの実体はflashエリアに置くように指定。
これで、.textセクションの直後に実体が置かれる。

さらに、スタートアップの中で、変数の初期値をコピーするのと同時に、この部分のプログラムの実体をflashからccmへコピー。
何処にあるかは、mapファイルに書いてあるけど、textセクションの直後。
コピーするサイズは、ccmセクションのサイズを計算して求める。

これでめでたく、指定した関数をCCM上に配置して実行できるようになった。

------

呼び出しオーバーヘッドや、外部メモリアクセス等の影響があるので、正確に測るのは面倒だけれど、簡単な無限ループを実行して、ループのスピードをカウントしてみる。
環境はクロック72MHZで、2ウエイトクロック。

試した感じだと、flashに比べてccmでの実行速度は、25%ほど速いようだ。
カタログスペックでは50%くらいは速い、となってるので、まあこんなもんかな。


使える容量は少ないけれど、いよいよの時には使えるかも。
オーバークロックよりは安全そうだし。

| | コメント (0) | トラックバック (0)

2015年1月15日 (木)

足回り試作

某所から補給物資が。

フロント用
150115a

リア用
150115b

組み立て
150115c

切削だし、精度は宜しくはないのだけれど、贅沢は言えない。

ギア付きホイールは、先日作ったもの。
エンコーダー用磁石を内蔵することもあって、大径のベアリングを使用。

アップライトの取付は、接着の予定。
φ16もあるし、段付きなので、そりゃあもう強力にくっつくはず...
ちょっと重いのは仕方ないけど、高剛性な足回りを目指してみる。

組んだ感じは、摩擦はあるけど剛性は高そう。
ホイールが負けるかも...

M3のネジでベアリングを微妙に締め付け調整する、いつもの物もいいのだけれど、また違ったものもトライ。

------

早速動きがあるようだ...と思ったら、十分予測の範囲の話の公開だった。
まあ、そうなるでしょ。
最初の話の時点で無理筋だったし、もう半分くらいはそのつもりで動いてました...

人や、集団の気持ちというものは不合理で、段取りや手順、時間を必要とするものなのだなあ、とつくづく思う。

すぱっと割り切れるならば、ここまで余分なリソースを消費しないのだけれど...まあ人としては必要なのだろうなあ。

| | コメント (0) | トラックバック (0)

2015年1月10日 (土)

ホイール接着

接着剤を調達して、ミニッツのホイールと、GWSのスパーギアを接着。

3Dプリンタ出力や、ギアすら切削で自作するような今風の手法からすると、まことにクラシックな方法。
手加工でも、ゆっくりやればそれなりにいい感じにまとまるので、いまだに愛用。

そろそろやり方を変える時期ではあるのだけれど。

------

近所の神社にてお参り。
おみくじをひくと、大吉とでる。

短気を起こさず、物事に当たれば何事もうまくいくとある。
予想を大きく外れるような事件は無いということか。

大きな動きがありそうな時だけに、それは助かる。

失せ物、高いところにある。失せ物、何かあったかな。

| | コメント (0) | トラックバック (0)

2015年1月 9日 (金)

ビンテージ?

実家から、昔の写真をスキャンしたものが送られてきた。
懐かしいものだ。

10893374_761288873965891_142361249_

当時の現場の写真。こんなのあったっけ。

抱えているノートPCは、EPSONのPC9801互換機、PC-386noteA。
当時の最新スペック。

CPUは、i80386SX-16MHz。
ハードディスクもカートリッジ式で取り外し可能なのが20MBほど。
メモリーもしこたま積んであって、640KB+EMS 4MBくらいあったかな。EMSなんて言われてもわからんか...

でもまあ、今のSTM32の数分の1の性能だな。

------

当時はnet環境もなく、宿に戻ると、もう全く何もやることが無い。
酒飲んで寝るくらいしかなく、そんな生活が、数か月以上続く。

しばらくすると、さすがにやることがなく煮詰まってきたので、日本からMSCのパッケージを送ってもらい、この仕事用のPCにインストールして、宿に戻ったあと、仕事用のツールなどをちまちま作り始めた。

このころからノートPC1台だけで、すべてを開発できる環境を作り始めた気がする。

| | コメント (0) | トラックバック (0)

2015年1月 8日 (木)

さらに作業中

10年来の在庫部品を整理して、使えそうな部品を物色。
今レイアウトしているもののほかに、もう1台分くらいは組めそう。

ミニッツのホイールと、GWSのギヤを加工する。
接着しようとすると、手持ちの瞬間接着剤が全滅...まあここ数年は使ってなかったから無理もない。
新品を買ってこないと。

ベアリングやバッテリなど、netで注文した小物が色々届く。
今時は少額でもクレジット支払いが普及してきて、ますます便利ではあるのだが。
あまりにも少額なので、配送料の方が高くつくのがなんとも。

以前は、電動プレーン用のモーターが出回っていて、入手しやすかったのだが、
最近は、こういった用途には、ブラシレスモーターが一般的なようで、マウスに使えるようなコアレスのブラシモーターは、インドア用の小さいのばかりになってしまった。
ハーフにはちょうどいいが、クラシックに使えそうなのは、あまり見かけなくなってしまった。
調達先から探さなきゃいけないのか。

それとも実は、今の時代に合った物があるのか。

| | コメント (0) | トラックバック (0)

2015年1月 6日 (火)

作業中

レイアウト作業。
部品点数は少ないが基板面積も極小なので、レイアウトは難航中...

マウスのレイアウトは久しぶりだけど、それなりにとんがったものにしたいので、色々調整中。

------

本業について。

珍しく公開可能なので紹介。
こんなこと(も)やってます...

| | コメント (0) | トラックバック (0)

« 2014年12月 | トップページ | 2015年2月 »