LoginSignup
0
3

More than 5 years have passed since last update.

raspberry Pi 1 デバイスドライバ

Last updated at Posted at 2017-07-04

組み込みlinuxで必要となるデバイスドライバを作るため『ARMデバイスドライバープログラミング』という本を見て勉強しようと思った

2017.7.2現在では本の通り進めてもエラーが出て進むことが出来ない。以下の通り行うとエラーを解決できる

本の通りに行うと100ページのinsmodでエラーが出る。内容は
root@raspberrypi:/home/pi# insmod ssegled.ko
insmod: ERROR: could not insert module ssegled.ko: Device or resource busy
root@raspberrypi:/home/pi# dmesg | tail
[ 1045.453728] ssegled loading...
[ 1045.453773] request_mem_region failed.
[ 1045.457656] Can not use GPIO registers. 
である

エラーの内容を出版社に問い合わせたところエラーの原因はlinuxカーネルのバージョンが新しくなっているためであるとの回答があった。解決策として旧カーネルソースを使うことであるとの回答であった。

前提条件
RaspberryPi 1 model B+(SOCがSamsungのタイプのもの)
OSは2015-01-31-raspbian.img

注意点)raspberryPi 1 model B+ には2種類が存在している。種類というのはsocがSamsungのタイプとELPIDAのタイプである。正解のボードはSamsungのsocを搭載したraspberryPi 1 model B+ である。ELPIDAのraspberryPi 1 model B+は使うことが出来ない。その理由はfirmwareが新しくなったため古いraspbiangが起動できないためである。
補足として今日現在発売されているraspberryPi 1 model B+はELPIDAのタイプしか手に入らない。手に入れるにはオークション等で入手すること

soc.jpg

まず最初にパソコンから旧バージョンのraspbianをダウンロードし、micro sdに焼きraspberryPiで起動する。旧バージョンを使う理由は本の内容が旧バージョンにしか対応していないためである。旧バージョンは「2015-01-31-raspbian.img」をダウンロードする。
RaspberryPiに挿入し起動する。繰り返しの説明になるがsocがELPIDAのraspberry Pi1 model B+では旧バージョンのraspbianが起動しないので注意すること

raspbianが起動し初期設定を終えたら$startxでxwindowを起動し端末を起動する

以下の通りコマンドを入力する
$sudo wget https://github.com/raspberrypi/linux/archive/rpi-3.18.y.tar.gz //旧カーネルバージョンのカーネルソースをダウンロードする
$tar xfvz rpi-3.18.y.tar.gz //展開する
$cd rpi-3.18.y
$sudo apt-get install bc //makeに必要なbcをインストールする
$sudo make bcmrpi_defconfig
$sudo make //makeに14時間くらい掛かった
$sudo make modules_install
$sudo cp arch/arm/boot/Image /boot/kernel.img //ビルドしたカーネルをコピーする
$sudo reboot //再起動する

あとは本の100ページのinsmodが本の内容通りになることを確認する

総括
最新のraspbianにはdevice treeという方式を採用したため本の内容が使えなくなった。著者の方に頑張って書いて頂きたいものである

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3