Linux入门-程序开发

简介: Linux入门-程序开发

linux程序总体上来说是分两部分的:

  1. 底层驱动程序开发;

2.应用层应用程序开发;

驱动程序
一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识,至少需要看懂硬件原理图和芯片手册。硬件原理图告诉我们底层接口工作的逻辑,以及芯片工作的条件(电压、电流、时钟脉冲等);芯片手册是告诉我们如何去配置使用芯片,比较关键的是看懂寄存器配置,对于芯片的配置,就是去配置其各个寄存器,比如去配置一个AD音视频采集的芯片:就需要去配置音频采样率、采样点数、采样位数等等,视频需要也有相应的参数如码率、帧率、亮度、锐度、数据编码格式(BT656、BT1120等)等等,而这些参数,是与其寄存器一一对应的,就是找到其对应的寄存器,给寄存器写入需要的数值,即可配置为对应的模式。除此之外,还需要了解内核,比如内核的驱动框架,内核提供给驱动调用的接口,内核调度驱动的机制等等。驱动程序对开发人员要求通常比应用开发人员要高一些,需要掌握的知识多一些,所以通常待遇也会比应用开发人员要高一些。但是,驱动程序开发的需求量没有应用程序多,因为驱动一般完成后, 就不需要改动,而且一般驱动开发,都是在芯片厂商那里需要,做具体应用的公司一般驱动人员很少的。

应用程序
应用程序基本上就是通过常见的编程语言去开发具体业务的程序,这个编程语言就不再局限于C语言了,可以是C、C++、java、Python、lua、shell、还有web的前后端开发等。

应用层,顾名思义,就是应用,不同的行业有不同的业务,也就是不同的应用。比如:智能公交行业,需要做的是GPS定位,位置上报、根据位置自动报站并且平台端需要做基于GPS的位置信息来实现智能化调度车辆等。所以说,应用程序开发人员的需求量要远远大于驱动开发人员。做应用开发还有一个好处,就是可以熟悉行业的业务知识,这可能有利于你的职业发展,可以不把眼光局限在技术里面,而是通过技术去实现业务功能,也就是实现客户的需求,可以逐渐养成以市场为导向的思维,而不是只盯着技术,毕竟技术只是手段,是工具,最终我们是要解决客户或者市场的问题的。

做应用程序开发,入门的门槛就比较低了,刚毕业就可以做开发。但是好的应用开发工程师还是有很大区别的,这些区别在哪里那?我感觉主要体现在以下几个方面:

  1. 对需求的分析
  2. 应用程序的架构设计
  3. 整体系统设计

需求分析

对于业务需求的分析,不同的人理解的程度不一样,新手往往会低估技术难度与工作量。

应用程序架构设计

一般情况下,不同行业或者的公司,都有自己的一套应用框架,一般都是基于业务逻辑的应用程序框架,这个也不是一下子设计出来的,而是根据公司的业务逐步完善,最终进化而来的。

整体系统设计

这一项可能只在是嵌入式系统中存在;这里说的系统就是指的整个设备的软件系统,包括uboot、内核、文件系统以及flash的分区设计;这里面有好多技巧,比如比较重要的一项:升级功能。

嵌入式系统,升级是要放在最前面考虑的事情,设备前期升级的频率可能会比较高的,一方面是由于刚上线软件存在bug,另一方面是需求的增加。如果系统前期设计不够合理,后期升级系统或者应用程序可能就会很麻烦,所以设备上线之前,升级要做的非常稳定,最好做到支持远程升级;另外在flash的分区设计上,最好做一个备份系统分区,这个就是万一主系统异常无法启动,可以选择通过备份系统启动,从而再对主系统进行更新修复。具体细节不再这里详细说了,以后专门介绍。

结束语
对于Linux应用程序开发,入门很简单,嵌入式linux应用,与linux的应用基本上没有太大差别,如果熟悉了C/C++语言,那么很容易上手,经历过几个完整项目,填过一些坑,才算是入行。

目录
相关文章
|
5月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
261 73
|
3月前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
183 3
|
8月前
|
存储 Linux Android开发
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。针对竞赛这块(CTF、技能大赛等)基本上都是用在Misc方向的取证题上面,很多没有听说过或者不会用这款工具的同学在打比赛的时候就很难受。以前很多赛项都是使用vol2.6都可以完成,但是由于操作系统更新,部分系统2.6已经不支持了,如:Win10 等镜像,而Volatility3是支持这些新版本操作系统的。
1056 0
|
4月前
|
机器学习/深度学习 Linux 编译器
Linux入门3——vim的简单使用
Linux入门3——vim的简单使用
77 1
|
4月前
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
50 0
Linux入门1——初识Linux指令
|
4月前
|
存储 数据可视化 Linux
Linux 基础入门
Linux 基础入门
|
4月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
44 0
|
6月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
101 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
6月前
|
存储 Ubuntu Linux
Linux基础入门
Linux基础入门
42 1
|
6月前
|
Ubuntu Linux Shell
Linux 终端入门
Linux 终端入门
76 0