赞
踩
在线课堂:https://www.100ask.net/index(课程观看)
论 坛:http://bbs.100ask.net/(学术答疑)
开 发 板:https://100ask.taobao.com/ (淘宝)
https://weidongshan.tmall.com/(天猫)
交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
交流群二:QQ群:536785813(单片机-嵌入式)
公 众 号:百问科技
版本 | 日期 | 作者 | 说明 |
---|---|---|---|
V1 | 2020 | 韦东山 | 适用于嵌入式Linux初学者 |
我在100ASK_IMX6ULL售后群里,发现很多初学者只有单片机基础,甚至没有单片机基础。在学习Linux时,对很多概念比较陌生,导致不知道学什么,也不知道学了之后有什么用。
从事嵌入式Linux培训12年来,我们写过很多《关于如何学习linux》的文章,这是最新的,本文将不断更新。
新学习路线、视频介绍、资料下载(免费视频):
https://www.100ask.net/detail/p_5f18007de4b0df48afbcd477/6
嵌入式Linux应用开发基础知识(免费视频):
https://www.100ask.net/detail/p_5f338ae3e4b075dc42ad44a1/8
嵌入式Linux驱动开发基础知识(免费视频):
https://www.100ask.net/detail/p_5f1aa2dde4b0df48afbd775f/8
嵌入式Linxu实战项目(免费视频):
https://www.100ask.net/detail/p_5f181e8fe4b0df48afbce201/8
但是,怎么编写程序,单片机和Linux有很大不同。
Linux系统中运行着众多程序,必须保证质量差的程序无法破坏系统:
假设你写的程序比较烂,那我不能让你去随便访问寄存器,把系统搞崩溃了怎么办?你本意是去点灯,但是你看错了寄存器,你把电源关了怎么办?
所以这些操作硬件的活,还是交给信得过的人来做吧:交给驱动工程师,他既懂硬件又懂软件。
保证程序的可移植性:
编写应用程序时,大家都使用统一的函数,以后换一个芯片时,应用程序不用变;只需要根据这个接口提供驱动程序就可以了。
团队协作:
使用Linux系统的项目一般比较大,术业有专攻,一个人不太可能从上到下都全部掌握。比如做人脸识别项目,有擅长做图像处理的,他可不管你要用多少种摄像头,有图像给他就可以。而多种摄像头的硬件操作方法各有不同,这些交给驱动程序工程师。
所以,在Linux中应用程序和驱动程序是分开的。
以LED、LCD程序为例,简化的代码如下:
也许你已经大概猜出来了,应用程序怎么调用驱动程序?通过标准的接口:
组成:
嵌入式Linux系统
= bootloader + linux内核 + 根文件系统(里面含有APP)。
bootloader:
它的目的是启动内核,去哪等读内核?读到哪里?去Flash等外设读内核,存到内存里去。所以需要有Flash里外设的驱动能力,为了调试方便还会有网络功能。
所以,可以认为 booloader = 裸机集合,它就是一个复杂的单片机程序。
Linux内核:
Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。所以Linux内核要有这些Flash、SD卡里设备的驱动能力。
LED驱动程序:
这是最简单的驱动程序。
按键驱动程序:
它也比较简单,从它引入“中断”。
中断:
从“中断”它可以引入:休眠-唤醒、进程/线程、POLL机制、异步通知等概念。这些概念无论是对驱动开发,还是对应用开发,都很重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。