标签: embedded-linux

将文本复制到 minicom 不会完全粘贴

我正在尝试粘贴一条线;即:

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

2
推荐指数
1
解决办法
4672
查看次数

“-sh:executable_path:not found”是什么意思

我正在尝试在 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 shell embedded-linux raspberry-pi

2
推荐指数
1
解决办法
3029
查看次数

free()没有释放嵌入式linux中的内存.

我在嵌入式Linux中使用malloc()分配了内存(大约10 MB).并检查了空闲内存它是67080 kB但是即使在使用free()释放它之后它仍然是相同的.只有在应用程序终止后,内存才会再次可用.free()不会使释放的内存可用于系统,如果可以,则如何使其可用.

c free embedded-linux

2
推荐指数
1
解决办法
1024
查看次数

为什么我们在嵌入式c程序结束时使用空(1)?

我想知道为什么我们为什么在大多数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)

c while-loop embedded-linux

2
推荐指数
1
解决办法
2049
查看次数

Linux I2C 文件句柄 - 缓存安全吗?

我刚刚开始研究(嵌入式)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()在读写之间使用描述符?

linux i2c embedded-linux

2
推荐指数
1
解决办法
483
查看次数

使用 C 的 Beaglebone 黑色 PWM

我用 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)

c embedded-linux beagleboneblack

2
推荐指数
1
解决办法
6185
查看次数

如何在使用 Buildroot 编译的最小 Linux 内核上安装包或本地编译包

我遇到了一个希望能尽快解决的问题。

我有幸通过 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, 法国

arm cross-compiling embedded-linux buildroot

2
推荐指数
1
解决办法
6554
查看次数

当我们使用irq_set_chained_handler时,irq线是否会被禁用?

当我们使用irq_set_chained_handler时,当我们为关联的处理程序提供服务时,irq行不会被禁用,就像request_irq一样.

irq linux-device-driver linux-kernel interrupt-handling embedded-linux

2
推荐指数
1
解决办法
1295
查看次数

使用linux I2C驱动

我需要编写一个 Linux 设备驱动程序来连接到带有按钮和 LED 的外围显示板。

在驱动程序中,我需要通过 I2C 读取/写入外围板上的另一个 I2C 设备,然后从驱动程序内部将按钮按下事件发送到应用程序代码。

我想我已经设法使用输入子系统将键/按钮事件“模拟”到应用程序,我对这部分要求感到相当满意。

但是,我正在努力解决如何通过 I2C 总线与外围 I2C 设备交谈。我不想编写新的 I2C 通信例程,因为我希望可以使用已经存在的 I2C 通信 API。

我的问题是,有很多关于如何通过在内核中使用 i2c-dev 从应用程序(用户空间)使用 I2C 的文档,但我发现没有任何有用的内容来解释如何对特定的 I2C 进行调用I2C 总线,来自我自己的驱动程序(我的驱动程序调用 i2c 驱动程序??)。

我希望这是有道理的,我在互联网上看了很多东西,但似乎没有什么能简单地解释事情。

任何帮助apprciated,

谢谢

linux driver i2c linux-device-driver embedded-linux

2
推荐指数
1
解决办法
2076
查看次数

通过元层覆盖Yocto类

感谢您的时间和支持

我打算使用swupdate进行更新.所以,我需要创建一个额外的分区,我需要在其中存储恢复分区.

poky/meta/classes/image-live.bbclass
Run Code Online (Sandbox Code Playgroud)

是创建分区并闪烁根文件系统的类.我已经更新了上面的文件以创建另一个分区并存储swupdate根文件系统.

如何在我自己的BSP层中覆盖此类,我不想触及poky源代码..

linux bsp embedded-linux yocto

2
推荐指数
1
解决办法
1920
查看次数