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

    文章

    1603

    浏览量

    71218
  • Linux
    +关注

    关注

    88

    文章

    11814

    浏览量

    219534

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何成为名高薪嵌入式工程师

    嵌入式,也可以轻松入门。 如果你已经明确好,想要从事嵌入式开发,想要成为名高薪的嵌入式工程师,那下面这几点建议请好好看看:
    发表于 04-09 09:03

    什么是BSP工程师

    的操作系统下驱动开发的过程,需要掌握硬件工作的原理,操作系统的相关知识。 3. 板子开发应用程序 如前文所述,嵌入式系统是
    发表于 01-13 06:54

    系统嵌入式的学习路线

    到搞的很精通,我要学会抓住重点,学会取舍,达到通百通,事半功倍的学习效果。 首先嵌入式技术主要分为嵌入式软件和嵌入式硬件2大方向。 嵌入式
    发表于 12-16 07:49

    面向单片机、事件驱动的嵌入式开发平台介绍

    核心,打造嵌入式技术生态,广大企业用户和嵌入式
    发表于 12-05 06:26

    为什么嵌入式驱动开发工程师可以拿高薪

    嵌入式驱动开发工程师能拿到高薪,核心在于这个岗位刚好踩中了行业刚需、技术壁垒高、人才缺口大这三关键节点,而且这种需求还在随着智能硬件的普及持续扩大。首先得明确,
    的头像 发表于 10-30 16:37 991次阅读
    为什么<b class='flag-5'>嵌入式</b>驱动<b class='flag-5'>开发</b><b class='flag-5'>工程师</b>可以拿高薪

    硬件工程师嵌入式软件哪个更有前途?

    不少人琢磨硬件工程师嵌入式软件到底哪个更有前途,其实从实际职场情况和成长路子看,差别还挺清楚的。先说说天花板这事,般来讲,硬件工程师的职
    的头像 发表于 09-10 10:43 1329次阅读

    招镶入工程师1,硬件工程师

    东莞市研生科技有限公司是家蓝牙方案公司,主营蓝牙方案的设计开发,产品包括蓝牙BLE/4G透传/AI智能体方案开发,因公司发展需要需对外招聘嵌入式软件
    发表于 08-29 02:14

    嵌入式工程师为什么要学QT?

    Qt对嵌入式工程师来说,真的很重要吗? Qt是跨平台的C++应用程序开发框架,非常适合
    发表于 08-14 15:15

    嵌入式工程师的进阶之路

    嵌入式工程师的进阶之路 ()初级工程师(0-3 年)核心技能: 单片机开发:STM32F103系列 GPIO/USART/SPI 外设驱
    发表于 08-13 11:08

    怎么结合嵌入式Linux,和FPGA三方向达到均衡发展?

    嵌入式领域,不少人都怀揣着让嵌入式Linux 和 FPGA 三方向实现均衡发展的梦想,然而实践中却面临诸多挑战。就像备受瞩目的全栈工程师
    的头像 发表于 06-25 10:08 1020次阅读
    怎么结合<b class='flag-5'>嵌入式</b>,<b class='flag-5'>Linux</b>,和FPGA三<b class='flag-5'>个</b>方向达到<b class='flag-5'>一</b><b class='flag-5'>个</b>均衡发展?

    Linux嵌入式和单片机嵌入式的区别?

    :使用Linux操作系统,可以运行各种复杂的应用程序和驱动程序。 4. 资源需求 : 单片机嵌入式 :对硬件资源的需求较低,通常只需要
    发表于 06-20 09:46

    物联网工程师为什么要学Linux

    物联网工程师需要掌握Linux的主要原因可以从技术生态、开发需求、行业应用及就业竞争力四角度来分析: 、技术生态与行业适配性 1)
    发表于 05-26 10:32

    嵌入式开发入门指南:从零开始学习嵌入式

    基础 3. 学习路径推荐第阶段:熟悉开发环境(如Keil、IAR、STM32)第二阶段:掌握裸机编程与驱动开发第三阶段:学习RTOS(实时操作系统)如FreeRTOS第四阶段:深入理解Lin
    发表于 05-15 09:29

    从“代码迷宫”到“视觉蓝图”——LVGL的嵌入式UI设计哲学!

    矢量图,让工程师与UX团队首次实现“无障碍协作”。 LVGL (Light and Versatile Graphics Library)的故事,像极了硅谷传奇——始于程序员的“不
    的头像 发表于 05-12 16:33 1394次阅读
    从“代码迷宫”到“视觉蓝图”——LVGL的<b class='flag-5'>嵌入式</b>UI设计哲学!

    为何嵌入式开发者觉得 MCU 开发无趣,更倾向 MPU(Linux)?

    嵌入式圈子里,最近老能听见有人念叨:“搞 MCU 开发越来越没劲儿了,不如转 MPU(Linux)有意思。” 作为在这行摸爬滚打二十多年的老兵,我也算看明白了 —— 这事儿就像程序员
    的头像 发表于 04-25 10:48 897次阅读
    为何<b class='flag-5'>嵌入式开发</b>者觉得 MCU <b class='flag-5'>开发</b>无趣,更倾向 MPU(<b class='flag-5'>Linux</b>)?