文档库 最新最全的文档下载
当前位置:文档库 › arm的一些开发经验

arm的一些开发经验

arm的一些开发经验
arm的一些开发经验

前一段时间做了arm的一些开发,主要是编写了arm的启动软件和移植了uCOS-II到arm7。我做事情喜欢深入简出,及从最简单,最原理的方面先做一个框架,然后在这个框架里面进行补充。我还是一个很喜欢和别人讨论的人,希望有人可以给我提出意见和建议。我的这个心得很初级,都是一些基本的东西。现在拿出来和大家分享,希望在我毕业之前能给大家留一些纪念。^_^

由于这些东西发paper实在是没有价值,但是我感觉可以作为arm开发的入门。由于我的水平和经验有限,错误也是难免的。但是如果不拿出来和大家分享, 就算有错误我也发现不了,是么?呵呵。我现试试发连载的第一篇,看看有多少价值,如果大家觉得有价值,我会继续连载的。

连载一:

前言

这个文档是我学习ARM编程的总结和心得。阅读这个文档的人应当首先阅读ADS1.2的帮助文档及相关内容。这个文档不会对编译器及连接器做出详细的说明, 在需要的时候会指出具体内容在相关资料的章节。同时阅读这个文档的人需要了解ARM指令集和一些ARM 汇编的基本内容以及C和C++的相关编程内容。同时还需要了解ARM的流水线结构及一些基本的编程知识。同时为了方便查阅英文文档,所有的相关术语都使用英文原文

第一章STARTUP

1 ARM的启动

一般的嵌入式系统在主程序执行之前都需要执行一些初始化的过程以创造嵌入式程序运行的环境,尤其是一些高级的嵌入式系统,由于核心芯片使用内存映射、内存保护等机制以及编程使用高级语言C,C++甚至JA V A语言,都需要先创建一个适合程序运行的硬件环境,然后初始化或者配置或者剪裁run-time library, 这些工作都必须在主程序运行前完成,所以一个startup程序或者程序组对于一个嵌入式系统来说是非常重要的。要编写startup程序,需要对编译器、链接器和汇编器的细节有一定的了解,同时对ARM芯片硬件本身的地址分配以及memory mapping机制也需要有一些了解。

2 ARM 程序的工作过程

首先由各种source file经过编译产生object文件,然后object文件经过链接生成Image文件,然后通过ICE的方法,根据描述文件的指定下载到目标板上的固态存储器指定地址当中,比如flash,EEPROM, ROM等等。在程序执行之前,根据某些描述文件,将需要读写数据的部分读出放入动态存储器比如RAM当中,然后程序从ROM开始执行。或者有时为了提高程序的运行速度,也可以将所有的程序(有一些root的部分除外,以后会提及)通过一个描述文件放入指定的RAM当中,然后程序从RAM开始执行,但是这样会耗费大量的动态存储器,所以大部分程序会取折中的方法,将需要快速运行的部分和要读写的部分放入RAM中(一般读固态存储器的过程和动态存储器的过程是一样的,但是写就不同了,所以读写的部分一定要放到RAM中),而只读的部分和对速度要求不是那么高的部分放入固态存储器。同时ARM结构的异常向量表规定放在地址为0x00000000开始的地址空间上,而一般的CPU为了提高异常相应速度,会将这个向量段remap到其他的RAM当中,所以在描述文件当中必须精确指定异常向量跳转程序的地址到remap的地方。在application程序执行前,还需要由一些文件描述application程序执行的环境。比如系统工作时钟,总线频率。现在一般嵌入式编程语言为C,C++等。如果在使用它们的时候使用的runtime-library,那么在程序执行前还需要为这些库函数初始化heap。然后ARM可能工作在不同的模式,还需要为不同的工作模式设置stack。这样,描述链接地址的文件,以及在application运行前所有的初始化程序就是startup程序组

3 STARTUP分类

这样,将startup程序所完成的功能分类。一类是链接地址描述,一类是各种初始化的程序。根据不同的应用,描述文件和初始化程序的内容以及结构和复杂程度都会不同。但是基本上,它们都必须实现以下功能。

3.1 描述文件实现功能

描述文件可以是链接命令行上简单的几个字符,也可以是一个非常复杂的文件,但是它必须完成如下功能:

指定程序下载的地址

指定程序执行的地址

3.2 初始化程序实现的功能

初始化程序根据不同的应用,其结构和复杂度也不同,但是它必须完成如下基本功能:

异常向量初始化

内存环境初始化

其他硬件环境初始化

4 描述文件

要编写描述文件,必须知道ARM Image文件的组成及ARM Image文件执行的机理。

4.1 ARM Image的结构

一个ARM Image structure由linker在以下几个方面定义:

组成它的regions 和output sections

当Image 下载的时候这些regions 和sections 在内存中的位置

当Image 执行时这些regions和sections在内存中的位置

4.1.1 ARM Image的组成

一个ARM Image被保存在可执行文件当中,它的层次结构可以包括Image,regions,output sections和input sections。

一个Image由一个或多个regions组成,每个region包括一个或多个output sections

每个output section由一个或多个input sections组成

Input sections是一个object file中的code和data信息。

Image的结构如下图:

NOTE Input section,output section和region的定义见ADS_LinkerGuide 3-3页。

同时Input section 有几种属性,分别为readonly,read-write,zero-initialized。分别称为RO,RW 和ZI。属性来源于AREA后的attr属性。

比如CODE是RO,DATA是RW,NOINT默认为ZI,即用0值初始化,但是可以选择不进行0值初始化。ZI属性仅仅来源于SPACE, DCB, DCD, DCDU, DCQ, DCQU, DCW, 或者DCWU。由以上定义,ZI属性的包含于RW属性,它是有初始值的RW数据。又例如在C语言中,代码为RO,静态变量和全局变量是RW,ZI的。

4.1.2 Image 的Load view 和execution view

在下载的时候Image regions被放置在memory map当中,而在执行Image前,或许你需要将一些regions放置在它们执行时的地址上,并建立起ZI regions。例如,你初始化的RW数据需要从它在下载时的在ROM中的地址处移动到执行时RAM的地址处。

NOTE Load view 和execution view的详细定义见ADS_LinkerGuide 3-4

以上的描述包括二个内容,一是要指定各个section在load view和execution view时的地址即memory map,二是要在执行前根据这些地址进行section的初始化。

4.1.3 制定Memory map

制定memory map的方法基本上有二种,一是在link时使用命令行选项,并在程序执行前利用linker pre-define symbol使用汇编语言制定section的段初始化,二是使用scatter file。以上二种方法依应用程序的复杂度而定,一针对简单的情况,二针对复杂的情况。

本文来自: https://www.wendangku.net/doc/a83335197.html, 原文网址:https://www.wendangku.net/doc/a83335197.html,/mcu/arm/0072254.html

各位大虾好:

我用的是周立功的smart_ARM板,编译的时候,选择RelOutChip时编译出现错误(22个错误),而选择DebugInExRam时编译时正确的,调试也是ok的!这是在调用用uc/os操作系统的程序时候出现的,而不带操作系统时都是可以的,

不知道哪个地方设置出现问题了,望告知,谢谢!

我调用的是周立功的的源文件!

Error : L6218E: Undefined symbol OSTimeTick (referred from target.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSIntCtxSw (referred from IRQ.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSIntExit (referred from IRQ.o). Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSTCBCur (referred from IRQ.o). Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSTCBHighRdy (referred from IRQ.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSIntNesting (referred from IRQ.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OsEnterSum (referred from IRQ.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol SoftwareInterrupt (referred from Startup.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSTimeDly (referred from main.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSMboxPend (referred from main.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSMboxCreate (referred from main.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSMboxPost (referred from main.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSTaskCreate (referred from main.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSInit (referred from main.o). Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSStart (referred from main.o). Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSSemCreate (referred from uart0.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSSemPend (referred from uart0.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSSemPost (referred from

uart0.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSQPost (referred from OSFile.o). Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSMboxDel (referred from OSFile.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSQCreate (referred from OSFile.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Error : L6218E: Undefined symbol OSQPend (referred from OSFile.o).

Project: UDiskFSDemo.mcp, Target: RelOutChip

Not enough information to list the image sizes and/or totals. Finished: 1 information, 0 warning and 22 error messages.

答1:

re 首先工程复制到硬盘后,要去掉其只读属性.还有必须在该工程的Source 文件夹中放置ucos-ii2.54的源代码,才能编译通过.

答2:

smart_ARM调试问题,还是不行呢?谢谢你的回答!

肯定是要在source里面放置ucos的源代码的,不然我在DebugInExRam 调试时就会通不过的。

试着将工程的只读属性去掉,编译还是通不过,斑竹,不知道是什么原因啊?望告知,我用的是你们的源代码在RelOutChip中编译的啊!

答3:

re检查你的头文件,是否顺序错位了,

答4:

re!为什么在DebugInExRam编译都是正确的呢?

而且调试也是ok的,实在是想不通?并且只有带ucos操作系统的源程序才会出现这种问题,申明一下,我用的是smart_ARM,调用的程序是4.3读写u 盘文件实验,没有改过源程序!

IAR -arm 入门教程

IAR 使用说明 关于文档(初版): 1.主要是为了给IAR的绝对新手作参考用 2.emot制件,由Zigbee & IAR 学习小组保持修订权 3.希望用IAR朋友能将它修订完善 4.任何人可无偿转载、传播本文档,无须申请许可,但请保留文档来源及标志 5.如无重大升级,请沿用主版本号 版本 版本号制作时间制定人/修改人说明 1.00 2008/7/27 emot 初版(仅供新手参考) 1.01 2010/8/19 Emot 增加 下载程序(第四章) 在线调试程序(第五章) 序: 其实IAR和keil区别也没有多大,不过很多人就是怕(当初我也怕)。怕什么呢,怕学会了,真的就是害怕学习的心理让新手觉得IAR是个不好用的或者说“还不会用的”一个工具吧。我也是一个刚毕业的小子,如果说得不妥,还请大家来点砖头,好让小组筑高起来。(Zigbee & IAR 学习小组地址是https://www.wendangku.net/doc/a83335197.html,/673) 初版我将会说明以下3个问题,IAR的安装、第一个IAR工程的建立和工作编译。这是我写的第一个使用说明,不足的以后补充吧。 一、IAR软件安装图解 1.打开IAR软件安装包进入安装界面 打开软件开发包

软件安装界面 2.按照提示步骤执行,一直到授权页面,输入序列号,IAR中有两层序列号,所以要输入两 组序列号。 输入第一组序列号

3.选择安装路径(最好默认,不默认也不影响使用) 路径选择页面

修改路径4.选择全部安装(Full) 选择全部安装5.按提示知道安装完成。

安装完成页面 二、新建第一个IAR工程 用IAR首先要新建的是工作区,而不是工程。在工作区里再建立工程,一个工作区里似乎也不能建多个工程(我试过,但没成功,不知道IAR里提出workspace的概念是为什么?)要不打IAR的help来看,说清楚也是头痛的事,先知道有要在工作空间里建工程就对了。新建IAR工作空间,首先是菜单File里选择Open再选择Workspace,为方便说明再遇到菜 单我就直接说成File-Open-Workspace这样了。看了下面图上的红圈就知道是怎么回事了。 接着就会看到一片空白。这时就是新的“办公区”了。

arm嵌入式系统基础教程课后答案.doc

arm 嵌入式系统基础教程课后答案【篇一:arm 嵌入式系统基础教程习题答案周立功】 /p> 1 、举出3 个书本中未提到的嵌入式系统的例子。 答:红绿灯控制,数字空调,机顶盒 2、什么叫嵌入式系统 嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的 专用计算机系统。 3、什么叫嵌入式处理器?嵌入式处理器分为哪几类? 嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。 嵌入式微处理器(embedded microprocessor unit, empu) 嵌入式微控制器(microcontroller unit, mcu) 嵌入式dsp 处理器(embedded digital signal processor, edsp) 嵌入式片上系统(system on chip) 4、什么是嵌入式操作系统?为何要使用嵌入式操作系统? 是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实 时操作系统提高了系统的可靠性。其次,提高了开发效率,缩短了 开发周期。再次,嵌入式实时操作系统充分发挥了32 位cpu 的多任务潜力。 第二章 1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务 是什么? 项目的生命周期一般分为识别需求、提出解决方案、执行项目和结 束项目 4 个阶段。识别需求阶段的主要任务是确认需求,分析投资 收益比,研究项目的可行性,分析厂商所应具备的条件。 提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。 执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定 期监控进展,分析项目偏差,采取必要措施以实现目标。 结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系 统交接给维护人员;结清各种款项。 2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险? 在一个项目中,有许多的因素会影响到项目进行,因此在项目进行 的初期,在客户和开发团队都还未投入大量资源之前,风险的评估

ARM的嵌入式Linux应用程序开发设计

ARM的嵌入式Linux应用程序开发设计 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux 源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。1ARM处理器及开发板在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。 1 ARM处理器及开发板 在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一商中有19家是ARM的用户。ARM系列芯片已经被广泛的应用于移动电活、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。ARM已成为业界实际的RISC芯片标准。 ARM系列处理器根据各自特点应用于不同领域。从应用的角度上ARM芯片选择的一般原则:MMU;处理器速度;内置存储器容量;USB接口;GPIO数量;中断控制器;IIS(integrate interface ofsound)音频接口;nWAIT信号; RTC(real timeclock);LCD控制器;PWM输出等各项指标。 本文使用的是ARM9,其性能远远高过ARM7。开发板使用的是广州斯道信息技术有限公司的开发板,中央处理器是三星公司的S3C2410。ARM9具有以下特点:5级流水线;采用哈佛结构;高速缓存和写缓存的引入;支持MMU。 2 嵌入式Linux系统 嵌入式操作系统是嵌入式应用软件的基础和开发平台,它的出现解决了嵌入式软件开发标准化的难题。嵌入式系统具有操作系统的最基本的功能。目前主流的嵌入式系统有以下儿种:Linux、VxWorks、QNX、Windows CE、Palm OS。 嵌入式Linux操作系统具有一些独特的优势:层次结构及内核完全开放;强大的网络支持功能;具备一整套工具链;广泛的硬件支持特性。 嵌入式Linux系统有很多种。本文使用的是Red Hat9操作系统。 在安装有Windows和Linux双系统的PC上,系统会以Linux的GRUB作为引导装入器来选择启动二者。此时若直接删除Linux分区,会导致系统无法启动

ARM开发软件SDT使用方法_图文.

ARM开发软件使用教程 说明:本文是ARM开发的一些经验总结,以EV44B01.2开发板为例,给出入门上手的最基础知识。 一、安装SDT2.51 点击SDT2.51安装程序中的setup.exe,出现如下安装界面: 一路点击next继续,一般默认设置就行了,不需作任何修改,最后完成安装,假设安装在了C:\ARM251下面; 二、启动SDT2.51 安装完毕,点击程序组中的ARM Project Manager启动主程序: 之后出现主程序界面如下:

三、利用模板创建自己的项目 很多初学者会遇到这样一个问题:自己写了程序,编译也通过了,结果怎么也生成不了二进制格式的目标代码(*.bin)。如何生成目标代码需要参考SDT2.51安装文件夹pdf中的userguide.pdf,在它的392页有详细说明,教你怎么Converting ARM linker ELF output to binary ROM formats。 为了减少大家的麻烦,这里提供一个模板Project,你打开这个Project,然后点击菜单File下的Save As Template: 然后在弹出的窗口中随意选择一个目录下,新建一个自己的文件夹,随便取一个Project名称,确认即可在主程序上出现新Project界面。现在可以在刚才建立的文件夹下面编辑代码,包括汇编代码和C程序代码。注意汇编代码必不可少,它是用来进行系统初始化和C程序入口的,这些范例代码可以在三星网站去下载,网上也有很多相关资源。

四、添加自己的源码 点击菜单Project下的Add File To Project……,在弹出的窗口中,浏览自己的Project文件夹下面的程序代码,将代码添加到创建的项目。这时依次点击rom、debug、Sources前面的十字盒,就会看到自己刚才添加成功的代码,双击任何一个代码文件就可以打开它进行编辑: 五、修改SDT2.51设置以生成Flash代码 过来刚才一关,还有一只拦路虎,很多朋友是在这里没设置对,导致屡屡失败,信心大失!SDT2.51代码生成是有一个代码定位的,以我们提供的EV44B01.2开发板为例,启动Flash片选引脚是接在nGCS0的,它的地址空间是从0X0000000开始的。如果你要将代码烧写到这片Flash,那么必须正确设置SDT2.51,使它将目标代码定位在0X0000000,设置过程如下: 先单击一下主程序窗口ROM下的Debug,然后点击如下菜单中的set: 弹出如下窗口:

周立功-ARM嵌入式系统基础教程课后习题答案11

第一章 思考与练习 1、举出3个书本中未提到的嵌入式系统的例子。 答:红绿灯控制,数字空调,机顶盒 2、什么叫嵌入式系统 嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系 统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 3、什么叫嵌入式处理器?嵌入式处理器分为哪几类? 嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。 嵌入式微处理器(Embedded Microprocessor Unit, EMPU) 嵌入式微控制器(Microcontroller Unit, MCU) 嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP) 嵌入式片上系统(System On Chip) 4、什么是嵌入式操作系统?为何要使用嵌入式操作系统? 是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。 其次,提高了开发效率,缩短了开发周期。再次,嵌入式实时操作系统充分发挥了32 位CPU 的多任务潜力。 第二章 1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务是什么? 项目的生命周期一般分为识别需求、提出解决方案、执行项目和结束项目4 个阶段。 识别需求阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。 提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。 执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定期监控进展, 分析项目偏差,采取必要措施以实现目标。 结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系统交接给维护人员;结清各种款项。 2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险? 在一个项目中,有许多的因素会影响到项目进行,因此在项目进行的初期,在客户和开发团队都还未投入大量资源之前,风险的评估可以用来预估项目进行可能会遭遇的难题。 需求风险;时间风险;资金风险;项目管理风险 3、何谓系统规范?制定系统规范的目的是什么? 规格制定阶段的目的在于将客户的需求,由模糊的描述,转换成有意义的量化数据。 4、何谓系统规划?为何要做系统规划 系统规划就是拟定一个开发进程,使项目在合理的进程范围中逐渐建构完成。其目地是让客户可以进一步地掌握系统开发的进程,并确定检查点,以让双方确定项目是否如预期中的进度完成。 5、为什么在项目结束前需要进行项目讨论? 项目的讨论一个项目进行的反馈机制。通过这一个程序,项目团队的经验才可以被记录 下来,也就是说,这是一个撰写项目历史的过程。 第三章 1、ARM7TDMI中的T、D、M、I的含义是什么? 64 位乘法指令(带M 后缀的)、支持片上调试(带D 后缀的)、高密度16 位的Thumb 指令机扩展(带T 后缀的)和EmbededICE 观察点硬件(带I 后缀的) 2、ARM7TDMI采用几级流水线?使用何种存储器编址方式? 三级流水线(取指译码执行);使用了冯·诺依曼(V on Neumann )结构,指令和数据共用一条 32 位总线。 3、ARM处理器模式和ARM处理器状态有何区别? 处理器模式指的是处理器在执行程序时在不同时刻所处的不同状态,处理器状态指的是处理器当前所执行的指令集。 4、分别列举ARM的处理器模式和状态。 状态: ARM 状态32 位,这种状态下执行的是字方式的ARM 指令

ARM开发教程之ARM体系的嵌入式系统BSP的程序设计

ARM开发教程之ARM体系的嵌入式系统 BSP的程序设计 简介: ARM公司在32位RISC的CPU开发领域不断取得突破,其结构已经从V3发展到V6。 BSP(Board Support Package)板级支持包介于主板硬件和操作系统之间,其功能与PC 机上的BIOS相类似,主要完成硬件初始化并切换到相应的操作系统。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说,尽管实现的功能一样,可是写法和接口定义是完全不同的。另外,仔细研究所用的芯片资料也十分重要,例如尽管ARM在内核上兼容,但每家芯片都有自己的特色。所以这就要求BSP程序员对硬件、软件和操作系统都要有一定的了解。 本文介绍基于ARM体系的嵌入式应用系统初始化部分BSP的程序设计。本文引用的源码全部是基于HMS320C7202芯片设计,并已成功运行。 1 ARM开发教程之初始化过程 尽管各种嵌入式应用系统的结构及功能差别很大,但其系统初始化部分完成的操作有很大一部分是相似的。嵌入式系统的启动流程如图1所示。 1.1 设置入口指针 启动程序首先必须定义指针,而且整个应用程序只有一个入口指针。一般地,程序在编译链接时将异常中断向量表链接在0地址处,并且作为整个程序入口点。入口点代码如下: ENTRY(_start);开始 1.2 ARM开发教程之设置异常中断向量表 ARM要求中断向量表必须放置在从0开始、连续8×4字节的空间内。各异常中断向量地址以及中断的算是优先级如表1:

表1 各异常中断的中断向量地址以及中断的处理优先级 中断向量地址异常中断类型异常中断模式优先级(6最低) 0x0 复位特权模式(SVC)1 0x4 未定义中断未定义指令中止模式(Undef) 6 0x8 软件中断(SWI)特权模式(SVC)6 0x0c 指令预取中止中止模式5 0x10 数据访问中止中止模式2 0x14 保留未使用未使用 0x18 外部中断请求(IRQ)外部中断(IRQ)模式4 0x1c 快速中断请求(FIQ)快速中断(FIQ)模式 3 每当一个中断发生后,ARM处理器便强制把程序计数器(PC)指针置为向量表中对应中断类型的地址值。因为每个中断向量仅占据放置1条ARM指令的空间,所以通常放置1条跳转指令或向程序计数器(PC)寄存器赋值的数据访问指令,使程序跳转到相应的异常中断处理程序执行。如果异常中断处理程序起始地址小于32MB,使用B跳转指令;如果跳

基于ARM的嵌入式软件开发的研究

题目(基于ARM的嵌入式软件开发的研究) 院(系)名称信息工程学院 专业名称计算机科学与技术 学生姓名易国亮 学生学号1412210248 指导老师韩贝 2017年7月2日

摘要 嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备,ARM作为一种嵌入式系统处理器,以高性能、低功耗、低成本等优点占领了大部分市场。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等部分组成,用于实现对其他设备的控制、监视或管理等功能。 本文主要介绍了基于ARM-Linux的嵌入式系统的开发利用、嵌入式系统的概念、组成及嵌入式系统上的应用程序,简述了嵌入式系统的开发流程,最后预测了嵌入式系统的发展前景和发展方向。 关键词:ARM,嵌入式,Linux,嵌入式系统

Based on ARM embedded software development research Abstract Embedded system to control, monitor or auxiliary equipment, machines, or for the operation of the plant equipment, ARM processor, as a kind of embedded system, with high performance, low power consumption, low cost advantages, such as occupied most of the market. It usually consists of embedded microcontroller processor, peripheral hardware, embedded operating system and user application components, such as used to implement the control of the other devices, such as monitoring or management function. Based on ARM - Linux is mainly introduced in this paper the concept of development and utilization of the embedded system, embedded system, composition and application of embedded system, this paper expounds the development process of embedded system, finally forecasts the development prospect and development direction of the embedded system. Keywords:ARM, embedded Linux, embedded systems

ARM开发调试教程.

ARM开发调试教程 作者:李希岗 创建日期:2003年5月20日 修改日期:2003年5月20日 版本:1.0 说明:本文是我学习ARM开发以来的一些经验总结,以自己设计的S3C44B0X板为例,给出我调试开发ARM开发板的一些最基础知识。我只是在自己的开发板调试过并且经验有限,有些知识只能做为参考,不一定准确,就算给大家一个“例程”吧,如果大家有不同意见,希望多多指正! 硬件篇 (一)开发板的整体架构 我设计的开发板是在三星44B0 demo板的基础上,参考网络上相关的资料,加入我的思想开发的。以下是该开发板的整体架构: (二)开发板的焊接 贴片式元器件的拆卸、焊接宜选用200~280℃调温式尖头烙铁。 贴片式电阻器、电容器的基片大多采用陶瓷材料制作,这种材料受碰撞易破裂,因此在拆卸、焊接时应掌握控温、预热、轻触等技巧。 控温是指焊接温度应控制在200~250℃左右。 预热指将待焊接的元件先放在100℃左右的环境里预热1~2分钟,防止元件突然受热膨胀损坏。 轻触是指操作时烙铁头应先对印制板的焊点或导带加热,尽量不要碰到元件。 另外还要控制每次焊接时间在3秒钟左右,焊接完毕后让电路板在常温下自然冷却。 以上方法和技巧同样适用于贴片式晶体二、三极管的焊接。 贴片式集成电路的引脚数量多、间距窄、硬度小,如果焊接温度不当,极易造成引脚焊锡短路、虚焊或印制线路铜箔脱离印制板等故障。拆卸贴片式集成电路时,可将调温烙铁温度调至260℃左右,用烙铁头配合吸锡器将集成电路引脚焊锡全部吸除后,用尖嘴镊子轻轻插入集成电路底部,一边用烙铁加热,一边用镊子逐个轻轻提起集成电路引脚,使集成电路引脚逐渐与印制板脱离。用镊子提起集成电路时一定要随烙铁加热的部位同步进行,防止操之过急将线路板损坏。 换入新集成电路前要将原集成电路留下的焊锡全部清除,保证焊盘的平整清洁。然后将待焊集成电路引脚用细砂纸打磨清洁,均匀搪锡,再将待焊集成电路脚位对准印制板相应焊点,焊接时用手轻压在集成电路表面,防止集成电路移动,另一只手操作电烙铁蘸适量焊锡将集成电路四角的引脚与线路板焊接固定后,再次检查确认集成电路型号与方向,正确后正式焊接,将烙铁温度调节在250℃左右,一只手持烙铁给集成电路引脚加热,另一只手将焊锡丝送往加热引脚焊接,直至全部引脚加热焊接完毕,最后仔细检查和排除引脚短路和虚焊,待焊点自然冷却后,用毛刷蘸无水酒精再次清洁线路板和焊点,防止遗留焊渣。 检修模块电路板故障前,宜先用毛刷蘸无水酒精清理印制板,清除板上灰尘、焊渣等杂物,并观察原电路板是否存在虚焊或焊渣短路等现象,以及早发现故障点,节省检修时间。 一点点建议:建议您先焊接一些主要的器件,比如说S3C44B0﹑SST39VF160﹑HY57V641620﹑JTAG ﹑复位电路﹑电源部分,这样您焊接好后,就可以进行FLASH的直接烧写,确定FLASH的功能是否正确。(三)开发板电源调试 焊接过后的电路板,很可能存在短路﹑虚焊的情况,如果你此时直接通入电源的话,很可能造成主芯片的发热和烧毁,我已经出现这样的情况了,焊接好电路后,直接通入电源,FLASH就开始发热,直到烫手…此时一定不要轻举妄动,都花一点时间测试电源部分的正确。 比如测试S3C44B0的电源是否正确,包括+3.3V和+2.5V,如果不正确,立刻进行检测,看是否有错误的情况。应该接电源的脚分别如下: 接+3.3V的引脚:9脚﹑47脚﹑125脚 接+2.5V的引脚:138脚﹑109脚﹑62脚﹑34脚﹑21脚

ARM嵌入式系统基础教程第二版课后习题答案

第1章嵌入式系统概述 (1)举出3个本书中未提到的嵌入式系统的例子。 答:键盘、鼠标、扫描仪。 (2)什么叫嵌入式系统? 答:嵌入到对象体系中的专用计算机应用系统。 (3)什么叫嵌入式处理器?嵌入式处理器分为哪几类? 答:嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。分为3类:1.注重尺寸、能耗和价格;2.关注性能;3.关注全部4个需求——性能、尺寸、能耗和价格。 (4)什么是嵌入式操作系统?为何要使用嵌入式操作系统? 答:嵌入式操作系统是操作系统的一种类型,是在传统操作系统的基础上加入符合嵌入式系统要求的元素发展而来的。原因:1.提高了系统的可靠性;2.提高了开发效率,缩短了开发周期。3.充分发挥了32位CPU的多任务潜力。 第2章ARM7体系结构 1.基础知识 (1)ARM7TDMI中的T、D、M、I的含义是什么? 答:T:高密度16位Thumb指令集扩展;D:支持片上调试;M:64位乘法指令;I:Embedded ICE硬件仿真功能模块。 (2)ARM7TDMI采用几级流水线?使用何种存储器编址方式? 答:3级;冯·诺依曼结构。 (3)ARM处理器模式和ARM处理器状态有何区别? 答:ARM处理器模式体现在不同寄存器的使用上;ARM处理器状态体现在不同指令的使用上。 (4)分别列举ARM的处理器模式和状态? 答:ARM的处理器模式:用户模式、系统模式、管理模式、中止模式、未定义模式、中断模式、快速模式;ARM的处理器状态:ARM状态、Thumb状态。 (5)PC和LR分别使用哪个寄存器? 答:PC:R15;LR:R14。 (6)R13寄存器的通用功能是什么? 答:堆栈指针SP。 (7)CPSR寄存器中哪些位用来定义处理器状态?

ARM嵌入式系统开发综述.

视听研究所 主页:论坛: 所有资料均收集于各网站。 若您认为有关资料不适合公开,请联系newvideo@https://www.wendangku.net/doc/a83335197.html, 我们会第一时间删除。 感谢各位网友的无私奉献和支持! 加密时间:2008-2-1 获取更多权威电子书请登录 ARM 嵌入式系统开发综述 ARM 开发工程师入门宝典 获取更多权威电子书请登录 前言 嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件是整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个

系统的控制核心,提供人机交互的信息等。所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU 或者SOC 器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OS porting和应用程序的开发等,与此同时,软件中断调试和实时调试、代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。 嵌入式系统开发的每一个环节都可以独立地展开进行详细的阐述,而本文的出发点主要是为嵌入式开发的初学者者提供一个流程参考。因为对于初学者在面对一个嵌入式开发项目的时候,往往面临着诸多困难,如选择什么样的开发平台?什么样的器件类型?在进行编译时怎样实现代码优化?开发工具该如何选择和使用?在进行程序调试时应该注意那些问题以及选择什么样的嵌入式OS 等等。希望通过本文,能帮助初学者了解有关ARM 嵌入式系统开发流程。 获取更多权威电子书请登录 目录 前言 (2) 1 嵌入式开发平台 (4) 1.1 ARM的开发平台: (4) 1.2 器件选型 (7) 2 工具选择 (11) 3 编译和连接 (13) 3.1 RVCT的优化级别与优化方向 (16) 3.2 Multifile compilation (21) 3.3调试 (22)

ARM入门最好的文章,适合菜鸟.

我自己在学arm7,不小心在网上看到这篇文章,内容如题,自我感觉他写的不错,因此帖上来供菜鸟们参考,高手就不用看了 该文章作者不详,我在此只转载未做任何修改: 1.抓住51开发ARM 这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑? 他们不愿意说有他们自己的理由,没有人强求,靠自己好了。 我自己个人的观点:51是一个基础,而且还很重要,这是再我看了ARM之后感觉到的。它可以加速你的ARM学习速度,真得!不相信你试一试好了。 凡是要求一个速度、效率,不要做一些无用功,抓紧身边的每一个一分钟,人是活的,东西(知识、书)是死得,想要做的事情因此就简单了。 2.我在网上看到了一篇很不错的ARM文章,粘贴过来,为了和像我一样在很少有人帮助的情况下,自学ARM 的难兄难弟们。 “ARM怎么入门”。我不是高手,仍然是菜鸟。 但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。 首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。 所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵 以下问题常被问到,我就想到哪说到哪吧。 一首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。 广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。 客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。

从51到ARM编程快速入门教程精华.

从51到ARM编程快速入门教程精华 开发环境:KeilMDK 3.5 硬件平台:STM32开发板,IC 是 STM32F103VET6 调试工具:JLINK V8 实验目标:LED 接在 PB5 ,高电平点亮 (一)新建 keil 工程 IC选择 ST 公司的 STM32F103VE,keil提示是否copy 启动文件,选择是你有没有读过这个启动头文件? 51 也是同样的启动文件,51的那个启动文件有没有读过?你知道头文件里面做了什么吗? C语言真的从 main 函数开始吗?运行时库是什么?这些资料从什么地方知道?keil编译器的行为? (如果你说头文件是汇编的,没有必要看,那我当我没说) 例如启动文件里面有这么一句,我的问题是 __main 这个标号在哪里实现的,注意,这里肯定不是 main 函数 这里跳到哪里去了?还有个问题 [WEAK] 这里是什么意思?有什么用????Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main LDR R0, =__main BX R0 (二)新建一个 main.c 并且写一个 main函数,什么都不做,这和51一样了。void main(void) { while (1) { } } 然后因为我需要调试,则设置jlink调试器,在项目属性里面 Debug 标签,Use J-LINK/J-TRACE ,然后到utilities 标签,同样选择J-LINK /J-TRACK ,并且选择Setting 按钮,里面的 Programming Algorithm还是空的,表示keil 不知道目标是什么,我添加一个 STM32F10X High-density Flash ,问题,为什么是High-desity ?依据是什么???全部确认返回。这个时候已经可以编译,开发板上电,已经可以下载仿真的,虽然程序什么都没有写。 (三)既然硬件,仿真器,调试都准备好了,接着就开始写程序了。 我一直推荐新手花钱买学习板和仿真器,因为可以排除硬件的问题,让初学者集中精力去写程序,而不用怀疑硬件有问题,这点很重要。这阶段主要是看书,了

嵌入式ARM期末考试试卷及复习题教学内容

一、填空题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。 1、一般而言,嵌入式系统的构架可以分为4个部分:分别是(处理器)、存储器、输入/输出和软件,一般软件亦分为操作系统相关和(应用软件)两个主要部分。 2、根据嵌入式系统使用的微处理器,可以将嵌入式系统分为嵌入式微控制器,(嵌入式微处理器),(嵌入式DSP 处理器)以及片上系统。 3、操作系统是联接硬件与应用程序的系统程序,其基本功能有(进程管理)、进程间通信、(内存管理)、I/O 资源管理。 4、从嵌入式操作系统特点可以将嵌入式操作系统分为(实时操作系统)和分时操作系统,其中实时系统亦可分为(硬实时操作系统)和软实时系统。 5、内核负责管理各个任务,或者为每个任务分配CPU时间,并且负责任务之间的(通信),内核的基本服务是(任务切换)。 6、嵌入式开发一般采用(宿主机/目标机)方式,其中宿主机一般是指(PC机/台式机)。 7、哈佛体系结构数据空间和地址空间(分开),ARM7TDMI采用(冯诺依曼体系)的内核架构,ARM920T采用(哈佛)的内核架构。 8. ARM7TDMI采用(3)级流水线结构,ARM920TDMI采用(5)级流水线。 9 .按操作系统的分类可知,Dos操作系统属于顺序执行操作系统,Unix操作系统属于(分时)操作系统,VxWorks 属于(实时嵌入式)操作系统。 10、ARM7TDMI中,T表示支持16位Thumb指令集,D表示(在片可调试),M表示内嵌乘法器Multiplier,I表示(嵌入式ICE),支持在线断点和调试。 二、选择题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。 1、要使CPU能够正常工作,下列哪个条件不是处理器必须满足的。( D ) (A) 处理器的编译器能够产生可重入代码(B)在程序中可以找开或者关闭中断 (C) 处理器支持中断,并且能产生定时中断(D)有大量的存储空间 2、下面哪种操作系统最方便移植到嵌入式设备中。(D) (A) DOS (B)unix (C) Windows xp (D)linux 3、下面哪个选项不是SUB设备的特点。( B ) (A) 串行通信方式(B)不可热拨插 (C) 分HOST、DEVICE和HUB (D)通信速率比RS232快 4、下面哪种嵌入式操作系统很少用于手机终端设备上。(C) (A) Symbian (B)WinCE (C) uc/os (D)linux 5、以下哪项关于SRAM和DRAM的区别是不对。(A) (A) SRAM比DRAM慢(B)SRAM比DRAM耗电多 (C) DRAM存储密度比SRAM高得多(D)DRM需要周期性刷新 6、uc/os操作系统不包含以下哪几种状态。(C) (A) 运行(B)挂起 (C) 退出(D)休眠 7、0x07&0x11的运算结果是。( A ) (A) 0x01 (B)0x11 (C) 0x17 (D)0x07 8、以下哪种方式不是uc/os操作系统中任务之间通信方式。(C) (A) 信号量(B)消息队列 (C) 邮件(D)邮箱 9、以下哪种方式不是文件系统的格式。(B) (A) FAT (B)DOS (C) NTFS (D)Ext 10、在将uc/os操作系统移植到ARM处理器上时,以下哪些文件不需要修改。( A ) (A) OS_CORE.C (B)include.h (C) OS_CPU.H (D)OSTaskInit 2. 下面哪点不是嵌入式操作系统的特点。( C )

一种基于ARM的嵌入式系统开发的方案详细讲解

一种基于ARM的嵌入式系统开发的方案详细讲解 1 背景介绍在日益信息化的社会中,各种各样的嵌入式系统已经全面渗透到日常生活的每一个角落。嵌入式系统的功能越来越复杂,这就使得一个嵌入式系统产品从市场需求立项到方案选择、样机研制、定型量产所需要的开发费用越来越多,所需开发时间越来越长。因此,高效的嵌入式系统设计方法就显得尤为重要。 1.1 传统的嵌入式系统设计方法 嵌入式系统开发的关键就是对核心部分进行功能验证。传统的验证方法是建模模拟和制作目标板评估。 通过建模来进行功能验证存在不足。首先就是耗时和准确性互相矛盾。建立高层次的模型需要的时间短,但是模拟不够准确。相反,低层次的模型可以达到满意的评估效果,但是建模耗时长。其次,建模模拟是静态的过程,不能很好地反映系统实际运行的情况。好的目标板,各部分连接已经固定。如果需要改动部分连接,只能重新设计制版。这样一来就会大大延长产品的上市时间,还会增加开发费用。新推出的嵌入式系统产品,开始设计时比较难把所有的技术细节考虑清楚,有时甚至是边设计边修改性能指标,因此直接制作专用的目标板原型已经不太适合复杂的嵌入式系统产品的设计。 1.2 嵌入式系统模块化设计方法 嵌入式系统设计要求做到可测性、高效性和灵活性。目前,嵌入式系统物理尺寸越来越小,功能越来越复杂。为了方便调试、维护系统,完全可测显得极为重要。另一方面,模块化的设计方法越来越引起人们的关注。模块化设计方法将复杂的系统合理地划分出不同的功能模块,然后充分利用已有的模块,设计新的模块,最后将这些模块连接起来组成目标系统。模块化的设计方法减少全新的设计、降低开发难度、节省开发成本、缩短开发时间,是一种高效的嵌入式系统设计方法。另外,各个模块连接的灵活性是非常重要的,它直接决定模块的组合能力。 2 基于ARM核的快速原型化平台嵌入式系统硬件有如下特点: 1、嵌入式硬件以嵌入式处理器为核心。嵌入式处理器的种类众多,功能各异。

ARM入门及嵌入式开发入门.

ARM 入门及嵌入式开发入门 1. 抓住51开发ARM 这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑? 他们不愿意说有他们自己的理由,没有人强求,靠自己好了。 我自己个人的观点:51是一个基础,而且还很重要,这是在我看了ARM 之后感觉到的。它可以加速你的ARM 学习速度,真得!不相信你试一试好了。 凡事要求一个速度、效率,不要做一些无用功,抓紧身边的每一个一分钟,人是活的,东西(知识、书)是死得,想要做的事情因此就简单了。 2. 我在网上看到了一篇很不错的ARM 文章,粘贴过来, 为了和像我一样在很少有人帮助的情况下,自学ARM 的难兄难弟们。 “ARM 怎么入门”。我不是高手,仍然是菜鸟。 但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。 首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。 所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵

以下问题常被问到,我就想到哪说到哪吧。 一. 首先说说ARM 的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。 广义的嵌入式无非几种:传统的什么51、AVR 、PIC 称做嵌入式微控制器;ARM 是嵌入式微处理器;DSP ;FPGA 。 客观的讲,工作需求量上DSP 的需求比ARM 要多,而ARM 和FPGA 差不多。 DSP 因为数字处理与通信领域的空前发展而火暴,小到MP3摄像头,大到我们军品里的控制器,应用面很广。 FPGA 的兄弟一般做ASIC (特殊芯片设计,好象是这么翻译的)。而ARM 单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM 公司的战略,厉害!!很佩服他们的战略眼光!! 值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM 硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM 开发优先”。写的多的是什么?“嵌入式LINUX ”到这相信大家看出来了吧,需要的是硬件中的软件。 二. ARM是硬件还是软件 很难说,ARM 是硬件,LINUX 是软件。ARM 的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM 公司的战略,再次佩服。 实际中的LINUX 的开发工作更多,更耗时。从这方面说ARM 应该算是软件了。

ARM教程.

ARM开发软件使用教程 作者:龚俊 Email:gongjun98@https://www.wendangku.net/doc/a83335197.html, QQ:63505043 创建日期:2003年1月21日 修改日期:2003年1月24日 版本:1.2 说明:本文是根据我学习ARM开发以来的一些经验总结,以自己设计的S3C44B0X板为例,给出入门上手的最基础知识。有些东西只是个人的主观认为,不一定准确,算作抛砖引玉吧,欢迎大家指正!Emai或QQ联系,希望广交各位朋友,共同提高! 一、安装SDT2.51 点击SDT2.51安装程序中的setup.exe,出现如下安装界面: 一路点击next继续,一般默认设置就行了,不需作任何修改了,最后完成安装,我是安装在C:\ARM251下面; 二、启动SDT2.51 安装完毕,点击程序组中的ARM Project Manager启动主程序:

之后出现主程序界面如下: 很多初学者会遇到这样一个问题:自己写了程序,编译也通过了,结果怎么也生成不了

二进制格式的目标代码(*.bin)。如何生成目标代码需要参考SDT2.51安装文件夹pdf中的userguide.pdf,在它的392页有详细说明,教你怎么Converting ARM linker ELF output to binary ROM formats。 为了减少大家的麻烦,我提供一个模板Project,你打开我这个Project,然后点击菜单File下的Save As Template: 然后在弹出的窗口中随意选择一个目录下,新建一个自己的文件夹,随便取一个Project 名称,确认即可在主程序上出现新Project界面。现在可以在刚才建立的文件夹下面编辑代码,包括汇编代码和C程序代码。注意汇编代码必不可少,它是用来进行系统初始化和C程序入口的,这些范例代码可以在三星网站去下载,网上也有很多相关资源,如果找不到也可以找我要。 四、添加自己的源码 点击菜单Project下的Add File To Project……,在弹出的窗口中,浏览自己的Project文件夹下面的程序代码,将代码添加到创建的项目。这时依次点击rom、debug、Sources前面的十字架,就会看到自己刚才添加成功的代码,双击任何一个代码文件就可以打开它进行编辑:

ARM单片机入门.

ARM入门最好的文章(转自21ic) 一首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。 广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。 客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。 DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。 FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!! 值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。写的多的是什么?“嵌入式LINUX”到这相信大家看出来了吧,需要的是硬件中的软件。 二ARM是硬件还是软件 很难说,ARM是硬件,LINUX是软件。ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。 实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。 在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬

件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 三要不要买开发板买哪家 我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。 1 买 买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然我把接口都外引了,还做了个20X18的LCD背板,板子比较大。总体下来元件+LC D屏+PCB=11XX块!够2410的了。 再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。 2 做 自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、GPRS模块、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD 改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。 当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。 再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。

相关文档
相关文档 最新文档