我正在生成一些声音文件,这些声音文件以不同的频率播放音调,并具有一定数量的谐波.
最终,这些声音将在带有小扬声器的设备上播放.
我有扬声器的频率响应曲线,并希望在Python中执行以下操作:
gnuplot有人知道吗 :
我在使用我的机器上构建任何内核模块时遇到问题.每当我构建一个模块时,modpost总是说零模块:
MODPOST 0 modules
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我编写了一个测试模块(hello.c):
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world\n");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr.\n");
}
module_init(hello_start);
module_exit(hello_end);
Run Code Online (Sandbox Code Playgroud)
这是模块的Makefile:
obj-m = hello.o
KVERSION = $(shell uname -r)
all:
make -C /lib/modules/$(KVERSION)/build M=$(shell pwd) modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(shell pwd) clean
Run Code Online (Sandbox Code Playgroud)
当我在我的机器上构建它时,我得到以下输出:
make -C …Run Code Online (Sandbox Code Playgroud) 有没有一种很好的方法从压缩内核映像中提取uname所做的相同信息?我希望能够在嵌入式Linux系统上检查坐在休眠mtd中的内核的狗标签,并将其与当前运行的内核进行比较.
我一直在嵌入式Linux系统上运行隔夜内存测试.使用vmstat我发现随着时间的推移,空闲内存会逐渐减少.根据procfs中的一些smaps分析,一个进程的堆以大致相同的速率增长.我怀疑内存泄漏,发现代码中的几个景点,其中并经常使用.但是,我没有看到没有匹配呼叫的呼叫.newdeletenewdelete
我再次运行内存测试,今天早上通过以下调用清除了内存缓存
echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
vmstat中列出的可用内存下降到接近测试启动时的值.
内核是否定期回收未使用的堆页面?如果是这样,除了上面的那个之外还有其他时间吗?可能当空闲内存低于某个阈值时?
我正在寻找一种在 Linux 用户空间应用程序中以编程方式(在 C 中)发送免费 ARP 消息的方法。我注意到在 procfs 中有一些用于配置 ARP 的文件
/proc/sys/net/ipv4/conf/<interface_name>
Run Code Online (Sandbox Code Playgroud)
有没有办法通过对相应网络接口的 ioctl 调用来做到这一点?
我正在做一些Makefile重构,并试图找出实现Makefile的最简洁的方法,它执行以下操作:
这是我到目前为止:
...
OBJ_DIR = obj/
BIN_DIR = bin/
PROGRAM = program
SRCS = test1.cpp test2.c
OBJS = $(addprefix $(OBJ_DIR), \
$(patsubst %.cpp, %.o, \
$(patsubst %.c, %.o, $(SRCS))))
$(BIN_DIR)$(PROGRAM) : $(OBJS)
$(CREATE_OUT_DIR)
$(LINK)
$(OBJ_DIR)%.o : %.c
$(CREATE_OBJ_DIR)
$(CCOMPILE)
$(OBJ_DIR)%.o : %.cpp
$(CREATE_OBJ_DIR)
$(CPPCOMPILE)
...
Run Code Online (Sandbox Code Playgroud)
我想为每个.o编译消除对$(CREATE_OBJ_DIR)的调用.有人知道怎么做吗?我尝试添加这个,但它不会构建目标文件:
$(OBJS): | $(OBJ_DIR)
$(OBJ_DIR):
$(CREATE_OBJ_DIR)
Run Code Online (Sandbox Code Playgroud) 对于我正在实现的C应用程序,我需要能够读取和写入一组配置值到文件.这些值是浮点数.将来有可能另一个应用程序(可以用C++,Python,Perl等编写)将使用相同的数据,因此这些配置值需要以编译器和机器独立的良好定义格式存储.
字节顺序转换函数(ntoh/hton)可以用来处理Endianness,但是什么是解决"float"值的不同含义的最佳方法?是否有存储花车的常用方法?舍入和截断不是问题,只要它被定义.
我在评估套件(Zoom OMAP35x Torpedo Development Kit)上运行嵌入式Linux.该板有一个液晶显示器,我希望能够拍摄屏幕截图将它们转换为gif或png.我可以通过执行以下操作获取原始数据:"cp/dev/fb0 screen.raw",但我对如何将图像转换为gif或png格式感到困惑.
我玩过ImageMagick转换(例如:"convert -depth 8 -size 240x320 rgb:./ screen.raw -swap 0,2 -separate -combine screen.png"),但是无法获得看起来像的图像对.
有谁知道我可以尝试的任何其他工具?或者有没有人有使用ImageMagick的提示?
我在使用嵌入式Linux的设备上工作.在不久的将来,这种设备可能会变成一个产品系列,并且会增加一些设备(即硬件平台).这些设备类似,但可能包含处理器,硬件外围设备(和设备驱动程序),用户空间应用程序和内核设置.除了编译不同设备的发行版之外,我还想为开发构建调试发行版.
有哪些更常见的方法来组装和管理嵌入式Linux系统?我和Jenkins一直在一起玩,看到那里有一些潜力.
最近,我一直在清理一些在ARM7控制器上运行的C代码.在某些情况下(升级,致命错误等),程序将执行重置.目前它只是跳到0并假设启动代码将正确地重新初始化所有内容.它让我想到了ARM复位的"保留无迹线"的最佳程序.这是我的第一次破解:
void Reset(void)
{
/* Disable interrupts */
__disable_interrupts();
/* Reset peripherals, externals and processor */
AT91C_BASE_RSTC->RSTC_RCR = AT91C_RSTC_KEY | AT91C_RSTC_PERRST | AT91C_RSTC_EXTRST| AT91C_RSTC_PROCRST;
while(AT91C_BASE_RSTC->RSTC_RSR & AT91C_RSTC_SRCMP);
/* Jump to the reset vector */
(*(void(*)())0)();
}
Run Code Online (Sandbox Code Playgroud)
此代码假定IAR ARM编译器和At91Lib.还有什么我没想过的?
我正在调试一个开源库,它有一个在加载时初始化的结构.struct的一个成员是一个函数指针.什么是最快的方式来确定它指向哪个功能?例如,如果我打印出函数指针的值,是否有一些工具可以用来查找函数的名称?我在嵌入式Linux系统上执行此操作,但尚未提供GDB.
我正在编写一些函数,将float/double转换为定点和后退.有没有人知道确定浮点数或双精度指数部分的位数的最佳方法?我希望使用std :: numeric_limits中的东西,但没有运气.
指数部分是由C++标准定义的还是编译器/机器特定的?或者它可以在运行时变化?
c ×4
linux ×4
c++ ×3
gcc ×2
arm ×1
audio ×1
build-system ×1
debugging ×1
fft ×1
fixed-point ×1
framebuffer ×1
gnu-make ×1
gnuplot ×1
heap-memory ×1
imagemagick ×1
jenkins ×1
linux-kernel ×1
makefile ×1
memory-leaks ×1
networking ×1
processor ×1
python ×1
reset ×1
wav ×1