我怀疑我在做一些愚蠢的事情,但是当我尝试在嵌入在结构中的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)
有什么想法吗?
我正在为ARM cortex处理器上的现有嵌入式系统添加一个新协议.在将新协议添加到早期系统后,我需要进行负载测试和性能测试.源代码使用C和C++.
如果有任何免费测试代码在这个嵌入式系统上进行负载和性能测试,网络I/O测试等,请告诉我.或者建议我任何方法.
基本上我要比较:1.添加新协议后的负载是多少.2.性能3.网络IO测试4.系统测试等......
此致,AK
所以我有一种情况,我试图写入嵌入式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)
它不起作用.它不会给出任何错误或任何错误,它只是不起作用.以前有没有遇到过这个?我该怎么做才能解决这个问题.有没有办法像我手动一样"回声"...但是从代码中执行此操作?什么是最好的方法?
感谢你的帮助!
我正在为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) 我正在研究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
THR和RHR寄存器的基址相同.那么可以同时发送和接收吗?
我是嵌入式Linux开发的新手.我必须将uboot和自定义Linux发行版移植到基于ARM的新板上.
我们正在使用的uboot(2009.08)没有Arch和DTS文件夹.我想这是一个旧版本,不使用DTS将硬件信息传递给内核(v 3.0).我已经阅读了很多关于DTS的内容,但是这里关于这个(过时的)将硬件信息从uboot传递到我们正在使用的内核的方法还不够.互联网告诉我,在Uboot和内核源代码中都有这个任务的C文件必须同步,但有人可以指向我吗?另外,如果我的假设是错误的,请纠正我,并在需要时询问更多信息.
我正在使用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) 我按照一些文档通过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(入口点)
还请解释一下加载地址/入口点地址的含义?
各种网页告诉我要在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)