ARM嵌入式系统设计学习心得

本文讲述了学习嵌入式系统设计的过程,强调了C语言的重要性,以及从单片机入门到理解STM32、硬件电路设计、驱动编写和操作系统移植的挑战。学习者需掌握基础数据结构和STM32逻辑框架,同时注意硬件选择、功耗控制和系统升级等问题。
摘要由CSDN通过智能技术生成

             学习了《ARM嵌入式系统设计》这门课程感觉很吃力,虽然基础很薄弱,但是慢慢学习来,收货还是很多。刚开始接触还是89C51用汇编语言 编写的,现在需要用C语言。C语言是嵌入式开发中最重要的编程语言 ,要对这门语言有深入的理解,毕竟不仅仅要会写程序,看懂他人程序也很重要。最基本的数据类型、数组、指针 、结构体,链表、文件操作等都要会,掌握基本语法和语句。STM32,把逻辑框架 弄清楚,后来,看懂逻辑框架后,然后自己从厂商那里有每部分的教程,自己照着做一遍,只要是能复制出来目的就达到了,也是最快熟悉STM32的方法。学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程如果从软件上讲,就是要学习基于ARM处理器的操作系统层面 的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于 API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接 口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。单片机 单片机入门相对简单,通过单片机的学习可以熟悉单片机的硬件结构,包括I/O口、AD转换、通信(串口、并口、I2C、CAN、USB、以太网 、ZigBee技术等)、显示(LED、LCD等)、控制(PWM等控制技术)、数据处理 (图形、图像、语音、视频等的处理或识别)等,学好单片机可以为采用嵌入式系统 奠定良好的基础。

            嵌入式系统设计 的主要任务是定义系统的功能、决定系统的架构,并将功能映射到系统现架构上。这里,系统架构 既包括软件系统架构 也包括硬件系统架构 。
一种架构可以映射到各种不同的物理实现,每种实现表示不同的取舍,同时还要满足某些设计指标,并使其他的设计指标也同时达到最佳化。嵌入式系统的设计方法跟一般的硬件设计、软件开发的方法不同,是采用硬件和软件协同设计 的方法,开发过程不仅涉及软件领域的知识,还涉及硬件领域的综合知识,甚至还涉及机械等方面的知识。要求设计者必须熟悉并能自如地运用这些领域的各种技术,才能使所设计的系统达到最优。虽然嵌入式系统应用 软件的设计方案随应用领域的不同而不同,但是嵌入式系统的分析与设计方法也遵循软件工程的一般原则,许多成 熟的分析和设计方法都可以在嵌入式领域得到应用。嵌入式系统的开发过程同样也包括需求分析、系实现和测试几个基本阶段,并且每个阶段都有其独有的特征和重点。
               嵌入式系统设计 所面临的挑战有以下几个方面:
(1)需要多少硬件:设计者对用于解决问题的计算能力有较强的控制能力,不仅可以选择使用何种处理器,而且可以选择存储器的数量、所使用的外设等,因为设计不仅要满足性能的需求,还要受到制造费用的约束,硬件的选择十分重要,硬件太少,将达不到功能和性能的要求,硬件过多又会使产品过于昂贵。
(2)如何满足时限:使用提高处理器速度的方法使程序运行速度加快来解决时间约束的方法是不可取的,因为这样会使系统的价格上升。同时,提高了处理器的时钟频率,有时并不能提高执行速度,因为程序的速度有可能受存储系统的限制。
(3)如何减少系统的功耗:对采用电池供电的系统,功耗是一个十分敏感的问题。对于非电池供电的系统,高功率意味着高散热。降低系统功耗的一种方法是降低它的运算速度,但是单纯地降低运算速度显然会导致性能不能满足,因此,必须认真设计在降低功耗的同时满足性能的约束。
(4)如何保证系统的可升级性:系统的硬件平台可能使用几代,或者使用同一代的不同级别的产品,这些仅需要一些简单的改变,设计者必须通过改变软件来改变系统的特性,设计一种机器使它能够提供现在仍未开发的软件的性能。
(5)可视性和可控制性有限:嵌入式系统通常没有显示设备和键盘,这将导致开发者很难了解系统内部发生了什么,也不能响应系统的动作,有时候不得不通过观察微处理器的信号来了解。在实时系统 中,一般无法为了观察而让系统停机。
                在学习过程中遇到问题,先尝试自己查资料或上网搜索进行解决,找资料的过程中看看别人的理解思路。如果在查资料或搜索后并没有找到满意的答复,这时便可以寻求老师或同学助,不经过思考的提问,对自己没有提升。学习技术的过程中,那将什么都没有学到。以下是上网搜索的程序,作为初学者首先要理解程序,最后再根据自己的思路去编写程序
                嵌入式系统分为4层,硬件层、驱动层、操作系统层 和应用层。
1、硬件层,是整个嵌入式系统的根本,如果现在单片机 及接口这块很熟悉,并且能用C和汇编语言 来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工
程师 是要能够看懂硬件的电路图 和自行完成CPLD的逻辑设计 的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。硬件层比较适合于,电子、通信、自动
化 、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识 有,单片机原理及接口技术、微机原理及接口技术、C语言。
2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序 在系统调用 时,不会独占操作系统时间片 ,而导 至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到。
3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调
试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。
4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口 函数调用 ,到操作系统下只是编译和开发环境 有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及
算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库 、基于嵌入式系统的网络编程 和基于某此应用层面的协议应用开发(比如基
于SIP、H.323、Astrisk)方面又较为复杂, 并且有难度了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值