问题标签 [embedded-linux]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1821 浏览

ruby - 嵌入式设备的动态语言?

我需要将动态语言部署到小型嵌入式 Linux 设备,但很难找到合适的语言:我想用这种语言构建一个小型 Web 应用程序(使用 Sinatra 或 Camping 等小型框架)并编写一些脚本进行维护.

我更喜欢 Ruby,因为我在这方面有一些经验,但是在尝试交叉编译它几天后,我只能构建准系统解释器,没有库(miniruby)。它的问题是,它实在是太大了:被剥夺了超过 1 MB!

你使用的是什么语言,让它工作起来有多困难?

0 投票
1 回答
394 浏览

qt - 我应该将我的嵌入式 Linux 产品基于 Qt 吗?

我的公司正在开发一种医疗产品。其中一个组件是一个类似 pda 的平台,它将运行嵌入式 linux。

我们曾考虑将 Qt 作为 UI 框架,但发现 Qt 远不止于此(我们不熟悉 Qt)。我们打算用 C++ 编程。

一般来说,设备需要做到以下几点:

  1. 通过 USB HID 从其他设备接收测量值(为方便起见,使用 USB HID)。

  2. 处理测量。

  3. 将它们存储在数据库中。

  4. 使用设备的触摸屏液晶显示器与用户交互。

  5. 与收集数据并配置设备的中央管理站通信(wi-fi、tcp-ip)。

  6. 包括一个网络服务器以允许通过浏览器访问设备。

我的问题是:

  1. 对于这样的设备,这是一个不错的选择吗?

  2. 假设我们选择 Qt,我们如何构建我们的产品?

    • 我们是否将 Qt 仅用作 GUI 框架并在单独的进程中编写应用程序代码(在 Qt 和应用程序进程之间传递消息)?
    • 我们是否在 Qt 中编写整个应用程序,使用该工具必须提供的所有服务?
    • 另一种方法?
0 投票
3 回答
4745 浏览

linux-kernel - 调试内核挂起

我正在尝试运行一个使用内核模式驱动程序的应用程序。系统每小时锁定一次,恢复它的唯一方法是硬重置。Sysrq 停止响应,telnet 会话挂起并且没有任何类型的错误消息。不幸的是,该板没有 ejtag 支持。我一直试图在功能上隔离它,但这就像在干草堆中寻找针一样。有什么建议么?

PS:这是一个mips linux系统(2.6.31)。

0 投票
5 回答
37133 浏览

c - Lock a mutex multiple times in the same thread

I'm developing an application on an embedded linux OS (uClinux) and I need to be able to lock the mutex more than once (by the same thread).

I have a mutex and a mutexattr defined and initialized as follows:

But when I try to acquire the lock twice it blocks on the second lock:

Am I initializing it wrong or is there a better way of accomplishing the same?

Thanks in advance.

Conclusions:

  • Apparently PTHREAD_MUTEX_RECURSIVE or PTHREAD_MUTEX_RECURSIVE_NP don't work so I can't create a reentrant mutex.
  • try_lock is no good either. It acquires the lock if it can and returns an error if it can't acquire the lock. Unfortunately the error just informs me that the mutex is already in use and I can´t find out if the current thread already owns the lock or not.
  • pthread_mutex_lock can return an error if the current thread has the lock but for that I need to create a mutex of the type PTHREAD_MUTEX_ERRORCHECK, and I can't create one either.
0 投票
2 回答
368 浏览

linux - 如果用户突然关闭 ssh 会话,如何从 bash 脚本中知道

我有一个 bash 脚本,它充当通过 ssh 登录的用户的默认 shell。它提供了一个带有几个选项的菜单,其中一个是使用 netcat 发送文件。

我正在使用的嵌入式 linux 的 netcat 缺少 -w 选项,因此如果用户在未发送文件的情况下关闭 ssh 连接,netcat 命令将永远等待。

我需要知道用户是否突然关闭连接,以便脚本可以终止 netcat 命令并正常退出。

到目前为止我尝试过的事情:

  • 捕获 SIGHUP:不发出。我能找到的唯一信号是 SIGCONT,但我认为它不可靠和便携。
  • 使用读取命令的 -t 选项来检测关闭的标准输入:如果不是嵌入式读取命令中的愚蠢错误,这将起作用(仅在第一次调用时超时)

编辑:

我将尝试回答评论中的问题并进一步解释情况。

我的代码是:

我忽略了 SIGINT 和 SIGTSTP,但我试图捕获所有信号,唯一收到的是 SIGCONT。

阅读 bash 手册页,我发现 SIGHUP 应该被发送到脚本和 netcat,并且 SIGCONT 被发送到停止的作业以确保它们接收到 SIGHUP。

我猜等待使脚本被视为已停止,因此它接收到 SIGCONT,但同时等待以某种方式耗尽了 SIGHUP。

所以我尝试改变等待睡眠,然后收到 SIGHUP 和 SIGCONT 。

问题是:为什么等待会阻塞 SIGHUP?


编辑2:解决

我使用 -t 选项解决了它轮询封闭标准输入的问题。为了解决 read 内置的错误,我在一个新的 bash 中生成它(bash -c "read -t 3 dummy")。

0 投票
3 回答
4023 浏览

linux - 我可以防止 Linux 用户空间 pthread 在关键代码中屈服吗?

我正在使用 2.6.24.3 内核为嵌入式 Linux 项目开发用户空间应用程序。我的应用程序通过创建 2 个 pthreads 在两个文件节点之间传递数据,每个 pthreads 都休眠直到异步 IO 操作完成,此时它唤醒并运行完成处理程序。

完成处理程序需要跟踪有多少传输未决,并维护一些链表,一个线程将添加到另一个线程将删除这些链表。

我的问题是这个...

有没有一种简单的方法可以防止当前活动的线程在运行完成处理程序时让步,而不是沿着互斥锁/自旋锁路线走下去?

或者如果不能配置 Linux 以防止在持有互斥锁/自旋锁时产生 pthread?

0 投票
3 回答
1103 浏览

windows - 在 Windows 主机上使用 Eclipse 开发嵌入式 Linux

我遇到了一个问题,即使用 Eclipse 在 Windows 主机上为嵌入式 Linux 进行开发。
现在我拥有了,我在哪里。
1. 安装了最新的 Eclipse + CDT(c/c++ 开发工具)的 Windows 主机
2. 包含用于构建项目的源代码和工具链的 Ubuntu 主机(安装了 ssh + samba)。(windows 和 ubuntu 主机位于一个网段(在 LAN 中)。)
3. 我可以使用以下命令在 Ubuntu 下构建这个项目。
# chroot dummyroot
# cd /home/project/Build
# sh Build date +%Y%m%d%H%M%S
4。我现在正在尝试创建一个eclipse C++项目来实现第3步的goad,但是我在这里停留了一段时间。关于如何完成的任何想法?

0 投票
5 回答
4483 浏览

linux - 如何保持 Linux 内核模块构建的 asm 输出

我正在为 2.6.x 内核开发一个 Linux 内核模块,我需要查看程序集输出,尽管它目前是作为临时文件完成的,并已删除后记。我希望将程序集输出与我的 C 源文件混合在一起,这样我就可以轻松地追踪我的问题所在。这是针对 ARMv6 内核的,显然 objdump 不支持这种架构。我在下面包含了我的makefile。

0 投票
1 回答
1948 浏览

linux - pthread_rwlock_init() 导致分段错误

我怀疑我在这里做了一些愚蠢的事情,但是当我尝试在嵌入在结构中的 rwlock 上运行 pthread_rwlock_init() 时,我在嵌入式 Linux 平台(GCC 编译器)上遇到了段错误。

以下导致段错误...

就像这...

但是以下工作正常......

有什么想法吗?

0 投票
1 回答
2430 浏览

linux-kernel - 从 FIQ 处理程序调用 linux C 代码的问题

我正在研究 armv6 内核,并且有一个 FIQ 处理程序,当我在其中完成所有工作时效果很好。但是,我需要分支到一些对于 FIQ 内存区域来说太大的附加代码。

FIQ 处理程序在注册时从 fiq_start 复制到 fiq_end 到 0xFFFF001C

fiq_hander 设置为以下函数:

我知道,由于 FIQ 处理程序在任何正常内核 API 之外运行,并且它是一个相当高优先级的中断,我必须确保我调用的任何内容都已交换到内存中。我通过在单片内核中定义 fiq_flip_pins 函数而不是作为获取 vmalloc 的模块来做到这一点。

如果我不分支到 fiq_flip_pins 函数,而是在 test_fiq_handler 函数中完成工作,那么一切都会按预期工作。这是目前给我带来问题的分支。在分支之后,我得到一个关于分页请求的内核恐慌。我不明白为什么我会收到寻呼请求。

fiq_flip_pins 位于内核中:c00307ec t fiq_flip_pins

由于我的代码中没有 API 调用,我必须假设 C 调用和返回时出现问题。任何解决此问题的帮助表示赞赏。

这是带有 fiq_flip_pins 注释的程序集: