0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个嵌入式Linux开发程序员是如何成长为工程师的

5RJg_mcuworld 来源:未知 作者:伍文辉 2018-03-29 11:35 次阅读

从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步。下面是嵌入式Linux开发工程师的成长过程,希望对大家能有所启发。

Linux开发工程师

01首先成长为一名Linux开发工程师,这是最基本的目标,他应该具备如下的素质:

(1)了解Linux基本概念和基本操作(历史,文化,起源)(命令行,配置,操作,开发模式)

(2)会使用Linux平台下的编辑器vi(默认安装,占内存小,方便向嵌入式移植)

(3)会使用Linux平台下的编译器GCC(相应的十几个命令行参数

(4)会使用Linux平台下的管理工具Make(与Makefile相配合,尤其用于大项目中多平台移植的情况下)

(5)会使用Linux平台下的调试器GDB(可以了解底层硬件,及汇编指令)

嵌入式工程师

02他更关心的是将来在哪一目标机上运行,不关心操作系统,进行的更多与编程相关的工作:

(1)合格的C程序的程序员(理解基本的控制结构:循环、分支、数组、指针)

(2)基本的编程思想(编程实践中总结算法

(3)程序的编译和链接

(4)可执行文件内部(段、起始地址、如何加载执行)

(5)目标机处理器体系结构

(6)知道处理器的外设即System on Chip(内部存储结构及外设驱动)

(7)汇编语言及指令(主要是用在加载过程中)

系统工程师

04系统工程师夹在驱动工程师及应用工程师这两个层次之间,他要对系统有一个整体的概念,系统主要是指操作系统,往往理论有余而实践不足:

(1)进程管理与调度(知道进程间的切换与调度,多任务)

(2)内存管理(建立MMU页表,知道从虚地址到物理地址的映射)

(3)驱动管理(管理设备,编写设备驱动,加载设备驱动)

(4)文件系统(制作文件系统,文件系统的读写,甚至驱动有时也被当成文件系统来管理)

(5)网络协议知识(协议实现作为上层应用与底层驱动之间的衔接)

(6)图形系统知识(支持多窗口及管理窗口,包括窗口切换,窗口移动和覆盖)

嵌入式Linux系统工程师

05

(1)嵌入式Linux基本概念

(2)交叉编译

(3)Linux内核开发和调试工具

(4)启动代码移植(修改Uboot,Vivi等)

(5)内核交叉编译(Linux不支持芯片时要芯片级的移植,支持芯片时要板级的移植)

(6)根文件系统制作

(7)设备驱动程序开发

下面针对一个简单的"hello world"程序来区分一下以上所讲的工程师之间的区别:

#include

int main(void)

{

printf("hello world!\n");

}

初级程序员看到的是:

a、头文件

b、主函数main

c、子函数printf

d、函数调用

e、入口参数

f、参数返回

高级程序员看到的是:

a、头文件---预处理过程

b、主函数main---程序入口

c、子函数printf---标准库函数

d、函数调用---跳转指令

e、入口参数---栈空间的参数传递

f、函数返回---返回指令

嵌入式程序员看到的是:

a、头文件---预处理过程---宏展开/条件编译

b、主函数main---程序入口---启动代码

c、子函数printf---标准库函数---链接过程

d、函数调用---跳转指令---PC寄存器

e、入口参数---栈空间的参数传递---寻址方式

f、函数返回---返回指令---LR寄存器

嵌入式程序员还能看到的是:

可执行文件的内部组织结构

代码段

指令格式和类型

地址无关代码

数据段

RWdata读写数据段

ROdata只读数据段

BSS未初始化数据段

系统工程师看到的是:

子函数printf---标准库函数---链接过程

动态链接(Dynamic Linking)(需要系统的支持)

静态链接(Static Linking)(嵌入式系统常采用静态链接,以适应不同系统)

标准C库

系统调用(System Call)

软件中断(Software Interrupt)

Linux系统工程师看到的是:

可执行文件的加载过程(不用了解系统调用这一级)

Shell进程--fork系统调用---exec系统调用

进程状态(就绪、运行、阻塞)

进程调度和调度算法

进程的上下文切换

嵌入式Linux系统工程师看到的是:

用户空间和系统空间(分别运行用户模式和管理模式)

ARM---用户模式和管理模式(执行权限不同)

SWI---软中断指令(系统调用就是由用户空间向系统空间切换)

MMU---虚地址和实地址(不同进程如何实现自己独立的地址空间)

BUS---地址总线、数据总线和控制总线(程序如何获得数据,系统如何取指)

SOC---片上系统(整个嵌入式系统如何运行)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工程师
    +关注

    关注

    59

    文章

    1569

    浏览量

    68495
  • Linux
    +关注

    关注

    87

    文章

    11285

    浏览量

    209275

原文标题:详解嵌入式Linux工程师的成长经历

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux驱动程序程序员指南

    电子发烧友网站提供《Linux驱动程序程序员指南.pdf》资料免费下载
    发表于 11-22 15:53 0次下载
    <b class='flag-5'>Linux</b>驱动<b class='flag-5'>程序</b><b class='flag-5'>程序员</b>指南

    程序员去面试只需技能征服所有面试官!

    车辆工程专业的研究生去面试,面试官最后问他会不会嵌入式。虽然应聘的岗位不是嵌入式工程师,但看来老板还是希望他能懂点这方面的知识。这个小插曲
    的头像 发表于 11-05 19:35 191次阅读
    <b class='flag-5'>程序员</b>去面试只需<b class='flag-5'>一</b><b class='flag-5'>个</b>技能征服所有面试官!

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用
    的头像 发表于 09-02 09:11 472次阅读

    嵌入式linux开发板怎么操作

    嵌入式Linux开发板是种基于Linux操作系统的嵌入式系统
    的头像 发表于 09-02 09:09 367次阅读

    嵌入式linux开发板芯片的工作原理

    了处理器、存储器、输入/输出接口等硬件资源的嵌入式系统开发平台。它通常采用Linux操作系统作为底层软件平台,提供了丰富的开发工具和库函数,方便开发
    的头像 发表于 09-02 09:07 372次阅读

    嵌入式QT常见开发方式有哪些?

    嵌入式工程师可以使用同套代码库开发适用于不同嵌入式操作系统(如Linux、RTOS)的应用
    发表于 08-12 10:05

    嵌入式软件工程师如何提升自己?

    相关的实验室项目或参加开源项目以积累宝贵的项目经验。 4.不断学习与成长 嵌入式软件领域的技术更新速度非常快,因此,作为嵌入式软件工程师
    发表于 06-12 11:20

    从事嵌入式方向,定要软硬件通吃?

    嵌入式系统开发领域,软件和硬件的界限常常模糊不清。常见的问题是,嵌入式软件工程师是否需要了
    的头像 发表于 06-05 08:10 1159次阅读
    从事<b class='flag-5'>嵌入式</b>方向,<b class='flag-5'>一</b>定要软硬件通吃?

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式软件
    发表于 05-16 11:00

    薪资高、青春饭,是不是程序员=青楼?

    花期太短。技术迭代快,年龄大容易失业。 就这几年的互联网环境而言,不管是前端、Java、Android开发等等行业。已经感受到程序员不是太卷就是工作难找,薪资过低。以前高工现在拿着中低程序员薪资
    发表于 03-06 21:32

    嵌入式工程师需要掌握哪些技术?

    嵌入式工程师需要掌握哪些技术? 嵌入式系统是当今科技领域中的重要组成部分,它们存在于我们生活的方方面面,从智能手机到汽车控制系统,从家电到医疗设备。因此,对于那些想要进入嵌入式行业的
    发表于 03-04 16:38

    嵌入式人工智能的就业方向有哪些?

    的发展方向有很多,门槛高低不样。下面给大家列举些相应岗位所需具备的技能: 嵌入式Linux,C语言
    发表于 02-26 10:17

    职位介绍 之 嵌入式开发工程师

    般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四部分组成,用于实现对其他设备的控制、监视或管理等功能。
    的头像 发表于 01-17 17:23 481次阅读

    嵌入式工程师的涨薪经历

    下面是嵌入式工程师的涨薪经历,希望可以帮助到你,帮到其他的在校学生。   阶段 1 大到大三这个阶段我与大多数学生相同:   、学习
    的头像 发表于 01-05 08:39 437次阅读

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不样,所以我整理了下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式
    的头像 发表于 12-24 08:00 643次阅读
    <b class='flag-5'>嵌入式</b>软件<b class='flag-5'>工程师</b>常用的