我正在为一家公司做实习研究.我在使用.Net平台的跨平台实现Mono时遇到了一些问题.我的公司设计硬件和软件.
我使用嵌入式linux的知识非常有限.我在实习期间所在的公司非常注重.NET.但单声道的新发展,他们问自己是否可以针对较小的项目瞄准linux,也避免了他们设计软件和硬件的人的高许可成本.
我已经看过单声道可以做什么(而且还不能做).现在我到达嵌入式问题.我有点迷失在构建嵌入式Linux的故事中.
我看到一些故事,他们只是拿了一些标准的linux库来在硬件上制作嵌入式Linux.我还看到存在特殊的Linux发行版,如uClinux(又名μClinux).那有什么区别,或者它是一样的.当我想在目标deivce上使用嵌入式Linux时,这个过程通常是什么样的?
好吧,比单声道部分,所以基本上我希望能够在嵌入式Linux中运行C#.这里大多数人都使用uclinux,我可以使用单声道吗?我看了一些规格,他们没有内存管理单元(MMU).
所以基本上我担心没有MMU.既然垃圾收集器会如何反应呢?
我希望我没有提出过多的问题,
问候,我已经感谢你阅读了,
本杰明
我在一个Ubuntu盒子里安装了ELDK-3.1,效果很好.
在另一台运行64位OpenSuse 12.1的机器上,我克隆了ELDK安装,并且有一段时间它运行良好.
现在,当我尝试配置我的项目时,我看到:
configure: error: C compiler cannot create executables
See `config.log' for more details
Run Code Online (Sandbox Code Playgroud)
日志显示:
configure:3411: ppc-linux-gcc conftest.c >&5
/opt/ELDK-3.1/usr/bin/../lib/gcc-lib/ppc-linux/3.3.3/../../../../ppc-linux/bin/ld: warning: ld.so.1, needed by /opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6, not found (try using -rpath or -rpath-link)
/opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6: undefined reference to `_dl_lookup_versioned_symbol_skip@GLIBC_PRIVATE'
...
Run Code Online (Sandbox Code Playgroud)
该文件ld.so.1与目录位于同一目录中libc.so.6.
s -l /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1
lrwxrwxrwx 1 root root 11 Jan 31 11:43 /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1 -> ld-2.3.1.so
Run Code Online (Sandbox Code Playgroud)
据我所知,我正确地定义了所有需要的环境,并尝试使用与Ubuntu框中完全相同的构建系统构建(项目是"自动化").
所以我写了一个脚本试图模仿我的automaked configure所做的一切:
#!/bin/bash
if [ ! -f confdefs.c ]; then
cat > confdefs.c << EOF
/* confdefs.h */
#define …Run Code Online (Sandbox Code Playgroud) 我是驱动程序而不是应用程序的开发人员。最近,我将ghostscript移植到android上,在嵌入式linux下运行得很好。但在Android中它不能正常工作,因为它需要/tmp,在我创建/tmp后它可以正常工作。所以,我的问题是android 中的 /tmp 在哪里,或者在我的情况下有其他解决方案吗?
我正在尝试处理中断,但由于 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
我有一个安装了 Python 3 的嵌入式系统(armv5tejl AT91SAM9X25,具有 128MB RAM,运行基于 buildroot 的 rootfs)。我已经让系统运行很多天了,我开始对其进行一些Python开发工作,但似乎在创建新线程时遇到了问题。
如果我尝试运行以下程序:
Type "help", "copyright", "credits" or "license" for more information.
>>> import threading
>>> import time
>>> def func():
... i = 0
... while True:
... i += 1
... print(i)
... time.sleep(1)
...
>>>
>>> func()
1
2
3
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in func
KeyboardInterrupt
>>> t = threading.Thread(target=func)
>>> t.start()
Traceback (most recent call last): …Run Code Online (Sandbox Code Playgroud) linux multithreading embedded-linux python-multithreading python-3.x
我深入研究了代码,并陷入了 ia32 汇编器实现中,该实现将 SSE/SSE2 指令深度集成到其代码中(宏、宏、宏……)。主要后果是,由于缺乏更新的指令集扩展,您无法在 AMD geode 处理器上运行最新版本的 Node.js。回退到 387 算术仅适用于 node.js 代码,但不适用于它所依赖的 javascript V8 编译器实现。调整 V8 以支持非 SSE x86 处理器是一件痛苦且需要付出大量努力的事情。
\n\n如果有人提供相反的证据,我会很高兴听到;-)
\n\n我有一个正在运行的 ALIX.2D13 ( https://www.pcengines.ch ),它有一个 AMD Geode LX 作为主处理器。它运行 voyage linux,这是一个基于 debian jessi 的发行版,适用于资源受限的嵌入式设备。
\n\n root@voyage:~# cat /proc/cpuinfo \n processor : 0\n vendor_id : AuthenticAMD\n cpu family : 5\n model : 10\n model name : Geode(TM) Integrated Processor by AMD PCS\n stepping : 2\n cpu MHz …Run Code Online (Sandbox Code Playgroud) 我们可以使用-c选项来清理特定的配方,例如:
bitbake -c cleanall core-image-sato
Run Code Online (Sandbox Code Playgroud)
但是当我们尝试构建“SDK”时,我们运行以下命令:
bitbake -c populate_sdk core-image-sato
Run Code Online (Sandbox Code Playgroud)
如何清理上述命令生成的输出。
我在嵌入式 Linux 上使用Flexcan 驱动程序,并且有C程序控制 CAN 消息。在我的C程序中,我需要检查 can 总线的状态,例如buss-off或error-active。我可以使用 linux 命令,
ip -details -statistics link show can0结果如下:
2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can promiscuity 0
can state *ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 100
bitrate 250000 sample-point 0.866
tq 266 prop-seg 6 phase-seg1 6 phase-seg2 2 sjw 1
flexcan: tseg1 4..16 tseg2 2..8 sjw 1..4 brp 1..256 brp-inc 1 …Run Code Online (Sandbox Code Playgroud) 使用 Busybox (1.30.1) 启动 QEMU 时(lkeep 出现错误无法打开 /dev/tty2: 没有这样的文件或目录无法打开 /dev/tty2: 没有这样的文件或目录无法打开 /dev/tty3 : 没有这样的文件或目录 Busybox 正在运行,因为当我运行 ls 时,我看到了这些目录。在网上找到了编辑 inittab 的建议,但 /etc 中没有。所以我在那里放了一个,但没有解决问题。INITTAB在 Busybox .config 中启用
谢谢
我正在开发一个带有 i.MX6 DL、Yocto Pyro 和内核 4.14.16 的定制板,并试图弄清楚如何添加新用户。我已经尝试过这里提供的建议: How to add an user and re set the root user in yocto? 无济于事。我还尝试按原样运行演示 useradd-example.bb 菜谱(位于菜谱骨架层),但这也不起作用。
它可以编译,我可以构建一个图像,但是当我尝试以任何新用户身份登录时,我登录不正确。如果我以 root 身份登录,则在 /home/ 目录中看不到任何文件夹(我已将根主文件夹移动到 /root)。我猜想是少了点什么。
这是我正在使用的食谱:
SUMMARY = "Add the user accounts that the production printer will need."
LICENSE = "CLOSED"
#inherit extrausers
#
#EXTRA_USERS_PARAMS = "\
# useradd -P Z2tQc0Ewto0c. mi_printer; \
# usermod -P Z2tQc0Ewto0c. root;"
#SUMMARY = "Example recipe for using inherit useradd"
#DESCRIPTION = "This recipe serves as an example for using …Run Code Online (Sandbox Code Playgroud) embedded-linux ×10
linux ×3
yocto ×2
.net ×1
android ×1
beagleboard ×1
c ×1
c++ ×1
can-bus ×1
debian-based ×1
gcc ×1
mono ×1
node.js ×1
powerpc ×1
python-3.x ×1
socketcan ×1
uclinux ×1
x86 ×1