应该有一种独立于标准、主板和架构的方法来做到这一点,就像 initfamfs 一样,不是吗?
如果重要的话,我正在使用 powerpc 和 linux-3.10。如果以后有更好的设施,我很想听听。
如果有人知道目前正在工作的董事会,我可以将其用作参考,那也会有所帮助。
我一直在搜索和搜索,我找到了很多关于为什么 dts/dtb 存在的信息,大量关于它们是否有用的持续讨论,以及一些关于如何编写 dts 或使用现有 dts 的信息,但没有关于如何嵌入它们。
快速描述或相关文档的指针将非常感激。
我需要通过 SSH 连接到嵌入式设备,启动后台程序,然后断开连接并保持后台进程运行。问题是嵌入式设备正在使用 ash shell(不是 bash 或其他任何东西),所以 nohup 和 screen 不可用。我还没有找到任何方法来断开 ash 中的进程。有没有办法在灰烬中做到这一点?
的操作shm_unlink对我来说不清楚。我创建了一个共享内存对象并映射到一个进程。后来,我做shm_unlink了内存对象。接下来shm_unlink,我能够访问相同的内存进行读写。这怎么可能?由于内存对象被 破坏shm_unlink,我预计在这种情况下会出现分段错误。但是,并没有发生?是什么原因?是什么shm_unlink究竟在这里干什么?
下面是代码片段。
main(int argc, char * argv[])
{
int fd;
char *addr;
int i = 0;
/*
* In case the unlink code isn't executed at the end
*/
if (argc != 1) {
shm_unlink("/bolts");
return EXIT_SUCCESS;
}
/* Create a new memory object */
fd = shm_open("/bolts", O_RDWR | O_CREAT, 0666);
if (fd == -1) {
fprintf(stderr, "Open failed : %s\n",
strerror(errno));
return EXIT_FAILURE;
}
/* Set the …Run Code Online (Sandbox Code Playgroud) 我创建了一个最小的 Linux 系统,它启动到控制台并且不包含任何类型的图形环境。
我现在想在屏幕上显示 C 程序中的图像文件或 bash 脚本。
我怎样才能做到这一点?
我正在使用通过 LVDS 连接到 i.MX6 Quad 的 CSI 接口的 Aptina MT9V024 传感器。我在快照模式下运行传感器,即使用外部信号触发/开始图像捕获。
在软件方面,我正在运行 Yocto Linux 和一个用 C 编写的应用程序,它应该检索捕获的图像数据。
它是这样工作的(部分代码,循环运行):
// wait until camers is triggered
ret = select(video_fd + 1, &fds, NULL, NULL, &tv);
// dq buffer / read image data and save to disk
ret = xioctl(video_fd, VIDIOC_DQBUF, &v4l2buf);
img->imageData = buffers[v4l2buf.index].start;
cvSaveImage(filename, img, 0);
// enqueue another buffer to capture next frame
ret = xioctl(video_fd, VIDIOC_QBUF, &v4l2buf);
Run Code Online (Sandbox Code Playgroud)
调用select(...)阻塞直到新帧可用,即相机被触发。
我的问题:检索到的图像是上一次捕获的图像。在 init 期间,我请求两个缓冲区,因为传感器不会从更少开始。但是在 select(...) 返回后,我不能 DQBUF …
我刚刚开始了解内核的工作原理和内部结构,首先,我正在尝试构建内核并启动它。
我使用 qemu 作为 x86 架构的模拟器。
我正在关注这篇文章(虽然是针对手臂的):http : //www.kaizou.org/2016/09/boot-minimal-linux-qemu/
我使用以下命令构建了内核:
cd kernel_4.9
make x86_64-defconfig
make -j8
Run Code Online (Sandbox Code Playgroud)
这给了我 bzImage。现在我开发了一个initramfshello world 作为可执行文件的虚拟对象。这是init.c:
#include <stdio.h>
void main()
{
printf("Tiny init - Hello World...\n");
while(1);
}
Run Code Online (Sandbox Code Playgroud)
打包 initramfs
gcc -static init.c -o init
chmod +x init
echo init | cpio -o --format=newc > initramfs
Run Code Online (Sandbox Code Playgroud)
现在运行 qemu :
qemu-system-x86_64 -kernel ~/data/linux/arch/x86/boot/bzImage -append 'console=ttyS0' -serial stdio -initrd ~/data/linux/arch/x86/boot/initramfs
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
[ 1.158556] Write protecting the kernel text: 8528k
[ 1.158842] Write protecting …Run Code Online (Sandbox Code Playgroud) 我正在尝试在嵌入式 Linux 设备上设置蓝牙,以便使用 SSP 模式,我的设备生成密码并在其显示屏上显示密码,并且要求远程端(例如用户的手机)输入匹配的密码才能使用才能成功配对。
我编写/注册了一个代理,将其模式设置为 DisplayOnly;我预计当设备连接时,将调用“RequestPasskey”回调,然后我的代理将能够生成并返回新的密码,并且远程端将需要输入相同的代码。我实际看到的行为是远程端正在生成自己的密码。
如果禁用 SSP 并使用旧配对,我可以实现类似所需行为的效果,但我宁愿不必这样做。
BlueZ 可以实现这种行为吗?
我正在尝试将我们的 Tensoflow 模型从 Python+Keras 版本迁移到嵌入式平台上使用 C++ 的 Tensorflow Lite。
看来我不知道如何正确设置解释器的输入。
输入形状应为 (1, 224, 224, 3)。
作为输入,我使用 openCV 拍摄图像,并将其转换为 CV_BGR2RGB。
std::unique_ptr<tflite::FlatBufferModel> model_stage1 =
tflite::FlatBufferModel::BuildFromFile("model1.tflite");
TFLITE_MINIMAL_CHECK(model_stage1 != nullptr);
// Build the interpreter
tflite::ops::builtin::BuiltinOpResolver resolver_stage1;
std::unique_ptr<Interpreter> interpreter_stage1;
tflite::InterpreterBuilder(*model_stage1, resolver_stage1)(&interpreter_stage1);
TFLITE_MINIMAL_CHECK(interpreter_stage1 != nullptr);
cv::Mat cvimg = cv::imread(imagefile);
if(cvimg.data == NULL) {
printf("=== IMAGE READ ERROR ===\n");
return 0;
}
cv::cvtColor(cvimg, cvimg, CV_BGR2RGB);
uchar* input_1 = interpreter_stage1->typed_input_tensor<uchar>(0);
memcpy( ... );
Run Code Online (Sandbox Code Playgroud)
我对这种 uchar 类型的 memcpy 正确设置有疑问。
当我这样做时,我在工作过程中出现段错误:
memcpy(input_1, cvimg.data, cvimg.total() * cvimg.elemSize());
Run Code Online (Sandbox Code Playgroud)
在这种情况下我应该如何正确填写输入?
我们想使用支持 SELinux 的 Yocto 构建嵌入式 Linux 设备。
我正在查看 meta-selinux 层依赖项。
依赖关系
该层依赖于 openembedded-core 元数据以及来自 meta-openembedded 存储库的 meta-python 和 meta-oe 层。
当它提到“openembedded-core”时,它是否意味着 poky
git://git.yoctoproject.org/poky
或者
https://github.com/openembedded/openembedded-core
poky 和 openembedded-core 有什么区别,我在 openembedded-core 看不到 bitbake
我有一台海康威视 IP 摄像机,正在对其进行安全研究。(型号DFI6257E,貌似是台湾独家型号。)
从闪存中转储固件并使用 binwalk 对其进行分析后,我发现很难理解其工作原理。几乎就像他们试图隐藏一些事情。
转储固件:https://drive.google.com/file/d/1x9JiVbnZo4zNNnX8V8JS1MGsK4wmHFM6/view ?usp=sharing
这是 binwalk 的输出:
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
36392 0x8E28 LZMA compressed data, properties: 0x5D, dictionary size: 16777216 bytes, uncompressed size: -1 bytes
10092544 0x9A0000 JFFS2 filesystem, little endian
16318544 0xF90050 Zlib compressed data, compressed
16318764 0xF9012C Zlib compressed data, compressed
16319000 0xF90218 Zlib compressed data, compressed
16319136 0xF902A0 Zlib compressed data, compressed
16319592 0xF90468 Zlib compressed data, compressed
16320424 0xF907A8 Zlib compressed data, compressed
16320864 0xF90960 Zlib compressed data, compressed
16321796 …Run Code Online (Sandbox Code Playgroud)