感谢支持
我们一直在努力

Linux嵌入式工程师成长经历

1、Linux开发工程师(每天学习6小时,用一个月时间)


首先成长为一名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<stdio.h>


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—片上系统(整个嵌入式系统如何运行)

赞(0) 打赏
转载请注明出处:服务器评测 » Linux嵌入式工程师成长经历
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏