tkw_tk
2018年5月10日 15時47分
初めて投稿します。
Armadillo-X1で拡張インターフェース(COM8)で、
I2c1 20pin:SCL
21pin:SDAを使うにあたり、
『Armadillo-X1:I2C接続D/Aコンバータ(MCP4725)を使う』 と参考となるブログがありましたので、
そのブログに記載されている「1.拡張インタフェース(CON8)のI2Cを使えるようにする」の手順通り試して
みました。
①Linuxカーネルのソースコードのarch/arm/boot/dts/armadillo_x1-i2c1_lm75b.dtsを
「Linuxカーネルをビルドする」に従ってビルド
②ビルドでできたarch/arm/boot/dts/armadillo_x1-i2c1_lm75b.dtbをArmadillo-X1に置く。
root@armadillo:~# mount -t vfat /dev/sd1 /mnt
root@armadillo:~# cp armadillo_x1-i2c1_lm75b.dtb /mnt/
root@armadillo:~# umount /mnt
③電源を落とす。
root@armadillo:~# halt
④保守モードで電源をいれる。
'=> saveenvnv fdt_file armadillo_x1-i2c1_lm75b.dtb
=> setenv
⑤通常モードで再起動
U-Boot SPL 2016.07-at11 (May 26 2017 - 10:42:12)
Trying to boot from SPI
U-Boot 2016.07-at11 (May 26 2017 - 10:42:12 +0900)
CPU: Freescale i.MX7D rev1.2 996 MHz (running at 792 MHz)
CPU: Extended Commercial temperature grade (-20C to 105C) at 26C
Reset cause: POR
Watchdog enabled
I2C: ready
DRAM: 512 MiB
Boot Source: QSPI Flash
Board Type: Armadillo-X1(0a100000)
Revision: 0002
S/N: 5131
DRAM: 00001d05
XTAL: 00
X1 Addon EEPROM Detect
Atmark Techno Ext SD Slot Detect
MMC: FSL_SDHC: 0, FSL_SDHC: 1
SF: Detected N25Q64 with page size 256 Bytes, erase size 64 KiB, total 8 MiB
In: serial
Out: serial
Err: serial
Found PFUZE300! deviceid 0x30, revid 0x11
Net: FEC0
switch to partitions #0, OK
mmc1(part 0) is current device
switch to partitions #0, OK
mmc1(part 0) is current device
reading boot.scr
** Unable to read file boot.scr **
reading boot.scr
** Unable to read file boot.scr **
reading uImage
10158240 bytes read in 250 ms (38.7 MiB/s)
Booting from mmc ...
reading armadillo_x1-i2c1_lm75b.dtb
** Unable to read file armadillo_x1-i2c1_lm75b.dtb **
## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-3.14.79-at17
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 10158176 Bytes = 9.7 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
FDT and ATAGS support not compiled in - hanging
### ERROR ### Please RESET the board ###
と、エラーにより途中で止まってしまいました。
armadollo_x1-o2c1_lm75b.dtbが読むことができないというエラーが途中にありますが、
何か不足している設定があるのでしょうか?
他のブログやFAQでも同じような症状があるか検索しましたが見当たらなかったので、
今回質問に至りました。ご教授お願い致します。
コメント
tkw_tk
大塚さま
返答ありがとうございました。
>mmc の vfatの第一パーティションにコピーしていないと思うのですが
という指摘から再度製品マニュアル等読み返して、
dtbの書き換えの場合、/dev/mmcblk2p1 が書き込み先に
なっているということが理解できました。
/dev/mmcblk2p1で試したら再起動でき、
起動時のログ→i2c i2c-0: IMX I2C adapter registered
デバイスファイル→/dev/i2c-0
が確認できました。
私は組み込みLinuxが初めてで、Linuxもよく理解していない点もあり、
初歩的な質問だったかもしれませんが、大変勉強になりました。
ご指摘ありがとうございました。
otsuka
2018年5月10日 16時47分
大塚と申します。
boot log を拝見しますと、 mmc からの boot なのに
mmc 上に armadillo_x1-i2c1_lm75b.dtb がないから読めない
ように見えます。
> ②ビルドでできたarch/arm/boot/dts/armadillo_x1-i2c1_lm75b.dtbをArmadillo-X1に置く。
> root@armadillo:~# mount -t vfat /dev/sd1 /mnt
> root@armadillo:~# cp armadillo_x1-i2c1_lm75b.dtb /mnt/
> root@armadillo:~# umount /mnt
この操作を Armadillo-X1 上でされたのでしたら、
https://users.atmark-techno.com/blog/615/2627
にありますように
root@armadillo:~# mount -t vfat /dev/mmcblk2p1 /mnt
root@armadillo:~# cp armadillo_x1-i2c1_lm75b.dtb /mnt/
root@armadillo:~# umount /mnt
でないと mmc の vfat の第一パーティションにコピーしていないと思うのですが
いかがでしょうか?