热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c/c++开发分享如何从ARM处理器开始?

是否可以直接从ARM处理器的数据表和用户手册开始为新手或首先了解ARM世界然后继续?在这个相关问题的答案中描述了几个好的资源:此外,Hitex还为基于ARM处理器的几种不同微控制器

是否可以直接从ARM处理器的数据表和用户手册开始为新手或首先了解ARM世界然后继续?

    在这个相关问题的答案中描述了几个好的资源:

    此外,Hitex还为基于ARM处理器的几种不同微控制器提供了“Insider’s Guides”(免费,但需要注册):

    其中大部分(如果不是全部)都是免费下载(我认为它们是由微控制器制造商赞助的)。 它们更适合微控制器,而不仅仅是ARM的细节,但它们确实包含了一些ARM细节,并且它们是微观和微处理器外围设备的精彩概述。

    当我开始使用新的(对我而来)技术时,我首先要找到尽可能多的数据表和应用笔记,然后直接阅读它们。 第一个目标是加快该技术独有的行话(以及球员的名字)的速度。

    在ARM中,我将从www.arm.com开始,以及他们在ARM信息中心的文档。

    更新:我还将深入了解一个或多个制造商的产品系列,包括阅读至少一个家庭程序员手册。 如果您的项目计划足够坚固以至于您知道将使用哪种特定的ARM CPU,那么您可以专注于该特定模型及其近亲。 如果您希望熟悉ARM以便可以选择要在项目中使用的CPU,那么对各种系列进行采样几乎肯定是最好的计划。

    有很多ARM技术许可证持有者 。 其中,一些制造商拥有产品(基于ARM内核的CORTEX-M3风格),IMHO在深度嵌入式系统应用中脱颖而出。

    我的公司正在进行基于ST Microelectronics的STM32系列的项目。 该系列具有许多片上外设,其function对于来自8051世界或PIC世界的任何人来说都是熟悉的,并且在芯片上具有足够的FLASH和SRAM以使外部存储器可选。

    我从Luminary Micro那里听到了很多关于Stellaris系列的积极信息。 它看起来非常适合许多嵌入式平台需求。

    鉴于入门级评估板的当前价格点,我强烈建议购买一个或多个芯片,类似于您预期的目标应用市场。 STM32可以安装带有小型LCD,加速度计,一对LED或两个按钮的电路板,访问未提交的GPIO引脚,内置JTAG USB接口以及完整的基于GCC的交叉开发工具链(例如,在100美元的球场中,2009年的价格低于40美元,但该型号已经停产。

    许多其他基于ARM内核的产品都可以找到类似的软件包。

    发现ARM的另一种方式是作为芯片系统中的CPU核心。 相当多的SOC供应商正在授权ARM CPU与他们的专用硬件一起使用他们的芯片。 我已经看到了video压缩芯片,网络芯片,ATA适配器的火线以及以这种方式构建的USB设备,这只是我发布的文章和新闻稿的一个例子,我碰巧从袖口回忆起来。

    更新2013年2月:在Raspberry Pi和各种Beagle系列主板中可以看到“典型”基于ARM的SOC系列的一个非常容易进入的入口点。 两者都针对实验者和业余爱好者,都使用带有ARM内核的SOC和video和音频function等其他资源,并且都开箱即用。

    模块制造商还提供丰富多样的系统,提供夹层板,其中包含一个完整的可引导系统,可安装在定制板上,提供特定嵌入式系统所需的电源和I / O连接器。 其中一家供应商是Gumstix 。 Gumstix AirSTORM提供Wi-Fi,蓝牙,DRAM,NAND FLASH和TI OMAP3 ARM SOC。 合适的载板可以支持LCD面板或HDMI,10/100以太网,USB主机和OTG,以及线路级模拟音频连接,以及对各种附加GPIO引脚和片上外设的访问。

    我建议买一个BeagleBoard 。 它们具有JTAG支持,因此您可以看到硬件中发生了什么,类似于硬件调试器。 有几个Linux版本在其上运行。 周围还有一个很棒的社区,可以帮助您使用它。 我在我的Ubuntu Jaunty上运行,所以你可以运行的实用程序和编译器没有结束。

    我会和冲浪sparkfun.com,他们携带olimex板,以及自己的。 Luminary Micro / stellaris也很好。 beagleboard更像是一个Linux平台,而不是你访问armfunction/指令本身的东西。 您可以使用它但是为了这笔钱,您可以在3到7个不同的基于ARM的微控制器评估板之间购买。 无论哪种方式,我都会开始用一个小型电路板缠绕在一个基于臂的微控制器上,st或lpc可能,只有拇指2只是拇指2,我只会在用arm指令然后用拇指指示弄湿我的脚之后才做。

    我也是使用gameboy advance作为arm的学习平台的粉丝(不是NDS,这是先进的,从GBA家族开始)。

    您将需要ARM ARM(ARM体系结构参考手册),然后每个特定的核心都有自己的TRM,您需要两者才能了解可用的指令。 在大多数情况下,这些手册既可​​以作为参考,也可以从头开始学习。

    我会先得到像STR750-LOVE这样的评估板。 然后编译并理解这些例子。 在对这些示例感到满意之后,现在是时候继续理解底层的内容并编写自己的代码了。 学习过程的一个重要部分是尝试做某事,然后调试它并使其工作。 如果您想成为ARM的专家,您需要能够放心地阅读程序集。 我刚刚接受了ARM固件开发人员的采访,我所做的技术部分就是分析THUMB汇编代码并将其转换为c代码。 大多数编译器都可以选择输出它们生成的程序集。

    用Tom Lehrer的话来说“抄袭,剽窃,让任何人的工作都不要躲避你的眼睛”。

    或者像牛顿(和伯纳德)站在巨人的肩膀上。

    换句话说,找出人们做了什么,并理想地避免重新发明车轮。

    我从一个廉价的开发板和示例软件开始,然后从那里开始,随时查看您需要知道的内容。

    基于ARM核的STM32的一个很好的入门是适当命名的STM32 Primer 。

    除了快速浏览之外,我不会从技术手册开始。 STM32的长度为600多页,随附的Cortex-M3手册为400页。 不完全是轻读!

    这真的取决于什么样的ARM,它是一个非常广阔的世界。 通常ARM集成在SoC(片上系统)中。 如果您准备迁移到特定的SoC供应商,那么您需要考虑所有这些。 根据我的经验,SoC pheripheral和缓存选择比实际核心更具影响力(性能除外)。

    至于评估板:我对Luminary micro($ 50- $ 60系列)Cortex M3有很好的经验。 它带有完整的(eclipse)开发环境,示例,库和一些硬件(即USB,以太网,OLed显示)以及可以运行和学习的示例。 边做边学比阅读学习更有趣。 我希望你能从8051升级到Cortex M3。

    在频谱的高端,beagle板是一个真正的数字cruncher,也可以运行Linux。

    需要了解更多c/c++开发分享如何从ARM处理器开始?,也可以关注C/ C++技术分享栏目—编程笔记

      以上就是c/c++开发分享如何从ARM处理器开始?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(编程笔记)。


      推荐阅读
      • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
      • Spring – Bean Life Cycle
        Spring – Bean Life Cycle ... [详细]
      • 解决Only fullscreen opaque activities can request orientation错误的方法
        本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
      • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
      • 单片微机原理P3:80C51外部拓展系统
          外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
      • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
      • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
        在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
      • 优化Vite 1.0至2.0升级过程中遇到的某些代码块过大问题解决方案
        本文详细探讨了在将项目从 Vite 1.0 升级到 2.0 的过程中,如何解决某些代码块过大的问题。通过具体的编码示例,文章提供了全面的解决方案,帮助开发者有效优化打包性能。 ... [详细]
      • 深入解析 Lifecycle 的实现原理
        本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
      • 解决Bootstrap DataTable Ajax请求重复问题
        在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
      • 单片机入门指南:基础理论与实践
        本文介绍了单片机的基础知识及其应用。单片机是一种将微处理器(类似于CPU)、存储器(类似硬盘和内存)以及多种输入输出接口集成在一块硅片上的微型计算机系统。通过详细解析其内部结构和功能,帮助初学者快速掌握单片机的基本原理和实际操作方法。 ... [详细]
      • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
      • 深入解析 Synchronized 锁的升级机制及其在并发编程中的应用
        深入解析 Synchronized 锁的升级机制及其在并发编程中的应用 ... [详细]
      • PyTorch实用技巧汇总(持续更新中)
        空洞卷积(Dilated Convolutions)在卷积操作中通过在卷积核元素之间插入空格来扩大感受野,这一过程由超参数 dilation rate 控制。这种技术在保持参数数量不变的情况下,能够有效地捕捉更大范围的上下文信息,适用于多种视觉任务,如图像分割和目标检测。本文将详细介绍空洞卷积的计算原理及其应用场景。 ... [详细]
      • 本文探讨了如何通过编程手段在Linux系统中禁用硬件预取功能。基于Intel® Core™微架构的应用性能优化需求,文章详细介绍了相关配置方法和代码实现,旨在帮助开发人员有效控制硬件预取行为,提升应用程序的运行效率。 ... [详细]
      author-avatar
      房东的猫
      这个家伙很懒,什么也没留下!
      PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
      Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有