我正在开发基于 TI Jacinto6(ARM CortexA15) 的主板。我正在了解U-boot源代码。根据 start.S 文件,执行以下汇编指令以禁用 L1 I/D 缓存和 TLB。该说明来自 start.s( http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/start.S;h=fedd7c8f7e00d0427405173849e6c0743d6b886f;hb =524123a70761110c5cf3ccc5f52f6d4da071b959)
mov r0, #0 @ set up for MCR
mcr p15, 0, r0, c8, c7, 0 @ invalidate TLBs
mcr p15, 0, r0, c7, c5, 0 @ invalidate icache
mcr p15, 0, r0, c7, c5, 6 @ invalidate BP array
mcr p15, 0, r0, c7, c10, 4 @ DSB
mcr p15, 0, r0, c7, c5, 4 @ ISB
Run Code Online (Sandbox Code Playgroud)
根据 ARM 文档,CortexA15 有 4 个内核。上面的代码将禁用它正在运行的核心上的缓存和TLB,那么其他核心的缓存和TLB呢?U-boot 源代码只能在一个内核上运行吗?如果是这样那么其他核心将如何被禁用?
我有一个使用 ramdisk 启动的嵌入式 Linux 系统,因此它运行时没有可用的持久存储(它有闪存来存储内核和 ramdisk)。
唯一的连接是 RS-232 串行登录控制台。所以我受到其内置 busybox 提供的功能的限制。我想检索 ramdisk,修改它,然后重写 ramdisk。内核没有内置 Flash 文件系统支持。ramdisk 分区大小约为 10 MB。当用户目录下的所有文件都被删除后,可用的ramdisk大小约为14 MBytes。
命令 dd 可用,因此我可以将 ramdisk 分区复制到 ramdisk,并可以从 ramdisk 文件写入闪存。flashcp 也可用。
所以我现在的问题是如何通过RS-232串行控制台接收和发送二进制文件?
我研究了以下内容,但没有一个对我有用:
主要是因为 x/y/zmodem 在 busybox 中不可用。
任何想法?谢谢!
根据要求,这是我应该首先包含的内容。
可用的 u-boot 命令:
U-Boot >?
? - alias for 'help'
askenv - get environment variables from stdin
base - print or set address offset
bdinfo - print Board Info structure
boot …Run Code Online (Sandbox Code Playgroud) 我的嵌入式板有 2 个 UART。我想在两个 UART 上都有控制台输出。
在kernel/Documentation/console/console.txt中提到:
您只能为每种设备类型(串行、视频)定义一个控制台。
这是否意味着我只能使用一个 UART 作为控制台?或者,是否可以将控制台输出重定向到这两个 UART?
我正在使用 Yocto 项目为我的主板构建自定义发行版。我只是想问你,发行版特征、机器特征和图像特征有什么区别?
Linux支持运行32位应用程序,只要
CONFIG_COMPAT我假设32位应用程序必须在arm AArch32执行状态下运行,并且如果环境有32位应用程序和64位应用程序。
32位应用程序进程->arm状态为AArch32
64位应用进程和内核->arm状态是AArch64
这是对的吗?
如果是这样,
Linux 如何处理 AArch32 和 AArch64 切换?
内核是否知道正在运行的进程是32位还是64位?
有人对 libgpiod API 有经验吗?我已经在我的linux平台上安装了它,但无法调用它的库函数。
我安装的是:
git clone git://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git
cd libgpiod
./autogen.sh
make
make install
Run Code Online (Sandbox Code Playgroud)
之后,我在/usr/local/lib/中看到libgpiod.so库,在/usr/local/include/中看到gpiod.h(出于良好的考虑,我也运行了)。但是,当我尝试编译以下内容时:ldconfig
测试.c
#include <gpiod.h>
struct gpio_chip *chip;
int main(void)
{
chip = gpio_chip_open("/dev/gpiochip4");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:undefined reference to 'gpiod_chip_open'
谁能帮我看看我哪里出了问题?
提前谢谢了!
我有一个采用 Cortex A9 ARMv7 架构的 SoC。我需要能够在带有此 SoC 的板上运行 python 脚本。所以我需要针对这个平台交叉编译Python。
SoC具有ARMv7架构,因此我安装了arm-linux-gnueabihf在VirtualBox中运行的Ubuntu 20.04的交叉编译器。
我正在遵循这个指示:
首先,我下载了Python 2.7.1源代码并将其解压到/home/user/python/Python-2.7.1目录中。
然后我按照说明下载了补丁。
然后我应用了补丁:
patch -p1 < python-2.7.1-cross-compile.patch
Run Code Online (Sandbox Code Playgroud)
然后我为host编译了一些工具:
./configure
make python Parser/pgen
mv python hostpython
mv Parser/pgen Parser/hostpgen
make distclean
Run Code Online (Sandbox Code Playgroud)
然后我配置了 Python 进行交叉编译:
readonly CROSS_COMPILER=arm-linux-gnueabihf
CC=${CROSS_COMPILER}-gcc \
CXX=${CROSS_COMPILER}-g++ \
AR=${CROSS_COMPILER}-ar \
RANLIB=${CROSS_COMPILER}-ranlib \
./configure \
--host=${CROSS_COMPILER} \
--target=${CROSS_COMPILER} \
--prefix=/python
Run Code Online (Sandbox Code Playgroud)
然后我最后交叉编译它:
make \
HOSTPYTHON=./hostpython \
HOSTPGEN=./Parser/hostpgen \
BLDSHARED="${CROSS_COMPILER}-gcc -shared" \
CROSS_COMPILE=${CROSS_COMPILER}- \
CROSS_COMPILE_TARGET=yes
Run Code Online (Sandbox Code Playgroud)
但最终我得到了IndentationError:
/usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: …Run Code Online (Sandbox Code Playgroud)我是一名嵌入式工程师,经验不多。我在接受采访时被问到了一个问题,我想这并不新鲜,并且已经有了答案:
您有一个不断接收来自外部世界的输入的外设,该外设有一个缓冲区。输入的速率时不时地发生变化。外设需要读取输入缓冲区并对其进行处理。它检查输入消息并查看其是否与配置的过滤器匹配。如果匹配则转发,否则丢弃。
问题如下:
感谢你的帮助。谢谢。
我的理解是,对于 ARM,内核启动命令行一般有以下三个来源:
一个可以附加到另一个,即我们可以使用 CONFIG_CMDLINE 传递一些参数,然后在设备树中附加硬件特定参数吗?
我首先尝试组合 1、2 和 3,但这无法编译:
/dts-v1/;
#include "imx6q.dtsi"
#include "imx6q-h.dtsi"
#include "imx6q-m.dtsi"
/ {
model = "A M";
compatible = "a,imx6q-hydra13", "a,imx6q-mercury",
"a,imx6q-hydra", "fsl,imx6q";
};
&ssd_touch {
status = "okay";
};
ERROR AT THIS LINE: chosen {
bootargs = "console=ttymxc1,115200";
};
Run Code Online (Sandbox Code Playgroud) 我正在使用 yocto 开发自定义 Linux 映像,我想为所有映像设置一个 IP 地址。有可能的?我怎样才能做到这一点?
提前致谢。
embedded-linux ×10
linux ×4
arm ×3
linux-kernel ×3
c ×2
yocto ×2
api ×1
binary ×1
can-bus ×1
command-line ×1
console ×1
device-tree ×1
gpio ×1
i2c ×1
ip ×1
python ×1
python-2.7 ×1
serial-port ×1
smp ×1
spi ×1
u-boot ×1