好文档 - 专业文书写作范文服务资料分享网站

linux培训资料

天下 分享 时间: 加入收藏 我要投稿 点赞

新人培训阶段学习资料 上海核心信息技术有限公司

Version

目录 课程介绍 ......................................................... 课程大纲 ......................................................... 第一阶段 Linux开发基础 ........................................ 第二阶段 嵌入式C语言编程强化 ................................. 第三阶段 Linux用户态开发 ...................................... 第四阶段 Linux内核态及驱动开发 ................................ 第五阶段 软件开发流程 .........................................

课程介绍

本课程旨在发现具备开发Linux下驱动程序的人才,新入社员将通过一个月的时间参照本教程熟悉Linux下设备驱动开发必须的知识。培训结束后符合要求的新人将进入公司具体项目组熟悉具体项目的开发方法。

课程大纲

本课程大纲内列出的任务基本由员工自己动手解决为主,通常每天上午指导人员将进行昨日实验结果评价及当日任务安排,对于工作任务不清楚的地方请及时向指导人员提出。下午主要为新员工个人实验时间。 第一阶段 Linux开发基础 2-3天

通过本课程的学习,使新员工能够了解Linux操作系统的概念,熟练掌握Linux下的基本命令、常用工具的使用方面的知识。 学习内容:

◆ 公司安全保密教育,日报格式说明

◆ Linux常用命令,文本编辑器Vi,简单Shell脚本编程 ◆ 嵌入式Linux开发环境基础:Gcc,Gdb,Make和Makefile GCC ARM编译环境安装(Sourcery G++ Lite Edition for ARM) ◆ 软件版本管理器Svn

◆ 嵌入式软件开发环境搭建与使用 x86 linux内核编译 versatile arm linux内核编译 QEMU运行linux 实验:

1. 开发环境配置,安装ubuntu虚拟机,熟悉Linux使用 2. 配置X86开发环境,编译x86 Linux内核,在QEMU下运行 3. 配置ARM开发环境,编译arm Linux内核,在QEMU下运行 4. 编写Hello World程序,在x86/arm Linux QEMU下运行 5. 编写一个脚本,统计一个目录下面所有C代码的行数。 6. 这些格式的如何去解压

.tar/bz2/.Z/.zip/.rar

第二阶段 嵌入式C语言编程强化 3-5天

本课程的主要目标是通过编写代码的方式,加强对于C语言编程和数据结构的掌握程度。

回答如下16道国外经典的面向嵌入式C语言面试题

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略

闰年问题)

2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 3. 预处理器标识#error的目的是什么?

4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 5. 用变量a给出下面的定义 a) 一个整型数(An integer) b) 一个指向整型数的指针(A pointer to an integer) c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d) 一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer ) 6. 关键字static的作用是什么? 7.关键字const是什么含意?

8. 关键字volatile有什么含意 并给出三个不同的例子。

9. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。

10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。 11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具体所代表的事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

__interrupt double compute_area (double radius) { double area = PI * radius * radius;

printf(\ return area; }

12 . 下面的代码输出是什么,为什么? void foo(void) {

unsigned int a = 6; int b = -20;

(a+b > 6) puts(\}

13. 评价下面的代码片断: unsigned int zero = 0;

unsigned int compzero = 0xFFFF; /*1's complement of zero */ 不具备可移植性性

14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

char *ptr;

if ((ptr = (char *)malloc(0)) == NULL)

puts(\a null pointer\他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧! 。。。。free

这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。

15. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子: #define dPS struct s *

typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪

种方法更好呢?(如果有的话)为什么?

16. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?

int a = 5, b = 7, c; c = a+++b; 12

编程题

◆ 位操作练习 Description

假设你工作在一个32位的机器上,你需要将某一个外设寄存器的第X位设置成0(最低位为第0位,最高位为第31位),将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其他位保持不变。对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。 Input

仅一行,包括R,X,Y,以逗号\分隔,R为16进制表示的32位整数,X,Y在0-31之间且Y>=3,(Y-X)的绝对值>=3,保证两次置位不会重合 Output

更改后的寄存器值R(16进制输出) Sample Input Sample Output 1234567c void main() {

int R,X,Y;

scanf(\R&=~(1<

printf(\}

◆ 排序

编写一个排序程序。被排序的文件有8MB大小,一行一个随机整数(ASCII格式)。要求对这些整数进行排序,并计算平均值,打印出排序所需的时间。 #include \#include \#include \

linux培训资料

新人培训阶段学习资料上海核心信息技术有限公司Version目录课程介绍.........................................................课程大纲.........................................................第一阶段Linux开发基础...
推荐度:
点击下载文档文档为doc格式
3uupm0xxj39mzf00wrvr0a0pl1szli00hhx
领取福利

微信扫码领取福利

微信扫码分享