设为首页收藏本站

数字电视开发论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

快捷登录

胜天工科技销售各种数字电视信号调制卡胜天工科技销售各种数字电视信号码流卡

【游客、新手、注册会员的区别】 【积分策略和会员晋级说明】 【发帖和附件上传规则】 【如何下载感兴趣的资料】 【如何获取梦游币】 【侵权资料处理及免责说明】
查看: 426|回复: 0

嵌入式系统设计中的四种工作,方方面面都得会!

[复制链接]
  • TA的每日心情
    开心
    昨天 00:00
  • 签到天数: 1973 天

    [LV.Master]伴坛终老

    新浪微博达人勋

    发表于 2016-3-15 19:03:36 | 显示全部楼层 |阅读模式
    分享到:
    消息来自- 北京朝阳
    embed.jpg

    嵌入式系统的学习也是有很多方面的。就嵌入式系统的设计和实现而言,基本上需要四种不同的工作:系统设计工作、硬件设计工作、驱动程序和操作系统移植工作、应用程序设计开发工作。

    1.系统设计工作
    在系统的设计阶段,系统分析师将根据需求确定系统的硬件的基本构成,根据系统的需求选择使用哪种处理器,使用哪种操作系统,使用哪些软件开发工具。系统分析师往往是较为完整的参与过嵌入式系统设计的全过程,对于系统应用的行业较为了解,对于嵌入式系统本身的开发流程十分清楚的人。

    2.硬件设计工作
    系统硬件设计人员需要根据系统分析师的设计结果,进行硬件原理图的设计。通常需要硬件设计人员熟悉嵌入式系统的硬件构成。

    硬件设计人员需要了解常用的嵌入式系统处理器、存储器(Flash,SDRAM)、以太网MAC芯片、音频/视频编解码芯片、电源管理芯片、总线接口电路 (USB,PCI)、液晶显示模块、可编程逻辑器件(FPGA/CPLD)、无线网络通信模块(Bluetooth,WLAN,GPRS)等硬件电路构成元素的基本工作原理、连接使用方法、使用注意事项、基本调试方法等内容。

    在网络上能找到很多公司的评估板的原理图,对于这些原理图要仔细研究,摸清处理器同存储器,网卡,液晶模块等器件的连接方法和原因。通过对这些电路的研究,能够较快地了解整个嵌入式系统的构成,这些电路同实际产品中的电路虽有一定差别的,特别是对于手持设备,这些差别不影响初学者学习嵌入式系统的硬件设计基本构成。

    以上这些知识,往往需要较长时间的学习和积累,需要亲自参与实践。对于刚刚接触嵌入式系统硬件开发的学生来讲,一般不可能全部了解这些知识,但也不会是通通一无所知。

    笔者结合自己开发和教学的经验认为:首先应该选定一款主流且较为简单的嵌入式系统处理器,比如基于ARM7TDMI 内核的AT91M40800,S3C44B0 等嵌入式系统处理器,学习32 位RISC处理器的编程模型,指令集。高校教学中,单片计算机课程一般以8051系列单片为核心讲解,由于现代32位处理器的结构和开发方式同8位单片机有着较大的差别,学习者还是需要花一点力气来研究一下32位处理器的。

    以ARM处理器为例,学习者就需要理解处理器的多种工作模式,备份寄存器,RISC 指令集的特点,MMU 和虚拟地址,中断处理过程等内容。在学习指令集的过程中,最好能够每学习几条指令,就使用这几条指令在模拟器上实验一下,观察处理器执行的结果。这个过程一方面是学习者对于指令本身的学习能够取得一个比较好的效果,另外也是对开发工具本身的一种学习。

    接着,就可以开始学习片上资源的使用和配置方法。这时就需要一个方便使用的开发板,学习者能够通过JTAG仿真器将开发板同调试PC机相连,进行程序的下载,调试。特别是要仔细研究系统的初始化过程和中断处理的过程。在开发过程中如果遇到问题,应自己分析问题产生的原因,通过分析缩小问题可能产生的范围,最终找到问题的所在。最重要的就是要保持一种解决问题的信心,面对困难如何处理,往往能够决定最终系统是否能够调试成功。

    然后,学习者可以开始仔细学习处理器同存储器的连接,存储空间的配置,各种外扩器件,如网卡,AC97声卡的工作原理和使用方法。嵌入式系统硬件设计中往往需要使用可编程器件,学习者还需要一定的时间来学习使用常用的可编程器件(CPLD /FPGA),常用的有Xilinx和Altera公司的产品。进行系统硬件原理图设计,就需要使用原理图设计的EDA工具,常用的EDA 原理图设计工具主要包括Cadence公司的Capture,Protel公司的Protel99SE等。接下来就可以参照评估板的电路图,根据系统的设计要求,开始进行原理图的绘制了。

    在原理图绘制过程中,一定要搞清评估板电路连接的原因,对于一时没有搞清楚的问题切不可蒙混过关。例如,有些处理器的地址线是以字节为单位的,而另一些处理器的地址线则是以两个字节为单位的,当连接16位存储器的时候,切不可想当然的把处理器的A 0 直接连接到存储器的A 0 上面。另外,学生还应具有一定的PCB板图绘制能力,因为在现阶段,很多公司还不能完全把原理图的设计工作和PCB 的绘制工作分开,往往要求硬件设计人员既能进行原理图设计又能进行板图设计。即使是PCB设计和原理图设计分开的公司,也需要原理图设计者能为PCB 的设计者对于不同的信号提出布板要求。

    3.驱动程序和操作系统移植工作
    现代嵌入式系统的开发同传统8位单片机系统的开发相比,一个显著的区别就是嵌入式操作系统的广泛使用。在拿到焊接完毕的电路板,并进行基本的测试后,就要进行驱动程序和操作系统的移植工作了。首先要进行Bootloader的编写和移植工作,Bootloader相当于PC系统的BIOS。对于有些嵌入式操作系统,如uc/OSII没有Bootloader同样可以开发调试。但是对于WindowsCE和嵌入式Linux系统而言Bootloader就是必须的了。

    本文以Windows CE 为例,做一个简要的说明。Windows CE 系统的移植工作主要就是BSP(板级支持包)的开发过程。BSP将具体的硬件差异同操作系统的核心隔离开来,主要由Bootloaer ,OAL(OEMAbstraction Layer)和设备驱动程序三部分组成。WindowsCE系统中Bootloader叫做Eboot,Eboot被写入系统的引导Flash,系统启动时运行Eboot,完成通过网卡将调试PC 机中WindowsCE 操作系统映像下载到目标系统的SDRAM中并开始执行的功能。

    对于一个系统移植人员,首先需要阅读文档,了解WindowsCE系统Bootloader和BSP的基本概念和开发过程。(呵,还要做这工作啊,我还没想到(初学^_^))Windows CE的开发系统Platform Builder提供了详细的文档和例程,开发人员需要仔细的阅读文档和例程,搞清楚各个函数之间的调用关系。在开发过程中的一个重要的步骤就是打通串口,使得目标板能够通过PC机串口向调试PC 机发送数据。由于ARM系统的仿真器比较昂贵,而且操作系统的调试往往不使用JTAG调试器进行单步调试。所以能从串口观察程序的执行过程和结果对于调试就显得十分重要了。

    串口打通之后一个比较棘手的问题就是网卡芯片的调试。刚刚接触嵌入式系统开发的人往往没有直接在寄存器级上使用网卡芯片的经验,而网卡芯片的说明一般都较为简短,这就要求开发者学习一些以太网的基础知识,对以太网的MAC 层有一个基本的认识。另外,各种网络调试(抓包)工具的使用也能大大降低系统调试的难度。系统的OAL需要根据具体硬件的不同做出相应的修改,这个部分可参照文档进行,在调试过程中根据串口的信息分析出错的地方。要充分发挥跨文件字符串搜索工具的功能,在浩如烟海的源文件中找到出错的位置。当然,随着开发者对系统文件目录结构的熟悉和了解,错误定位的速度会不断加快。
    踩过的脚印
    您需要登录后才可以回帖 登录 | 注册 新浪微博登陆

    本版积分规则

    嗨!您好:
    欢迎来到数字电视开发论坛。
    我的名字叫梦梦
    很高兴能够为您服务!
    如果已经注册【立即登录】
    还没有账号请【注册】
    嗨!您好:
    欢迎来到数字电视开发论坛。
    我的名字叫梦梦
    很高兴能够为您服务!
    如果已经注册【立即登录】
    还没有账号请

    QQ|小黑屋|手机版|Archiver|数字电视开发网 ( 京ICP备16008897号-5   

    GMT+8, 2018-1-20 05:34 , Processed in 0.238124 second(s), 45 queries , Gzip On.

    Powered by Discuz! X3.1

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表