やまちゃんのオーディオブログ

既存のブログをこちらへ順次移動します。

ラズベリーパイB

ラズベリーパイのi2s外部クロック、その後3-1(2018年度版)

投稿日:2018年3月25日 更新日:

前回の続きです。過去の記事にも同じようなことを書いているので、そちらも参照願います。
今回は、カーネルをいじることについて触れます。

<2018.4.30 修正:ファイルが大きくなりすぎたので、3つに分割しました。>

9 カーネルソースの導入
一昔前は、カーネルのソースファイルが、現行のシステムと適合することを保証するために、カーネルをすべてコンパイルする必要があったが、

rpi-source

というコマンドを使うことで、その必要がなくなった。そのコマンドを使えるようにするため、そのプログラムをインストールする。ただし、pi3には対応していないようだ。

rpi-source 本家サイトのHome · notro/rpi-source Wiki · GitHubにあるコマンドを使い、ソフトウェアインストール先から、所定のファイルをwgetによりダウンロードする。
sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source && /usr/bin/rpi-source -q –tag-update

このプログラムはこのコマンドを使うにあたり、ソースをコンパイルする必要があり、コンパイルするgccのバージョン違いにおいてエラーが出やすい。
カーネルを編集するのに使うべきgccコンパイラのバージョンを用いてコンパイルする必要がある。
それは以下で調べる。
cat /proc/version

次に、現行のgccのバージョンを調べる。
gcc –version | grep gcc
なお、「–version」のところ、1つのマイナスとなってしまっているかもしれないが、マイナスが2つである。
直ちにrpi-sourceを実行すると以下のようなエラーが出る。
ERROR:
gcc version check: mismatch between gcc (6) and /proc/version (4.9.3)
Skip this check with –skip-gcc
なお、「–config gcc」のところ、1つのマイナスとなってしまっているかもしれないが、マイナスが2つである。
上記cat /proc/versionで検出したバージョンをインストールする必要がある。

gccのインストールには、まず、以下のコマンド。

sudo apt-get update

次にcat /proc/versionで検出したバージョンをインストール。
同日現在、バージョン4.9.3となった。そこで、以下のコマンド。

sudo apt-get install gcc-4.9 g++-4.9

もっともどのバージョンを優先させるかにつき、以下のコマンドを打つ。

sudo update-alternatives –config gcc(#1)

この辺は「new_western_elec」というサイトの「SabreBerry32のドライバのコンパイル方法(SABRE9018Q2C)
にも説明があります。
<2018.5.7 追記>もう一度やってみると、上記#1がうまくいかなくて、バージョンが修正されない。そこで、上記サイトを参考に、

sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-6 20
sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.9 80

とした。ここで、20,80は、優先順位を表し、数字の高いほうが優先順位が高い。「gcc-6」というのは、その時々で、最新のものを入れた場合には異なっていくが、以下のコマンドで、フォルダ内を調べると、gccが、複数インストールされ、gcc-6というフォルダがあるので、そのフォルダを参照する。

dir /usr/bin/

現在gccのバージョンは、6.3であるが、/usr/bin/に含まれる該当するフォルダを指定する。
/usr/bin/gcc-4.9も現在のバージョンは、4.9.3であるが、/usr/bin/に存在するフォルダ名を入力する。
そうすると以下の通り、バージョンが4.9.3へ変更された。

root@raspberrypi:/usr/bin# sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-6 20
update-alternatives: using /usr/bin/gcc-6 to provide /usr/bin/gcc (gcc) in auto mode
root@raspberrypi:/usr/bin# sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.9 80
update-alternatives: using /usr/bin/gcc-4.9 to provide /usr/bin/gcc (gcc) in auto mode
root@raspberrypi:/usr/bin# sudo gcc –version
gcc (Raspbian 4.9.3-14) 4.9.3・・・

そこで、バージョンがカーネルのバージョンと一致したので、以下のコマンドを打ち込めば、カーネルソースファイルをインストールできます。

sudo apt-get install bc
rpi-source

10 カーネルソースの変更の準備
(1)「ラズベリーパイ、volumioカーネル環境をmakeなしクロスコンパイルなしで2時間で立ち上げる。クロスLAN接続」の20~21と同じなので、それをやっていただく。

(2) I2Sのソースファイルを探す。
上記(1)のつぎの過去記事の22と同じく
root@volumio:~# find ~/ -name “*i2s.c”
によりカーネルソースを探す。
i2sのカーネルドライバは、/rootの下にある。

rootにあるファイルやディレクトリを調べる。
cd /root
dir

root@raspberrypi:~# dir
linux
linux-80a14a56dacb7cc2b40d5f37d00bedb0ceace130
linux-80a14a56dacb7cc2b40d5f37d00bedb0ceace130.tar.gz

ここに現れた太字で表すディレクトリは、メモ帳にコピーしておく。シフトを押しながら左右キーを押し、領域指定をしたら、
ctrl+Cでコピーできる。

ディレクトリが長すぎるので、環境変数を登録する。電源を切ると忘れるので、メモ帳に転記する。

export bcm=/root/linux-80a14a56dacb7cc2b40d5f37d00bedb0ceace130/sound/soc/bcm
export codec=/root/linux-80a14a56dacb7cc2b40d5f37d00bedb0ceace130/sound/soc/codecs

ここで、太字の部分は、カーネルのバージョンにより異なる。

Follow me!

-ラズベリーパイB

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

no image

ラズベリーパイのi2s外部クロック、その後5(2018年度版)

とりあえず、デバイス:de0-soc、DAC:wm8731用のクロックジェネレータのプロジェクトを公開。de0-socの開発CDに含まれているmy first fpgaを参考にした。 (図をクリックす …

no image

ラズベリーパイのi2s外部クロック、その後2(2018年度版)

前回の続きです。過去の記事にも同じようなことを書いているので、そちらも参照願います。 当方のルーターのアドレスは、192.168.179.1ですが、pcでipconfigによりチェックし、この部分はご …

no image

コマンドラインで動く、汎用i2sハイレゾモジュールの作り方(これまでのまとめ)。 (How to make a general i2s hi-resolution play-module with external bck clock using command-line on raspberry pi. And you can use gpio for operation)

これまでののうち、コマンドをまとめました。 <2018.4.28 追記 以下は、24ピンのラズパイBノーマルバージョンかつ当時のカーネルを使うことが前提になります。 今のカーネルには、bcm2708- …

no image

ラズベリーパイ、volumioカーネル環境をmakeなしクロスコンパイルなしで2時間で立ち上げる。クロスLAN接続

私は、ラズベリーパイをリニア電源(スイッチング電源でなくノイズが少ない)で動作するノーマルBモデル、rev2(過去記事「ラズベリーパイモデルBの入手と設定1」)をaliexpressで入手し、あえてこ …

no image

ラズベリーパイのi2s外部クロック、ついに動作確認

やりました! とうとうやりました。 PLLではなく、外部クロックでラズベリーパイを鳴らせることができました! bckも外部クロックで駆動しています。 使ったクロックは、キョーセラの7050k(22.5 …

[最近の記事]
2018年3月
« 7月   4月 »
 123
45678910
11121314151617
18192021222324
25262728293031

3PR エリア3 タイトル