标签: embedded-linux

pthread_rwlock_init()导致分段错误

我怀疑我在做一些愚蠢的事情,但是当我尝试在嵌入在结构中的rwlock上运行pthread_rwlock_init()时,我在嵌入式Linux平台(GCC编译器)上遇到了seg故障.

struct rwlock_flag {
    int flag;           // Flag
    pthread_rwlock_t * rwlock;  // Reader/writer lock for flag
};
Run Code Online (Sandbox Code Playgroud)

以下导致seg故障......

struct rwlock_flag * running;
running = (struct rwlock_flag *) malloc (sizeof(struct rwlock_flag));
rslt = pthread_rwlock_init(running->rwlock, NULL);
Run Code Online (Sandbox Code Playgroud)

就像这样......

pthread_rwlock_t * rwlock_dg2;
pthread_rwlock_init(rwlock_dg2,NULL);
Run Code Online (Sandbox Code Playgroud)

但是以下工作正常......

pthread_rwlock_t rwlock_dg;
pthread_rwlock_init(& rwlock_dg,NULL);
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

linux gcc pthreads embedded-linux

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

嵌入式系统的负载和性能测试

我正在为ARM cortex处理器上的现有嵌入式系统添加一个新协议.在将新协议添加到早期系统后,我需要进行负载测试和性能测试.源代码使用C和C++.

如果有任何免费测试代码在这个嵌入式系统上进行负载和性能测试,网络I/O测试等,请告诉我.或者建议我任何方法.

基本上我要比较:1.添加新协议后的负载是多少.2.性能3.网络IO测试4.系统测试等......

此致,AK

c load arm performance-testing embedded-linux

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

为什么这个文件不写?

所以我有一种情况,我试图写入嵌入式Linux文件(Nitrogen6x板).我可以手动执行此操作echo 1 > /sys/class/gpio/gpio16/value.但是,当我尝试通过C代码执行相同的操作时:

FILE *fs;
fs = fopen("/sys/class/gpio/gpio16/value","w")
fputc(1,fs);
fclose(fs);
Run Code Online (Sandbox Code Playgroud)

它不起作用.它不会给出任何错误或任何错误,它只是不起作用.以前有没有遇到过这个?我该怎么做才能解决这个问题.有没有办法像我手动一样"回声"...但是从代码中执行此操作?什么是最好的方法?

感谢你的帮助!

c c++ embedded file-io embedded-linux

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

arm-none-eabi -g ++忽略表达式stm32f4中的无效字符`#'

我正在为stm32f4微编译器构建一个makefile,它包含所有外围库,并包含一个syscalls(名称newlib_stubs.cpp),其中printf()重定向到uart.在我开始将所有源代码构建到自己的目标文件以链接到可执行文件之前,我已经编写了makefile,以便在一次命中中编译所有源代码以证明makefile在此阶段工作但它不起作用.这是makefile:

 #name of application
TARGET = main
#name of target outputs
TARGET_ELF = $(TARGET).elf
TARGET_BIN = $(TARGET).bin
TARGET_HEX = $(TARGET).hex


# directories
CODE_DIR = code/
LIBRARY_DIR = library/
BUILD_DIR = build/
SOURCE_DIR = $(CODE_DIR)src/
STARTUP_DIR = $(LIBRARY_DIR)startup/
LINKER_DIR = $(LIBRARY_DIR)linker/
PERIPHERAL_DIR = $(LIBRARY_DIR)peripherals/
DEFAULT_DIR = $(LIBRARY_DIR)default/
OUTPUT_DIR = $(BUILD_DIR)output/
OBJECT_DIR = $(BUILD_DIR)objects/
#SOURCE_MAIN_DIR = $(CODE_DIR)src/
SOURCE_LIBRARY_DIR = $(PERIPHERAL_DIR)src/
SOURCE_PERIPHERAL_DIR = $(DEFAULT_DIR)src/

# files with paths attached
_C_FILES = $(wildcard $(SOURCE_DIR)*.c) # $(wildcard $(PERIPHERAL_DIR)src/*.c)
_C_DEFAULT_FILES = $(wildcard $(DEFAULT_DIR)src/*.c)
_C_PERIPHERAL_FILES = $(wildcard …
Run Code Online (Sandbox Code Playgroud)

c++ makefile g++ embedded-linux stm32f4discovery

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

如何从linux内核空间访问物理地址?

我正在研究rasberry pi板.是否可以使用inb(),outb()...?直接从linux内核空间访问GPIO物理地址.如果是的话怎么样?

GPIO寄存器地址链接Page 90 http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

谢谢

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

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

OMAP4460 UART如何实现全双工传输?

THR和RHR寄存器的基址相同.那么可以同时发送和接收吗?

c linux-device-driver embedded-linux uart

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

uboot如何在不使用DTS的情况下将硬件信息传递给内核

我是嵌入式Linux开发的新手.我必须将uboot和自定义Linux发行版移植到基于ARM的新板上.

我们正在使用的uboot(2009.08)没有Arch和DTS文件夹.我想这是一个旧版本,不使用DTS将硬件信息传递给内核(v 3.0).我已经阅读了很多关于DTS的内容,但是这里关于这个(过时的)将硬件信息从uboot传递到我们正在使用的内核的方法还不够.互联网告诉我,在Uboot和内核源代码中都有这个任务的C文件必须同步,但有人可以指向我吗?另外,如果我的假设是错误的,请纠正我,并在需要时询问更多信息.

boot arm linux-kernel embedded-linux u-boot

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

BitBake中的任务do_patch()期间失败

我正在使用yocto。它不支持基于ft5x06s的触摸屏,因此我决定添加一个补丁。但是,当我添加补丁文件时,出现以下错误:

ERROR: Command Error: exit status: 1  Output:
Applying patch 0026-imx6q-smx6-edt-ft5x06.patch
patching file Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt
patching file drivers/input/touchscreen/edt-ft5x06.c
Hunk #22 FAILED at 751.
Hunk #23 succeeded at 811 (offset -1 lines).
Hunk #24 FAILED at 922.
Hunk #25 FAILED at 959.
Hunk #26 FAILED at 995.
Hunk #27 FAILED at 1009.
Hunk #28 succeeded at 1077 (offset 17 lines).
5 out of 28 hunks FAILED -- rejects in file drivers/input/touchscreen/edt-ft5x06.c
Patch 0026-imx6q-smx6-edt-ft5x06.patch does not apply (enforce with -f)
ERROR: Function failed: …
Run Code Online (Sandbox Code Playgroud)

embedded-linux bitbake yocto

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

嵌入式linux ARM启动地址

我按照一些文档通过sdcard在ARM板上启动嵌入式Linux(例如:Freescale Vybrid塔).在文档中有一些步骤来构建uImage并将u-boot写入sdcard,如下所示:

sudo dd if=u-boot.imx of=/dev/sdX bs=512 seek=2
mkimage -A arm64 -O linux -T kernel -C none -a 0x81000000 -e 0x81000000 -n
“Linux” -d Image uImage
Run Code Online (Sandbox Code Playgroud)

我想知道的是从哪个数据表/ UM/RM或他们获得的任何文件编号:bs = 512 seek = 2,-a 0x81000000(加载地址), - e 0x81000000(入口点)

还请解释一下加载地址/入口点地址的含义?

arm embedded-linux u-boot

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

如何在menuconfig中找到Linux配置选项?

各种网页告诉我要在Linux内核中获得完全真实的堆栈回溯,我需要CONFIG_FRAME_POINTER=y在我的.config文件中设置.所以我跑步make menuconfig并尝试在那里找到它,但是在哪里导航这样做几乎不直观.我搜索网页并找到许多说要启用它的页面,但是没有页面告诉我要进行深入研究的菜单选项.所以我想也许我可以运行make config,只需按[Enter]一百万次来选择所有内容的当前配置选项,然后将整个命令窗口缓冲区内容复制粘贴到文本文件中并搜索(不区分大小写)"frame_pointer"或"框架指针",但仍然没有运气; 显然我必须为某些子菜单选择'y',甚至可以深入到任何地方.

如何在config或menuconfig中找到这样的选项?是否在某处列出了选项配置层次结构?

更新:

我正在使用Linux Kernel v2.6.30.4-uc0; 这就是我使用Lantronix XPort Pro SDK的原因.

根据我得到的答案,我使用/搜索选项(不知道我之前是如何错过的),但我真的无法进一步了解.当我搜索"FRAME_POINTER"时,这就是我所看到的:

Symbol: ARCH_WANT_FRAME_POINTERS [=n]

Symbol: FRAME_POINTER [=n]
 Prompt: Compile the kernel with frame pointers
   Defined at lib/Kconfig.debug:620
   Depends on: DEBUG_KERNEL && (CRIS || M68K || M68KNOMMU || FRV || UML || AVR32 || SUPERH || BLACKFIN || MN10300) || ARCH_WANT_FRAME_POINTERS
   Location:
     -> Kernel hacking
   Selected by: LOCKDEP && DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT && !MIPS && !PPC …
Run Code Online (Sandbox Code Playgroud)

linux-kernel embedded-linux

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