Poi*_*ter 5 assembly operating-system arm
我有兴趣创建自己的移动操作系统.我读到现有的移动操作系统在ARM处理器上运行并使用它们的汇编语言,而Linux和Windows等桌面操作系统则是用asm编写的.C似乎是两者共有的语言.这引出了一些问题:
如果是这样,那么一旦我开始这样做:
我确信我想构建一个可以像大多数现有移动操作系统一样在ARM处理器上运行的移动操作系统.
old*_*mer 18
1)所有平台都需要一些程序集,你可能需要一些启动代码来涵盖编程语言的假设,例如C编译器假设你已经设置了堆栈(指针),并将.bss内存清零,.data是在正确的位置,等等.根据处理器,但通常,您可能需要一些代码用于中断处理,也可能需要任务切换等.
2)是的,有很多虚拟机,qemu,skyeye等.
3)指令集模拟器或虚拟机等与处理器完全匹配是非常罕见的.仅因为它适用于vm/sim并不意味着它有效.与在调试器中和调试器外部运行代码没什么不同.您应该尝试使用不同的模拟器和硬件来验证模拟器的质量.一个臂处理器到另一个或一个x86到另一个可能变化到足以导致您的软件失败,因此即使在硬件上运行也不足以解决所有潜在的错误.
4)linux在很多平台上运行是吗?Netbsd运行得更多,是吗?根据您设计程序的方式,它可以是非常便携或不可携带的,也可以介于两者之间.它是由你决定.
5)您需要一些操作系统基础知识.也许可以获得MicroC/OS-II书或其他类似材料.了解任务切换等基础知识
6)IDE和编辑等都是非常个人化的东西,一个人最喜欢被别人厌恶.对于ARM开发,您需要获得ARM ARM(ARM架构参考手册).曾经是单个文档的原因已经分裂,因为它们具有许多不同的核心和系列.什么是最古老的ARMv5或ARMv6 ARM以前是单一的ARM.得到那个,你至少可以编写在整个arm核心系列中更便携的代码.您将需要获得一些TRM(技术参考手册).得到一个用于ARM7TDMI(ARMv4T),就像从英特尔获得486手册一样,几乎所有东西(32位臂指令)都可以兼容回到那个核心.可能想要为其他家庭获得TRM.理解即使旧版本(例如rev 1.0(r1p0))可能被标记为过时,如果有一本手册,ARM已将其出售给某人并且它存在于某些芯片的某处,您可能需要知道它们之间的差异核心(如果你密切关注).诸如pl310 L2缓存之类的外围设备经常被发现连接到某些内核,如果您有兴趣打开并使用缓存,您可能想知道其中的内容.嗯,arm7(ARMv4,不要与ARMv7混淆)没有mmu,我认为ARM9有,所以根据你想管理应用程序及其内存的方式,你可能想要使用ARM9或更新的东西作为基线.
获取基于codesourcery lite gnu的工具链.codesourcery现在是导师图形的一部分.为arm建立自己的交叉编译器或获取其他一些(emdebian等)并不难.ARM是一个很好的编译器,但价格昂贵,而且大多数支持都是以合理的价格来自它们,当然有些在线谷歌搜索帮助,但大多数免费帮助是基于gcc.llvm编译器工具每天都在变得越来越好,它们在我理解的iPhone上使用.我使用的是clang编译器,它是llvm的一部分.您不必构建交叉编译器,它们是开箱即用的,它们是从语言到中间到目标程序集的交叉编译器.汇编和链接是针对主机的,但您可以使用gnu binutils汇编器和链接器进行最后一步.
与IDE /编辑器一样,您的编程风格和首选项可能会使您依赖于另一个编译环境.
你可能会发现我在github上的arm示例是否有用,它们是低级别的,董事会提出类型示例.大部分都是基于拇指但有些手臂也是可能的.
| 归档时间: |
|
| 查看次数: |
7072 次 |
| 最近记录: |