BBB学习(十九):cape介绍(二)cape管理简介

文章目录

  • 一 前言
  • 二 介绍及操作
    • 2.1 cape的概念
    • 2.2 查看当前已加载dtbo
    • 2.3 手动加载dtbo
    • 2.4 开机自动加载默认dtbo
    • 2.5 根据实际cape加载dtbo
      • 2.5.1 查看cape上eeprom地址
      • 2.5.2 向eeprom写入信息

一 前言

前节简单介绍了devicetree的语法,以及通过查表法来配置device tree相关配置引脚,因此可以参考相关device tree来配置自己的设备树文件,但实际中,BBB本身有一套cape管理方式,可以针对不同的cape来加载不同的dtbo。本节将对BBB的cape管理进行相关介绍。

BBB对DTBO的加载有以下几个方法:

  • 在终端通过指令手动加载
  • 修改开机启动文件实现开机时自动加载
  • 开机自动识别cape(扩展板)中记录实现自动加载

二 介绍及操作

2.1 cape的概念

接触BBB之后,经常会看到这个词cape,什么是cape?英文单词的意思我们可以看到:

BBB学习(十九):cape介绍(二)cape管理简介_第1张图片

英文单词本身有意思有海峡、披肩等,但对于BBB而言,cape是指一些公司和个人开发的对就BBB扩展引脚的功能扩展板,而在BBB中对扩展板的管理主要体现在对dtbo的加载管理上,每一个扩展板功能不同,其采用的接口也不相同,因此需要加载可以覆盖原有扩展口功能,并加载相应驱动。

https://elinux.org/Beagleboard:BeagleBone_Capes

BBB学习(十九):cape介绍(二)cape管理简介_第2张图片

官方WIKI中详细地说明了CAPE和DT及Kernel的关系:“BeagleBone and the 3.8 Kernel”,如果想深入了解可以看这里:

(http://elinux.org/BeagleBone_and_the_3.8_Kernel#Cape_Manager_requirements)

2.2 查看当前已加载dtbo

输入以下命令,可以看出cape管理文件的路径,同时可以看出,默认情况下BBB没有加载任何dtbo文件。图中4个空白位置是指根据扩展板中eeprom内容加载的dtbo文件,也就是说:

  • 手动加载的dtbo全部在这4个后面
  • 对扩展板加载的dtbo最多是4个。
cat /sys/devices/platform/bone_capemgr/slots

BBB学习(十九):cape介绍(二)cape管理简介_第3张图片

2.3 手动加载dtbo

向cape管理文件中写入相应的dtbo文件,一般在BBB文件路径/lib/firmware下可以看系统中已有的dtbo文件。这个路径是系统的默认的加载dtbo搜索路径。

ls /lib/firmware/BB*

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9kTrhj5-1578361849355)(https://gitee.com/wpbi/blog-picture/raw/master/2018/BBB%20study/4-8-CapeIntroduceCape/5.png)]

向capmgr文件中写稿已存在的dtbo文件,查看已加载的dtbo文件可以看到已经加载成功。

echo 'BB-PWM2' > /sys/devices/platform/bone_capemgr/slots

BBB学习(十九):cape介绍(二)cape管理简介_第4张图片

2.4 开机自动加载默认dtbo

修改以下文件,可以设置开机时需要加载的dtbo文件:

/boot/uEnv.txt

BBB学习(十九):cape介绍(二)cape管理简介_第5张图片

原有文件中已经注释,默认不加载任何dtbo文件,去掉注释,并将BBB-PWM2做为默认加载:

BBB学习(十九):cape介绍(二)cape管理简介_第6张图片

BBB重新上电后,查看capemgr文件已成功加载该dtbo文件:

BBB学习(十九):cape介绍(二)cape管理简介_第7张图片

2.5 根据实际cape加载dtbo

根据实际cape加载是指:在开发的BBB扩展板中,如果有eeprom,可以将需要加载的dtbo文件以一定的格式保存在里面,这样BBB开机的时候会自动识别并加载。由于本人没有这样的扩展板,这里只根据官方文档SRM,对主要流程进行描述。

2.5.1 查看cape上eeprom地址

eeprom做为i2c读写器件,其本身是有地址的,而且可以通过eeprom上的引脚来配置其地址,因此官方建议通过拨码开关的方式做成可配置地址形式,其电路图如下:

BBB学习(十九):cape介绍(二)cape管理简介_第8张图片

需要注意的是:

  • 系统识别eeprom的i2c的地址范围为0x54到0x57之间,因此BBB最多可识别4块地址不同的eeprom。
  • eeprom必须连接到BBB的I2C2_SCL和I2C2_SDA引脚上,也就是在P9端子上的第19和第20个引脚。
  • 官方建议如果eeprom内容固定后最好把写保护引脚拉高,防止对eeprom内容误操作。

2.5.2 向eeprom写入信息

在eeprom中写入固定格式的扩展板信息,其格式在官方文档中有描述,如下图:

BBB学习(十九):cape介绍(二)cape管理简介_第9张图片

可以通过以下命令来写入数据:

cd /sys/bus/i2c/devices/1-0054/  #到eeprom目录中  
cat eeprom | hexdump -C  #读取eeprom内容并以字符形式显示  
echo -e "\xaa\x55\x33\xeeA1Beaglebone PWM2 Cape\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0000A1BeagleboardToys\x00BB-PWM2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" > eeprom  #写入内容  
cat eeprom | hexdump -C  #确认是否写入成功  

注意:

  • 写入内容中如果要按照上图格式,重点是headerpart number这两部分。其他部分都可以用0来覆盖。
  • 内容中version必须是写成00A0格式,part number必须写成对应dtbo文件的文件名,如本例中是BB-PWM2,这个部分将合成整个dtbo的文件名BB-PWM2-00A0

完成以上步骤后,重启BBB,就可以实现自动加载dtbo了。


你可能感兴趣的:(BeagleboneBlack)