标签: embedded-linux

在ARM开发板上测量应用程序性能

我有一个C++应用程序,我想测量它在ARM板上的性能.董事会正在运行ubuntu.

目前我正在考虑valgrind和gprof来衡量绩效.

我应该使用哪些工具/技术来衡量绩效?

embedded performance arm embedded-linux ubuntu-11.10

3
推荐指数
1
解决办法
614
查看次数

我如何知道可执行文件中有哪些功能?

我在Linux中有一个二进制文件,我想知道它编译的函数是什么.

我的项目包含几个目标文件,每个目标文件包含不同的功能.有时我不知道我用哪些编译可执行文件.我怎么知道?

我正在使用不同架构的工具链进行编译(arm,mips ......).

谢谢.

c linux embedded-linux

3
推荐指数
1
解决办法
131
查看次数

仅在网络准备就绪后,在重启时运行ntpdate的最佳方法是什么

我正在使用BeagleBone,因为它没有内置的RTC和备用电池,所以每次重启都会丢失日期.我可以使用命令轻松设置日期:

/ usr/bin/ntpdate -b -s -u pool.ntp.org

但是,如果电源熄灭并重新开始,那么时间就会消失.最新的beaglebone Angstrom linux发行版附带的解决方案是在每半小时更新一次crontab行.但我更愿意在通电时运行一次命令.

我尝试将上面列出的这个命令放在带有@reboot行的crontab中,但是我相信在配置网络之前就已经运行了,或者其他什么都失败了,因为它没有让我在正确的时间拉动电源5分钟然后放入它回到beaglebone.

有没有办法使用ifconfig或类似的东西,只有在网络可用后才能从init.d运行脚本?

clock ntp embedded-linux beagleboard

3
推荐指数
1
解决办法
1万
查看次数

Beaglebone gpio输入无法正常工作

我正在使用beaglebone使用sysfs接口从特定引脚访问数字输入.我可以改变输出状态而不是输入:(.我做的是,我有两个引脚pinA和pinB.pinA我做了输出而pinB我做了输入.将pinA连接到pinB.通过发送将pinA配置为输出引脚通过传入将sysf和pinB中的direction属性作为输入.然后我将PinA的值更改为1并将其作为输出给出1(我使用LED测试).但是当我读取PinB的值时,它仅给出0,即使我将0传递给pinA的值.可能是什么原因?

谢谢 :)

linux embedded-linux beagleboard sysfs gpio

3
推荐指数
1
解决办法
1万
查看次数

DECLARE_WORK 中函数的 Linux 传输参数

我尝试编写一个事件工作队列,但我遇到了一些问题。

我使用的是 Linux 2.6.36 内核。并且 DECLARE_WORK 函数从 3 个参数更改为 2 个。

问题是,旧的声明是

 DECLARE_WORK  (struct work_struct name,  void (*func)(void *),  void *data); 
Run Code Online (Sandbox Code Playgroud)

而新的是

 DECLARE_WORK  (struct work_struct name,  void (*func)(void *)); 
Run Code Online (Sandbox Code Playgroud)

我认为 void *data 指针是给 func 参数。那正确吗?我如何使用新版本的 DECLARE_WORK 做到这一点?

谢谢您的帮助

彼得

linux linux-device-driver linux-kernel embedded-linux

3
推荐指数
1
解决办法
5448
查看次数

如何构建像Raspberry Pi这样的单板计算机来运行OS?

我的问题是:如何构建像Raspberry Pi这样的单板计算机来运行操作系统?

用户ARM微处理器和debian arm os,可以使用USB等

喜欢覆盆子pi和其他单板电脑

我搜索但找不到任何帮助我!:(

embedded arm microprocessors embedded-linux

3
推荐指数
2
解决办法
1万
查看次数

使用符号| &&〜和〜在capability.h文件中

我正在阅读这里给出的文件capability.h
我不清楚如何在函数调用中使用符号| ~ &以及&~它们在做什么

使用|以下函数调用:

static inline kernel_cap_t cap_combine(const kernel_cap_t a,
                                       const kernel_cap_t b)
{
        kernel_cap_t dest;
        CAP_BOP_ALL(dest, a, b, |);
        return dest;
}
Run Code Online (Sandbox Code Playgroud)

使用&以下系统调用:

static inline kernel_cap_t cap_intersect(const kernel_cap_t a,
                                         const kernel_cap_t b)
{
        kernel_cap_t dest;
        CAP_BOP_ALL(dest, a, b, &);
        return dest;
}
Run Code Online (Sandbox Code Playgroud)

使用&~以下功能:

static inline kernel_cap_t cap_drop(const kernel_cap_t a,
                                    const kernel_cap_t drop)
{
        kernel_cap_t dest;
        CAP_BOP_ALL(dest, a, drop, &~);
        return dest;
}
Run Code Online (Sandbox Code Playgroud)

使用~以下功能:

static …
Run Code Online (Sandbox Code Playgroud)

c posix linux-kernel embedded-linux

3
推荐指数
1
解决办法
87
查看次数

'/ dev'中的文件如何与Linux的设备模型匹配?

这是我对开放阅读/写作文件的理解.

在应用程序层,我可以调用该fopen()函数.

fwrite()函数将调用系统调用open().

操作系统收到open()呼叫后,会将命令传递给VFS(虚拟文件系统).

VFS查找文件名,包括所需的任何目录,并进行必要的访问检查.

如果这是在RAM缓存中,则不需要磁盘访问.如果没有,VFS会向特定文件系统发送一个读取请求,该请求可能是EXT4.

然后,EXT4文件系统驱动程序将确定该目录所在的磁盘块.然后它将向磁盘设备驱动程序发送读取命令.


所以现在让我说我想读一个连接到主板的i2c设备A. 文件目录是/ dev/i2c/A.

  • 所有设备都有一个主要编号吗?例如,Linux OS将180设置为USB的主要编号.那么在设备方​​面,每个USB设备中是否有一个主要的数字180?

  • 如果第一个问题的答案为否,那么Linux操作系统如何确定哪种类型的设备A,它只是根据文件目录?

  • 我认为第二个问题的答案可能是:在启动初始化阶段,有一些代码已经使用export()之类的东西将该端口挂载到文件系统?事实上,在启动阶段之后,文件目录/ dev/i2c/A就存在,并且它与i2c设备的主要编号绑定.因此,当我想打开dev/i2c/A时,OS会为我找到合适的i2c驱动程序,而不是SPI或USB驱动程序.我不确定这部分,我需要更多相关信息.

  • 在启动阶段后立即将设备安装到文件系统时会发生上述情况.那么如果我有一个usb会发生什么,在插入后,如何将这个usb安装到具有正确的主号码180的文件系统?我想在安装阶段开始之前插入usb时会有一个irq?

linux-device-driver linux-kernel embedded-linux

3
推荐指数
1
解决办法
6738
查看次数

Linux中的WatchDog Timer

我想在linux中使用定时器中断来做软件wathdog定时器.我怎样才能在linux中生成定时器中断?

c++ linux embedded embedded-linux

3
推荐指数
1
解决办法
5855
查看次数

std :: copy导致错误,无异常

我有这个代码来复制一个整数:

int parseInt(const char* data, unsigned int* ind) {
    int i;

    std::copy(&data[*ind], &data[*ind+sizeof(int)], &i); // i) STD::COPY
    // memcpy(&i, &data[*ind], sizeof(int)); // ii) MEMCPY
    std::cout << "--> " << i << std::endl;
    *ind += sizeof(int);
    std::cout << "OK" << std::endl;
    return i;
}
Run Code Online (Sandbox Code Playgroud)

debian这段代码工作没有有问题的我)的std :: COPY.

然后,我编译并运行嵌入式Arm上的代码(sizeof(int)也是4).带有i)的代码似乎也在运行,在函数内打印预期.

但是,从函数返回时会导致问题.

我也试过return 1;而不是i,但同样的.它没有抛出异常,也没有给出任何线索.我无法调试,因为我无法添加调试器,因为我有限制.

它只是在这个功能之后才会继续,即:

std::cout << "PARSING..." << std::endl;
parseInt(data, &ind);
std::cout << "PARSED!" << std::endl;
... …
Run Code Online (Sandbox Code Playgroud)

c++ embedded-linux

3
推荐指数
1
解决办法
724
查看次数