我正在尝试粘贴一条线;即:
setenv -p STARTUP "ifconfig eth0 -auto;boot -z -elf 136.170.195.87:vmlinuz-nfs-7231b0-D183-NFS-DEBUG 'root=/dev/nfs nfsroot=136.170.195.87:/export/home/joshis1/vmlinuz-nfs-7231b0-D183/rootfs/nfs rw bmem=226M@30M ip=dhcp'"
Run Code Online (Sandbox Code Playgroud)
当我尝试在 中复制该行时minicom,该行未完全复制。
我该怎么办?
console serial-port serial-communication embedded-linux minicom
我正在尝试在 linux shell 中运行一个可执行文件(树莓派上的 OpenELEC)
OpenELEC:~ # /storage/fingi/usr/lib/autossh/autossh
-sh: /storage/fingi/usr/lib/autossh/autossh: not found
Run Code Online (Sandbox Code Playgroud)
在这种情况下,“未找到”是什么意思?
如果我尝试做 ldd:
OpenELEC:~ # ldd /storage/fingi/usr/lib/autossh/autossh
/usr/bin/ldd: eval: line 1: /storage/fingi/usr/lib/autossh/autossh: not found
Run Code Online (Sandbox Code Playgroud)
如果我做文件:
OpenELEC:~ # file /storage/fingi/usr/lib/autossh/autossh
/storage/fingi/usr/lib/autossh/autossh: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=599207c47d75b62ede5f214f9322ae2a18643eb7, stripped
Run Code Online (Sandbox Code Playgroud)
文件类型格式正确。但它不会工作,也不会给出更多描述性错误消息。
由于 openELEC 非常严格,我从 raspbmc 安装复制了 autossh 可执行文件。我也为其他几个可执行文件(屏幕、boost 库等)做过这件事,它们工作得很好。
谁能建议可能是什么问题?
编辑 1:正如所建议的,这是正在工作的可执行文件(也从 raspbmc 复制)上的文件命令的输出:
OpenELEC:~ # file /storage/fingi/usr/bin/screen
/storage/fingi/usr/bin/screen: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically …Run Code Online (Sandbox Code Playgroud) 我在嵌入式Linux中使用malloc()分配了内存(大约10 MB).并检查了空闲内存它是67080 kB但是即使在使用free()释放它之后它仍然是相同的.只有在应用程序终止后,内存才会再次可用.free()不会使释放的内存可用于系统,如果可以,则如何使其可用.
我想知道为什么我们为什么在大多数c程序的末尾都包含一个空的while(1)循环,例如电机驱动器,陀螺仪传感器程序?我搜查了但没有找到任何令人满意的理由.
谢谢.
例如,在ATmega8上的代码:
#include <avr/io.h>
#include <util/delay.h>
void main (void)
{
int n = 1;
DDRB = 0xFF;
for (n=1; n<=10; ++n)
{
PORTB = 0x00;
_delay_ms(1000);
PORTB = 0XFF;
}
while (1)
{}
}
Run Code Online (Sandbox Code Playgroud) 我刚刚开始研究(嵌入式)linux(准确地说是 Beaglebone Black)上的 I2C 支持。既然是 linux,一切都是一个文件,所以 I2C 也是一个文件也就不足为奇了。
int file = open( "/dev/i2c-0", O_RDWR );
Run Code Online (Sandbox Code Playgroud)
然后通过 选择该总线上的实际地址ioctl()。我的问题是 -在应用程序执行期间缓存是否安全甚至合法file?在我天真的眼睛看来,每 250 毫秒打开一个资源进行读取的开销对内核来说是不必要的压力。所以打开是有效的,然后ioctl()只要我需要就可以用来切换地址,还是必须close()在读写之间使用描述符?
我用 C 语言为 beaglebone black 编写了一个示例 pwm 函数。每当我在其他模块或 main() 中进行函数调用时,我都会遇到分段错误。请帮助我犯错的地方以及如何处理这个问题。下面是代码。
int trigger_pwm_output(unsigned input_no )
{
FILE *pwm,*duty,*period,*run;``
uint16_t input=0;
uint8_t input_no=0,input_state=0;
unsigned int duty_cycle =500000;
pwm = fopen("/sys/devices/bone_capemgr.9/slots", "w");
fseek(pwm,0,SEEK_SET);
fprintf(pwm,"am33xx_pwm");
fflush(pwm);
switch(input_no)
{
case 0:
fprintf(pwm,"bone_pwm_P8_13");
fflush(pwm);
period = fopen("/sys/devices/ocp.3/pwm_test_P8_13.15/period", "w");
fseek(period,0,SEEK_SET);
fprintf(period,"%d",500000);
fflush(period);
duty = fopen("/sys/devices/ocp.3/pwm_test_P8_13.15/duty", "w");
fseek(duty,0,SEEK_SET);
run = fopen("/sys/devices/ocp.3/pwm_test_P8_13.15/run", "w");
fseek(run,0,SEEK_SET);
fprintf(run,"%d",0);
fflush(run);
fseek(run,0,SEEK_SET);
count++;
do
{
duty_cycle += 10;
fprintf(duty,"%d",duty_cycle);
}while(count > 0) || (count < 10));
fflush(duty);
fprintf(run,"%d",1);
fflush(run);
fclose(pwm);
fclose(duty);
fclose(period);
fclose(run);
break; …Run Code Online (Sandbox Code Playgroud) 我遇到了一个希望能尽快解决的问题。
我有幸通过 BUILDROOT 编译 Linux zImage 内核,构建 rootfs,拥有引导加载程序,所以一切都是正确的。
但是在启动时,系统是如此之小,以至于我没有像 apt-get、yum 之类的包管理器......
尽管我有网络(wget 是可能的),但我不知道如何在我的主机中拥有一个简单的 gcc(Buildroot 不再允许编译 gcc)或更简单的包管理器。
交叉编译所有东西太无聊了,我认为更好的解决方案是 apt-get 包,解决依赖关系并为 ARM 架构安装它。
我使用包括 IPKG 和 OPKG 在内的包管理器选项重新编译,但存储库不起作用并且命令不返回任何内容(IE ipkg --list 等)
是否有人遇到过同样的问题,在编译的最小系统上拥有一个好的包管理器并为 Buildroot 构建优雅的最佳方法是什么。
在 ARM 主机上拥有本机编译工具链的最佳方法是什么?
感谢您的回答
我的目的是在这个最小的主机系统上本地编译我的代码,包括 -lm -lpthread 和 LIRC 模块和头文件。
斯特凡, 法国
---- 附加信息 ---
你好,
我刷新此标签以获取设置信息:
最近 buildroot 不再允许本地编译 gcc 包,即使 make 和其他工具在最近的 buildroot 发行版上可用
gcc 和其他标签被标记为已弃用
所以需要/有义务在主机上交叉编译所以我做了什么
为方便起见,我为我的代码提供了 Makefile,其中包含 pthread 和 lirc_client 的依赖项
有兴趣的可以问我
stef, 法国
当我们使用irq_set_chained_handler时,当我们为关联的处理程序提供服务时,irq行不会被禁用,就像request_irq一样.
irq linux-device-driver linux-kernel interrupt-handling embedded-linux
我需要编写一个 Linux 设备驱动程序来连接到带有按钮和 LED 的外围显示板。
在驱动程序中,我需要通过 I2C 读取/写入外围板上的另一个 I2C 设备,然后从驱动程序内部将按钮按下事件发送到应用程序代码。
我想我已经设法使用输入子系统将键/按钮事件“模拟”到应用程序,我对这部分要求感到相当满意。
但是,我正在努力解决如何通过 I2C 总线与外围 I2C 设备交谈。我不想编写新的 I2C 通信例程,因为我希望可以使用已经存在的 I2C 通信 API。
我的问题是,有很多关于如何通过在内核中使用 i2c-dev 从应用程序(用户空间)使用 I2C 的文档,但我发现没有任何有用的内容来解释如何对特定的 I2C 进行调用I2C 总线,来自我自己的驱动程序(我的驱动程序调用 i2c 驱动程序??)。
我希望这是有道理的,我在互联网上看了很多东西,但似乎没有什么能简单地解释事情。
任何帮助apprciated,
谢谢
感谢您的时间和支持
我打算使用swupdate进行更新.所以,我需要创建一个额外的分区,我需要在其中存储恢复分区.
poky/meta/classes/image-live.bbclass
Run Code Online (Sandbox Code Playgroud)
是创建分区并闪烁根文件系统的类.我已经更新了上面的文件以创建另一个分区并存储swupdate根文件系统.
如何在我自己的BSP层中覆盖此类,我不想触及poky源代码..
embedded-linux ×10
linux ×4
c ×3
i2c ×2
arm ×1
bsp ×1
buildroot ×1
console ×1
driver ×1
free ×1
irq ×1
linux-kernel ×1
minicom ×1
raspberry-pi ×1
serial-port ×1
shell ×1
while-loop ×1
yocto ×1