现在新版的树莓派内核由于为了兼容树莓派2和树莓派B+等以前的版本,采用了和原来不同的内核运行方式,使用了设备树的方式,更加灵活。但是由于可能不习惯这样的方式以及没太多相关这方面的介绍,导致很多用户更新了内核后出现比如接18B20无法读取设备信息,以及树莓派没有声音输出的问题。
在这里细心的用户就会发现在新内核boot分区下多了个overlays文件夹,里面有很多dtb文件,这些其实就是树莓派的设备树,打开README,就可以知道该怎么使用了。
下面是来自README的话:
如果要禁用设备树就直接在boot/config.txt里写device_tree=然后保存重启即可。
那么我们要怎么使用设备树呢?就拿启用W1来读取18B20数据来说,Readme里有这样一段:
也就是说,在使用config.txt里添加dtoverlay=【设备树名】来启动设备树,同样也可以在这里指定加载的设备树参数,实际上这个操作就和之前的内核在系统里添加模块类似,只不过这里是在内核启动的时候加载,之前的是在系统启动后加载。
那么我们就可以照搬添加w1到config.txt里面然后重启读取18B20了,Readme里也有相关参数说明:
这里提供了更多的参数进行选择,如果你打算采用寄生的连接方式这里也提供了参数实现内部上拉,当然如果你想保留原来的连接电路方式不进行电路改动的话那么我们就这样设置好了:
在config.txt里插入下面的内容:
dtoverlay=w1-gpio-pullup,gpiopin=4
这样就可以按照原来的电路连接方式连接18B20,保存重启后一样的载入w1-gpio和w1-therm后就可以读取到18B20数据了。
如果你要启用树莓派的音频的话,在里面添加一行
audio=on即可,新版的内核禁用了audio的原因是因为树莓派PWM和audio使用的是同一个接口,可能介于很多人希望使用树莓派的硬件PWM的原因,所以才这样灵活的设计让大家有更多自由使用的空间。
Readme关于audio和pwm的原文:
====================
更多信息大家自己去阅读/boot/overlays/README