Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
メモリと遊んでみた Pert2
Search
akira345
June 11, 2016
Technology
0
37
メモリと遊んでみた Pert2
LT駆動開発 26 - Extended 報告会 後朝祭
にて、SRAMをArduinoで制御してみたので報告しました。
akira345
June 11, 2016
Tweet
Share
More Decks by akira345
See All by akira345
Dockerを触ってみよう
akira345
0
34
アラフォー世代が基板を作ってみた(公開用)
akira345
0
85
ESP-WROOM-02でプチIoT
akira345
0
67
基板から回路図を起こしてみよう
akira345
0
850
OSS翻訳プロジェクトに参加してみた
akira345
0
63
ジャンク解析入門
akira345
0
46
Lt駆動開発28 Windows版Dockerを試してみた。
akira345
0
34
Simの容量が気になって安眠できない
akira345
0
45
DockerをGUIで使いたい!
akira345
0
50
Other Decks in Technology
See All in Technology
20分で完全に理解するGrafanaダッシュボード
hamadakoji
5
890
生成AIの変革の時代に、直近1年で直面した課題とその解決策
ktc_wada
0
680
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
4
610
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
2
140
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
330
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
2
590
社内アプリで Cloudflare D1を プロダクト運用してみた体験談(Tokyo)
haochenx
0
120
Next.js に疲れた私は Vue3 に癒やされた
akagire
0
140
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
360
The AI Revolution Will Not Be Monopolized: Behind the scenes
inesmontani
PRO
1
160
Além do else! Categorizando Pokemóns com Pattern Matching no JavaScript
wmsbill
0
710
今さら聞けないDocker入門 〜 Dockerfileのベストプラクティス編
devops_vtj
5
720
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
YesSQL, Process and Tooling at Scale
rocio
165
13k
How GitHub (no longer) Works
holman
305
140k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Designing the Hi-DPI Web
ddemaree
276
33k
Into the Great Unknown - MozCon
thekraken
14
1k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
BBQ
matthewcrist
80
8.8k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Ruby is Unlike a Banana
tanoku
96
10k
Designing Experiences People Love
moore
136
23k
Transcript
メモリと遊んでみた LT駆動開発 26 - EXTENDED 報告会 後朝祭 AKIRA345
概要 • 去年の8月、OSC島根に遠征に行ったついでに、島根にあるパーツ屋さん でSRAMを入手。 • 近所の大学の為に電子部品を店頭にむき出しで展示していました。 • 展示されている部品に直感的にSRAMだと踏んで、交渉の末Getしました。 • 以前実験したDRAMより扱いやすいです。
メモリの種類 今回はこれ。
SRAM? • コンピュータなどに使用される半導体メモリの1種である。 ダイナミックRAM (DRAM) とは異なり、定期的なリフレッシュ(記憶保持動 作)が不要であるため「スタティック」と呼ばれる。
特徴 • DRAMのリフレッシュ動作などが不要で、制御が簡単 • データの格納されているアドレスを指定して読み書き • 書き換え回数の制限がない • バッテリで記憶を保持できる •
DRAMに比べ構成するトランジスタの量が多いので高価 • 高速に動作ができる • 容量が大きくなると、それだけ格納するビット数が増えるので、ピン数が増 える。
用途 • サターンやファミコンのバックアップメモリ • CPUの一時キャッシュ • BIOSの記録保持 • マイコンのメモリや液晶のVRAM •
プリンタやCDドライブのキャッシュメモリ • ゲーム機のRAMとして
まずは使い方を調査 • かなり古いSRAMだが、ネットでググればデータシートが出てくる。
データ出力ON! アドレス指定 8bitでデータ出力 書き込みは禁止にしておく。 チップセレクトON 制御が単純!
ここでARDUINOの登場 • とりあえず、アドレスを指定して、チップをセレクト、書き込み禁止にして 出力有効にするとデータが出る。というのは分かったので、さくっと実装。 • 例によってArduinoの動作が遅い為に動作しないという罠 • アドレス指定に十進数を用いて、SRAMのアドレス(ビット指定)にするのに 真面目に10進->2進変換ロジックを組むも遅いので動作せず(汗 •
いくつか高速化のロジックを参考にするもビット演算分かんねー • 実はArduinoのポートに10進数投げつけても、問題なかった。
少し説明 0 1 2 3 4 5 6 7 PortZ
• PortZ(仮称)という変数(正確にはレジスタ)が、マイコンの物 理的なPINに対応。 • 例では PortZ = “B0110101” のように2進数を代入するように書かれている。 • この変数に値を渡すときは2進数じゃないとダメ? • 実際はPortZ = 10 と渡しても、内部ではB00001010になるので、直接渡して問 題ないのでした。 10年以上C言語なんて触ってなかったから 忘れてたよ!!
なんだかんだと3日ばかし費やす・・・ • SRAMに読み書きすることに成功!! https://github.com/akira345/arduino_sram_test/
分かったこと • 予想通り、制御はDRAMに比べ圧倒的に楽。 • DRAMと違いデータが8bitパラレルで出てくれるのも楽。 • ちゃんとバッテリで保持できた。 • 数十年はむき出しで放置されていたと思われるけど、意外に壊れないもん だ。
• 古いSRAMなので、5Vだし動作も遅く、現代ではあまり使われないけど、 Arduinoなどで遊ぶには、80年代の古いものが扱いやすい。 • 最近のは3Vだったり高速だったり制御が複雑だったり・・ • DRAMに比べアドレスバス、データバスとPIN数が多いので配線が酷い
まとめ • 興味関心を持ったことを調べるのは楽しい。 • 頭で理解した内容が合っているのか?の検証は割と苦労する。 • 苦労した分動くとやっぱり楽しい!! • 圧倒的に基礎知識が不足している。今回ロジックではなく一番苦労したの はC言語の扱い。
• メモリ単品で扱うことは少ないのか、当たり前すぎるのか、具体的にどうや ればいいのか?という突っ込んだ説明は例によって見当たらず・・・
時間が有ればデモ