我有一个运行xinu的beagle bone black和在虚拟机上运行的VM中设置的开发环境.到目前为止,我已经能够在Xinu编写Hello world shell命令.所以我对xinu和beagle bone有一个基本的想法.我想将Cbor和COAP库移植到BBB.我只是复制include文件夹中的.c和.h文件以及"make"和"make install"吗?或者有更好/更复杂的方式吗?
我在Debian的Adafruit Python IO库中遇到GPIO问题(来自armhf.org).它以root身份运行,但不像普通用户那样运行.
我添加了udev规则;
KERNEL=="gpio*", SUBSYSTEM=="gpio", ACTION=="add", PROGRAM="/bin/sh -c 'chown -R debian:gpio /sys/class/gpio'"
KERNEL=="gpio*", SUBSYSTEM=="gpio", ACTION=="add", PROGRAM="/bin/sh -c 'chown -R debian:gpio /sys/devices/virtual/gpio/'"
Run Code Online (Sandbox Code Playgroud)
我的用户"debian"在组"gpio"中.现在我可以在用户的shell中使用echo ...>/sys ...来控制gpio.但不是python.它没有错误就行不通.
但是,如果我手动运行"echo 45>/sys/class/gpio/export"然后在这个gpio上启动python它将起作用.
我可以在启动python脚本后在/ sys/class/gpio中看到gpio45,但是它不起作用.它只能在手动导出后才能工作.我尝试从源代码编译函数gpio_export()并手动启动它.它确实有效.但在实际脚本中它只创建gpio文件,但不起作用.
这是我的测试脚本:
import Adafruit_BBIO.GPIO as GPIO
import time
P = "P8_11"
GPIO.setup(P, GPIO.OUT)
for i in xrange(100):
if i % 2 == 0:
GPIO.output(P, GPIO.HIGH)
else:
GPIO.output(P, GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup()
Run Code Online (Sandbox Code Playgroud)
谢谢
- = UPDATED = - 这是一个错误.我在项目的github页面上发布了它以及为我解决问题的残酷补丁https://github.com/adafruit/adafruit-beaglebone-io-python/issues/36
--- adafruit-beaglebone-io-python/source/py_gpio.c 2013-09-17 20:10:08.000000000 +0300
+++ adafruit-beaglebone-io-python/source/py_gpio.c 2013-09-21 02:54:43.000000000 +0300
@@ -105,10 +105,26 @@ …Run Code Online (Sandbox Code Playgroud) 我正在尝试与运行 Ubuntu Linux 的 Beaglebone Black 上的汽车 OBDII 蓝牙设备配对,但运气不佳。
最初我能够使用 bluez-simple-agent 设置 hci0,尽管它从未要求我提供 PIN。该设备的 PIN 应该是“1234”。现在,当我运行 bluez-simple-agent 时,我得到以下信息:
ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo bluez-simple-agent hci0 00:0D:18:A0:4E:35
Creating device failed: org.bluez.Error.AlreadyExists: Already Exists
Run Code Online (Sandbox Code Playgroud)
如果它工作正常,那就太好了,但是当我尝试使用 rfcomm 绑定时,我反复收到“无法连接 RFCOMM 套接字:无效交换”(重新启动设备后第一次),然后“无法连接 RFCOMM 套接字:此后每次都出现“连接被拒绝”的情况。
这是我的 /etc/bluetooth/rfcomm.conf 文件:
rfcomm0 {
# Automatically bind the device at startup
bind no;
# Bluetooth address of the device
device 00:0D:18:A0:4E:35;
# RFCOMM channel for the connection
channel 16;
# Description of the connection
comment "OBDII";
}
Run Code Online (Sandbox Code Playgroud)
运行“rfcomm bind 0”确实在 /dev/rfcomm0 成功创建了一个设备:
rfcomm0: …Run Code Online (Sandbox Code Playgroud) 我正在尝试处理中断,但由于 ioread32,我收到以下错误。
\n\n正如我在《AM335x SitaraTM 处理器 - 技术参考手册》的“25.3.3 中断特性”一章中看到的
\n\n为了在 GPIO 引脚上发生定义的事件(电平或逻辑转换)时向主机处理器生成中断请求,必须按如下方式对 GPIO 配置寄存器进行编程:
\n\n\xe2\x80\xa2 必须在 GPIO_IRQSTATUS_SET_0 和/或 GPIO_IRQSTATUS_SET_1 寄存器中启用 GPIO 通道的中断。
\n\n\xe2\x80\xa2 必须在 GPIO_LEVELDETECT0、GPIO_LEVELDETECT1、GPIO_RISINGDETECT 和 GPIO_FALLINGDETECT 寄存器中选择输入 GPIO 上触发中断请求的预期事件。
\n\n[ 1737.604270] Loading hello_interrupts module...\n[ 1737.604426] HI: Initialized GPIO #36 to IRQ #164\n[ 1737.604478] Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa1ac02c\n[ 1737.612611] Internal error: : 1028 [#1] SMP THUMB2\n[ 1737.617696] Modules linked in: hello_interrupts(O+) g_multi libcomposite omap_rng mt7601Usta(O) [last unloaded: hello_interrupts]\n[ 1737.630128] CPU: 0 …Run Code Online (Sandbox Code Playgroud) c++ kernel-module embedded-linux beagleboard beagleboneblack
我想在我的嵌入式 Linux 桌面启动时运行一个程序,就像 Windows 在“启动”文件夹中运行程序一样。我怎样才能做到这一点?
具体来说,我的目标硬件是 Beaglebone Black,Debian 变体(rev C 板)。窗口管理器是默认的。
是否可以使用 BB 作为大容量存储设备?
我希望它连接到一个音频播放器,该播放器可以从 USB 连接(例如 USB 闪存驱动器)读取文件,并充当包含文件系统(如果可能的话,在连接到开发板的闪存驱动器。)。
正如设备规格所述,它具有以下连接性:
操作系统可能是 Ubuntu,但可以更改。
为了实现这一目标,需要完成哪些驱动程序或配置?
我尝试用opencv和python从网络摄像头获取图像.代码是如此基本:
import cv2
import time
cap=cv2.VideoCapture(0)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH,640)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT,480)
cap.set(cv2.cv.CV_CAP_PROP_FPS, 20)
a=30
t=time.time()
while (a>0):
now=time.time()
print now-t
t=now
ret,frame=cap.read()
#Some processes
print a,ret
print frame.shape
a=a-1
k=cv2.waitKey(20)
if k==27:
break
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
但它运作缓慢.程序输出:
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
HIGHGUI ERROR: V4L: Property <unknown property string>(5) not supported by device
8.82148742676e-06
select timeout
30 True
(480, 640, 3)
2.10035800934
select timeout
29 True
(480, 640, 3)
2.06729602814
select timeout …Run Code Online (Sandbox Code Playgroud) 我已经安装openwrt在beaglebone black. 我发现它没有gcc,g++或任何其他编译器/工具链。
如何在 openwrt 中安装 C 和 C++ 编译器(最好是 g++)?
我有一个 BeagleBoneBlack Wireless,我想使用 SPI(和 I2C)。我发现很难获得有关如何在 BBB 上设置和使用 SPI 的明确说明。首先,我不清楚 BBB 的默认配置是什么。我似乎有两个 SPI 设备:
$ ls /dev/spi*
/dev/spidev1.0 /dev/spidev1.1 /dev/spidev2.0 /dev/spidev2.1
Run Code Online (Sandbox Code Playgroud)
我似乎也有 I2C:
$ ls /dev/i2c*
/dev/i2c-0 /dev/i2c-1 /dev/i2c-2
Run Code Online (Sandbox Code Playgroud)
我不清楚这些总线是否实际上多路复用到引脚,或者它们是否真的不可用。如果它们连接到引脚,究竟哪条总线是哪条?
我尝试使用引脚多路复用信息(来自此处)进行检查,该信息告诉我对于 SPI1 芯片选择 0,我应该使用偏移量为 0x19C 的引脚,因此我查询了该引脚上的模式:
$ sudo cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins | grep 44e1099c
pin 103 (44e1099c.0) 00000002 pinctrl-single
Run Code Online (Sandbox Code Playgroud)
它作为模式 2 返回,这对我来说不是很有用(它不是 SPI)。我试图按照有关为此设置覆盖的说明(从这里),但这需要对我的内核进行一些调整,即使那时似乎也无济于事。
请有人指点我一些说明,使这更清楚一点,并且理想情况下与我使用的内核版本(4.4.30)相匹配?
我正在查看 Beagle Bone Black 的设备树,并从 开始am57xx-beagle-x15.dts。深入研究dra7.dtsi我发现gpio1:
gpio1: gpio@4ae10000 {
compatible = "ti,omap4-gpio";
reg = <0x4ae10000 0x200>;
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "gpio1";
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
Run Code Online (Sandbox Code Playgroud)
我读过它#interrupt-cells给出了列表中的一项所期望的 u32 或单元格的数量interrupts。但是当我查看时,interrupts我看到了一个三元组:<GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>。我很想知道,为什么它包含 3 个单元而不是 2 个?
beagleboneblack ×10
linux ×4
beagleboard ×2
debian ×2
python ×2
bluetooth ×1
bluez ×1
c++ ×1
elm327 ×1
filesystems ×1
g++ ×1
gcc ×1
gpio ×1
opencv ×1
openwrt ×1
porting ×1
raspberry-pi ×1
spi ×1
ubuntu ×1
usb ×1