RPi3与SenseHat和Yocto

时间:2016-11-01 13:07:42

标签: yocto raspberry-pi3 openembedded

我目前正在为安装了SenseHat的RPi3构建Yocto Image。

Yocto图像由以下图层组成:

  • 元狭小
  • 元OE
  • 元网络
  • 元蟒
  • 元树莓派
  • 元的java
  • 特定于应用程序的层。

特定于应用程序的层主要负责加载以下内核模块:

  • I2C-dev的
  • fb_sys_fops
  • syscopyarea
  • sysfillrect
  • sysimgblt
  • rpisense_core
  • rpisense_js
  • rpisense_fb

它还包含openssh,psplash,gcc,make,libiio,rtimulib和其他一些misc。包。

我的映像在没有安装SenseHat的情况下很好地启动,但启动过程在到达UART shell之前停止。它一直处于冻结状态,直到看门狗重置系统为止。

以下是系统冻结前UART输出的最后一部分。

{...}
Populating dev cache
ALSA: Restoring mixer settings...
/usr/sbin/alsactl: load_state:1735: No soundcards found...
Tue Nov  1 10:01:54 UTC 2016
INIT: Entering runlevel: 5
Configuring network interfaces... [    5.130327] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
udhcpc (v1.24.1) started
Sending discover...
[    6.662428] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x4DE1
[    6.688217] cfg80211: Calling CRDA to update world regulatory domain
Sending discover...
Sending select for 192.168.0.106...
Lease of 192.168.0.106 obtained, lease time 3600
/etc/udhcpc.d/50default: Adding DNS 192.168.0.20
/etc/udhcpc.d/50default: Adding DNS 192.168.0.40
done.
Starting system message bus: dbus.
Starting OpenBSD Secure Shell server: sshd
[    9.034713] NET: Registered protocol family 10
done.
Starting rpcbind daemon...done.
Starting advanced power management daemon: No APM support in kernel
(failed.)
Starting bluetooth
bluetoothd
Starting syslogd/klogd: done
 * Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon
[    9.401783] Bluetooth: Core ver 2.20
[    9.405528] NET: Registered protocol family 31
[    9.410088] Bluetooth: HCI device and connection manager initialized
[    9.416576] Bluetooth: HCI socket layer initialized
[    9.421576] Bluetooth: L2CAP socket layer initialized
[    9.426747] Bluetooth: SCO socket layer initialized
   ...done.
Starting Telephony daemon
[    9.507315] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    9.512765] Bluetooth: BNEP filters: protocol multicast
[    9.518098] Bluetooth: BNEP socket layer initialized
Starting Linux NFC daemon
[    9.624816] nfc: nfc_init: NFC Core ver 0.1
[    9.629241] NET: Registered protocol family 39

我要注意,我已将三条线焊接到UART引脚上:

RPi3 UART pins http://www.embeddedforu.com/wp-content/uploads/2015/06/Raspberry-pi-UART-connections_thumb.png

当系统冻结时,我仍然可以ping设备,但SSH不起作用。

知道可能导致此行为的原因是什么?

2 个答案:

答案 0 :(得分:0)

事实证明,问题在于yocto local.conf -file。设置了以下行:

ENABLE_I2C = "1"

这创建了第二个i2c驱动程序,导致其中一个崩溃启动。

对于那里的任何googlers:不需要设置此标志。而是确保在启动时加载 i2c-dev 内核驱动程序。

答案 1 :(得分:0)

我从未使用蓝牙,但似乎系统没有冻结,你只是在蓝牙连接时丢失了UART数据。 来自here: 在rpi3上,这是正常的,因为Raspberry Pi3上的BCM2837有2个UART(与其前代产品一样),但是为了支持蓝牙功能,全功能的PL011 UART从插头引脚移到蓝牙芯片和迷你UART制造可在插头引脚8和8上使用10。

这对串行接口的用户有很多影响。

以前用于访问UART的/ dev / ttyAMA0现在连接到蓝牙。

我建议你再次尝试使用config.txt

dtoverlay=pi3-disable-bt
enable_uart=1

如果你真的需要蓝牙,请使用

dtoverlay=pi3-miniuart-bt

对于ssh,在你的图像配方中添加“openssh”,并像wpa-supplicant一样连接依赖(不要忘记配置它)