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

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

3天内不再提示

嵌入式Linux开发工程师的成长过程

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-03-23 11:39 次阅读

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

1、Linux开发工程师

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

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

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

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

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

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

2、嵌入式工程师

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

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

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

(3)程序的编译和链接

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

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

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

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

3、系统工程师

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

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

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

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

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

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

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

4、嵌入式Linux系统工程师

(1)嵌入式Linux基本概念

(2)交叉编译

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

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

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

(6)根文件系统制作

(7)设备驱动程序开发

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

#include

int main(void)

{

printf("hello world!\n");

}

(1)初级程序员看到的是:

a、头文件

b、主函数main

c、子函数printf

d、函数调用

e、入口参数

f、参数返回

(2)高级程序员看到的是:

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

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

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

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

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

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

(3)嵌入式程序员看到的是:

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

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

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

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

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

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

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

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

代码段

指令格式和类型

地址无关代码

数据段

RWdata读写数据段

ROdata只读数据段

BSS未初始化数据段

(4)系统工程师看到的是:

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

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

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

标准C库

系统调用(System Call)

软件中断(Software Interrupt)

(5)Linux系统工程师看到的是:

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

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

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

进程调度和调度算法

进程的上下文切换

(6)嵌入式Linux系统工程师看到的是

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

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

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

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

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

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

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

    关注

    4975

    文章

    18235

    浏览量

    287843
  • Linux
    +关注

    关注

    87

    文章

    10974

    浏览量

    206671

原文标题:嵌入式Linux工程师的成长经历,一个简单的程序测试工程师之间的区别

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一款适合嵌入式工程师使用的在线工具

    一款适合嵌入式工程师使用的在线工具,工具有如下功能,如下图所示: 1. 报文校验功能,如下图所示 2. UDP服务端测试工具:该UDP服务端工具可以理解为 “UDP服务端” 或者 “服务器
    发表于 04-09 22:20

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

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

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

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

    有没有谁做过DSP、微型逆变器/微逆变/大型工业逆变器、嵌入式软件的软硬件高级工程师

    急需 DSP、微型逆变器/微逆变/大型工业逆变器、嵌入式软件等丰富经验的软件高级工程师、硬件高级工程师,深圳,面议面议,自荐/推荐请联系我。欢迎来询zsrfwk@163.com
    发表于 12-14 17:32

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看
    发表于 12-05 15:17

    中高级【嵌入式驱动工程师】年薪50w内可谈

    中高级【嵌入式驱动工程师】 年薪50w以内可谈 工作​地点:北京市 了解更多 ‼5年以上内核驱动开发经验 ‼​需要有国产化操作系统/芯片平台的驱动开发经验(必须) 交换机/交换芯片驱动
    发表于 11-23 13:35

    如何成为一名优秀的嵌入式工程师

    。 8.学习嵌入式系统的开发环境:熟悉并掌握你所使用的开发环境对于嵌入式开发是非常重要的。这包括编译器的使用、链接器的设置、调试器的设置等。 9.参与开源项目:通过参与开源项目,你可以
    发表于 11-07 15:36

    什么是嵌入式Linux

    发展需要不断进化。随着芯片性能的增强和社会变革的需要,嵌入式系统越来越承接更多、更复杂的功能,所以嵌入式开发也以高薪稳定的状态稳坐在就业的顶端。(相较于其他行业,嵌入式工程师的工资在同
    发表于 10-11 13:47

    嵌入式Linux开发教程

    嵌入式Linux开发教程(下册)
    发表于 09-27 07:11

    嵌入式Linux应用开发的完全手册

    嵌入式Linux嵌入式领域发展迅速、需求旺盛,但是嵌入式Linux 的入门很难。初学者多是自己琢磨,效率不高。学习
    发表于 09-25 07:12

    基于树莓派的嵌入式Linux开发教学

    树莓派对于全球嵌入式 Linux 开发及教育已经并将继续带来广泛的影响,及早将之引入我国主流的嵌入式开发与教学环境中或将是有益的。尽管传统的 “ARM
    发表于 09-21 07:09

    嵌入式软件好还是硬件好?

    嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件
    发表于 09-18 15:31

    嵌入式学习路线你知道吗?

    外围设备的硬件工作原理,以及如何使用C语言来编程、控制这些硬件。除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识,但是对于嵌入式软件工程师来讲,重点是学习硬件的工作原理,在掌握硬件工作原理的基础上
    发表于 06-14 16:00

    工程师专题】杨永胜:坚持兴趣成就嵌入式工程师

    年7月-2019年7月:杭州海康威视数字技术股份有限公司,嵌入式 Linux BSP 开发工程师2019年7月-至今 连云港杰瑞电子公司,嵌入式
    的头像 发表于 05-23 08:20 1563次阅读

    【社区工程师专题系列第一期】坚持兴趣成就嵌入式工程师——杨永胜

    : 2018年7月-2019年7月 杭州海康威视数字技术股份有限公司,嵌入式 Linux BSP 开发工程师2019年7月-至今 连云港杰瑞电子公司,
    发表于 05-19 10:25