嵌入式系统学习开发概述

简介

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

 嵌入式系统学习开发概述_第1张图片

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

嵌入式系统学习开发概述_第2张图片

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

嵌入式系统学习开发概述_第3张图片

  Linux发行版常用种类如下:

嵌入式系统学习开发概述_第4张图片

 

职业发展

 嵌入式系统学习开发概述_第5张图片

 

学习概述

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

  • 选一块开发板,了解其资源;
  • 进行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

转载于:https://www.cnblogs.com/steed/p/7899270.html

你可能感兴趣的:(嵌入式系统学习开发概述)