zoukankan      html  css  js  c++  java
  • 第三次作业_RTCSD2017

    思考本次作业要求,我归结了本次博客作业的两个核心:一曰个人成长,一曰于模型的设计

    先来说说第一个核心——个人成长。

    在《构建之法(第三版)》的第3章《软件工程师的成长》中,邹欣老师提出了两个有趣的问题:

    • 你觉得你”职业“到哪一个程度?
    • 初级软件工程师如何成长?

    此两问结合我们未来可能从事的设备实时控制软件的设计这个职业,即本次作业要谈论的第一点:

    • 你应当具备哪些个人知识基础和技术能力(以满足岗位需要)?
    • 你准备采用何种学习和训练路径(以获得知识和能力)?

    进一步概括:学什么? & 怎么学?

    来看一看某公司嵌入式软件工程师招聘要求:

    1.  专业要求:自动化、电子、通信、测控、计算机等相关专业;
    2.  本科及以上学历(研究生学历优先),有嵌入式开发项目工作经验者优先;
    3.  英语CET-4级以上;
    4.  熟练掌握ARM嵌入式软件的开发和调试技术
    5.  熟练掌握C语言,具备较强的编程能力、熟练的编程技巧
    6.  了解ARM嵌入式硬件设计技术
    7.  具备严谨、细致、敬业的工作态度和良好的敬业精神;有不断学习进取和团队合作精神;
    8. .工作有很强的挑战性,具有独立研发能力者佳。

    我们看到,加黑部分是该公司对于嵌入式软件工程师这个职业的知识要求、能力要求,而在这里,我不选择排列方式,而是设置一个情景,结合大学经历,思考我们应具备的知识和能力

    我们首先布置一个简单的实时控制“点灯”要求:红灯每秒钟闪烁一次,绿灯每秒钟闪烁两次。

    假设给你的是最小系统板(处理器+存储器+时钟电路+电源电路+复位电路+调试测试接口,嵌入式硬件知识),那么,首先你需要自选LED和设计其驱动电路,这时你需要了解LED规格(模拟电路)、驱动电路原理和设计(电路原理、模拟电路)、GPIO的内部电路(微型计算机原理),然后,选购需要的器件,完成了硬件的设计。

    现在,你可以很轻松的将适配器插到板子上,完成板子的上电初始化工作,然后,接下来呢?你要知道这块最小系统板是怎么运作的,这时,你得去学习这块被人工设计出来的——可以像人脑一样计算的数据的——被称作“微处理器”的东西究竟是怎么一回儿事。有了电路原理中电路的基本定律和一般分析方法的基础,有了模电中对一些半导体器件性质的认识,你理解了原来用电(运算放大器)也可以实现加、减、比例、积分、微分的数学计算。接下来在数电的学习中,你开始学习数制(即编码)、逻辑,你原本的电的知识被从连续的模拟量,变成了离散的0与1、及它们的组合(编码),这是你向计算机靠拢的一大步!在数电的后半部分,你学习触发器、寄存器,理解了0与1这两种电的状态是怎样被真实的物理电路保存的,于是,你明白了计算机系统中的存储器是怎样储存信息的。这时,你的基本功打完了,你终于可以学习微型计算机原理的知识了,在这里,你要怀着一个终极大问题:计算机到底是怎么运行起来的?你带着问题去了解和认识:运算的大脑CPU、储存信息在存储器、和外界输入输出用GPIO、协调的节奏靠时钟。你明白计算机(单核)很笨,一次只能做一件事情,但他每个动作可以迅速到微妙、纳秒。这样,他用他熟练的笨办法,超过了人大脑的计算。

    当你明白了计算机运作的方式,你想这下我可以操作了吧,可是还是无从下手,于是你找来了随系统板一起赠送的电子文档,手册里面的图片和数电、微机原理书里的很像啊,全英文的文字虽然降低了你的阅读速度,但以你的英文功底配上网络词典的帮助,读懂还是没啥问题的。你了解到原来你用的是很经典的ARM处理器(处理器架构),你查阅到了需要的GPIO引脚及如何处理各种寄存器(嵌入式系统硬件组成),嗯,这下硬件的东西都没有问题了。

    怎么命令板子工作呢?软件定义一切。软件的表达需要专用的计算机语言,我们这里需要用到C/C++语言(如果你想搞懂ARM处理器的体系结构和指令集,你也需要了解下基本的汇编语言。)。待你学会了语言,你就可以看懂例程里的表达,能在里面进行自己的增增减减,从而控制灯的亮灭。待你认真计算好延时时间,灯的闪烁节奏也达到了要求。

    呼~完成了。但现在告诉你一个事实,其实你照着讲解视频折腾一下午就能做到这步。你作何感想?不要讶异,这就是大学学历和兴趣制作之间的距离。

    现在,要求稍微改变一下,使用freeRTOS实时系统调度两盏灯闪烁的任务,闪烁节奏不变。

    好吧?freeRTOS实时系统是什么?任务调度?现在你需要恶补一番计算机学科的知识:学习操作系统原理熟悉Linux环境,学习Linux下常用的GCC、cmake、GDB等工具,学习实时操作系统原理,了解freeRTOS的API和结构。。。

    知识补完,在具体实践中,涉及到了编程、链接、烧录、调试、维护等各环节中的很多流程、思想、做法、手段(工具)。这些掌握的多少和熟练程度,就是你将知识变为价值的技术和能力所在了。

    以上这段文字里的标注内容,基本表达了目前这个阶段的我,所能够看到的嵌入式/实时控制软件工程师这一职业所要具备的知识和能力,即使大致提及的这些,已是一个很大的知识体了,在嵌入式软件设计里,它们互相交织联系在一起,综合体现了从业者的专业水平。

    面对这样一个庞大的知识体,我们该怎么学呢?

    好吧,如何学习这个话题很宏大,我认为有两个关键:确定升级之路保证练功投入

    前者保证整体前进的大方向、提供阶段通过的测试标准,后者关键在于练功者的态度和时间投入。

    知识是一个整体,我们要把它打成小块儿吸收消化,然后再把它们链接重构;

    如何打碎?吸收的先后顺序是什么?练习到怎样的程度可以认为学习到位了?

    • 可以参考学校的授课顺序和考察标准;
    • 可以以通过计算机等级考试、软件考试为目标;
    • 可以请教或师从研究生导师;
    • 可以向有经验者取经;
    • 可以自学通过某些《学堂在线》的课程;
    • 可以参与科研项目或某些开源项目;

    然而修炼功夫最重要的,还是练功者的自练

    制定阶段目标,然后全身心的投入,大量的时间和思考注入。

    宇哥曰:没有专注、不走火入魔,怎能把一件事情做好?

    很多时候,不是没有方向,不是没有途径,而是自练不到位,仅此而已。

    第二部分,基于模型的设计。

    基于模型的设计,这次在RTCSD课上与它相遇,立马就被她的魅力所折服!

    老师展示了双轿电梯的控制模型,而我从中看到了一直以来想要的表达产品想法的理想方式。

    基于模型的设计(现在对她的认识仅来自mathworks),她提供了无限的画布和层次来表达你的想法,你可以不断的去增加功能或扩张结构,也可以向下深化和增加细节;

    她允许你像认识世界那样去构造世界,先看到/创造一个体和纹理,然后加入这个尚是黑盒子的输入输出(外部特征),随着你的深入认识(或构思),你可以进到这个体的里面,完善他的属性和细节。

    所谓“一花一世界,一叶一菩提”,在看似无限空间的画布里,你可以创造无数的小世界,并把他们有机联系在一起,然后再在上一层再次创建一堆世界,再组成一个有机体,就像细胞——人体——种群——地球——银河系——系外空间的构造,你可以在上面创造极其复杂的系统,验证你的假设,证明系统的输出结果,而这一切,可以是真实世界的虚拟。于是做到了逼近实物的零成本验证。

    正如《Managing Model-Based Design》所说的基于模型的设计的八大核心概念:

    • Executable specification
    • System-level simulation
    • What-if analysis
    • Model elaboration
    • Virtual prototyping
    • Continuous test and verification
    • Automation
    • Knowledge capture and management

    在之前参加机器人比赛和嵌入式数据分析平台设计中,我们采用的都是传统的瀑布模型设计,

    于机器人制作:确定题目要求和机器人具备的能力——soliworks设计三位模型——然后根据做出来的实物考虑电机的安装,完善机构和加装动力——电路设计——程序设计。

    结果,实物设计出来后,有的地方因干涉不适合安装电机,那装其他地方呗!这个地方也不行,改结构!

    最严重的是,整体做完了,测试,电机空转成功,各机构正常!下地测试!完了,电机功率太小,烧了。。。

    因为硬件上花费了大量时间,几乎没有时间考虑软件的逻辑性。

    于嵌入式数据分析平台设计,我们亦是按着需求分析与规格说明(出规格表)——系统设计(出硬件结构图、软件机构图)——构件设计——系统集成与测试这样的步骤开发的。

    现在接触到基于模型的设计,我想我们可以绘制出整个机器人的动作机构,输入输出信号,控制逻辑,然后仿真运行测试整个方案的可行性、逻辑性,可以设置不同的负载,利用电机模型对各种电机参数进行测试,以确定最终需要选购的电机型号。

    说到基于模型设计的缺点,由于接触的不多,只想到以下几条:

    • 学习成本偏大——思想、流程的改变和适应,对物理世界的数学建模需要较为深入的专业知识;
    • 模型与真实物理实验的相似程度,一方面需要依靠对真实物理试验数据的深入分析,一方面存在计算机离散数据和真实世界连续物理量之间的偏差。

    END

  • 相关阅读:
    Gym
    Gym
    Gym
    Gym
    Gym
    hdu2586 LCA带边权的Targan算法
    bryce1010专题训练——LCA
    POJ1470 LCA (Targan离线)
    bryce1010专题训练——LCT&&树链剖分
    模板——2.7 欧拉函数
  • 原文地址:https://www.cnblogs.com/wangsan-hust/p/7645183.html
Copyright © 2011-2022 走看看