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是指一些公司和个人开发的对就BBB扩展引脚的功能扩展板,而在BBB中对扩展板的管理主要体现在对dtbo的加载管理上,每一个扩展板功能不同,其采用的接口也不相同,因此需要加载可以覆盖原有扩展口功能,并加载相应驱动。
https://elinux.org/Beagleboard:BeagleBone_Capes
官方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
2.3 手动加载dtbo
向cape管理文件中写入相应的dtbo文件,一般在BBB文件路径/lib/firmware
下可以看系统中已有的dtbo文件。这个路径是系统的默认的加载dtbo搜索路径。
ls /lib/firmware/BB*
向capmgr文件中写稿已存在的dtbo文件,查看已加载的dtbo文件可以看到已经加载成功。
echo 'BB-PWM2' > /sys/devices/platform/bone_capemgr/slots
2.4 开机自动加载默认dtbo
修改以下文件,可以设置开机时需要加载的dtbo文件:
/boot/uEnv.txt
原有文件中已经注释,默认不加载任何dtbo文件,去掉注释,并将BBB-PWM2
做为默认加载:
BBB重新上电后,查看capemgr文件已成功加载该dtbo文件:
2.5 根据实际cape加载dtbo
根据实际cape加载是指:在开发的BBB扩展板中,如果有eeprom,可以将需要加载的dtbo文件以一定的格式保存在里面,这样BBB开机的时候会自动识别并加载。由于本人没有这样的扩展板,这里只根据官方文档SRM,对主要流程进行描述。
2.5.1 查看cape上eeprom地址
eeprom做为i2c读写器件,其本身是有地址的,而且可以通过eeprom上的引脚来配置其地址,因此官方建议通过拨码开关的方式做成可配置地址形式,其电路图如下:
需要注意的是:
- 系统识别eeprom的i2c的地址范围为0x54到0x57之间,因此BBB最多可识别4块地址不同的eeprom。
- eeprom必须连接到BBB的I2C2_SCL和I2C2_SDA引脚上,也就是在P9端子上的第19和第20个引脚。
- 官方建议如果eeprom内容固定后最好把写保护引脚拉高,防止对eeprom内容误操作。
2.5.2 向eeprom写入信息
在eeprom中写入固定格式的扩展板信息,其格式在官方文档中有描述,如下图:
可以通过以下命令来写入数据:
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 #确认是否写入成功
注意:
- 写入内容中如果要按照上图格式,重点是
header
到part number
这两部分。其他部分都可以用0来覆盖。 - 内容中
version
必须是写成00A0
格式,part number
必须写成对应dtbo
文件的文件名,如本例中是BB-PWM2
,这个部分将合成整个dtbo的文件名BB-PWM2-00A0
完成以上步骤后,重启BBB,就可以实现自动加载dtbo了。
相关阅读
sdfsadfs sdfsdaf sdafsdf sdaf sd fsdf
转义分为escapeHTML和unescapeHTML,先看两个函数的实现
/** * @function escapeHTML 转义html脚本 < > & " ' * @param a - * 字符串 */ escapeHTML: function(a){
bbbb
每个人都在关注趋势,Dribbble 是设计师的集散地,那么在2018年,Dribbble 反映出来设计趋势是什么?每个人都在关注趋势,Dribbble 是设计
json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和
php格式化json的函数json_encode($value,$options)其中有2个比较常用到的参数JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数