嵌入式系统学习开发概述
Posted steed
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式系统学习开发概述相关的知识,希望对你有一定的参考价值。
简介
下面是嵌入式系统组成图:
嵌入式微处理器常用种类如下:
嵌入式操作系统常用种类如下:
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
以上是关于嵌入式系统学习开发概述的主要内容,如果未能解决你的问题,请参考以下文章
嵌入式Linux应用开发温湿度监控系统——学习paho mqtt的基本操作
嵌入式Linux开发学习rootfs通过ramdisk挂载技巧