2892|5

75

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

《原子Linux驱动开发》1-开箱及环境搭建 [复制链接]

本帖最后由 2609 于 2024-3-19 22:19 编辑

前言:非常感谢eeworld和正点原子给我的这次测评书籍的机会,接下来我会用心尽力做好每期测评

拿到书有一段时间了,在这段时间里,这本偌大的书籍像一双犀利的眼睛督促着我学习,每次看到他,再掂量掂量自己薄弱的知识储备,都会心头一震,拿到这本书,也意味着我的嵌入式学习进入了新的篇章——Linux

从看到这本书上架测评到兴高采烈的申请下来,我仿佛都无视了两个字——驱动,经过我对嵌入式一段时间的研究后发现,驱动的学习是一块难啃的骨头,如果你还未入门或者说刚刚入门Linux,我都不建议你直接开始学习驱动。可是这项目已经承包下来了,岂有不能干之理,再者入门Linux学习线路很重要,既然现在已然意识到这个问题,回头也来不及了。那便边走边看了,俗话说摸着石头过河。

先给大家展示下此书的厚度,可谓是相当惊人,什么叫做知识的重量,确实重。

本书的作者左忠凯老师在前言部分写的很语重心长,上来就点明了学习Linux需要从事过或学习过32位ARM单片机的开发,掌握32位微控制器架构的基础知识,这一点十分重要,所以请还没有相关知识基础的吧友先去学一下再来学习Linux更顺利喔。这里说一点题外话,不知怎的,我读了也有一些Linux的资料了,不论是左老师还是其他笔者的作品,我都感觉作者能从一个初学者的角度带领读者一步一步走向大牛,所以请吧友相信本书的权威性和可靠性,如果你想学好Linux驱动,本书一定能给你带来非同凡响的收获。

再然后为我们入手此书的学习者的学习路程奠定了基调,原话是这样说的“嵌入式Linux的驱动开发学习是需要不断练习的,尤其是相比单片机开发,引入了很多复杂的知识体系,很多初学者第一遍学习的感觉就是稀里糊涂,这是因为练习得少,对这些新知识还不熟悉,这是很正常的”,相对于给我们这些初学者打了一针预防针,困难多,但要多多练习,坚持不放弃,有了这样的心态和毅力,我相信,再难的问题也是可以被一一克服的。

本书是套装,在这套书的前三篇中,详细讲解了ARM裸机开发、Uboot、Linux内核和根文件系统的移植,本书是第四篇,ARMLinux驱动开发篇,专门讲解嵌入式Linux驱动开发。由于我手头上没有左老师这里说的前三篇的基础知识,我特意去图书馆借了一本相关的书籍来学习了一下,算是补一下基础,我此次学习运用的开发板是STM32 MP135dk这块开发板。

  和我们学习单片机一样,先来下载配套开发软件,这里我先用到stm32cubeprogrammer,用来烧录原厂镜像,这里我用到了一张16g大小的空tf储存卡,首先在官网上下载原厂镜像文件,随后用5v3a的充电器给板子供电,用一根usb线连接电脑,在32programmer上open一下先下载好的镜像文件,在按照如图设置连接就可以开始烧录了,看到下面的进度条显示百分之百,successfully,就说明烧录完成。把板子的开关按照如图设置,按一下重置键,就开机了,需要注意第一次烧录完成显示几秒的启动页面后需要等待一段时间,然后再进入系统页面。

  由于把键盘接到开发板上控制终端不方便,这里我们再用到串口工具,Mobaxterm,这样我们就可以在win环境下通过串口控制终端。这个步骤有点像我们玩单片机的串口,设置一下串口和串口号点击ok便顺利的进入了终端页面,输入命令也是正常的。

87229891a106657acac39dcbeecd2d41

  学习Linux无论如何是绕不开编译调试的,这就需要我们安装虚拟机,在Ubuntu镜像上使用gcc,gdb,makefile等工具来进一步开发,而在这之前,ARM裸机开发、Uboot、Linux内核和根文件系统的移植的知识也是我们需要了解的,对于这部分的知识,虽然这册书上没有,但是无论是网络上还是学校图书馆计算机类书籍的阅览室里,都可以学习到。但知识内容确实是抽象难懂,不过无所谓,相信通过不断的实践,总会学明白的。

Uboot

我读的这本书对于Uboot这一部分的知识讲解的挺到位,是这样讲的:

  在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

  首先,你要知道智能手机就是一台小电脑,如果你恰好用的是linux系统,那可以说两者在系统层面没有区别。因为android就是linux内核外加java虚拟机。当你开机时,机器首先要启动,CPU最先执行的一段程序就是BootLoader,这和电脑上的BIOS是一个玩意儿。它所做的事情就是初始化硬件,CPU时钟之类的,以及加载内核文件。BootLoader可以分为两个阶段。在阶段一,做了一些初始化,在阶段二,如果发现按键有特殊的组合,比如htc g2是回退键和开机键,就会进入fastboot模式。这里要说的是,内核还没有加载,所以更谈不上多进程任务调度之类的概念,机器只是在顺序执行一条条的指令。BootLoader既然要做硬件初始化之类的,必然和硬件相关,所以它的代码并非通用的,不同的硬件需要不同的BootLoader代码,各大厂商可能都有自己的,并且加入开机画面之类的。最常听说的是uboot和hboot,后者是htc的bootloader。我们常说的刷机,是不会动bootloader的,只会动这之后的系统部分。

这位笔者用我们使用的手机为例通俗易懂的讲明白了uboot。

Linux内核

Linux 内核是 Linux 操作系统的核心,也是整个 Linux 功能体现。它是用 C 语言编写,符合 POSIX 标准。 Linux 最早是由芬兰黑客 Linus Torvalds 为尝试在英特尔 X86 架构上提供自由免费的类 Unix 操作系统而开发的。该计划开始于 1991 年,这里有一份 Linus Torvalds 当时在 Usenet 新闻组 comp.os.minix 所登载的帖子,这份著名的帖子标志着 Linux 计划的正式开始。在计划的早期有一些 Minix 黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。今天 Linux 是一个一体化内核(Monolithic Kernel)系统。设备驱动程序可以完全访问硬件。 Linux 内的设备驱动程序可以方便地以模块化(Modularize)的形式设置,并在系统运行期间可直接装载或卸载。Linux 内核主要功能包括:进程管理、内存管理、文件管理、设备管理、网络管理等。
⚫ 进程管理:进程是在计算机系统中资源分配的最小单元。内核负责创建和销毁进程, 而且由调度程序采取合适的调度策略,实现进程之间的合理且实时的处理器资源的共享。从而内核的进程管理活动实现了多个进程在一个或多个处理器之上的抽象。内核还负责实现不同进程之间、进程和其他部件之间的通信。
⚫ 内存管理:内存是计算机系统中最主要的资源。内核使得多个进程安全而合理地共享内存资源,为每个进程在有限的物理资源上建立一个虚拟地址空间。内存管理部分代码可以分为硬件无关部分和硬件有关部分:硬件无关部分实现进程和内存之间的地址映射等功能;硬件有关部分实现不同体系结构上的内存管理相关功能并为内存管理提供硬件无关的虚拟接口。
⚫ 文件管理:在 Linux 系统中的任何一个概念几乎都可以看作一个文件。内核在非结构化的硬件之上建立了一个结构化的虚拟文件系统,隐藏了各种硬件的具体细节。从而在整个系统的几乎所有机制中使用文件的抽象。 Linux 在不同物理介质或虚拟结构上支持数十种文件系统。例如, Linux支持磁盘的标准文件系统 ext3 和虚拟的特殊文件系统。
⚫ 设备管理: Linux 系统中几乎每个系统操作最终都映射到一个或多个物理设备上。 除了处理器,内存等少数的硬件资源之外, 任何一种设备控制操作都由设备特定的驱动代码来进行。内核中必须提供系统中可能要操作的每一种外设的驱动。
⚫ 网络管理:内核支持各种网络标准协议和网络设备。网络管理部分可分为网络协议栈和网络设备驱动程序。网络协议栈负责实现每种可能的网络传输协议(TCP/IP 协议等);网络设备驱动程序负责与各种网络硬件设备或虚拟设备进行通讯。

这样看这些晦涩的知识显然是觉难懂,后面我们针对到开发板上面具体实验,会一步一步解开Linux的神秘面纱的。

编译环境

又到了我们熟悉的环境,先点明用到的软件是我们熟知的VMware,我已经下好了软件并配置好了镜像

  然后我们进行两个设置,分别是共享文件夹和vmware tools(与主机共用剪切板),为后面的学习做准备

做完这些我打算下一步配置交叉编译的环境,不多说学习去了,将持续为大家持续更新

最新回复

主要是使用习惯不同      详情 回复 发表于 2024-3-20 17:32

赞赏

1

查看全部赞赏

点赞(1) 关注

回复
举报

68

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

这书有这么厚啊,看着都眼晕  

点评

是啊 着实震惊到我了  详情 回复 发表于 2024-3-20 15:28
 
 

回复

6498

帖子

10

TA的资源

版主

板凳
 

注意VMware的版本问题,我在搭建的时候就因为这个问题 无法打开  

点评

一进入虚拟机还有终端就会遇到各种各样的问题 非常考验耐心  详情 回复 发表于 2024-3-20 15:29
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

4
 
戈壁滩上的辉煌 发表于 2024-3-20 10:24 这书有这么厚啊,看着都眼晕  

是啊 着实震惊到我了

 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

5
 
秦天qintian0303 发表于 2024-3-20 11:59 注意VMware的版本问题,我在搭建的时候就因为这个问题 无法打开  

一进入虚拟机还有终端就会遇到各种各样的问题 非常考验耐心

点评

主要是使用习惯不同     详情 回复 发表于 2024-3-20 17:32
 
 
 

回复

6498

帖子

10

TA的资源

版主

6
 
2609 发表于 2024-3-20 15:29 一进入虚拟机还有终端就会遇到各种各样的问题 非常考验耐心

主要是使用习惯不同   

 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表