首页 > 系统相关 >初学者的嵌入式 Linux 计划!

初学者的嵌入式 Linux 计划!

时间:2024-01-10 17:34:47浏览次数:48  
标签:驱动程序 Linux 嵌入式 学习 初学者 linux USB 阶段

俗话说万事开头难,刚开始的时候,是不是根本就不知如何开始?今天给大家分享一个嵌入式大神总结的Linux学习计划!希望给大家提供帮助,;另外想要系统学习也可以dd我!


第一阶段:嵌入式硬件基础以及裸机程序开发

arm处理器基础知识,工作模式,寄存器,中断与异常,寻址方式,汇编指令集; 熟悉ADS集成开发环境为裸机程序开发做准备;裸机程序开发:LED,串口,LCD,触摸屏,NANDFLASH,IIC,IIS,DMA等
这一阶段的学习主要是熟悉嵌入式的硬件,为以后的linux驱动打基础。因为嵌入式主打处理器架构就是arm,所以针对arm来学习。首先学习基础知识,然后通过在开发板上的练习来掌握。


第二阶段:linux基础以及shell编程
这一阶段的学习主要是熟悉linux,会安装linux,了解Linux的基础知识,会简单的操作。刚开始安装linux还是在虚拟机上安装比较好,安装开发板推荐的Fedora9,按照开发板配套的说明一步一步的安装,然后在上面练习各种命令。

这一阶段主要要看《鸟哥的linux私房菜基础学习篇》,这个书有电子版,也不用全看,主要是看前面对Linux基础知识的描述,以及基本的命令。命令只是了解,那么多记也记不下来,以后用时再查阅。这一阶段主要目的是对linux有一个整体的了解,最起码要知道基础的一些概念,还有会一些基本的操作。


第三阶段:linux应用程序基础开发
这一阶段的学习主要是了解linux应用程序的编写调试,也都是基础知识,主要目的还是熟悉Linux。熟悉其中应用程序有关的一些概念,为以后打基础。这一阶段主要看了《嵌入式Linux应用程序开发标准教程》,这本书对linux上应用程序编写讲的很详细,而且不是很难,那本最经典的《UNIX高级环境编程》讲的比较深入,刚开始看有点难,万事开头难还是从简单的开始。学习应用编程以后也不一定搞应用,从事嵌入式linux行业的人,这是必须的基本技能。


第四阶段:uCOSII操作系统学习
这一阶段的学习主要是了解嵌入式实时操作系统的基础,因为uCOSII是开源的,可以研究他的代码。对操作系统的任务调度以及资源管理有直观的认识。并且阅读他的源码能够提高自己的编程能力,规范自己的编程习惯。虽然提供了uCOSII的移植版本,但是自己实际移植一次能够有更深刻的认识。

这个操作系统比较简单,所以应用程序的编写就很重要,在上面实现几个功能还是有助于对系统的理解。这一阶段主要看的就是邵贝贝翻译的uCOSII作者所著的《嵌入式实时操作系统uCOS-II》,里面对操作系统的源码有详细的分析。看透这本书后就会对uCOSII有一个深入的了解。

这一阶段的主要目的是了解操作系统的知识,比如任务调度,并发与竞态。还有一个目的就是锻炼自己的编程能力。因为如果看介绍操作系统原理的书会比较枯燥,我感觉阅读一个操作系统的源码比看一千本介绍原理的书来的实惠的多。


第五阶段:bootloader学习
bootloader是一个linux嵌入式系统的不可缺少的部分。这一阶段的学习主要是了解bootloader的作用,以及通用bootloader---u-boot的知识,刚开始学会用u-boot的各种命令。然后分析u-boot的启动流程和Makefile以及u-boot加载内核过程。

然后按照别人的步骤一步一步的移植内核,多做几遍以熟悉这个过程。然后在熟悉整个u-boot的基础上,独自完成u-boot的移植,并添加自己修改。这一阶段主要参考资料就是光盘自带的u-boot移植参考手册和一些网络上的文章。个人感觉u-boot移植这方面的网络资源相当的丰富。


第六阶段:文件系统学习

linux文件系统的种类与作用;熟悉busybox的使用,以及linux系统启动过程;构建自己的根文件系统
文件系统也是一个linux嵌入式系统不可缺少的部分,这一阶段的学习主要是熟悉根文件系统的作用以及基础知识,并且自己构建自己的根文件系统。这一阶段所看的书有《构建嵌入式linux系统》,这本书详细讲解了嵌入式linux的所有元素,包括文件系统。这里首先要熟悉基本的一些Linux文件系统,然后学习busybox的使用以及linux的启动过程,最后参考别人的一步一步来构建自己的文件系统。


第七阶段:嵌入式图形界面GUI
嵌入式图形界面GUI作为嵌入式上层系统的东西也是需要了解的,这里我只学习了minigui,因为QT是需要C++的知识,而我没有学过C++,所以只看了minigui的相关知识。这个阶段的目的主要是熟悉一下嵌入式图形接界面的开发流程,因为以后也不打算搞应用。

只是熟悉一下嵌入式组成的一些方面。这里只要将minigui移植到板子上能跑hello程序就可以了。其他的也不用深入了解。通过移植minigui对linux上运行的软件以及函数库,程序运行原理,编译器都会有一个新的认识。


第八阶段:linux驱动程序基础知识

为了linux驱动打基础,《LINUX设备驱动程序》(第三版)也就是大家所说的ldd3,是最经典的一本讲linux驱动的书,一定要看而且多看几遍。第一次看很难看进去,感觉讲的晦涩难懂。但是多看几遍就会由豁然开朗的感觉。看完了书,然后就是实验书中的例子。


第九阶段:linux驱动实战

通过led驱动理解杂项字符设备的注册与实现,并掌握MINI2440的IO操作过程;通过button驱动程序掌握基本的中断实现方法;掌握PWM驱动程序;通过触摸屏驱动程序掌握input设备模型的实现;掌握ADC驱动程序的设计;掌握看门狗,rtc驱动程序的设计;通过LCD驱动程序分析platform设备模型的实现。

主要是掌握实际的简单的驱动程序的实现与ldd3中的差别,并且分析一些linux子系统。通过这一阶段的学习,能够对linux驱动程序有更深入的认识。并且锻炼自己阅读海量代码的能力。这一阶段主要工作就是看代码,实验,看代码,实验,通过现象学习知识。


第十阶段:深入理解linux内核与USB子系统的研究

学习USB协议,阅读linux USB子系统全部的代码,通过阅读代码加深对USB的理解,随后就是熟悉各种USB类协议,编写和移植USB驱动了。USB是我确定的方向,因为我想搞什么东西都要专一,什么都搞,什么也搞不好。所以我决定学习USB。决定以后从事嵌入式有关USB方面的工作。这一阶段的学习正在进行中,现在正在linux USB子系统浩瀚的代码中漫游。

标签:驱动程序,Linux,嵌入式,学习,初学者,linux,USB,阶段
From: https://blog.51cto.com/u_15168824/9183129

相关文章

  • Linux创建运维用户和用户组
    在Linux系统中,为了安全和管理的便利性,建议创建专用的运维用户和用户组,而不是直接使用root用户进行操作。以下是创建运维用户和用户组的步骤:创建用户组使用以下命令创建一个名为appworkergroup的用户组:sudogroupaddappworkergroup创建用户接着,创建一个名为appwork......
  • 35道必懂的 Linux 运维面试题
    Linux运维面试题,给大家参考下~1、现在给你三百台服务器,你怎么对他们进行管理?管理3百台服务器的方式:1)设定跳板机,使用统一账号登录,便于安全与登录的考量。2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。3)建立简单的服务器的系统、配置、应用的cmdb信息管理。......
  • elasticsearch linux 上安装
    1、下载安装包,放到服务器指定目录下: 2、解压,到指定文件夹命令tar -xzf elasticsearch-8.11.3-linux-x86_64.tar.gz3、创建用户并授权:sudouseraddessudopasswdes用户授权指定目录权限: chown-Res:es/opt/module/es-7.8.0 给新创建的普通用户设置sudo权限  ......
  • Linux安装MySQL5.7并设置systemd方式管理
    1、安装前检查1)检查linux系统是否安装过mysql#检查系统中有无安装过mysql,如果有就卸载rpm-qa|grepmysqlrpm-e--nodepsmysql-xxxx#检查所有mysql对应的文件夹,全部删除whereismysqlfind/-namemysqlrm-rf......#删除mysql的配置文件rm-rf/etc/my.cnf#删......
  • v4l2(vedio for linux two)
    //Video设备又分为主设备和从设备对于Camera来说,主设备:CameraHost控制器为主设备,负责图像数据的接收和传输,从设备:从设备为CameraSensor,一般为I2C接口,可通过从设备控制Camera采集图像的行为,如图像的大小、图像的FPS等。//V4L2的主设备号是81,次设备号范围0~255视频设备(次设备......
  • Linux之GDB调试(一)
    一、C++调试准备工作调试代码:#include<iostream>intmain(intargc,char**argv){intiTest=100;constchar*str="thisisatest";std::cout<<"iTestis"<<iTest<<",stris"<<str&l......
  • 在Linux中清理Buff/cache
    在Linux中,缓冲区和缓存是为提高系统性能而保留的,但如果这些缓存过多,可能会消耗大量内存,影响系统的性能。有时候,您可能需要手动清理这些缓存以释放内存。但请注意,通常不建议定期或频繁地这样做,因为这样做可能会对系统性能产生负面影响。以下是清理buff/cache的几种方法:使用......
  • Linux中yum有何作用?主要功能是什么?
    Linux系统中的yum想必大家都听说过,甚至不少运维小伙伴都经常用到这个功能,但不少初学者对它了解的还不是很多,不知道yum是什么,以及它有哪些作用,本文为大家介绍一下,具体请看下文。在Linux中,yum是一个包管理器,用于管理和安装软件包。它是YellowdogUpdater,Modified的缩写,最初......
  • 迅为RK3568开发板Android11/12/Linux编译驱动到内核
    在平时的驱动开发中,经常需要在内核中配置某种功能,为了方便大家开发和学习,本小节讲解如何在内核中添加驱动。具体的讲解原理讲解请参考本手册的驱动教程。Android11源码如果想要修改内核,可以运行以下命令进行修改:cdkernel/makeARCH=arm64rockchip_defconfigmakeARCH=arm64men......
  • Linux ACL 权限的全部内容
    检查是否支持ACLACL需要Linux内核和文件系统的配合才能工作,当前我们能见到的大多数Linux发行版本默认都是支持的。但最好还是能够先检查一下:sudo tune2fs -l /dev/sda1 |grep "Defaultmountoptions:"Default mount options:                 user_xattr......