欢迎转载,Howie原创作品,本文地址:
http://blog.csdn.net/HowieXue/article/details/76696316
谢谢
0、引言
何为嵌入式?
IEEE官方定义:DevicesUsed to Control,Monitoror Assist the Operation of Equipment,Machinery or Plants。
翻译过来就是:用于“控制、监视或者辅助操作机器和设备的装置”。
其实按我理解,嵌入式系统就是“高大上+土豪”版的单片机,因为嵌入式不只带操作系统(OS),并且都是上架构(如ARM)的。其实咱们所用PC机也是一个嵌入式系统,只不过处理器、Bootloader、操作系统都是通用化的Intel系列、BIOS、Windows等;而面向具体应用,就需要根据需求,实现硬件资源和软件操作系统的“私人订制”,无非就是先根据需求硬件选型,然后根据硬件资源去裁剪操作系统,把软件不需要的都去掉,只留有用的,这样保证我们用的系统在达到需求目标的同时,还保证了实时性和稳定性(没有无关因素干扰)并且小型化具有专用性。
再啰嗦几句,假设大家对单片机已经很熟了,举个栗子:对单片机引脚控制,用C编程通过IDE编译个Hex文件,烧写就可以运行实现;那么对嵌入式来说呢,因为处理器引脚太多(如Cortex-A9架构的Exynos4412芯片 有400多引脚),那么自己一个个配(裸机编程)实在麻烦,而且编的程序都与硬件密切相关,没有通用性且很难移植;因此就使用上了操作系统;那么操作系统干了什么呢?其实就是和单片机操作引脚一样,只不过OS将这些操作封装成各种驱动(如GPIO驱动),那么你只要在应用程序上调用这个驱动内的函数,借助OS内核实现机制,就能向单片机一样操作这些引脚,所有嵌入式设计,底层都是这么实现的。
So When to use嵌入式/单片机呢:其实就是看需求,单片机处理能力及其有限,涉及到图像监控处理、网络协议就捉襟见肘了;因此这个逻辑很简单:单片机不能实现的,上嵌入式;并且现在是个嵌入式功能都有成型的solution,特别是Linux的开源,资料成堆成堆的。这也是近年嵌入式火这么快的原因之一吧(物联网、智能硬件)。
以上都是愚见,切入正题:本人不才整理了几个嵌入式比较好的练手项目和小课题,有的是我之前做的项目,有的是网络搜罗,反正都是我个人认为比较综合而且interesting的,这些网上一大堆相关资料,我这里只是提个题目和几个Point,具体内容不赘述,感兴趣直接百度google,希望给大家一个参照,大家有idea都可以相互交流,有机会共同学习。
骚扰方式: Howiexue@gmail.com
1、单片机相关
这里主要是推荐嵌入式相关,所以单片机就只简单提几句
1.1 基于单片机的智能小车、智能机器人制作
对于大学经常参加一些智能车比赛的童鞋,相信已经做吐了。。。小车目前可以算是相关资料最多的练手项目之一,各种脑洞大开的智能车车,你值得拥有~
1.2 基于Arduino的3D打印机制作
需求:使用单片机,通过限位开关和温度等传感器控制步进电机移动、加热头,将打印材料加热挤出后凝固成型。
硬件:Arduino mega2560开发板,3D打印机套件,打印材料,安装工具等
软件:Marlini开源程序,上位机软件Print3D,切片软件(推荐Cura),三维制图软件(推荐犀牛)等。
注:这个项目实现很费事,可谓处处是坑,不只是单片机软硬件知识,还要学三维制图、机械原理等等,期间会遇到一系列问题,但是最终调试完,第一次打出自己想要的东西时,感觉真是此生难忘,所以当时一做就做了三台(下图,其中左面上角是 Prusa I3 型,其余那俩都是Kossel 三角洲)。推荐创客们玩玩,比四轴飞行器好玩多了(也省软妹币)。
3D打印现在是所谓工业4.0的主打,特别是牛炸天的细胞打印(对你没有看错)、器官打印、粉末金属打印等。不过我们做的也就打印些塑料小玩具,现在的SLA光敏树脂打印倒挺不错,能比FDM的快几十倍,只是成本太贵(貌似10w+)。又扯远了。。。咳咳,下面开始划重点:
2、嵌入式Linux相关
嵌入式linux就是在嵌入式硬件平台上使用Linux操作系统。其实嵌入式开发过程就是硬件+软件设计过程,本节推荐的都是在一个目标硬件平台上设计基于linux系统的应用,主要工作一般都是:Bootloader设计与移植、Linux内核裁剪移植、Linux驱动程序开发移植、文件系统制作移植和最后的应用程序开发移植。说了这么多移植它是什么东东?我理解为:拿着别人写好的东西,稍微自己改改放到自己的平台上,其中的“改”和“放”的过程就是移植的过程。这也是嵌入式工程师必须具备的能力,一定要借鉴甚至使用别人做好的,自己闷头写代码只能闭门造车(大神除外)。
推荐硬件平台:友善之臂、飞凌等开发板(开发板自带很多练手项目课题,本文就不再提那些case),架构最好选主流的ARM,像流行的s3c6410(ARM11)、s5pv210(A8)、exynos4412(A9)等。或者自己画板子(使用现有开源出来的修改下,不过成本高,难度大),有兴趣不妨一试,刚开始学习还是老实用开发板吧。
推荐软件平台:Linux2.6以上内核(2.6以下很多系统机制会不同)嵌入式系统,开源中国和ChinaUnix上一堆开源的Linux驱动和小应用,宿主(PC)机最好使用Fedora、Ubuntu系统(虚拟机VMware 9.0以上),Bootloader推荐使用U-Boot;文件系统根据使用的Flash支持,用Busybox制作;人机界面用Qt。
如图:
嵌入式系统层次结构
2.1智能扫地机器人
深藏不露的“扫地僧”,类似壁障设轨智能小车,只不过有更多人性化功能,网上资料+自由发挥吧
2.2 可穿戴类设备:智能头盔
2.3 智能可穿戴类设备:面向空巢老人/病人的智能手环
2.4 物联网智能控制系统:家居、农业、医疗
2.5 基于Linux的嵌入式网络视频监控系统
(详情 请看原文:http://blog.csdn.net/howiexue/article/details/76696316)