arm/FM3-uCLinuxのGPIOを試す
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2014/10/04からのアクセス回数 &counter;
[[arm/FM3-uCLinuxの最小構成を試す]]
が無事動いたので、GPIOを確かめてみようとしたら、意外には...
[[インタフェース2014/8月号 汎用軽量OS uClinuxを試す>http:...
では、
「/sysを有効にしてカーネルをビルドすると/sys/class/gpioが...
とありますが、さにあらずでした!
** GPIOを試す [#bd2203e0]
GPIOの追加を試してみます。最後にbusyboxのmakeを試してみま...
FM3固有のファイルは、arch/arm/mach-fm3に納められています。
GPIOのファイルは、
[[インタフェース2014/8月号 汎用軽量OS uClinuxを試す>http:...
によるとgpio.cにあります。
GPIOのソースは、非常にシンプルでした。FM3用のgpio_chip構...
fm3_gpio_init関数でgpiochip_addしているだけです。((他の部...
#pre{{
static struct gpio_chip fm3_gpio_chip = {
.label = "fm3",
.direction_input = fm3_gpio_direction_input,
.get = fm3_gpio_get_value,
.direction_output = fm3_gpio_direction_outp...
.set = fm3_gpio_set_value,
.base = FM3_GPIO_OFF,
.ngpio = FM3_GPIO_LEN,
.can_sleep = 1,
};
void __init fm3_gpio_init(void)
{
int ret;
ret = gpiochip_add(&fm3_gpio_chip);
if (ret < 0)
pr_err("%s: gpiochip_add failed.(%d)\n", ...
}
}}
*** GPIOの組み込み [#v93036e0]
make menuconfigのDevice Driversから以下の部分を選択します。
- GPIO Support
- GPIO Support→ /sys/class/gpio/...
initramfs_lfcq1_min.txtに以下の2行を追加します。
#pre{{
dir /sys 755 0 0
file /etc/fstab initramfs/etc/fstab 755 0 0
}}
uImageを作成します。
#pre{{
$ make uImage
}}
*** LEDチカで動作確認 [#y07fd33e]
u-bootのシリアル通信でuImageをアップロードします。
#pre{{
$ sudo picocom --send-cmd "sb -vv" --receive-cmd "rb -vv"...
FM3> loady 0x60000000
Crtl-A Ctrl-S
file: arch/arm/boot/uImage
転送途中経過
Transfer complete
*** exit status: 0
Mode[j %5?mode, 5766(SOH)/0(STX)/0(CAN) packets, 5 retrie...
途中省略
Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|
Fujitsu FM3/FM4 port.
For further information check:
http://www.uclinux.org/
/ #
}}
このままでは、/sys以下には何もありません。
#pre{{
/ # ls /sys
}}
どうしてよいか途方に暮れていたら、sysfsを/sysにマウントす...
そこで、
/etc/fstabに以下を追加してsysfsが使えるようになることを確...
((パチパチ))
#pre{{
sysfs /sys sysfs defaults 0 0
}}
sysfs /sysにマウントすると、何と/sys/class/gpioがでました!
#pre{{
/ # mount -t sysfs /sys
/ # ls /sys/
/sys/bus/ /sys/dev/ /sys/firmware/ /sys/kern...
/sys/class/ /sys/devices/ /sys/fs/ /sys/modu...
/ # ls /sys/class/gpio/
/sys/class/gpio/export /sys/class/gpio/unexport
/sys/class/gpio/gpiochip0
}}
GPIOピンは、P00からPFFまでを0~255にマッピングしており、
FM3内蔵のLEDは、243になります。
以下のコマンドで基板に付属のLEDを点灯(echo 0で点灯)、消...
#pre{{
/ # echo 243 > /sys/class/gpio/export
/ # cd /sys/class/gpio/
/sys/class/gpio # ls
export gpio243 gpiochip0 unexport
/sys/class/gpio # ls gpio243
active_low direction subsystem uevent value
/sys/class/gpio # cd gpio243
/sys/devices/virtual/gpio/gpio243 # ls
active_low direction subsystem uevent value
/sys/devices/virtual/gpio/gpio243 # echo out > direction
/sys/devices/virtual/gpio/gpio243 # echo 0 >value
/sys/devices/virtual/gpio/gpio243 # echo 1 >value
}}
&ref(gpio.png);
*** 何が必要だったのか? [#rb277e5f]
どうして、起動時に/sys, /procが見えないのでしょうか?
その原因は、/etc/init.d/rcSに隠されていました。
/etc/init.d/rcSは、シングルユーザモードで起動したときに実...
この先頭で、/procと/sysをmountしていました。
#pre{{
$ cat initramfs/etc/init.d/rcS
#!/bin/sh
trap "" SIGHUP
echo "Mounting proc"
mount -t proc none /proc
echo "Mounting sysfs"
mount -t sysfs sysfs /sys
echo "Mounting devpts"
mount -t devpts none /dev/pts
echo "Setting hostname to uclinux"
hostname uclinux
以下省略
}}
** おまけ [#vd3002fc]
本格的なシステムにするには、busyboxのカスタマイズも必要に...
そこで、busyboxのコンパイルにも挑戦してみました。
*** busyboxのコンパイル [#d7937c76]
busybox一つ作るのも大変なのですね!
最新のソースをgitを使ってダウンロードします。
#pre{{
$ git clone git://busybox.net/busybox.git
}}
- クロスコンパイルの設定
- 一度コンフィグをデフォルトに戻し、menuconfigを実行しま...
#pre{{
$ export CROSS_COMPILE=arm-uclinuxeabi-
$ make defconfig
$ make menuconfig
}}
build Optionsの以下のオプションをオンにしました。
- Build BUsyBox as a static binary
- Force NOMMU build
- Add CFLAGS
-fomit-frame-pointer -Os -mcpu=cortex-m3 -march=armv7-m ...
- Add LDFLAGS
-lm
また、coreutilsのコンフィグで
- touchのAdd suport for -hを外す
そして、makeを実行します。必ずFile format not recognized...
#pre{{
$ make
途中省略
CC util-linux/volume_id/xfs.o
AR util-linux/volume_id/lib.a
LINK busybox_unstripped
Trying libraries: m
Library m is needed, can't exclude it (yet)
Final link with: m
arm-uclinuxeabi-strip:busybox_unstripped: File format not...
make: *** [busybox] Error 1
}}
initramfsに付属のbusybox_LinuxM3に対して、8倍弱のサイズで...
#pre{{
$ ls -l initramfs/busybox_LinuxM3
-rwxrwxr-x 1 take take 94428 Sep 27 18:51 initramfs/busyb...
}}
#pre{{
$ ls -l busybox_unstripped
-rwxr--r-- 1 take take 730524 Oct 3 17:11 busybox_unstri...
}}
** 参考文献 [#i4d07689]
+ [[インタフェース2014/8月号 汎用軽量OS uClinuxを試す>htt...
** コメント [#ye7be891]
#vote(おもしろかった[2],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。勉強会で分から...
スパム防止に画像の文字列も入力してください。
- 嬉しくて浮ついていたのかミスが多く、いくつか修正しまし...
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2014/10/04からのアクセス回数 &counter;
[[arm/FM3-uCLinuxの最小構成を試す]]
が無事動いたので、GPIOを確かめてみようとしたら、意外には...
[[インタフェース2014/8月号 汎用軽量OS uClinuxを試す>http:...
では、
「/sysを有効にしてカーネルをビルドすると/sys/class/gpioが...
とありますが、さにあらずでした!
** GPIOを試す [#bd2203e0]
GPIOの追加を試してみます。最後にbusyboxのmakeを試してみま...
FM3固有のファイルは、arch/arm/mach-fm3に納められています。
GPIOのファイルは、
[[インタフェース2014/8月号 汎用軽量OS uClinuxを試す>http:...
によるとgpio.cにあります。
GPIOのソースは、非常にシンプルでした。FM3用のgpio_chip構...
fm3_gpio_init関数でgpiochip_addしているだけです。((他の部...
#pre{{
static struct gpio_chip fm3_gpio_chip = {
.label = "fm3",
.direction_input = fm3_gpio_direction_input,
.get = fm3_gpio_get_value,
.direction_output = fm3_gpio_direction_outp...
.set = fm3_gpio_set_value,
.base = FM3_GPIO_OFF,
.ngpio = FM3_GPIO_LEN,
.can_sleep = 1,
};
void __init fm3_gpio_init(void)
{
int ret;
ret = gpiochip_add(&fm3_gpio_chip);
if (ret < 0)
pr_err("%s: gpiochip_add failed.(%d)\n", ...
}
}}
*** GPIOの組み込み [#v93036e0]
make menuconfigのDevice Driversから以下の部分を選択します。
- GPIO Support
- GPIO Support→ /sys/class/gpio/...
initramfs_lfcq1_min.txtに以下の2行を追加します。
#pre{{
dir /sys 755 0 0
file /etc/fstab initramfs/etc/fstab 755 0 0
}}
uImageを作成します。
#pre{{
$ make uImage
}}
*** LEDチカで動作確認 [#y07fd33e]
u-bootのシリアル通信でuImageをアップロードします。
#pre{{
$ sudo picocom --send-cmd "sb -vv" --receive-cmd "rb -vv"...
FM3> loady 0x60000000
Crtl-A Ctrl-S
file: arch/arm/boot/uImage
転送途中経過
Transfer complete
*** exit status: 0
Mode[j %5?mode, 5766(SOH)/0(STX)/0(CAN) packets, 5 retrie...
途中省略
Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|
Fujitsu FM3/FM4 port.
For further information check:
http://www.uclinux.org/
/ #
}}
このままでは、/sys以下には何もありません。
#pre{{
/ # ls /sys
}}
どうしてよいか途方に暮れていたら、sysfsを/sysにマウントす...
そこで、
/etc/fstabに以下を追加してsysfsが使えるようになることを確...
((パチパチ))
#pre{{
sysfs /sys sysfs defaults 0 0
}}
sysfs /sysにマウントすると、何と/sys/class/gpioがでました!
#pre{{
/ # mount -t sysfs /sys
/ # ls /sys/
/sys/bus/ /sys/dev/ /sys/firmware/ /sys/kern...
/sys/class/ /sys/devices/ /sys/fs/ /sys/modu...
/ # ls /sys/class/gpio/
/sys/class/gpio/export /sys/class/gpio/unexport
/sys/class/gpio/gpiochip0
}}
GPIOピンは、P00からPFFまでを0~255にマッピングしており、
FM3内蔵のLEDは、243になります。
以下のコマンドで基板に付属のLEDを点灯(echo 0で点灯)、消...
#pre{{
/ # echo 243 > /sys/class/gpio/export
/ # cd /sys/class/gpio/
/sys/class/gpio # ls
export gpio243 gpiochip0 unexport
/sys/class/gpio # ls gpio243
active_low direction subsystem uevent value
/sys/class/gpio # cd gpio243
/sys/devices/virtual/gpio/gpio243 # ls
active_low direction subsystem uevent value
/sys/devices/virtual/gpio/gpio243 # echo out > direction
/sys/devices/virtual/gpio/gpio243 # echo 0 >value
/sys/devices/virtual/gpio/gpio243 # echo 1 >value
}}
&ref(gpio.png);
*** 何が必要だったのか? [#rb277e5f]
どうして、起動時に/sys, /procが見えないのでしょうか?
その原因は、/etc/init.d/rcSに隠されていました。
/etc/init.d/rcSは、シングルユーザモードで起動したときに実...
この先頭で、/procと/sysをmountしていました。
#pre{{
$ cat initramfs/etc/init.d/rcS
#!/bin/sh
trap "" SIGHUP
echo "Mounting proc"
mount -t proc none /proc
echo "Mounting sysfs"
mount -t sysfs sysfs /sys
echo "Mounting devpts"
mount -t devpts none /dev/pts
echo "Setting hostname to uclinux"
hostname uclinux
以下省略
}}
** おまけ [#vd3002fc]
本格的なシステムにするには、busyboxのカスタマイズも必要に...
そこで、busyboxのコンパイルにも挑戦してみました。
*** busyboxのコンパイル [#d7937c76]
busybox一つ作るのも大変なのですね!
最新のソースをgitを使ってダウンロードします。
#pre{{
$ git clone git://busybox.net/busybox.git
}}
- クロスコンパイルの設定
- 一度コンフィグをデフォルトに戻し、menuconfigを実行しま...
#pre{{
$ export CROSS_COMPILE=arm-uclinuxeabi-
$ make defconfig
$ make menuconfig
}}
build Optionsの以下のオプションをオンにしました。
- Build BUsyBox as a static binary
- Force NOMMU build
- Add CFLAGS
-fomit-frame-pointer -Os -mcpu=cortex-m3 -march=armv7-m ...
- Add LDFLAGS
-lm
また、coreutilsのコンフィグで
- touchのAdd suport for -hを外す
そして、makeを実行します。必ずFile format not recognized...
#pre{{
$ make
途中省略
CC util-linux/volume_id/xfs.o
AR util-linux/volume_id/lib.a
LINK busybox_unstripped
Trying libraries: m
Library m is needed, can't exclude it (yet)
Final link with: m
arm-uclinuxeabi-strip:busybox_unstripped: File format not...
make: *** [busybox] Error 1
}}
initramfsに付属のbusybox_LinuxM3に対して、8倍弱のサイズで...
#pre{{
$ ls -l initramfs/busybox_LinuxM3
-rwxrwxr-x 1 take take 94428 Sep 27 18:51 initramfs/busyb...
}}
#pre{{
$ ls -l busybox_unstripped
-rwxr--r-- 1 take take 730524 Oct 3 17:11 busybox_unstri...
}}
** 参考文献 [#i4d07689]
+ [[インタフェース2014/8月号 汎用軽量OS uClinuxを試す>htt...
** コメント [#ye7be891]
#vote(おもしろかった[2],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。勉強会で分から...
スパム防止に画像の文字列も入力してください。
- 嬉しくて浮ついていたのかミスが多く、いくつか修正しまし...
#comment_kcaptcha
ページ名:
SmartDoc