嵌入式Linux工程师的成长经历,想做大牛应该具备如下素质
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---片上系统(整个嵌入式系统如何运行)
关键词: 嵌入式Linux
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码