设计可以自学吗_从事嵌入式底层软件设计工作需要学习哪些,如何做好软件设计
设计可以自学吗
很高兴回答你的问题,设计的种类有很多,不知道你想自学的设计是哪种,我从事饰品设计开发,没有三四年的时间只靠自学是很难的,其实只要想学设计,就需要你全身心的投入进去,精力分散了那学的肯定就慢,有很多事情感觉自学可以,真到了自学的时候反而发现自己根本没有那么多的精力。望三思而后行。
不知道题主说的是哪种设计,不过主流的一般就是平面设计,建筑设计等。而以建筑设计来论,想自学是十分不明智的,当然,如果这里的自学如果把工作向他人学习也包括进去的话,那是可以的。
我本身就是从事建筑设计行业的,建筑设计行业又有专业划分,比如结构施工图设计,建筑施工图设计,方案设计等专业,以下我就谈一下我所从事的建筑施工图设计。
其实建筑设计不需要你在学校里就学习对口的专业,因为你在工作的时候都是要从新学习的,特别是建筑施工图设计,我以前毕业的时候也是什么小白一枚,天正都不会用,靠着勤奋,虚心请教,才能干这么多年。建筑施工图设计在各个专业里面,是门槛最低的,但是地位并不是最低的,相反,建筑设计是处于龙头的地位,不管是结构还是暖通,电气等都是由建筑总领。
而建筑施工图设计需要学些什么呢?绘图,规范,施工工艺,解决方案。
所谓施工图,顾名思义,便是用来指导施工的,所以该表达什么,你进了这个行业自然就会学到了,而自学难免欠缺。
规范虽然都是写在书上,但是自学好比闭门造车,而且各地消防,建设局经常有条文规定等,需要时时关注,这个即使自学,也必须在工作里自学,说白了,还是要跟有经验的人学习。
第三点,既然是施工图,用来指导施工,就不只是写写画画这么简单,有的东西现场能不能做,怎么做,不是凭空想象的,所以设计人员除了图集,和老员工传授之外,也需要下到现场了解。你没有一个单位为你背书,工地都进不去。
第四点,解决方案,其实这是设计的核心,这是统筹了前面的知识之后才能进行的关键一步。提出问题不算厉害,提出问题了还能解决问题才是本事,不过这一定程度上有赖于经验的积累。
第五点,建筑既然是龙头,必然所要知道的就不只是本专业的知识,而是要涉及到其他各专业,才能统领各专业,整合设计。
综合以上,我认为设计(本处仅论建筑设计)是不能且不应自学的。
从事嵌入式底层软件设计工作需要学习哪些,如何做好软件设计
一个具有几年嵌入式开发经验的设计人员来回答一下这个问题,也对自己的工作做一个小总结,个人认为,从事嵌入式底层工作要学习芯片体系结构、接口和总线技术以及操作系统相关的知识,在学习的基础上多练习,参与项目,并多思考和总结,经过项目的锻炼,一步步对软件设计有更完整和深入的理解,从而做好相关的设计工作,下面我从芯片体系结构、接口和总线以及操作系统三个方面详细总结一下:
第一,芯片体系结构
做底层软件的设计,肯定离不开启动代码相关的程序设计,学习体系结构比如ARM、PPC、MIPS和DSP等等,理解它们内核特点,指令集和芯片结构等知识,对于底层启动代码设计有很大的帮助,比如Cache、MMU和中断系统相关的程序设计,深入学习体系结构的知识,才能做好更深入的底层软件设计工作。
第二,接口和总线技术
如果说体系结构的知识是深入学习底层软件设计的前提,那么接口和各种总线的知识应该是底层软件的基础知识了,比如常见的低速串行总线:I2C、SPI、UART和CAN总线,并口,比如ARM的GPMC或者PPC的Local Bus或是DSP的EMIF总线等,高速一点的总线比如:以太网、PCIE和RapidIO等。做好底层的软件需要学习和了解它们的协议组成和工作机制,去思考一下它们工作的原理和具体芯片下的实现方式,这样才能让软件的每一步设计合情合理,提高工作效率。另外接口芯片,常用的Norflash、NAND、DDR、EEPROM、LCD、键盘接口和各种交换机芯片等等,这些常用外设接口芯片的工作原理也要弄清楚一些,这样设计的驱动软件每一个细节才会更合理,工作效率更高。
第三,操作系统知识
现在的嵌入式软件设计大多数都要跑一个操作系统,最常见的手机的安卓,或者各种Linux,实时性要求高一些的比如VxWorks,如果芯片资源有限,没有MMU之类的,可以考虑Ucos-II、FreeRTOS和RT-thread等轻型操作系统。总之做好嵌入式底层,还需要知道这些系统大致的工作原理和特点,可以擅长其中的某一个系统配合某一个芯片平台,但对于操作系统原理还是要知道的,甚至做好了可以学习一下它们的源码,因为本身系统也是一个软件,学习一下它们的结构框架,设计思想,对于自己的软件设计也大有帮助。
关于如何做好软件设计
个人认为没有捷径可以走,做好设计需要大量的实践环节,多参与项目的锻炼,在这期间多思考,多总结,多学习,逐步提高自己的认识和设计水平。
总结起来,嵌入式底层软件设计需要学习芯片体系结构、接口和总线原理以及操作系统相关知识,不断参与项目,多思考总结,提高自己的设计能力,从而做好软件的设计。
大家有自己的观点欢迎参与讨论和留言,一起谈谈嵌入式软件的设计。
目前底层相关编程语言有这三个,汇编语言设计,C语言程序设计,C++语言设计,这三门语言除了C语言必须会,其它能也要求基本会,可能有人会说,汇编语言没必要学了。
错了,在一些工业控制设备中,有时候会要求程序高速执行,这个时候必须用汇编。
第二要看一些嵌入式系统控制相关的书,比如ARM,LINUX系统,实时操作系统。
第三:你想当个高手最好学精数学,这是很多搞嵌入式编程的人的通病。
这个数学好比内功,没有内功,只是摆摆样子,你程序也不会好。
11