小编Bus*_*ush的帖子

解释ARM(特别是移动)外设寻址和总线架构?

我首先要说的是,我不是该领域的专家,我的问题可能包含误解,在这种情况下,如果你纠正我并附上资源,我会很高兴,所以我可以了解更多细节.

我试图弄清楚系统总线的方式以及移动设备中出现的各种设备(如传感器芯片,wifi/BT SoC,触摸屏等)是如何被CPU(以及其他设备)处理的微控制器).

在PC世界中,我们有总线仲裁器将命令/数据路由到设备,并且,afaik,地址在板上硬连线(如果我错了,请纠正我).但是,在移动世界中,我没有找到任何类型寻址的证据; 我确实发现ARM已经标准化了高级微控制器总线架构,但我不知道,该标准是否适用于位于同一SoC(即Exynos,OMAP,Snapdragon等)内的组件(cpu-cores).或者也影响外围接口.具体来说,我问的是哪个组件负责为外围设备和MMIO地址分配地址?

一个更基本的问题是,在移动设备架构中是否存在总线管理,或者是否存在某种"星形"拓扑(以CPU为中心).

这个问题我得到的印象是这些设备被视为平台设备,即直接连接到CPU而不是通过总线连接的设备.不过,我的问题是操作系统如何知道如何解决它们?然后其他线程,这个这个有关平台的设备/驱动程序让我糊涂..

embedded arm embedded-linux amba

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

gcc编译以".C"结尾的c文件(Capital C)

我shell时的奇怪行为:

bush@ubuntu:~/CPPWorkspace/Ex12$ gcc users/dubi/justPrnit.C
Run Code Online (Sandbox Code Playgroud)

返回错误:

gcc: error trying to exec 'cc1plus': execvp: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是当我将justPrnit.C更改为justPrnit.c(带有小'c')时,它已成功编译.

那是什么?

c gcc

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

mmap地图大小限制

可能重复:
在mmap之后的memcpy中获取分段错误SIGSEGV

我在我的cpp代码中使用mmap()来映射一个大的区域(100,000,000字节~100MB).

从man mmap我明白我只能知道它是否成功,我不知道它成功映射了多少大小.

在我的情况下,我可以使用8192字节的缓冲区迭代地读取该区域,但是在读取~24MB后我得到SIGSEGV - 意味着mmap没有成功映射整个区域?

我正在通过memcpy函数读取从映射区域复制到堆上的缓冲区.(当缓冲区在堆栈上时,我也看到相同的行为).

我怎么知道它是否映射了整个区域?如果它映射了整个区域,那么为什么在读取大约24MB的字节后得到SIGSEGV?

谢谢!

c++ mmap memcpy segmentation-fault

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

gcc警告:指针类型不兼容

在我的代码中,我有:

char DRAW_EX[DRAW_HEIGHT][DRAW_WIDTH] = {
        "*     *",
        " *   * ",
        "   *   ",
        " *   * ",
        "*     *"
           };
char DRAW_CIRCLE[DRAW_HEIGHT][DRAW_WIDTH] = {
        "  ***  ",
        " *   * ",
        "*     *",
        " *   * ",
        "  ***  "
           };
char DRAW_EMPTY[DRAW_HEIGHT][DRAW_WIDTH] = {
        "       ",
        "       ",
        "       ",
        "       ",
        "       "
           };
Run Code Online (Sandbox Code Playgroud)

给我警告的那条线是:

char** leftDraw;
leftDraw = board[i][0]==EMPTY?DRAW_EMPTY:(board[i][0]==SHAPE_O?DRAW_CIRCLE:DRAW_EX);
Run Code Online (Sandbox Code Playgroud)

警告是:

warning: assignment from incompatible pointer type [enabled by default]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c gcc gcc-warning

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

Firefox控制台获取'SyntaxError:非法字符

我的脚本如下:

<script>
    var lastTime = 0; 
    function loop(time) {
        console.log(time);
        var delay = time–lastTime; 
        var fps = 1000/delay; 
        console.log(delay + ' ms');
        updateAnimation(); 
        mozRequestAnimationFrame(loop); 
        lastTime = time;
        } 
    //loop(200000);
    requestAnimationFrame(loop);
</script>
Run Code Online (Sandbox Code Playgroud)

当我使用Web控制台功能在Firefox下运行它时 - 我得到:

SyntaxError:非法字符

在线上

var delay = time-lastTime;

那条线路有什么问题?

javascript firefox

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