嵌入式系统学习开发概述

简介

  下面是嵌入式系统组成图:

  嵌入式微处理器常用种类如下:

  嵌入式操作系统常用种类如下:

  Linux发行版常用种类如下:

职业发展

学习概述

嵌入式系统学习一般可以分为以下几个步骤:

  • 选一块开发板,了解其资源;
  • 进行ARM裸机跑程序;
  • 嵌入式系统定制和移植;
  • 嵌入式系统应用程序开发和移植。

一、选一块开发板,了解其资源

1、系统资源(括号中的是类比PC机的资源)

  • 处理器(CPU)
  • norflash(固态硬盘):容量小,运行速度快,价格高;
  • nandflash(普通硬盘):容量大,运行速度慢,价格低;
  • SD卡(光盘)
  • RAM(内存)
  • LCD(显示屏)

2、接口资源

  • LED
  • USB
  • JTAG
  • 串口
  • ..........

3、启动模式

  不同开发板的存储配置不一样,所以启动的选项不一样。可以通过设置来决定从哪里启动系统(norflash、nandflash、SD卡)。

4、操作系统支持

  • 支持类型:linux、winCE等;
  • 安装位置:norflash太小,一般存储在nandflash或者SD卡中;
  • 安装步骤:具体见第三部分。

二、进行ARM裸机跑程序

1、ARM的3个概念

  ARM的3个概念经常让初学者很困惑,其详解如下:

  • 芯片:(三星)6410、210、2440;
  • ARM内核:A8、arm11、arm9;
  • 指令架构:armv7、armv4;

  其关系是:一种芯片对应一种ARM内核,一种ARM内核对应一种指令架构。

2、为什么要学习ARM裸机

  • 有些项目直接通过ARM裸机即可完成;
  • 之后我们移植嵌入式系统时,需要的bootloader是一个大型裸机程序;
  • 有利于更好地了解硬件驱动的实现,为后面嵌入式内核驱动的编写做准备。

3、开发工具

  在windows下,一般采用MDK或者ADS进行开发,比较简单。如果想要在linux系统(比如红帽)下开发,那就需要用到集成

开发环境Eclipse,进行交叉编译,具体配置如下:

  • 安装交叉工具链arm-linux-gcc(用于编译、链接生成elf格式文件、格式转换为二进制文件、查看elf文件、反汇编等);
  • 安装交叉调试工具arm-linux-gdb,(别忘了调试要用到J-link,所以要安装其驱动程序);
  • 安装Eclipse,并安装插件http://opensource.zylin.com/zylincdt;
  • 打开工程,配置makefile文件(其中采用交叉工具链),进行编译;
  • 选择arm-linux-gdb进行调试,(不过需要对处理器进行初始化,制作初始化脚本程序);
  • 接下来调试程序,即可在Eclipse中看到寄存器的变化。

4、编程语言

  一般有以下两种开发编程语言:

  • 汇编语言:执行效率高,编写复杂;
  • C语言:可读性强,移植性好,调试方便。

  为了结合两种语言的优点,一般会采用混合编程:

  • 汇编调用C函数(在汇编中调用C函数的函数名)
  • C调用汇编函数(调用.S文件中的汇编函数)
  • C内嵌汇编(在C函数中写汇编)

三、嵌入式Linux系统定制和移植

  嵌入式Linux系统组成如下:

  • Bootloader:初始化,启动操作系统;
  • Linux内核:内核已经把驱动文件编译进去了;
  • 根文件系统:编译内核模块,用于存放文件和应用程序。

  至于以上3部分的定制,这里不多说,重点讲一下移植。

  一般选用在windows系统下安装Vmware虚拟机,然后再在虚拟机里面安装好linux发行版系统(作者用的是红帽企业版6),

安装好后,需要给虚拟机里的linux系统配置网络、配置windows和linux系统文件交互功能、安装linux与arm之间的USB传输工具

dnw,以上只是准备工作。

  具体移植步骤如下:

  • 通过JTAG将引导安装程序(supervivi)下载到norflash中;
  • norflash的引导安装程序通过USB下载线将PC机的操作系统下载到内存中;
  • norflash的引导安装程序将内存中的系统烧写到nandflash中。
  • 直接启动操作系统即可。

四、嵌入式系统应用程序开发和移植

  http://blog.csdn.net/crazycoder8848/article/details/22827699

时间: 2024-10-03 08:14:21

嵌入式系统学习开发概述的相关文章

嵌入式系统学习开发指导

本文转自迅为开发板论坛:http://www.topeetboard.com 注:本文章部分参考摘录自:<嵌入式系统Linux内核开发实战指南(ARM平台)> 初级阶段:熟悉基本开发流程和方法阶段. 这一阶段需要掌握的知识和技能包括:1.)嵌入式系统硬件设计流程:2.)嵌入式系统硬件调试:3.)嵌入式系统软件下载.调试.固化:4.)Bootloader编译.移植.裁剪.调试.固化:5.)Linux内核交叉编译环境创建:6.)Linux内核编译:7.)Linux内核下载.调试.固化. 这一阶段需

性命攸关的嵌入式系统 - 典型开发实践

1 生命周期模型 分阶段交付 螺旋型开发 渐进交付 2 计划与管理 充分的预先计划 充分的测试计划 充分的QA计划 严格的变更控制 3 需求 形式化的需求规格 形式化的需求检查 4 设计 架构设计 形式化的架构检查 形式化的详细设计 形式化的详细设计检查 5 构建 结对编程 或 独立编码 正式的check-in手续 正式的代码检查 6 测试与QA 开发者测试自己的代码 测试先行开发 单独的测试小组 单独的QA小组 7 部署 正式的部署过程

嵌入式系统的学习误区和困惑

很多刚开始接触嵌入式系统同学往往有一种眼高手低的心态.认为嵌入式系统很简单.所以有些重要的知识点他们往往会忽略.这使他们很片面的认识了嵌入式系统. 嵌入式系统产品种类繁多,应用领域各异.在第1部分中,把嵌入式系统的应用范围粗略分为电子系统的智能化与计算机应用的延伸两大类.从初学者角度,可能 存在分别从这两个角度片面认识嵌入式系统的问题.因此,一些从电子系统智能化角度认识嵌入式系统的学习者,可能会忽视编程结构.编程规范.软件工程的要 求.操作系统等知识的积累.另一些从计算机应用的延伸角度认识嵌入式

嵌入式系统开发流程

嵌入式系统开发与通用系统的开发有很大的区别.嵌入式系统的开发主要分为系统总体开发.嵌入式硬件开发和嵌入式软件开发3大部分. 在总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器的选型,以更好地满足产品的需求.另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择.往往通过硬件实现会增加产品的成本,但是大大提高产品的性能和可靠性. 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响.开发环境包括嵌入式操作系统的选择以及开发工

嵌入式系统编程和调试技巧

嵌入式系统的开发,软件的运行稳定可靠是非常重要的.在芯片中,软件是没有质量的,但软件的质量可以决定一颗芯片的成败.芯片设计中,性能能否满足设计要求,除了硬件设计.软硬件配合的设计技巧,对于软件来说,编程的一些技术和技巧同样重要. 本文讲述我在芯片固件开发过程中使用的一些编程调试技巧.针对在嵌入式系统开发中常见的问题,如实时系统下的同步问题,动态内存分配的内存泄漏问题,如何在编程阶段预防BUG出现,调试阶段如何及时发现问题和定位问题.总结下经验,目的是开发一个稳定运行的固件,提高开发效率,提高运行

嵌入式系统在工业控制中的应用

摘 要:工业控制是嵌入式系统的应用的重要领域,Linux 系统是嵌入式系统开发的有力工具,本文主要利用Linux系统来具体实现一个嵌入式工业控制系统.同时,所讨论的实时系统的研究,为在一个系统中同时支持多种实时调度方法提供了可能性. 正文:嵌入式技术是21世纪最有生命力的新技术之一,目前已经广泛应用于社会生活的各个方面.嵌入式系统的应用与开发则是当今计算机行业发展的一个热点.现今嵌入式软件的应用与开发的领域主要有:国防.移动通信.电子.办公自动化.机/车顶盒.掌上电脑.手机软件.工业控制.信息家

嵌入式系统设计师

嵌入式系统设计师说白就是编写嵌入式系统的程序员,随着嵌入式系统在越来越多的方面得到运用,嵌入式系统设计师也成为了目前最流行的高薪职业之一,虽然嵌入式系统设计师是目前流行的职业,但也不是是个人都能当的. 嵌入式系统设计师,必须通过相应考试的合格人员,还要根据项目管理和工程技术的实际要求,开发出符合系统总体设计要求的高质量嵌入式系统:具有工程师的实际工作能力和业务水平,这样的人才算是一个真正的嵌入式系统设计师,但是嵌入式系统设计师之间也是有着分别的.例如:一个工作了10年的老嵌入式系统设计师和一个刚

嵌入式系统开发学习(1)

嵌入式系统开发流程 嵌入式系统的一般开发流程如下: 嵌入式操作系统 管理资源 提高系统可靠性 硬件虚拟化 实时性能 多任务 现有的嵌入式操作系统 VxWorks pSOS PalmOS QNX OS-9 LynxOS WindowsCE uC/OS 嵌入式Linux FreeRTOS ARM体系架构 ARM:Advanced RISC Machines ARM处理器共有37个寄存器,分为若干个组(BANK). 大多数数据操作都在寄存器中完成. ARM分类 ARM7: 32bit 冯-诺依曼体系结

《Android深度探索卷一》第一章Android系统移植与驱动开发概述。

<Android深度探索>第一章讲的是Android系统移植与驱动开发概述.这一章节将对Android以及Linux驱动做一个总体的介绍. Android是一个非常优秀的的嵌入式操作系统.经过几年的发展和演进,Android已经形成了非常完善的系统架构.Android的系统架构分为四层,如下图 Android移植可分为两部分:应用移植和系统移植. Android系统移植是指让Android操作系统在某一个特定硬件平台上运行.使一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件