小编Éti*_*nne的帖子

ARM Cortex M3如何在硬故障之前确定程序计数器值?

我有一个使用STM32F103(ARM Cortex M3)的嵌入式项目,它在发布模式下偶尔会遇到硬故障.作为恢复的一部分,我想从硬故障之前检索PC值并将其存储起来以便稍后在电池备份区域中进行调试.

如何在硬故障点确定程序计数器的值?显然,PC现在设置在硬故障中断的位置.

我应该在哪里看?它有一个普通模式寄存器组的地址吗?

谢谢!

embedded arm interrupt cortex-m3 program-counter

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

装配中的重新安置

我有一个用于汇编的裸机ARM的启动代码,我试图了解它是如何工作的.二进制文件写在一些外部Flash中,并在启动时将其自身的一部分复制到RAM中.即使我读过这个维基百科条目,我仍然没有在这种情况下完全获得重定位的概念.RAM映射到低地址窗口,闪存在高地址窗口中.有人可以向我解释为什么我们在这里测试链接寄存器的值吗?

/* Test if we are running from an address, we are not linked at */
       bl check_position
 check_position:
        mov     r0, lr                  
        ldr     r1, =check_position
        cmp     r0, r1                  /* ; don't relocate during debug */
        beq     relocated_entry 
Run Code Online (Sandbox Code Playgroud)

assembly arm bare-metal

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

c函数的汇编代码

我正在尝试理解C函数的汇编代码.我无法理解为什么andl -16要在主要方面完成.是为局部变量分配空间.如果subl 32是这样,为什么要为主要做.

我无法理解拆卸的func1.随着读取,堆栈从高阶地址增长到8086处理器的低阶地址.那么为什么在ebp的正侧(对于参数偏移)进行访问以及为什么不在ebp的负侧进行访问.func1中的局部变量是3 +返回地址+保存的寄存器 - 所以它必须是20,但为什么它是24?(subl $24,esp)

#include<stdio.h>
int add(int a, int b){
 int res = 0;
 res = a + b;
 return res;
}
int func1(int a){
 int s1,s2,s3;
 s1 = add(a,a);
 s2 = add(s1,a);
 s3 = add(s1,s2);
 return s3;
}
int main(){
 int a,b;
 a = 1;b = 2;
 b = func1(a);
 printf("\n a : %d b : %d \n",a,b);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

汇编代码:

       .file   "sample.c"
        .text
.globl add …
Run Code Online (Sandbox Code Playgroud)

c x86 assembly

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

Java applet:jocl operations stop java3d

运行Jocl(opencl包装器)内核会禁用java3d输出.当opencl完成时,java3d继续工作.

我怎样才能让Opencl(jocl)和opengl(java3d)一起工作?我需要一些告诉"它的opencl时间"的命令,当它完成时它告诉"它现在的opengl时间".

不知何故,当opencl工作时,java3D Jpanel会冻结并变灰.

我做了一些跟踪,发现java3D正在骚扰opencl(jocl),jmonkey引擎3.0并没有这样做.另一个尝试显示jmonkey做同样的事情.突然所有粒子位置都停止通过opencl更新,然后所有位置都变为0,0,0.

为每个设备使用唯一的上下文,程序,ID,....

误差如何:当星系渲染得很平滑时,突然所有粒子投射到我没有创建的平面上,然后在飞机投射到一条线上几秒后最终将该线投射到一个点上.所有这些必须是因为缓冲区x [] y [] z []开始为所有元素变为零.

编辑:较低的gpu工作频率使错误频率降低.这可能会比使用furmark更难推动GPU,因为在本地进行计算可以更快地工作吗?或者这是jocl/jmonkey/java3d之间的时间/访问优先级问题?所有其他程序,包括furmark,稳定在1225MHz(hd7870鹰)但这可能在1000MHz(AMD默认的hd7870)更稳定或看起来不稳定,因为缓冲区被垃圾收集故障破坏?

Aparapi(java的opencl包装器)从来都不是问题,在1200MHz下工作正常甚至还有"驱动程序停止运行并恢复"错误.催化剂13.3 beta.Jocl 1.5.1和累1.5.2.Catalyst 13.4 whql也是如此.

放System.gc(); 就在内核重复循环立即出现错误之前,必须有一个我错过的垃圾收集

使用一些跟踪:clCreateBuffer方法存在垃圾回收问题

编辑:解决了问题.当使用CL.CL_MEM_USE_HOST_PTR属性时,主线程中clCreateBuffer创建的缓冲区似乎是子线程的垃圾(要收集).CL.CL_MEM_COPY_HOST_PTR解决了问题,以换取%1-%2的性能损失

谢谢.

java applet java-3d opencl jocl

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

PIC24H 中的 FreeRTOS 错误与高速 UART 中断

我已经FreeRTOS在一些嵌入式项目中使用了一年时间,到目前为止它工作得非常完美。FreeRTOS目前我面临着一个与使用高速中断移植到相关的难题PIC24H,希望大家能帮助我解决这个问题。提前致谢

我创建了一个小型演示项目以方便测试:

两个任务:

// Task 1

if (xTaskCreate(RTOSTask_1, (signed char) "[T1]", configMINIMAL_STACK_SIZE2, NULL, tskIDLE_PRIORITY + 1, &hTask1) == errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY)
{
  LREP("\r\nCannot create Task 1.");   
  Display_Error(1000);
}

// Task 2

if (xTaskCreate(RTOSTask_2, (signed char) "[T2]", configMINIMAL_STACK_SIZE2, NULL, tskIDLE_PRIORITY + 2, &hTask2) == errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY)
{
  LREP("\r\nCannot create Task 2."); 
  Display_Error(1000);  
}
Run Code Online (Sandbox Code Playgroud)

任务落实:

void RTOSTask_1(void* pvParameter)
{ 
  while(1)
  {

    if (xSemaphoreTake(hTask1Semaphore, portMAX_DELAY) == pdTRUE)
    { 
      putchar1('1');
    } 
  }
}

void RTOSTask_2(void* pvParameter)
{
  while(1)
  {
    if (xSemaphoreTake(hTask2Semaphore, …
Run Code Online (Sandbox Code Playgroud)

c multithreading stm32 freertos mplab

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

如何使用Windows/MinGW平台使用SQLCipher-extension为SQLite-DB构建Qt-SQL-driver-plugin'QSQLCIPHER'?

这通常不是一个问题,在哪里可以找到分步指南,而是指导本身.
我对这篇文章的意图是给别人一个提示,他在编译驱动程序插件方面遇到的问题和我最近的问题一样.

如何使用Windows/MinGW平台使用SQLCipher-extension为SQLite-DB构建Qt-SQL-driver-plugin'QSQLCIPHER'?

sqlite encryption qt mingw sqlcipher

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

如何使用 gstreamer 在 h265 中流式传输?

我正在尝试同时使用最新的 gstreamer 和 x265enc。我看到有人已经在http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/log/ext/x265/gstx265enc.c 中发布了一些提交, 任何人都可以给出一个已知可以工作的示例管道(gst-launch-1.0 管道示例将非常有帮助)

1) gstreamer 的 x265enc 插件的当前状态是什么?它真的有效吗?我需要使用 gstreamer 的哪个分支来构建 x265enc?我想构建与 x265enc 插件兼容的整个 gsteamer 源代码。x265enc 的系统要求是什么以及如何构建它?任何维基/基本说明都会非常有帮助。

我的目标是在 vaughnlive.tv 上将我的网络摄像机(h264 流)作为 h265 流进行广播

目前,我使用以下管道以 h264 格式广播:

GST_DEBUG=2 gst-launch-1.0 flvmux name=mux streamable=true !rtmpsink sync=true location="rtmp://xxxxxxxxxxxx" rtspsrc location="rtsp://xxxxxxx" caps="application/x-rtp, media=(string)audio, clock-rate=(int)90000, encoding-名称=(字符串)MPA,有效载荷=(整数)96”!rtpmpadepay !mpegaudioparse !队列 !疯狂的 !音频转换!队列 !voaacenc比特率=128000!分析!音频/mpeg,mpegversion=4,流格式=raw!多路复用器。rtspsrc location="rtsp://xxxxxxx" caps="application/x-rtp,media=(string)video,clock-rate=(int)90000, encoding-name=(string)H264"!rtph264depay !video/x-h264,stream-format=avc,alignment=au,byte-stream=false !队列 !解码器!队列 !视频率!“视频/x-raw,帧率=30/1”!队列 !x264enc 线程=4 速度预设=超快比特率=3072 !多路复用器。

2)任何人都可以建议我应该如何更改此管道以使用 x265enc 元素以 h265 格式广播?

rtsp gstreamer h.265

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

/ bin/sh:语法错误:文件结束意外

运行以下makefile时遇到错误make -f makefile2 install(除了安装其余的工作):

all:myapp

#which compiler
CC = gcc

#Where to install
INSTDIR = /usr/local/bin

#where are include files kept
INCLUDE = .

#Options for development
CFLAGS = -g -Wall -ansi

#Options for release
# CFLAGS = -O -Wall -ansi

myapp: main.o 2.o 3.o
    $(CC) -o myapp main.o 2.o 3.o

main.o: main.c a.h
    $(CC) -I$(INCLUDE) $(CFLAGS) -c main.c

2.o: 2.c a.h b.h
    $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c

3.o: 3.c b.h c.h
    $(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c         

clean: …
Run Code Online (Sandbox Code Playgroud)

linux makefile

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

C++ - 读入以逗号分隔的文件行

我试着查看我想要做的事情,但我无法找到具体的我正在尝试做的事情.我有一个包含多行的文本文件,如下所示:

12345,12345,12.34,12345,12345
Run Code Online (Sandbox Code Playgroud)

它在每一行都是相同的格式,我想得到每一行并将数字插入某些变量.像这样的东西:

file >> int1 >> int2 >> double1 >> int3 >> int4;
Run Code Online (Sandbox Code Playgroud)

但是这对我来说很难做到,因为逗号分隔了每个数字.我曾经能够在有"空间"时这样做但是逗号真的让我失望了.有任何想法吗?

c++ comma getline ifstream

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

将应用程序添加到启动(注册表)

我正在尝试将我的软件添加到注册表中,我发现了一些我可以使用的代码,但是没有完整的代码C/C++对我来说是新的,不能自己创建.但这里有一个基本思路:检查是否设置了reg键,如果没有创建它.

我能够使用以下代码获取我的程序位置:

TCHAR szPath[MAX_PATH];
GetModuleFileName(NULL,szPath,MAX_PATH);
Run Code Online (Sandbox Code Playgroud)

并且能够创建密钥:(不确定它是否正确)

HKEY newValue;
RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&newValue);
RegSetValueEx(newValue,"myprogram",0,REG_SZ,(LPBYTE)szPath,sizeof(szPath));
RegCloseKey(newValue);
return 0;
Run Code Online (Sandbox Code Playgroud)

遗漏了什么,小小的检查钥匙是否已经存在......

谢谢!

c c++ windows registry

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