0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机知识是Linux驱动开发的基础之一

工程师精选 2018-03-07 20:35 次阅读

这是arm裸机1期加强版第1课第2节课程的wiki文字版。



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


因为它是个很好的入口。

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

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

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

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

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



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



仔细的分析下Bootloader,它去启动内核,它去哪里启动内核呢? 显然是去某个地方读出内核,就比如说BIOS是去C盘上读出Windows内核,我们的Bootloader是去Flash或者SD卡读取内核。因此Bootloader要拥有读取Flash或者SD卡的能力。有些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驱动时,把重点放在软件框架就行了。

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

现在我们知道了,我们学习单片机,不是为了掌握单片机的开发技能,而是为了掌握Bootloader,掌握硬件操作


原帖转自:http://bbs.elecfans.com/jishu_1544437_1_1.html


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632762
  • Linux
    +关注

    关注

    87

    文章

    11222

    浏览量

    208884
  • 驱动开发
    +关注

    关注

    0

    文章

    130

    浏览量

    12061
收藏 人收藏

    评论

    相关推荐

    想入行单片机开发的学生们的忠告

    对于想入行单片机开发的学生们,以下是些建议和忠告:
    的头像 发表于 10-17 09:45 296次阅读
    想入行<b class='flag-5'>单片机</b><b class='flag-5'>开发</b>的学生们的忠告

    单片机芯片开发-单片机方案开发的关键技巧和流程步骤!

    在电子产品设计中,单片机(MCU)无疑是最重要的组成部分之一。无论是消费电子、智能家居、工业控制,还是可穿戴设备,小家电等,单片机的应用无处不在。然而,对于许多开发者来说,
    发表于 09-26 17:04

    51单片机驱动

    电子发烧友网站提供《51单片机驱动.exe》资料免费下载
    发表于 09-20 11:46 3次下载

    单片机烧录程序的基本步骤是什么

    单片机烧录程序是单片机开发过程中非常重要的步,它涉及到将编写好的程序代码通过定的方式传输到单片机
    的头像 发表于 09-02 09:47 765次阅读

    linux开发板和单片机开发的区别

    硬件架构 Linux开发板和单片机开发在硬件架构上有很大的区别。Linux开发板通常基于ARM、
    的头像 发表于 08-30 15:30 618次阅读

    Linux 驱动开发与应用开发,你知道多少?

    Linux驱动开发与应用开发的区别开发层次不同:Linu
    的头像 发表于 08-30 12:16 585次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>驱动</b><b class='flag-5'>开发</b>与应用<b class='flag-5'>开发</b>,你知道多少?

    文读懂什么单片机:组成结构与应用

    欢迎来到单片机的世界,这是种微小(但功能强大)的设备,改变了嵌入式系统的面貌。在本文中,您将了解单片机些基本知识
    的头像 发表于 08-09 11:49 1609次阅读
    <b class='flag-5'>一</b>文读懂什么<b class='flag-5'>单片机</b>:组成结构与应用

    个暑假如何学习单片机

    个暑假是学习和掌握单片机基础知识的良好时机。以下是个关于如何在暑假期间学习单片机的建议计划
    的头像 发表于 07-03 09:19 475次阅读
    <b class='flag-5'>一</b>个暑假如何学习<b class='flag-5'>单片机</b>

    51单片机开发板的主要功能 51单片机开发板能做什么

    51单片机开发板是种基于8051系列单片机芯片的开发板,具有丰富的功能和广泛的应用。下面将详细介绍51
    的头像 发表于 01-23 15:52 3405次阅读

    基于单片机控制的交通灯设计

    本课程设计是在学完单片机原理及课程之后综合利用所学单片机知识完成单片机应用系统设计并在实验室实现。
    的头像 发表于 01-22 15:31 1837次阅读
    基于<b class='flag-5'>单片机</b>控制的交通灯设计

    如何提升单片机开发技术?

    单片机开发是现代电子技术中的重要分支,其在各个领域都有着广泛的应用。单片机开发技术的提升不仅可以提高工作效率,还可以提高工作质量和创新能力。那么,如何提升
    发表于 01-05 10:14

    AD7787 linux驱动怎么改成单片机驱动

    AD7787官网提供是linux驱动,怎么改成单片机驱动
    发表于 12-08 06:51

    你用过哪些编程语言开发单片机

    C语言是最常用的种用于单片机开发语言,也是种高级编程语言,具有较好的可移植性和可读性。对于单片机,通常使用嵌入式C来进行
    发表于 12-04 10:18 1275次阅读

    单片机模电数电基础知识

    单片机,全名为单片微型计算机,是种集成电路,具有微型计算机的所有主要功能单元和外围电路,被广泛应用于嵌入式系统中。单片机的基础知识包括模拟
    的头像 发表于 12-01 14:53 1537次阅读

    单片机最小系统的相关知识

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统般应该包括:单片机、晶振电
    发表于 11-29 15:57 1826次阅读
    <b class='flag-5'>单片机</b>最小系统的相关<b class='flag-5'>知识</b>