其它硬件开发

如何在Linux内核管理超过1GB的物理内存少?

我学习linux内核内部和在阅读“理解Linux内核”,相当多的内存相关的问题,让我吃惊。其中之一是,Linux内核如何处理内存映射如果只有512 MB安装我的系统上的物理内存的说。 当我读到,内核的地图 0(或16)MB-896MB 的物理内存为0xC0000000的线性地址,可直接解决这个问题。因此,在上述情况下,我只有512 MB: 如何可以在内核地图仅512 MB 896 MB?在 ..

LLVM-GCC汇编:LDR语法

这code编译GCC的就好,但使用LLVM(LLVM-GCC)的时候,它说“恒恩pression预期的”的与 LDR 行 问题的语法是:我如何指定我的数组的地方?我不想硬code以字节为单位的位移: LDR R7,[PC,#some_shift] 而是要用文字来保持code清洁和安全。 不知道如何使它工作? .globl FUNC_NAMEFUNC_NAME: 推{R4,R5,R ..
发布时间:2016-05-29 14:24:48 其它硬件开发

得到一个标签的地址在ARM寄存器?

我怎样写,这将有一个标签被引用放入寄存器地址的指令? 解决方案 有四种方式,三处的 Sourceware的GNU汇编手册。我猜的标签是一样的东西, 目标: 。长0xfeadbeef ADR R0,目标 ADRL R0,目标 LDR R0,=目标 子R0,PC,#(。+ 8-目标) 前两个非常相似,生成子R0,PC,#偏移。 3 RD 把一个长期处 ..
发布时间:2016-05-29 14:24:41 其它硬件开发

ARM编译器对于autoconf

我试图编译ARM架构的一些文件与Autoconf配合。我编译它们在Ubuntu 12.04和目标系统是XM的BeagleBoard。 我运行下面的命令: ./配置主机=臂Linux的gnueabi - preFIX = $ {} CSTOOL_DIR / linux_arm_tool 和得到这样的结果:配置:警告:如果你想设置--build类型,不要使用 - 主机。 如果检测到一个交 ..
发布时间:2016-05-29 14:24:39 其它硬件开发

与code编译的Sourcery GCC

是否有可能编译原生GCC针对ARM(主机== ==目标ARM)使用code的Sourcery G ++? 如果这是不可能的,我可以使用的crosstool-NG构建交叉编译,然后使用这个编译原生ARM GCC? 感谢您, 编辑:至于为什么:我创造我自己的的BeagleBoard 发行... 解决方案 codeSourcery规定仅适用于Linux / x86平台和Windows pr ..
发布时间:2016-05-29 14:24:27 其它硬件开发

快速司GCC / ARM

据我所知大多数编译器将乘以然后执行快速除法位右移。举例来说,如果你检查这个SO线程它说,当你问微软编译器执行除以10将通过0x1999999A乘被除数(即2 ^ 32/10),然后通过2 ^ 32(使用32向右移动)划分的结果。 到目前为止好。 在我使用GCC ARM的测试相同除以10,不过,编译器做了一些略有不同。首先,它通过0x66666667(2 ^ 34/10)乘以股息,然后除以2 ^ ..
发布时间:2016-05-29 14:24:24 其它硬件开发

你能帮助我理解基于ARM的移动deviec外设寻址和总线结构?

我会先说,我不是在该领域的专家和我的问题可能包含的误解,在这种情况下,如果你纠正我,我会很高兴,并附加资源,让我能学到更多细节。 我想弄清楚的方式,系统总线以及如何出现在移动设备中的各种设备(如传感器芯片,支持WiFi / BT系统级芯片,触摸屏等)由CPU处理(和其他MCU)。 在PC世界里,我们有总线仲裁这条路的命令/数据的设备,然后,据我所知,地址是硬连接在电路板(纠正我,如果我错了)。 ..
发布时间:2016-05-29 14:24:22 其它硬件开发

什么是更新MMU转换表的正确方法

我启用了MMU我S3C2440板(3G - 4G内存::故障属性),当我没读/写3G,一切都很好 - 4G内存。所以测试页面错误矢量,我写信给一个0xFF即3G地址,如我所料,我从FSR正确的价值,所以我在_do_page_fault()这样做,步骤是这样的: ..... //设置新的页面转换表 ..... invlidate_icache(); //明确ICACHE clr_dcache() ..
发布时间:2016-05-29 14:24:18 其它硬件开发

连接使用GCC工具链ARM任意数据

我想在原始的二进制数据链接。我想无论是把它放在一个特定的地址,或将其链接到一个符号(字符* MYDATA,例如)我在code定义。因为它不是一个OBJ文件,我不能简单地联系起来。 一个类似的职位( ..
发布时间:2016-05-29 14:24:15 其它硬件开发

交叉编译的HelloWorld为ARM

我想一个ARM的CORTEX-A9一个简单的交叉编译(CC): 为了简单起见,多数民众赞成在C- code: 的#include<&stdio.h中GT; 诠释的main() { 的printf(的“Hello World \\ n!”); 返回0; } 在手臂上的本地编译工作正常,并开始与的gcc -o helloworld.c的HelloWorld ,而交叉编译开始与 ..
发布时间:2016-05-29 14:24:12 其它硬件开发

Linux内核ARM转换表基地(TTB0和TTB1)

编译Linux内核2.6.34.3对ARMv7(Cortex-A8的) 我看着内核code,它看起来像Linux内核设置上TTB1内核地址空间(一切都在为0xC0000000)上ttb0在硬件页表(转换表基地)和用户进程(一切为0xC0000000),它改变了每个进程上下文切换。它是否正确?我仍然困惑的MMU是如何知道看的翻译哪些TTB? 我读到,TTBCR(转换表基控制寄存器)决定当MVA找 ..
发布时间:2016-05-29 14:24:11 其它硬件开发

处理ARM TrustZones

ARM有一些所谓的TrustZone。 根据ARM的文档,它提供了一个进程可以在安全/非安全运行的世界。 什么安全/非安全世界意味着。 这是否与处理器上执行的模式或它关系到设定存储区域或其他什么东西的权限。 有ARM的7操作模式和安全/非安全世界没有任何关系。 如何启用ARM的TrustZone的。 从ARM的哪个版本是这样介绍。 是否必须使用此的TrustZone。 请问li ..
发布时间:2016-05-29 14:23:59 其它硬件开发

搬迁组装

我有一个开机code的汇编语言编写的裸机ARM和我试图理解它是如何工作的。二进制是用一些外部闪光灯,并在启动时被复制自身的某些组件在RAM中。我仍然没有得到确切的搬迁概念在这种情况下,即使我读这维基百科进入。该RAM被映射到一个低地址窗口,并在高地址窗口闪光灯。为什么我们测试链接寄存器的值这里有人能解释一下吗? / *测试,如果我们从一个地址上运行,我们不会在*链接/ BL ch ..
发布时间:2016-05-29 14:23:46 其它硬件开发

Linux内核的ARM异常堆栈初始化

我使用飞思卡尔i.MX6(的ARM Cortex-A9)Linux内核3.0.35。运行到一个内核后OOPS我试图理解异常堆栈初始化。以下是我迄今发现的。 在 cpu_init()在 弓/ ARM /内核/ setup.c中的,我看到了异常堆栈初始化得到: 结构栈{ U32 IRQ [3]; U32生根粉[3]; U32 UND [3]; } ____cacheline ..
发布时间:2016-05-29 14:23:37 其它硬件开发

是什么臂的linux-gcc和臂无-Linux的gnueabi之间的区别

什么是手臂的linux-gcc和臂无-Linux的gnueabi和手臂-Linux的gnueabi之间的区别 工具链? 他们是否编译不同? 解决方案 工具链有一个松散的命名约定如弓[-vendor] [ - OS] -abi 拱是架构:手臂 MIPS 86 的i686 ... 厂商是工具链的供应商:苹果 操作系统是操作系统:的Linux 无(裸机) ABI 是应用程序二进制 ..
发布时间:2016-05-29 14:21:18 其它硬件开发

GNU链接映射文件给予意外的加载地址

我工作的一个嵌入式程序在那里我有一个自定义链接脚本。该项目工程,但我注意到,有可能是一些不对劲与链接器如何放置两节在内存中。 下面是链接描述文件的相关部分: MEMORY { ROM(RX):ORIGIN = 0x00100000开始,长度为16K RAM(RWX):ORIGIN = 0x00200000开始,长度为4K }SECTIONS { / *其他部分去这里。 ..
发布时间:2016-05-29 14:21:16 其它硬件开发