首页 > 系统相关 >Linux学什么

Linux学什么

时间:2022-10-22 16:04:51浏览次数:46  
标签:什么 编程 系统 嵌入式 开发 内核 Linux

0.C/C++编程语言

  • 需要学习基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等知识,还需要通过大量的代码练习理解其知识。

1.熟悉 Linux 系统基本命令

  • 安装 Linux 系统,学会基本操作,熟悉文件系统,shell 脚本以及常用命令。
  • 学习 Linux 操作系统的概念、安装方法、目录结构、常用命令、编辑器、编译器、调试器以及项目管理工具、shell Makefile 脚本编写等知识以及嵌入式开发环境的搭建。

2.了解程序开发过程

  • 搭建开发环境,了解 Linux 上程序开发过程。
  • 学会使用文本编辑工具 Vim,编译工具 gcc, as, 连接工具 ld, 调试工具 gdb, make 工具,会写 makefile。
  • 用 C 语言实现并编译自己的测试程序。

3.尝试系统编程

  • 试着在 Linux 上用 C 语言进行系统编程,
  • 其中需要调用 Linux 系统库函数 (API)。
  • 例如,实现一个需要进行网络通信、操作文件的多线程/进程程序。
  • 以此深入了解 Linux 系统运行机制。
  • 学习标准 I/O 库,Linux 多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,培养 Linux 开发和代码调试的能力。

3.1 计算机网络

  • 计算机网络在嵌入式 Linux 系统应用开发过程中使用非常广泛,通过 Linux 网络发展、TCP/IP 协议、socket 编程、TCP 网络编程、UDP 网络编程、Web 编程开发等方面入手,全面了解 Linux 网络应用程序开发。重点学习网络编程相关 API,熟练掌握 TCP 协议服务器的编程方法和并发服务器的实现,了解 HTTP 协议及其实现方法,熟悉 UDP 广播、多播的原理及编程方法,掌握混合 C/S 架构网络通信系统的设计,熟悉 HTML,Java 等 Web 编程技术及实现方法。

3.2 数据结构与算法

  • 数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中被广泛应用,学习好数据结构与算法可以提高程序的效率,优化代码。该部分的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其 C 语言实现过程。

4.学习内核

  • 这一部分内容比较深,能把它学透的基本就是大牛了,写个 OS 就不在话下了。

5.驱动开发

  • 但是学习驱动开发无疑要把前面的都要学好。
  • 驱动程序设计是嵌入式 Linux 开发工作中重要且相对困难的一部分。这里要求同学们要熟悉 Linux 的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备 ARM 硬件接口的基础知识,熟悉 ARM Cortex-A8 处理器 s5pv210 各资源、掌握 Linux 设备驱动原理框架,熟悉工程中常见 Linux 高级字符设备、块设备、网络设备、USB 设备等驱动开发,在工作中能独立胜任底层驱动开发。

6.嵌入式系统开发

  • 学好 Linux 是嵌入式系统开发的基础。
  • 嵌入式开发包括很多方向,有硬件、软件,以及系统级别。
  • 硬件要学单片机,ARM、MIPS,DSP 等各种 MCU,Verilog, RTL, 具体就不多说了,跟 Linux 关系不太大。
  • 软件的话,需要了解交叉编译,以及嵌入式环境下 C 语言的特殊用法,例如 volatile、 位操作、寄存器操作、大小端、程序跳转等。
  • 系统级,要了解 Linux 内核裁剪、移植、编译、调试,还有 Bootloader 、设备驱动等。
  • Linux 平台包括内核裁减、内核移植、交叉编译、GNU 工具使用、内核调试、Bootloader 介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在 s5pv210 实验平台上运行自己制作的 Linux 系统,集成部署 Linux 系统整个流程。同时了解 Android 操作系统开发流程。Android 系统是基于 Linux 平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA 等消费类电子产品。

进程管理专题

内存管理专题

网络协议栈专题

设备驱动管理专题

文件系统及内核组件专题

项目实战

群体

1.从事业务开发多年,对底层原理理解不够深入的在职工程师
2. 从事嵌入式方向开发,想转入互联网开发的在职工程师
3. 从事Qt/MFC等桌面开发,薪资多年涨幅不大的在职工程师
4. 从事非开发岗位(算法岗,运维岗,测试岗),想转后台开发岗位的在职工程师
5. 工作中技术没有挑战,工作中接触不到新技术的在职工程师
6. 自己研究学习速度较慢,不能系统构建知识体系的开发人员
7. 了解很多技术名词,但是深入细问又不理解的工程师
8. 计算机相关专业想进入大厂的在校生(本科及以上学历,有c/c++基础)






标签:什么,编程,系统,嵌入式,开发,内核,Linux
From: https://www.cnblogs.com/starcos/p/16816234.html

相关文章

  • 05.Linux配置静态IP地址
    [root@localhostnetwork-scripts]#catifcfg-enp0s3TYPE="Ethernet"BOOTPROTO="static"IPADDR="192.168.43.202"NETMASK=255.255.255.0GATEWAY=192.168.43.1DNS1=1......
  • Linux常用命令(针对我个人)
    pwd查看当前目录位置cd-返回上一次所在目录cat(文件名)查看文件more(文件名)......
  • Linux设置开机自启动的三种方法
    一、rc.local文件中添加自启动命令1、执行命令:编辑"/etc/rc.local"vi /ect/rc.local2、然后在文件最后一行添加要执行程序的全路径。例如,每次开机时要执行一个hell......
  • ERP 系统的核心思想和主要作用有什么?
    ERP系统的核心思想就是用规范化、标准化的管理来提高企业经营效益,充分整合、调配、调动企业内物质资源、资金资源和信息资源等各项资源,重点针对物资资源管理(物流)、人力资......
  • linux 网络命令
    博主描述:https://www.cnblogs.com/feizirui/p/16800006.html 一、网络配置命令1.1ifconfig查看当前活着的网络接口信息1.2hostname查看或设置主机名1.3route查看或......
  • Linux 驱动开发:USB无线wifi驱动开发(MT7601)、完成WIFI管理工具安装
    开发环境说明内核版本:3.5.0交叉编译器:arm-linux-gcc-4.5.1PC宿主机:红帽REDHAT一、移植WIFI驱动当前采用的WIFI是360随身WIFI,这款随身WIFI所用的网卡芯片是 Ralink(雷凌......
  • Linux下驱动开发_块设备驱动开发(内存模拟存储)
    theme:scrolls-lighthighlight:vs2015​一、前言块设备驱动块是Linux下3大设备驱动框架之一,块设备主要是针对存储类型的设备设计的驱动,配合文件系统完成数据存储。在应用......
  • Linux下RTC驱动开发(硬件采用DS1302)
    theme:scrolls-lighthighlight:xcode​一、前言在Linux系统上主要有两个时间基准,一个数是系统时间和,一个是RTC时间。其中系统时间是系统运行时由定时器(滴答定时器)维护......
  • Linux网络服务之SSH(远程访问及控制)
    1SSH1.1SSH概念SSH(SecureShell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时......
  • 云2_0时代,华为云数据库 RDS for MySQL 能做什么?
    随着网络信息社会的不断发展,网络使用单位的数量不断增加,物联网、人工智能和计算机大数据算法等网络信息技术被不断应用于企业生产和发展,这种背景下,网络使用单位对于数据库的......