为什么没前途也要学习单片机,会给你后半生享福

2022-05-11   大方老师单片机

原标题:为什么没前途也要学习单片机,会给你后半生享福

为什么没前途也要学习单片机会给你后半生享福

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免费的,私信我就可以~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比///

为什么没前途也要学习单片机?

因为它是个很好的入口。

学习单片机可以让我们抛开复杂的软件结构,先掌握硬件操作,如:看原理图、芯片手册、写程序操作寄存器等在上一节视频里,我刚把单片机贬得一无是处,说单片机没前途了,这节视频,我又要告诉你们,没有前途,也要学习单片机。为什么?

首先,我说不用学习单片机,是指不要使用老一套得学习方法学习单片机。什么叫老一套的方法?

·硬件上:不要使C51STM32这些专用的单片机开发板。如果以后,你不打算从事单片机开发,你用这些芯片干嘛,研究了两三个月,把这些寄存器都用清楚了,你又用不上,没必要啊。

·软件上:不要使KeilMDK等集成度太高的软件。你用这些软件,你写main()就可以了,然后调用各种库,进行傻瓜式操作。这些好用的工具,封装了很多技术细节,使得我们没法了解裸机、单片机的本质。

以后我们会使用新一套的方法来进行单片机的开发。新一套的方法,我们后面再介绍。

我们之所以还要学习单片机,是因为它里面的知识,对我们后续学Linux还是有用的。我们首先来看看,一Linux系统是怎么一回事一个嵌入Linux系统的软件组成单片机大Bootloader>Linux>Linux APP>Linux GUI(Android/QT)。我PC机一上电的时候,黑色屏幕上会显BIOS,这BIOS目的是去启Windows内核Windows内核再挂C(系统)D(应用),最后再去启动应用程序,QQ、网游等同样的道理,我们Android手机或者工控设备,也BIOS,但嵌入Linux系统里面不BIOSBootloader,他的目的是去启Linux内核它首先也是识别应用程序所在的存储设备,挂载根文件系统(Windows系统里面CD盘,Linux里面称为根文件系)。最后去启动应用程序。

仔细的分析Bootloader,它去启动内核,它去哪里启动内核呢显然是去某个地方读出内核,就比如BIOSC盘上读Windows内核,我们BootloaderFlashSD卡读取内核Bootloader要拥有读FlashSD卡的能力。有Bootloader还要显logo,因此还要具有操LCD的能力Bootloader还要设置开发板的环境,比如,初始化时钟、初始化内存、还要设置网卡等这么多事情,都是Bootloader里面实现的,太复杂了,如果你一来就分析整Bootloader是非常困难的。

那我们怎么学习呢把他拆开,写出单独的程序,比如LED点灯、时钟、网卡Flash都单独写个程序来练习,这些不就是单片机程序吗?所以说Bootloader是单片机程序的大全。我们为了更好的学Bootloader,我们应该事先一个一个练习硬件,当我们熟悉每个硬件后,再组合起来,就是一Bootloader

我们再来看Bootloader启动内核之后,内核再去挂载根文件系统,意味着内核也要有操作硬件的能力,这就是驱动程序。我们首先来看看一个简单的驱动程序是什么样子首先我们的应用程序是调open()read()write()这些标准的接口去访问硬件。那么就进入驱动程序里面,驱动程序里面有对应drive_open()drive_read()drive_write()。最后在驱动程序里面,去配置硬件比如一LED点灯驱动,那drive_open()GPIO设置为输出引脚drive_read(),返GPIO状态driver_write()GPIO,让引脚输出高电平或者低电平。

对于我们LED驱动程序,你需要提drive_open()drive_read()drive_write()这些接口,这就是它的框架。具体的怎么操作硬件,就是硬件操作所以说,我们事先在单片机里面,熟悉熟练的掌握硬件操作。即驱动程序的组成:

驱动程=软件框+硬件操作

你需要学会看原理图、看硬件怎么连接、看芯片手册、知道怎么读写寄存器。这一切都可以先在单片机里面学习,去掌握。以后学Linux驱动时,把重点放在软件框架就行了。

我们可以事先学习单片机,单片机的学习可以让我们先抛开复杂的软件结构,先掌握硬件的操作,如:看原理图、芯片手册、写程序操作寄存器等这就是为什么单片机没有前途,我们也要学习。是因为他里面涉及的硬件操作,对我们后续的学习,非常有用处。