小编gst*_*gst的帖子

物理/逻辑/虚拟内存地址之间的差异

我对操作系统中的物理/逻辑/虚拟地址这个术语感到有点困惑(我使用的是Linux-open SU​​SE)

这是我的理解:

  1. 物理地址 - 当处理器处于系统模式时,处理器使用的地址是物理地址.

  2. 逻辑地址 - 当处理器处于用户模式时,使用的地址是逻辑地址.通过添加带有偏移值的基址寄存器,这些都可以映射到某个物理地址.它在某种程度上提供了一种内存保护.

  3. 我遇到过讨论,虚拟和逻辑地址/地址空间是相同的.这是真的吗?

非常感谢任何帮助.

operating-system virtual-memory linux-kernel

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

如果我们将递归函数作为内联函数会发生什么?

我对内联函数有疑问.内联函数不会涉及任何函数调用,只需在对内联函数进行调用时替换函数定义.内联函数具有类型强制,与宏不同.如果递归函数是内联的,会发生什么?

c recursion inline-functions

6
推荐指数
2
解决办法
4570
查看次数

将 udpsrc 动态添加到 rtpbin 导致流停止,原因未链接 (-1)

我正在尝试将 udp src 动态添加到正在运行的管道中。例如

  void addAudioSource(std::string const ip, int const port, int const payloadtype)
  {
    std::string description = "autoaudiosrc ! queue ! audioconvert !  audio/x-raw,rate=16000 ! avenc_g722 ! rtpg722pay";

    audiosrc = Gst::Parse::create_bin(description, true);

    pipeline->add(audiosrc);
    {
      auto srcpad = audiosrc->get_static_pad("src");
      auto sinkpad = rtpbin->get_request_pad("send_rtp_sink_1");
      srcpad->link(sinkpad);
    }

    rtpudpsinkAudio->set_property("host", ip);
    rtpudpsinkAudio->set_property("port", port);
    rtpudpsinkAudio->set_property("sync",true);
    rtpudpsinkAudio->set_property("async",false);
    pipeline->add(rtpudpsinkAudio);
    {
      auto srcpad = rtpbin->get_static_pad("send_rtp_src_1");
      auto sinkpad = rtpudpsinkAudio->get_static_pad("sink");
      srcpad->link(sinkpad);
    }
    pipeline->set_state(Gst::State::STATE_PLAYING);  
}
Run Code Online (Sandbox Code Playgroud)

- - 和 - -

  void addAudioSink(std::string const ip, int const port, int const payloadtype) …
Run Code Online (Sandbox Code Playgroud)

gstreamer

6
推荐指数
0
解决办法
666
查看次数

ARM-C互操作

我正在尝试一个用于 ARM-C 互操作的简单程序。这是代码:

 #include<stdio.h>
#include<stdlib.h>

int Double(int a);
extern int Start(void);
int main(){

int result=0;
printf("in C main\n");
result=Start();
printf("result=%d\n",result);
return 0;
}

int Double(int a)
{
  printf("inside double func_argument_value=%d\n",a);

  return (a*2);
}
Run Code Online (Sandbox Code Playgroud)

汇编文件如下:

.syntax unified
    .cpu cortex-m3
    .thumb

    .align
    .global Start
    .global Double
    .thumb_func



Start:
      mov r10,lr
      mov r0,#42
      bl Double
      mov lr,r10
      mov r2,r0
      mov pc,lr
Run Code Online (Sandbox Code Playgroud)

在 LPC1769(嵌入式艺术家板)上调试期间,我在指令“ result=Start() ”上收到硬故障错误。我正在尝试在这里进行arm-C网络互连。上述语句(result=Start())执行过程中lr值为0x0000029F,即错误指令所在,pc值为0x0000029E。这就是我在 r1 中得到错误指令的方式

__asm("mrs r0,MSP\n"
"isb\n"
"ldr r1,[r0,#24]\n");
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下我哪里出错了吗?任何解决方案表示赞赏。先感谢您。

我是 cortex-m3 的初学者,正在使用由 Code_Red 提供支持的 NXP LPCXpresso IDE。这是我的代码的反汇编。

      IntDefaultHandler:
00000269: …
Run Code Online (Sandbox Code Playgroud)

c assembly thumb lpc cortex-m

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

为linux内核创建补丁文件

我正在尝试创建一个补丁文件,用于我在linux内核中所做的修改.原始目录是/usr/src/linux.vanilla,新内核是/ usr/src/linux-master.我用的命令是

h@ubuntu:/usr/src$ sudo diff -rupN  linux-master/ linux.vanilla/ > original.patch 
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误说明

bash: original.patch: Permission denied
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我出错的地方.我使用的是Ubuntu和Linux内核版本3.15.0.

谢谢.

linux diff sudo ubuntu-12.04

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