han*_*ros 4 debian device-tree beagleboneblack
如果我从shell加载我自己的设备树覆盖,它加载正常,但如果我尝试在启动时加载它,它将不会这样做.我错过了什么?
这是我用debian-debian-7.4-2014-04-23-2gb.img.xz设置的debian BeagleBone Black.使用
Linux beaglebone 3.8.13-bone47#1 SMP Fri Apr 11 01:36:09 UTC 2014 armv7l GNU/Linux的
这是我对/boot/uboot/uEnv.txt所做的更改:
optargs = capemgr.enable_partno = BB-FOO-GPIO
这是dmesg |的输出 grep bone-capemgr:
底板:'A335BNLT,00A5,4049BBBK7400'
兼容底板= ti,beaglebone-black
slot#0:没有斗篷发现
插槽#1:没有斗篷发现
插槽#2:没有斗篷发现
插槽#3:没有斗篷发现
插槽#4:特定覆盖
骨骼:在插槽4
插槽#4 处使用覆盖eeprom数据:'Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G'
插槽#5:特定覆盖
骨骼:使用覆盖eeprom数据插槽5
插槽#5:'Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI'
插槽#6:特定覆盖
骨:在插槽6
插槽#6 处使用覆盖eeprom数据:'Bone-Black-HDMIN, 00A0,德克萨斯仪器,BB-BONELT-HDMIN"
enabled_partno PART_NUMBER 'BB-FOO-GPIO',版本'N/A',PRIO '0'
时隙#7:通用覆盖
骨:在时隙7使用倍率EEPROM数据
时隙#7 : '覆盖电路板名称,00A0,覆盖MANUF,BB-FOO-GPIO'
装载机:前槽4 BB-BONE-EMMC-2G:00A0(PRIO 1)
装载机:检查槽4 BB-BONE-EMMC-2G: 00A0(prio 1)
装载机:插槽前5 BB-BONELT-HDMI:00A0(prio 1)
装载机:检查插槽-5 BB-BONELT-HDMI:00A0(prio 1)装载机:插槽
前 - 6 BB-BONELT-HDMIN:00A0(prio 2)
加载程序:检查slot-6 BB-BONELT-HDMIN:00A0(prio 2)
初始化OK.
loader:check slot-4 BB-BONE-EMMC-2G:00A0(prio 1)
loader:check slot-5 BB-BONELT-HDMI:00A0(prio 1)
loader:check slot-6 BB-BONELT-HDMIN:00A0( PRIO 2)
装载机:前槽7 BB-FOO-GPIO:00A0(PRIO 0)
装载机:检查槽7 BB-FOO-GPIO:00A0(PRIO 0)
装载机:槽7 BB-FOO-GPIO后:00A0 (prio 0)
插槽#7:请求基于'BB-FOO-GPIO-00A0.dtbo
插槽#7的部件号/版本:请求固件'BB-FOO-GPIO-00A0.dtbo'用于电路板名称'覆盖电路板名称' ,版本'00A0'
无法加载固件'BB-FOO-GPIO-00A0.dtbo'
加载程序:无法加载插槽-7 BB-FOO-GPIO:00A0(prio 0)
加载程序:检查插槽-6 BB-BONELT-HDMIN :00A0(prio 2)
加载程序:检查插槽-5 BB-BONELT-HDMI:00A0(prio 1)
加载程序:插槽5后BB-BONELT-HDMI:00A0(prio 1)
插槽#5:请求固件'cape-boneblack -hdmi-00A0.dtbo'用于电路板名称'Bone-Black-HDMI',版本'00A0'
插槽#5:dtbo'cape-boneblack-hdmi-00A0.dtbo'已加载; 转换为实时树
插槽#5:#4覆盖
加载器:检查插槽-4 BB-BONE-EMMC-2G:00A0(prio 1)
加载器:插槽4后BB-BONE-EMMC-2G:00A0(prio 1)
插槽#4:请求固件'cape-bone-2g-emmc1.dtbo'用于电路板名称'Bone-LT-eMMC-2G',版本'00A0'
插槽#4:dtbo'cape-bone-2g-emmc1.dtbo'装; 转换为实时树
插槽#4:#2覆盖
插槽#4:应用#2覆盖.
loader:done slot-4 BB-BONE-EMMC-2G:00A0(prio 1)
loader:check slot-6 BB-BONELT-HDMIN:00A0(prio 2)
slot#5:应用#4覆盖.
loader:done slot-5 BB-BONELT-HDMI:00A0(prio 1)
loader:check slot-6 BB-BONELT-HDMIN:00A0(prio 2)
loader:slot-6 BB-BONELT-HDMIN:00A0(prio 2) )
插槽#6:请求固件'cape-boneblack-hdmin-00A0.dtbo'用于电路板名称'Bone-Black-HDMIN',版本'00A0'
插槽#6:dtbo'cape-boneblack-hdmin-00A0.dtbo'装; 转换为实时树
插槽#6:BB-BONELT-HDMIN冲突P8.45(#5:BB-BONELT-HDMI)
插槽#6:验证
加载器失败:无法加载插槽-6 BB-BONELT-HDMIN:00A0(prio 2)
这是设备树覆盖的源文件:
/dts-v1/;
/plugin/;
/ {
compatible = "ti,beaglebone", "ti,beaglebone-black";
/* Identification */
part-number = "BB-FOO-GPIO";
version = "00A0";
/* Resources required */
exclusive-use =
"P9.27", /* XXX */
"P9.23", /* XXX */
"gpio3_19", /* XXX */
"gpio1_17"; /* XXX */
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
foo_gpio_pins: pinmux_gpio_helper_pins {
pinctrl-single,pins = <
0x1a4 0x0f /* P9.27 GPIO3_19: MODE7 - OUTPUT */
0x044 0x2f /* P9.23 GPIO1_17: MODE7 - INPUT */
>;
};
};
};
fragment@1 {
target = <&ocp>; /* On-chip Peripherals */
__overlay__ {
foo_gpio_helper {
compatible = "gpio-of-helper";
pinctrl-names = "default";
pinctrl-0 = <&foo_gpio_pins>;
status = "okay";
foo_test_output {
gpio-name = "foo_test_output";
gpio = <&gpio4 19 0x00>; /* gpio4 => GPIO-3 */
output;
init-high;
};
foo_test_input {
gpio-name = "foo_test_input";
gpio = <&gpio2 17 0x00>; /* gpio2 => GPIO-1 */
input;
count-rising-edge;
count-falling-edge;
};
};
};
};
};
Run Code Online (Sandbox Code Playgroud)
〜
(我编译得如此:dtc -O dtb -o BB-FOO-GPIO-00A0.dtbo -b 0 - @ BB-FOO-GPIO-00A0.dts }
现在使用echo BB-FOO-GPIO手动加载它> $ SLOTS"它加载正常..
dmesg -c给了我:
bone-capemgr bone_capemgr.9:part_number'BB-FOO-GPIO',版本'N/
A'bone-capemgr bone_capemgr.9:slot#8:generic override
bone-capemgr bone_capemgr.9:bone:在插槽中使用覆盖eeprom数据8
bone-capemgr bone_capemgr.9:slot#8:'覆盖Board Name,00A0,Override Manuf,BB-FOO-
GPIO'bone-capemgr bone_capemgr.9:slot#8:请求基于'BB-FOO-的部件号/版本GPIO-00A0.dtbo
bone-capemgr bone_capemgr.9:slot#8:为board-name'覆盖Board Name'请求固件'BB-FOO-GPIO-00A0.dtbo',版本'00A0'bone
-capemgr bone_capemgr.9:插槽#8:dtbo'BB-FOO-GPIO-00A0.dtbo'已加载; 转换为实时树
骨 - capemgr bone_capemgr.9:插槽#8:
#get 覆盖of_get_named_gpio_flags退出状态为17
gpio-of-helper foo_gpio_helper.15:分配的GPIO id = 0
of_get_named_gpio_flags退出状态为115
gpio-of-helper foo_gpio_helper.15 :分配的GPIO id = 1
gpio-of-helper foo_gpio_helper.15:ready
bone-capemgr bone_capemgr.9:slot#8:应用#2覆盖.
而cat /sys/devices/bone_capemgr.9/slots给了我我想要的东西:
0:54:PF ---
1:55:PF ---
2:56:PF ---
3:57:PF ---
4:ff:POL Bone-LT-eMMC-2G,00A0,Texas Instrument, BB-BONE-EMMC-2G
5:FF:POL骨黑HDMI,00A0,德州仪器(TI),BB-BONELT-HDMI
8:FF:POL覆盖主板名称,00A0,覆盖MANUF,BB-FOO-GPIO
那么,我错过了什么?为什么它不会在启动时加载,但它会从shell中加载?问题似乎与固件未加载有关......我不明白.
这个问题在链接中有一个解决方案:http://elinux.org/Beagleboard : BeagleBoneBlack_Debian#Loading_custom_capes
乔治,我希望它有所帮助
| 归档时间: |
|
| 查看次数: |
8950 次 |
| 最近记录: |