我与嵌入式设备的唯一通信方式是串行端口。默认情况下,嵌入式Linux使用此端口作为终端。如何禁用此终端并使用串行链路传输二进制数据?我听说过像rx和tx这样的命令,但我找不到它们。我想我可以只从/dev/tty读取()和写入()东西到/dev/tty,但我想确保没有错误消息或任何困惑我的数据流。 最佳答案 您可以使用xmodem等应用程序通过任何终端传输文件。你说的串口是终端,还是内核控制台。如果你的内核没有噪音,那么你可以使用你当前的连接来使xmodem像传输一样。在主机端,您可以使用kermit,它很好用并且可以编写脚本。如果你
我有一个运行嵌入式Linux的系统,它的持续运行至关重要。它基本上是一个与传感器通信并将数据中继到数据库和Web客户端的过程。如果发生崩溃,如何自动重启应用程序?此外,还有几个线程在进行轮询(例如套接字和uart通信)。如何确保没有线程挂起或意外退出?是否有易于使用且对线程友好的看门狗? 最佳答案 如inthisanswer所述,您可以使用fork和waitpid无缝重启您的进程。.它不会消耗任何大量资源,因为操作系统将共享内存页面。这只剩下检测挂起进程的问题。您可以使用MichaelAaronSafyan为此指出的任何解决方案,但
我有一个运行嵌入式Linux的系统,它的持续运行至关重要。它基本上是一个与传感器通信并将数据中继到数据库和Web客户端的过程。如果发生崩溃,如何自动重启应用程序?此外,还有几个线程在进行轮询(例如套接字和uart通信)。如何确保没有线程挂起或意外退出?是否有易于使用且对线程友好的看门狗? 最佳答案 如inthisanswer所述,您可以使用fork和waitpid无缝重启您的进程。.它不会消耗任何大量资源,因为操作系统将共享内存页面。这只剩下检测挂起进程的问题。您可以使用MichaelAaronSafyan为此指出的任何解决方案,但
我正在考虑嵌入式Linux项目(还没有硬件)中即将出现的情况,其中两个外部芯片需要共享一条物理IRQ线。这条线在硬件中能够实现边沿触发,但不能实现电平触发中断。查看Linux中的共享irq支持,我了解到这与两个单独的驱动程序一起工作的方式是每个驱动程序都会调用它们的中断处理程序,检查它们的硬件并在适当时进行处理。但是我想象以下竞争条件,并且想知道我是否遗漏了什么或者可以采取什么措施来解决这个问题。假设有两个外部中断源,设备A和B:设备B中断发生,IRQ激活IRQ边缘导致Linux核心中断处理程序运行设备A的ISR运行,发现没有待处理的中断设备中断发生,IRQ保持活跃(线或)设备B的IS
我正在考虑嵌入式Linux项目(还没有硬件)中即将出现的情况,其中两个外部芯片需要共享一条物理IRQ线。这条线在硬件中能够实现边沿触发,但不能实现电平触发中断。查看Linux中的共享irq支持,我了解到这与两个单独的驱动程序一起工作的方式是每个驱动程序都会调用它们的中断处理程序,检查它们的硬件并在适当时进行处理。但是我想象以下竞争条件,并且想知道我是否遗漏了什么或者可以采取什么措施来解决这个问题。假设有两个外部中断源,设备A和B:设备B中断发生,IRQ激活IRQ边缘导致Linux核心中断处理程序运行设备A的ISR运行,发现没有待处理的中断设备中断发生,IRQ保持活跃(线或)设备B的IS
我正在开发带有yocto发行版和python2.7.3的variscite板。我有时会收到来自python解释器的总线错误消息。我的程序至少在错误发生前的几个小时或几天内正常运行。但是当我获取一次后,当我尝试重新启动我的程序时,我直接获取了它。在系统再次运行之前,我必须重新启动。我的程序只使用了一个串口,一些usb通信和一些tcp套接字。我可以切换到另一个硬件并遇到同样的问题。我还使用了pythonselftestpython-c"fromtestimporttestall"我得到了这两个测试的错误test_getattr(test.test_builtin.BuiltinTest).
我正在开发带有yocto发行版和python2.7.3的variscite板。我有时会收到来自python解释器的总线错误消息。我的程序至少在错误发生前的几个小时或几天内正常运行。但是当我获取一次后,当我尝试重新启动我的程序时,我直接获取了它。在系统再次运行之前,我必须重新启动。我的程序只使用了一个串口,一些usb通信和一些tcp套接字。我可以切换到另一个硬件并遇到同样的问题。我还使用了pythonselftestpython-c"fromtestimporttestall"我得到了这两个测试的错误test_getattr(test.test_builtin.BuiltinTest).
arm-none-eabi和arm-linux-gnueabi有什么区别?我知道如何使用它们的区别(一个用于裸机软件,另一个用于在linux上运行的软件)。但是技术背景是什么?我发现ABI有所不同,据我所知,它类似于API,但在二进制级别。它确保了不同应用程序的互操作性。但我真的不明白拥有或不拥有操作系统会以何种方式影响我的工具链。我唯一想到的是,在编译裸机软件时,库可能必须静态链接(是吗?),因为没有操作系统动态提供它们。我发现与该主题相关的大多数页面只是回答了如何使用工具链,而不是技术背景。我是机电一体化专业的学生,刚接触嵌入式系统,所以我在这个领域的经验有些有限。
arm-none-eabi和arm-linux-gnueabi有什么区别?我知道如何使用它们的区别(一个用于裸机软件,另一个用于在linux上运行的软件)。但是技术背景是什么?我发现ABI有所不同,据我所知,它类似于API,但在二进制级别。它确保了不同应用程序的互操作性。但我真的不明白拥有或不拥有操作系统会以何种方式影响我的工具链。我唯一想到的是,在编译裸机软件时,库可能必须静态链接(是吗?),因为没有操作系统动态提供它们。我发现与该主题相关的大多数页面只是回答了如何使用工具链,而不是技术背景。我是机电一体化专业的学生,刚接触嵌入式系统,所以我在这个领域的经验有些有限。
我正在使用gpio-keys设备驱动程序,用于处理运行Linux的嵌入式设备中的某些按钮。用户空间中的应用程序只需打开/dev/input/eventX并循环读取输入事件。我的问题是如何获得按钮的初始状态。有一个ioctl调用(EVIOCGKEY)可用于此,但是如果我先检查它然后开始从/dev/input/eventX读取,则没有保证状态在两者之间没有变化的方法。有什么建议吗? 最佳答案 evdev设备queueevents直到你read()它们,所以在大多数情况下打开设备,执行ioctl()并立即开始从它读取事件应该工作。如果驱动