大家好,今天小编关注到一个比较有意思的话题,就是关于如何学习c语言软件的问题,于是小编就整理了2个相关介绍如何学习c语言软件的解答,让我们一起看看吧。
汇编和c语言先学哪个?
先学C,再学汇编。C语言毕竟是高级语言,它和硬件关联不紧,比较。汇编语言则和硬件密切相关,数据的操作都要在寄存器中进行。在高级语言中直接定义变量,然后就可以用这些变量进行数据的操作,而在汇编语言中,变量是内存的存储空间,对变量的操作必须将该变量的值放入寄存器中,再对寄存器进行操作,操作结束后将寄存器中的值存入变量。由于系统中寄存器数量有限(如8086/8088中运算用寄存器为4个16位寄存器AX、BX、CX和DX),从而在写汇编程序时还要做好寄存器调度,因此最好在有一定的编程基础后再学汇编。
先学汇编,汇编比较简单,没有什么复杂的框架,语法,库之类的。然后学c就容易多了,因为所有抽象的概念都有了具体的指令与之对应,理解起来更深刻,使用的时候也更得心应手。最后把c++再学了,编译类语言的基础就学完了。
汇编语言才是最难搞也是效率最高的语言也。我刚毕业就参照美国的一家公司的晶体管全自动测试系统设计了国内最早的同类系统可以讲是填补了国内空白的啊😄。这个汇编语言具有最强大的功能运行的速度也是最快的。美国的同类系统用C语音调汇编语言来控制就得用小型计算机的代价,但我们用汇编语言就可以直接用Z80的工业控制计算机就可以列。整个系统的硬件费用只有五万多人民币,进口美国的系统的进口费用是13.5万美金。但是完全自己搞就得熟悉所有的测试模式和线路控制总线数据总线数据总线时序接口等等的基础操作。C语言很多人能学会但能用汇编语言来设计系统的国内凤毛麟角。后期微电子的发展出现开关速度的测试更加对提出了更高的要求,现代计算机根本来不及***样测试于是就有了时钟拉漂技术。可以讲C语音就是让部分基础水平一般的人玩计算机的所谓计算机高手玩的,但汇编语言绝对是专家对特殊领域的特殊需求解决问题的最终方案的***也
如果不是做纯底层的工作,推荐先学c。汇编太依赖于具体指令集,如果不是在芯片公司工作,用到汇编的可能性较小,即使用到也是一些相对简单的指令,嵌入到c里面用。因此,从未来使用率上考量,学c更佳
学习嵌入式难吗,嵌入式学习路线有哪些?
从PC环境开始,逐步精简
从单片机开始,逐步增强
学习也可以从这两边开始。无论PC还是单片机,都较容易找到好用的开发环境。
从单片机开始,因为板级速度低,学嵌入式硬件会比较容易;
从PC开始,常见的是各种ARM linux环境。相对来说,软件方便,硬件较难。
通常来说,C语言在这一范围不可替代,所以C语言一定要学好。
学嵌入式有细分,包括单片机编程、Linux驱动编程、linux应用编程、Android应用编程等方向。首先需要明确往那个方面学习发展。
单片机学习路线
- C语言多数大学大一时期就会教授,上手较容易,程序语法简单。对嵌入式比较关键的是学好运算符表达的含义尤其是位运算,还有[_a***_]封装使用,指针的应用,结构体等用户自定义结构的使用,链表其实在linux或Android平台等使用动态内存分配的场景较好用,ARM核的“低端”芯片中当然也会用,学习数据结构或程序编程思想中有较为重要的地位,实际开发依据需要再学习也可以。
- 51单片机,历史悠久,资料丰富。很多国内厂商会研发自己的51内核单片机,大同小异的操作方式,比较友好的是中文资料众多,厂商提供的绝大多数是中文文档。郭天祥的51教程比较经典,网上可以搜到。从51单片机可以说把单片机家族的多数外设都接触了一遍,是入门极好的途径。
- ARM内核单片机在国内应用场景众多,物联网中广泛使用,代表厂商有NXP,ST,还有Microchip、TI等有着不错DSP处理能力的芯片厂商提供不错的产品。从好入手出发,TI的MSP430系列和ST的M32或M8都是不错的选择,教程众多。这方面的单片机比51的外设和性能丰富了不止一点点
- 不论是51还是ARM内核单片机,一定要实践,看教程再多不如动手敲出来看现象,再思考。买有教程配套的开发板是最合适的,如上图这种开发板大把的。教程的实例可以直接对应开发板的IO引脚,让学习者更方便看实验结果。从现象出发看教程讲解,试着自己改动一些内容,看现象的变化再思考怎么发生的,这样参与感强,容易激励自己继续学下去。
- 一切的一切前提需要先学习C/C++语言,否则程序都无法看懂,别的不用扯~~
linux驱动学习路线
学linux驱动最好有单片机的外设和基本通信协议比如IIC、SPI等基础,需要会用linux操作系统,在系统中能进行linux命令行操作,学会在linux和windows下交叉编译程序,这方面教程网上也有,相比单片机的教程就没有那么多比较系统的了。比较好的收费居多,毕竟难度也要上一个等级,氪金学习能接受的也OK。
- C语言基础同样是需要的,毕竟linux内核也是C写的,看不懂就啥也别说啦... 除了上一标题中提到的C需要掌握的内容,linux中还要继续深究其自带的API,包括文件IO的编程,进程线程的使用,信号量等同步机制的实现等等内容,这些在linux应用编程中同样重要。
- 还有linux下的shell命令常用的需要掌握,方便日后学习的进行。在linux操作系统中虽然也有windows一样的图形界面供使用,但在效率和专业性方面,还是命令行来得快~ 命令行界面稍显枯燥,但学习惯了打起来还是很爽的。
- 说完了操作系统方面的,就要看看linux内核驱动了。通常使用linux内核作为驱动的平台都是相对高端的产品,ARM7及以上等级的SOC中常见,这些芯片里跑linux或者后面说的Android系统进而能处理更加复杂的业务。那怎么把linux系统放进这样的芯片里并能在pc机上的linux操作系统中调试就需要学习了。这部分内容包括内核的编译裁剪与移植,根文件系统制作与挂载,交叉编译环境的搭建等等一众内容,需要极大的耐心去修改,下载到对应开发板再调试。
- SOC中拥有了linux系统就可以进行驱动的进一步学习了。这部分要学习三种字符设备驱动模型,等待队列,内核中断机制,poll&select机制,内核定时器和同步机制,IIC、input子系统等等内容,需要看着内核源码来修改编译,期间会涉及许多单片机知识,所以有基础的看源码也不至于太累而坚持不下去。
- 上面这些事情都一定一定要配合一个开发板来进行,如下图,这个不实操真的白谈。做完基本可以在自己的板子上完成类似单片机的所有操作,还能做出视频播放效果,文件管理功能等,类似一台界面不那么好看的手机了。学习驱动主要在很多做高端产品的公司会需要人来移植系统到自己的平台上进行开发,工程比较复杂,当然待遇也不错。
还有两个学习路线放到下次回答,这次先说到这里啦,谢谢支持(#^.^#)
到此,以上就是小编对于如何学习c语言软件的问题就介绍到这了,希望介绍关于如何学习c语言软件的2点解答对大家有用。