两个月速通嵌入式开发技术是可能的

读大学时学过计算机组成原理、操作系统、计算机网络等等课程,但是大学生都知道,上完那些课只是懂一点皮毛而已,打打酱油就过去了。特别是对于软件工程师,一定要多实践、多思考才行。理论知识显得并没有搞硬件或者偏硬件开发的那么重要,因为软件的重点在于逻辑和算法。

个人认为,在中、高级阶段,偏硬莫非就是一种知识活儿,而偏软莫非就是一种体力活儿……只有到达专家阶段才能够有所突破。对比一下培训机构的软件开发和硬件开发的培训费用就知道了,一般的软件培训(Java/C++/PHP/C#),收费大概是一个月,强调是“一个月”,一般的培训都是2~6个月,所以总费用少则几千,多则上万。而嵌入式的培训费则是按天计算,1天大概,强调是“1天”,一般的培训是一周,也有培训半年的,但是费用也相当高!由此可见,嵌入式的课程含金量很高。软件开发,特别是网站开发,比嵌入式辛苦多了。

如果硬件和软件两者皆不了解,那么推荐你选择偏硬件的方向,实惠很多。综合其他前辈的经验,嵌入式开发是个不错的工作,应该比公务员都还好,但要学好大学里面的课程,比如数字逻辑、电路分析、微机原理、单片机等等,理论很重要。理论面前,男女平等。

静下心来看书、做项目,你会发现有些东西确实可以在短短两、三个月内学通,即使说你今年做LinuxC/C++开发,明年做JavaEE、Android开发,后年去做硬件开发、驱动开发,那都是没问题的。问题是,你喜欢做什么?你想要达到哪种境界?

嵌入式开发知识总结

一、基础知识

目前流行的嵌入式操作系统有:linux、uC/OS、WindowsCE、VxWorks、PalmOS和QNX。其中VxWorks实时性很强,最稳定、可靠,但价格昂贵,而其他的都有各自的优点。

ARM公司(原名AdvancedRISCMachine),主要是研发ARM系列微处理器(出售IP,即知识产权),目前全世界有几十家著名的半导体公司都使用ARM公司的授权,包括IBM、Intel、SONY、LG等。ARM微处理器已成为RISC标准。目前基于ARM核的处理器有以下几种:

ARM7/9Thumb家族

ARM9/10E家族

ARM11家族

ARMCortex家族

SecurCore家族

OptimoDEDataEngine家族

MPCoreMultiprocessors家族

Intel公司的StrongARM(相当于ARM8)和Xscale。

ARM7处理器采用了ARMV4T(冯诺依曼)体系结构。目前主流的ARM7内核是ARM7TDMI(最常用)、ARM7TDMI-S、ARMT和ARM7EJ-S。T代表支持Thumb指令集,D代表支持片上调试,M代表内嵌硬件乘法器,I代表支持片上断点和调试点。

ARM9处理器采用改进型哈佛体系结构。采用五级流水处理及分离的Cache结构。常见的系列有:ARMT、ARMT和ARMT。

Xscale是基于ARMv5TE体系结构,是一款性能全、性价比高、功耗低的处理器。支持16位的Thumb指令和DSP指令集。

Cortex,按传统的命名方法,Cortex可以看做ARM12。ARM公司推出了Cortex-A/R/M三个系列。

还有ARM9E、ARM11、MPCore、StrongARM等,略。

比较经典的是基于三星ARM9的S3C的开发板,这个系列的资料很多。还有基于三星ARM11的S3C开发板,可以跑android。

ARM体系结构的变种

Thumb指令集(T变种)是将ARM指令集重新编码形成的一个子集。常见的ARMv5T使用v2版的Thumb指令集。

此外,还有长乘法指令(M变种),增强型DSP指令(E变种),Java加速器Jazelle(J变种)和ARM媒体功能扩展(SIMD变种)。

二、开发流程

不管系统多么复杂,一般都是以最小系统为基础,通过加入所需的功能模块构成的。最小系统大概包括电源电路、时钟电路、复位电路、外扩的存储系统和调试接口。

1、硬件设计

首先要进行实验板硬件资源规划,例如在最小系统的基础上扩充I2C存储器、串行接口、网络接口、USB接口、触摸屏接口,以及按键、蜂鸣器等。

然后设计硬件电路,包括电源电路、复位电路、时钟微处理器电路、外部存储器电路电路、网络接口电路等等,这一部分貌似比较有难度。许多公司也都是出售组装好的开发板。

PCB的设计,要考虑到抗高频干扰、信号完整性、差分布线等。焊接好元件之后还要调试电路。

2、软件的移植与开发

软件系统的移植主要包括Bootloader的移植、Linux操作系统的移植(包括内核和文件系统的移植)以及针对实验板的驱动程序的编写等。

1)准备交叉编译工具

2)引导加载程序的移植(例如vivi、U-Boot)

3)内核的移植

4)根文件系统的移植

5)驱动程序的编写

6)其他,例如JTAG测试。

三、移植Linux内核

基本步骤为:

1)获取某一版本的Linux内核源码,根据具体目标平台对内核源码进行必要的改写,主要是修改体系结构相关的部分。

PS:显然,对内核源码的修改很有难度,它既要求开发者对Linux内核结构非常熟悉,对目标平台的硬件结构也非常熟悉,而且要有良好的汇编基础。这一部分的工作一般都是目标平台提供商完成的,而且主要的东西是ARM公司的工程师来完成,由他们提供相关版本的Linux内核的补丁,然后把补丁打到我们所用的Linux内核上,经过必要的配置和交叉编译就行了。所以说,内核的定制和改写难度很大,一般的软件工程师和硬件工程师都很难胜任。

2)打补丁,然后配置内核,调出内核配置界面,选上某些选项或者去掉某些选项,配置选项非常多,而且某些选项之间有关联,所以说这一步比较有难度。下面列出一些配置项,每个配置项都可以选择Y(将该功能编译进内核)、N、M(编译成可以在需要时动态加载的模块)。

Codematurityleveloptions(代码成熟度选项)

Generalsetup(通用设置)

Networkongdeveices(包括很多子选项dummynetdriversupport,PLIPsupport,SCSIdevicesupport等)

3)编译内核,用几个命令就可以编译内核了。#makeclean,#makedep,#makezImage。

4)移植根文件系统,内核编译完之后,可以运行各种命令并支持各种功能的中央处理器,但是如果缺少了内存、硬盘等设备也不能正常运行。根文件系统中存放了Linux系统所需要得各种程序文件,没有这些文件内核无法正常工作。同样,要移植根文件系统需要清楚Linux的运行机制,比较麻烦。所以一般都使用Busybox这个工具。安装配置Busybox,向Busybox添加命令,构造根文件系统,制作根文件系统映像文件(形如initrd.gz)。

5)使用U-Boot制作、下载内核。U-Boot支持uImage格式的内核文件。启动内核,然后使用U-Boot加载根文件系统映像。

四、开发环境的建立

一般宿主机推荐用RedHat9.0,需要宿主机在硬件上有标准串口、并口、网口;软件上具有目标板的Linux内核、ramdisk文件系统映像以及Bootloader。软件的更新通常使用串口或网口,最初的Bootloader烧写是通过JTAG进行的。

首先要在宿主机上建立交叉编译调试的开发环境,许多开发板配有光盘能实现自动安装。用mini







































北京中科专注治疗白癜风
北京中科专注治疗白癜风



转载请注明:http://www.zjiaren.com/txjg/8921.html