小编MrG*_*igu的帖子

Beagleboard裸机编程

我刚拿到了BeagleBoard-Xm,我想知道是否有关于如何在硬件上运行非常简单的裸机软件的详细分步教程?

我问的原因是我想深入了解硬件架构如何工作,从引导程序,链接器,中断,异常,MMU等等.我认为最好的方法是在beagleboard xm上执行一个简单的hello world程序而不用操作系统.没有任何进展,只需启动电路板并在屏幕上获得"hello world"输出.而已!

下一步将是运行一个小型操作系统,可以安排一些非常简单的任务.无需文件系统,只需了解操作系统的基础知识即可.

任何帮助赞赏!

最好的祝福

吉古先生

embedded arm beagleboard

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

嵌入式开发人员,哪些技能很重要

我想列出一些需要学习的东西,这些东西对我的职业生涯很有价值.您认为哪些技能对于嵌入式开发人员,现在和未来都至关重要?

通过使用嵌入式Linux内核,我已经非常精通C和ARM汇编程序,我即将深入研究Linux驱动程序.但是我不禁认为我可能会缩小我的技能.我希望将来能继续使用嵌入式系统,但你永远不会知道就业市场(我将把我外包给中国和印度的偏执).

我觉得我目前对C++和Java很弱,我也希望将来学习Android内核.我也不知道任何脚本语言.

任何使用嵌入式系统一段时间的人都可以对他们认为对嵌入式开发人员至关重要的技能/语言提供一些意见吗?我应该继续只磨练自己的C技能还是应该学习新东西?

embedded embedded-linux

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

如何衡量ARM性能?

我正在优化软件,并希望衡量性能.所以,我目前模拟与OVP的ARM平台(开放虚拟平台)和我得到的统计数字仿真时间和仿真的指令.

我的问题是,为什么每次运行软件时模拟指令都不同(不同但非常接近)?它应该每次都不一样吗?难道不是这样的,我用C编写的软件会被编译成ARM汇编指令,每一个软件运行时间,模拟指示将这些ARM汇编指令多少时间运行?每次都应该是一样的吗?

我该如何衡量绩效?取10个模拟指令样本并获得平均值?

c arm

10
推荐指数
1
解决办法
1481
查看次数

ARM TrustZone开发

我想知道是否有人在开发板上有任何可以使用ARM TrustZone的信息?我有BeagleBoard XM,它使用TI的OMAP3530和支持信任区域的Cortex-A8处理器,但是TI确认他们已经禁用了板上的功能,因为它是一个通用设备.

进一步的研究让我看到了使用OMAP4430的熊猫板,但没有TI的反应和互联网上的信息很少.您如何学习如何使用信任区?

最好的问候吉古先生

embedded arm trustzone

10
推荐指数
1
解决办法
6115
查看次数

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

针对ARMv7编译的Linux内核2.6.34.3(Cortex-a8)

我查看了内核代码,看起来Linux内核为TTB1(转换表基础)上的内核地址空间(一切都超过0xC0000000)和ttb0上的用户进程(0xC0000000下的所有内容)设置了硬件页表,进程上下文切换.它是否正确?我仍然很困惑MMU如何知道翻译的哪个ttb?

我读到TTBCR(转换表基本控制寄存器)确定在找不到MVA时要走哪个ttb寄存器,但是寄存器总是读为0,这意味着始终在ARM体系结构参考手册中使用TTBR0.怎么可能?任何人都可以向我解释Linux内核如何使用这两个ttbs?

我从这个网站上读到ttb是如何工作的https://www.cs.rutgers.edu/~pxk/416/notes/10-paging.html但我仍然不明白内核如何使用这两个ttbs

(仔细检查了内核代码,由于某种原因ttb0和ttb1都已设置,但似乎ttb1从未使用过,我将TTB1寄存器设置为0并且Linux内核继续像往常一样运行)

operating-system arm linux-kernel

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

裸线嵌入式系统(ARM)的分析

我想知道你如何在裸机系统(ARM Cortex a8)上分析软件?以前我使用的是具有内置基准统计数据的模拟器,现在我想比较真实硬件的结果(在BeagleBoard-Xm上运行).

我知道你可以使用gprof,但是我有点迷失,因为假设你必须在目标系统上运行Linux?

我使用Codesourcery的arm-none-eabi交叉编译器构建可执行文件,目标系统正在运行FreeRTOS.

c profiling arm bare-metal beagleboard

7
推荐指数
1
解决办法
4935
查看次数

如何为特定文件添加不同的规则?

我的Makefile有一些问题.

使用此命令,我可以将所有*.c文件编译为*.o,这很有效:

$(OBJ) : %.o : %.c $(LDSCRIPT) Makefile
    $(CC) $(ARM9_INCLUDES) -c $(CFLAGS) $< -o $@
Run Code Online (Sandbox Code Playgroud)

但是现在我想知道,如果我想-O3在一个特定的文件上运行优化-O0怎么办,还有剩下的?

是否有任何命令为特定文件添加不同的规则?

我现在正在做的是用自己的规则编译每个C文件,这非常烦人,因为我有大约30个文件使Makefile变得庞大,每次我在一个文件中更改某些东西时它再次编译所有内容.

makefile

6
推荐指数
1
解决办法
3147
查看次数

嵌入式系统头功能

我是嵌入式系统的新手,想要了解更多,

我目前正在优化一个关于ARM嵌入式系统的占用空间的软件,并且想知道你在源文件中包含的头文件.它们放在哪里?

现在我只是使用软件(OVP)来模拟ARM硬件平台,但在实际硬件中,你必须将头文件放在某个地方吗?就像在gcc上有高清标准库一样.我们还必须在嵌入式计算机中插入此库吗?空间有限!有没有办法减少图书馆的大小?谢谢!

#include <stdio.h>

#include <stdlib.h>

我正在使用交叉编译器arm-elf-gcc

最好的祝福

吉古先生

c embedded

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

管理程序文献

我一直在寻找涵盖管理程序/微内核背后机制的文献,这些文献解释了它的工作原理、背后的设计等,但除了已发表的 cs 论文和维基百科之外找不到任何东西。

我对这个领域很感兴趣,想了解更多,所以我想知道是否有人可以推荐这方面的任何文献?我能想到的最接近的是有关操作系统的书籍。

我最感兴趣的是管理程序可以为操作系统提供的额外安全优势,而不是在管理程序之上运行多个操作系统。

谢谢!

c embedded hypervisor

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

Qemu arm Linux内核启动调试,没有源代码

我正在使用Qemu学习一些Linux内核开发/黑客,并希望调试Linux的启动过程(2.6.34.3).我已经为ARM多功能平台编译并使用Codesourcerys arm-none-eabi交叉编译器.我使用Eclipse作为使用gdbserver构建和调试的环境.

所以我已经成功地在qemu中构建并运行内核,但问题是我在启动过程中没有看到调试器中的任何源代码(在地址0),我只能看到反汇编代码.但是,当它在init/main.c(地址超过0xC0000000)切换到虚拟内存时,会出现源代码,我可以看到源代码并逐步完成代码.这是为什么?我从一开始就想要那个.

任何人都有关于如何调试Linux的启动过程的任何提示?谷歌中的所有指南都显示了如何调试内核,但它们都显示在start_kernel()(位于init/main.c中)而不是从启动过程的开始(在arch/arm/boot/compressed/head中). S).有经验的人请帮忙,谢谢!

查看根文件夹中的System.map,并且只有来自c0004000(虚拟地址开始)的内容的符号.我将vmlinux加载到gdbserver中以获取调试信息,也许这就是为什么没有源代码?

gdb arm qemu linux-kernel

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

ARM内核内存布局

查看ARM Linux的内核内存布局,我可以看到虚拟地址0xffff1000 - 0xffff7fff是"保留.平台不能使用此地址范围".我似乎无法在源代码中找到任何文档或任何内容.

我正在Linux内核2.6上做一些实验,我希望它在虚拟机管理程序之上运行.我以为虚拟机管理程序可以从Integrator CP ARM平台上的0xfff00000 - 0xffffffff获取虚拟地址空间.有谁知道这些地址是否可以使用?似乎高虚拟地址适用于特定平台,如XScale和其他我没有使用的东西.Cpu向量页面仍然是0xffff0000.

内存布局可在http://www.kernel.org/doc/Documentation/arm/memory.txt中找到

linux kernel arm

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

ARM gcc内联汇编程序优化问题

当我有优化标志-O3时,为什么我的内联汇编程序例程不起作用,但是它与其他优化标志(-O0,-O1,-O2,-Os)一起使用?

我甚至在我的所有汇编程序指令中添加了volatile,我认为它会告诉编译器不要触摸或重新排序任何东西?

最好的祝福

吉古先生

assembly arm

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