初次接触ARM开发,理清这四个开发思路很重要!

由于涉及编程,学习ARM单片机系统对于从事电子电路的设计者来说是有些困难的,学习知识不难,难的是理清其中的开发思路,找到一个好的起点。本文就将从这一步入手,为大家介绍初次接触ARM开发应该从哪几方面来理清开发思路。
 
做个最小系统板:如果从没有做过ARM的开发,建议一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash、SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果已有这些硬件的布线经验那就更好了。
 
写启动代码
根据硬件地址先写一个能够启动的小代码,包括以下部分:初始化端口、屏蔽中断、把程序拷贝到SRAM中、完成代码的重映射、配置中断句柄,连接到C语言入口。也许一些示例程序当中bootloader会有很多东西,但是不要被这些复杂的程序所困扰,因为这是设计开发板过程中需要设计,并不包含在ARM设计范畴中。
 
研究芯片资料
尽管ARM在内核上兼容,但每家芯片都有自己的特色,编写程序时必须考虑这些问题。尤其是女孩子,在这儿千万别有依赖心理,总想拿别人的示例程序修改,却越改越乱。
 
了解操作系统程序
在ARM的应用开放源代码的程序很多,要想提高自己,就要多看别人的程序,Linux,uc/os-II等等这些都是很好的原码。
 
硬件
如果设计者自己制作硬件,每个厂家基本上都有针对该芯片的DEMO板原理图。如果先将原理图消化。在以后做设计时就能做到对资源的分配心中有数。器件的DATSHEET一定要好好消化。
 
最小系统板
很多人会问,做最小系统板是2层还是4层好?答:只有AT91可以用两层板,其他的最少4层;44b0的地和电源处理好也可用两层板;谈四层板和33欧电阻:选用四层板不仅是电源和地的问题,高速数字电路对走线的阻抗有要求,二层板不好控制阻抗。33欧电阻一般加在驱动器端,也是起阻抗匹配作用的;布线时要先布数据地址线,和需要保证的高速线;在高频的时候,PCB板上的走线都要看成传输线。
 
传输线有其特征阻抗,学过传输线理论的都知道,当传输线上某处出现阻抗突变(不匹配)时,信号通过就会发生反射,反射对原信号造成干扰,严重时就会影响电路的正常工作。采用四层板时,通常外层走信号线,中间两层分别为电源和地平面,这样一方面隔离了两个信号层,更重要的是外层的走线与它们所靠近的平面形成称为“微带”(microstrip)的传输线,它的阻抗比较固定,而且可以计算。
 
对于两层板就比较难以做到这样。这种传输线阻抗主要于走线的宽度、到参考平面的距离、敷铜的厚度以及介电材料的特性有关,有许多现成的公式和程序可供计算。33欧电阻通常串连放在驱动的一端(其实不一定33欧,从几欧到五、六十欧都有,视电路具体情况),其作用是与发送器的输出阻抗串连后与走线的阻抗匹配,使反射回来(假设解收端阻抗没有匹配)的信号不会再次反射回去(吸收掉),这样接收端的信号就不会受到影响。
 
接收端也可以作匹配,例如采用电阻并联,但在数字系统比较少用,因为比较麻烦,而且很多时候是一发多收,如地址总线,不如源端匹配易做。这里梭说的高频,不一定是时钟频率很高的电路,是不是高频不止看频率,更重要是看信号的上升下降时间。通常可以用上升(或下降)时间估计电路的频率,一般取上升时间倒数的一半,比如如果上升时间是1ns,那么它的倒数是1000MHz,也就是说在设计电路是要按500MHz的频带来考虑。
 
有时候要故意减慢边缘时间,许多高速IC其驱动器的输出斜率是可调的。Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中的仿真工具(ICE)的障碍。内核的完全开放使人们可以自己设计和开发出真正的硬实时系统,软实时系统在Linux中也容易得到实现。强大的网络支持使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。Linux提供了完成嵌入功能的基本内核和所需要的所有用户界面,它是多面的。它能处理嵌入式任务和用户界面。
 
一个小型的嵌入式Linux系统只需要下面三个基本元素:*引导工具*Linux微内核,由内存管理、进程管理和事务处理构成*初始化进程如果要让它能干点什么且继续保持小型化,还得加上:*硬件驱动程序*提供所需功能的一个或更多应用程序。再增加功能,或许需要这些:*一个文件系统(也许在ROM或RAM)中*TCP/IP网络堆栈。
 
本文从启动代码、芯片资料、操作系统程序、最小系统版这四个方面来为新手进行讲解,在针对ARM开发思路时首先需要从这四个方面来进行入手,那么在之后的学习过程中就会觉得豁然开朗而不是一头雾水,因此建议各位新手花上几分钟来阅读本文,相信会有意想不到的收获。

与非网专栏作者招募

你也许是工程师甲,每天默默画电路板、写代码;
你也许是高校老师乙,每天站在三尺讲台,传授知识;
你也许是项目经理丙,每天为得到客户认可而赶工、奔忙;

不管你身处何地是何种身份,只要你是电子领域的从业者,就一定有对这一行业的一些感受和看法。

可能你已修炼成资深行业观察家,如何小庆老师那样真知灼见;

可能你善于分析行业趋势,如飞翔的鸭子侃侃而谈;

可能你精通某一项技术,如加菲那样精讲技术而不失幽默;

可能你善于发现身边的工程师故事,如骆驼般娓娓道来。

也可能你和他们都不同,有自己想发表的观点,这样的你都是我们在等的人,只要你准备好了,“与非网专栏作者”就会成为你的一个标签。你不再是普通的路人“甲、乙、丙”,而是工程师和电子产业的发言人。

我们给专栏作者的展示机会:
1. 与非网主站【与非原创】栏目的集中展示:

2. 与非网主页:首页焦点、行业发现的重点推荐

3. 与非网微信:原创推送,直达核心行业读者

4. 如果专栏内容热度很高,我们还可以帮助联系相关出版社洽谈集结出版。

成功取决于行动力,赶紧将你的职场态度和行业观点进行整理、提炼成专栏大纲吧,以“专栏作者+大纲名称”为主题,发送到:editor#eefocus.com(请将#替换为@)即可,或者你还有些疑惑想更多了解专栏作者的情况,也可以加小编的微信+qq:444937274详谈。

与非网专栏作者,我们等你!

 

初次接触ARM开发,理清这四个开发思路很重要!的更多相关文章

  1. SSIS 初次接触 + 开发记录

    第一次接触SSIS,昨天终于把一套流程走通,记一下流水. 1:安装 使用SSIS需要安装插件(VS 和Sql Server都需要另外安装). 自己使用的vs2017开发,官网有专门的 VS2017 安 ...

  2. 初次接触GWT,知识点总括

    初次接触GWT,知识点概括 前言 本人最近开始研究 GWT(Google Web Toolkit) ,现将个人的一点心得贴出来,希望对刚开始接触 GWT的程序员们有所帮助,也欢迎讨论,共同进步. 先说 ...

  3. 20145215实验四 Android开发基础

    20145215实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事件 ...

  4. 初次接触:DirectDraw

    第六章 初次接触:DirectDraw 本章,你将初次接触DirectX中最重要的组件:DirectDraw.DirectDraw可能是DirectX中最强大的技术,因为其贯穿着2D图形绘制同时其帧缓 ...

  5. 初次接触Java

    今天初次接触Eclipse,学着用他来建立java工程,话不多说,来看看今天的成果! 熟悉自己手中的开发工具,热热身 刚上手别慌,有问题找度娘 刚刚拿到这个软件的安装包我是一脸懵逼的,因为是从官网下载 ...

  6. -1.记libgdx初次接触

    学习一门技术最难的是开发环境变量配置和工具配置,以下为我初次接触libgdx时遇到的问题 几个难点记录下 gradle 直接用下到本地,然后放到d盘,链接到就行(gradle-wrapper.prop ...

  7. 20155208 实验四 Android开发基础

    20155208 实验四 Android开发基础 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3.掌握An ...

  8. 20145311实验四 "Android开发基础"

    20145311实验四 "Android开发基础" 程序设计过程 实验内容 ·安装Android Studio·运行安卓AVD模拟器·使用安卓运行出虚拟手机并显示HelloWorl ...

  9. 20155336虎光元实验四 Android开发基础

    20155336虎光元实验四 Android开发基础 实验内容 1:完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号 2:创建 ThirdActivi ...

随机推荐

  1. 【linux】扒站命令之利用wget快速扒站利用wget快速扒站

    在Linux下,通过一个命令就可以把整个站相关的文件全部下载下来. wget -r -p -k -np 参数说明: -r : 递归下载 -p : 下载所有用于显示 HTML 页面的图片之类的元素 -k ...

  2. XSS 相关 payload 集合

    Ajax 获取数据 GET function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest){// code for IE7+, Fire ...

  3. mybatis 在存储Integer、bigdecimal等java数据类型时,将0存成null

    我们的项目中,有关于金额的计算,所以,一般在java环境中我们使用bigdecimal来做运算和存储金额信息.数据库sqlServer2008用的float类型 问题是,当我将金额赋值成0时,很意外的 ...

  4. Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

    前言 JMS介绍:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  5. 使用SharpZipLib压缩与解压文件

    using ICSharpCode.SharpZipLib.Zip; using System; using System.Collections.Generic; using System.IO; ...

  6. C# 获取两个时间段之间的所有时间与获取当前时间所在的季度开始和结束时间

    一:C# 获取两个时间段之间的所有时间 public List<string> GetTimeList(string rq1, string rq2) { List<string&g ...

  7. 转:c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index  ...

  8. Linux 系统常见命令功能大全_【all】

    Linux常见快捷键(6个) ctrl + u:剪贴光标前面 ctrl + k:剪贴光标后面 ctrl + y:粘贴 ctrl + r:查找命令 ctrl + insert:复制 shift+ ins ...

  9. Linux 正则表达式详解

    正则表达式(REGULAR):为处理大量的字符串而定义的一套规则和方法,为了处理大量字符串而生 常见命令参数 基础正则表达式 . :有且只有任意一个字符(包括空格) * :重复前面任意0或者多个字符 ...

  10. jQuery插件实例三:图片滚动[切换]效果一

    图片切换效果在很多网站上都能看到,是一种常见的广告/活动宣传方式,通常位于网页上端.这个插件是众多图片切换效果的形式中的一种,数据源可在前端配置,也可从后台通JSON格式传输数据,当然,数据格式是固定 ...