Raspberry Pi にSDカードスロットを増設する
Raspberry Pi Compute Module 3+(CM3+)にSDカードスロットを増設しました。
CM3+の開発ボード,Compute Module IOにはMicroSDカードスロットが実装されていますが,付近にSD CARD ONLY FOR MODULES WITHOUT ON-BOARD FLASHと書いてあり,eMMCが搭載されているCM3+ではこのスロットが使えません。
CM3+を使うにあたってOSの起動はeMMCから,データの記録はSDカードへ,ということがしたい場合にはGPIOにSDカードを接続して使うことができます。
CM3+と開発ボードを使いましたが,ほかのRaspberry Piでも可能だと思います。
環境
以下のものを使いました。
- Raspberry Pi Compute Module 3+
- Compute Module IO rev 3
- Raspbian Buster-lite
配線
Raspberry PiではGPIO22-27またはGPIO34-39にSDカードを接続するとセカンダリSDとして使用することができます。今回はGPIO22-27に接続しました。
SDカードのピンアサインは以下のようになっています。
CM3+のGPIO22-27には後述する設定により,以下機能を割り当てることができるので,SDカードのピンの対応するものを接続します。
なお,VCCには3.3Vを,VSSはGNDに接続します。
GPIO | 機能 | SD |
---|---|---|
22 | SD1_CLK | CLK |
23 | SD1_CMD | CMD |
24 | SD1_DAT0 | DAT0 |
25 | SD1_DAT1 | DAT1 |
26 | SD1_DAT2 | DAT2 |
27 | SD1_DAT3 | DAT3 |
設定
ここのソースをダウンロードします。sdio22-overlay.dtsに名前を変えて,以下のコマンドを実行します。
sudo dtc -@ -I dts -O dtb -o sdio22.dtbo sdio22-overlay.dts
作成されたsdio22.dtboを/boot/overlaysに移動します。
sudo mv sdio22.dtbo /boot/overlays/
/boot/config.txtに以下を追記して再起動します。
dtoverlay=sdio22,poll_once=off,bus_width=1,sdio_overclock=50
接続確認
dmesg | grep mmc
を実行し,以下のような表示があれば増設したSDがmmc1として認識されています。mmc0はCM3+に実装されているeMMCです。
[ 2.554010] mmc1: host does not support reading read-only switch, assuming write-enable [ 2.573205] mmc1: new high speed SDHC card at address aaaa [ 2.616025] mmcblk1: mmc1:aaaa SA08G 7.40 GiB [ 2.705981] mmcblk1: p1
Raspberry PiにSDカードを増設したかったらUSBに接続してしまうのが手っ取り早いと思いますが,CM3+を使って自分で基板を起こすとかRaspberry Pi Zeroを使うという場合には以上のような方法が使えると思います。
Nano Pi NEO 2のセットアップ
Frendly ArmのNano Pi NEO 2 WikiのInstall OSの項を参照
nanopi-neo2_sd_friendlycore-xenial_4.14_arm64_20190430.img.zipをダウンロード
Nano Pi NEOでは書き込むイメージが違うので注意
Frendly ArmのNano Pi NEO Wiki
Win32DiskImagerで書き込む。
イメージを指定して,下部のWriteボタンを押す。
確認ダイアログが表示されるので,Yesを選択する。
書き込み中
終了するとダイアログが出る。
書き込み済みのマイクロSDをマウントしようとするが,Windowsが対応していないファイルシステムのため,フォーマットするか聞かれる。キャンセルを選択して,マイクロSDをPCから取り出す。
マイクロSDカードを本体に挿入して起動する。
IPアドレスはDHCPで設定されるが,何に設定されたかわからない場合はシリアルコンソールで接続して調査する。
シリアルコンソール用のピンはUSB端子の近く,2.54mmピンヘッダ,外側からGND,5V,RX, TX(RX,TXはNano Pi NEO 2側,シリアルケーブルはクロスになるようにつなぐ)
ボーレートは115200bps
ifconfigでipアドレスを調べる。
ssh接続する。ユーザー名,パスワードともにpi
ログインすると以下のような画面が表示される。
固定IPの設定
公式Wikiの以下ページを参考に固定IPの設定を行う。
Use NetworkManager to configure network settings
NetworkManagerで設定する。
nmcli connection show
で現在の設定を見る。
nmcli connection modify
で設定し,再起動する。
あとは自由に使えます。
PSoC 5LP Prototyping Kit プログラム書き込み手順
PSoC Programmerの使い方
PCとの接続
基盤の左側はUSB端子になっているので,PCのUSBポートに差し込む。
以下のようなイメージになる。
PSoC Programmerの起動
以下の赤丸のアイコンをクリックし,書き込みたいHexファイルをロードする。
PSoC Creatorでのビルドが成功すると,以下の場所にHexファイルが作成される。
C:\Users\ユーザー名\Documents\PSoC Creator\CE195352_PSoC_5LP_Blinking_LED01\CE195352_PSoC_5LP_Blinking_LED01.cydsn\ARM_GCC_541\Debug
Hexファイルの読み込み後,右側のMemory TypesグループボックスにあるLoad from hexをクリックする。
以下の赤線部をクリックするとKitProg(PSoCプログラム書き込み器)に接続する。
接続に成功すると以下のような画面になる。赤丸のアイコンをクリックしてHexファイルを書き込む。
書き込みが成功するとProgramming Succeededが表示される。
Hexファイルの書き込み後は基板上の青色LEDが一定間隔で点滅し,プッシュボタンを押している間は消灯するような動作になる。
PSoC Creatorの使い方
PSoC 5LP Prototyping Kitの開発環境を構築したときに入ったPSoC Creatorの使い方。
とりあえずサンプルを開いてビルドするところまで
tshell.hatenablog.com
新規プロジェクトの作成
Create Projectアイコンをクリックする。
Target kitを選択する。CY8CKIT-059以外は選択できない。
Code Exampleを選択する。
Blinking LEDを選択する。
プロジェクト名とプロジェクトの保存場所を選択する。
生成されたプロジェクトの確認
ピンアサイン設定を確認する。
pin63がPWM出力,pin64がKillスイッチに割り当てられている。
CY8CKIT-059_Schematics.pdfを確認すると以下のように,pin63に青色LEDが接続され,pin64にプッシュボタンが接続されているので,これでOK
ビルド
メニューからBuild - Build プロジェクト名を選択する。
(スクショ間違った)
OutputにBuild Succeededが表示されればビルド成功。
PSoC 5LP Prototyping Kit 開発環境の構築
公式サイトから以下のインストーラをダウンロードする。Cypressのユーザー登録を行わないとダウンロードできない(名前と会社名,メールアドレスの登録でOK)
インストーラを実行する。
Nextをクリックする。
Installation Type からTypicalを選択してNextをクリックする。
CypressのEULAに同意する。
armのEULAに同意する。
インストールが始まる。結構時間がかかる。途中でコマンドプロンプトが表示されてもあわてない。
名前とメールアドレスの入力
メールアドレスはユーザー登録したアドレスであってもなくてもOK
インストールされたソフトに更新があればアップデートしておく。
以上で環境構築は終了。
サンプルプロジェクトを開く
WindowsのスタートメニューなどからPSoC Creatorを起動する。
初回起動時にユーザー登録画面が表示される。とりあえずRegister Laterをクリックして先に進める。
サンプルプロジェクトはC:\Program Files (x86)\Cypress\PSoC Creator\4.2\PSoC Creator\examples\sampleprojectsに保存されている。
この場所を開こうとすると以下のようなエラーが出るので,マイドキュメントなどにコピーしてからPSoC Creatorで開く必要がある。(インストール時にマイドキュメントの下にPSoC Creatorフォルダが作成されているのでそこにコピーするのがよさそう)
File - Open - Project/Workspaceを選択する。
PWMxampleを開く
プロジェクトを開くと以下のように,左側のツリーに構成ファイルが表示される。
PSoC 5LP Prototyping KitでFreeRTOSを使う
PSoC 5LP評価キットでFreeRTOSを動かしたときのメモ
PSoC 5LP Prototyping Kit公式ページ
必要なもの
ソースのダウンロード
FreeRTOSのダウンロードページからダウンロードする。
以下にリンクされているので,直接行っても可
SourceForge
自己解凍形式のexeを実行する。
解凍するとFreeRTOSv10.2.0\FreeRTOS\Demoの中にいろいろなCPU向けのプロジェクトが入っている。
PSoC Creator向けのCORTEX_CY8C5588_PSoC_Creator_GCCを開く
コンポーネントのアップデート
以下のようにコンポーネントが見つからないエラーが大量に出るので,コンポーネントをアップデートする。
Project - Update Componentsを選択する。
各コンポーネントをどのバージョンにアップデートするか選択する。
特に何も変更せずNextをクリックする。
コンポーネントがアップデートされると,以下のようにエラーが消える。
プロジェクトを右クリックし,Device Selectorを選択する。
評価キットに搭載されているCY8C5888LTI-LP097を選択する。
ピン設定
UARTのRXが12[6],TXが12[7]になるようにピンアサインを変更する。
実行
ビルドし,PSoC Programmerで書き込む。
Teratermなどのターミナルエミュレータを接続するとA-Zが連続して表示される。ボーレートは57600
FreeRTOSのPSoCサンプルとしてはこのような動作になるらしい
YZがない?アンチYAMAHA?