新南方linux内核驱动开发高级开发班怎么...

linux内核驱动-内核初涉
一、为什么要学习内核?
有些人要学习内核,而有些人则可以不学习它。你如果以后要从事研发或驱动开发的话,就要学习内核。
刚刚接触内核,主要学习内核的接口函数。不要深入的去读内核,因为你读也读不懂,内核代码庞大如野兽一般不可驾驭。
学习内核主要掌握层次学习法,即从头开始学习,一环紧扣一环。
内核学习的四步学习法:1、核心理论学习-概念与函数原型2、范例程序分析3、思维导图设计4、亲自编写代码
二、linux内核简介
1、linux体系结构
分为两部分:用户空间和内核空间
vcTausu/1bzktcTXqtLGoaM8L3A+CjxwPjMubGludXi1xMTausu5ubzcPC9wPgo8cD48aW1nIHNyYz0="/uploadfile/Collfiles/1.jpg" width="350" height="250" alt="\">
系统调用接口
SCI层为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核空间的桥梁。
进程管理(PM)是创建进程,停止进程,并控制它们之间的通信。进程管理还包括控制活动进程如何共享CPU,即进程调度。
内存管理(MM)的主要作用是控制多个进程安全地共享内存区域。
网络协议栈(Network Stack)为linux提供了丰富的网络协议实现。
虚拟文件系统(VFS)隐藏各个文件系统的具体细节,为文件操作提供统一的接口。
设备驱动(DD):linux内核中有大量代码都在设备驱动程序中,它们控制特定的硬件设备。
三、linux内核源代码结构
1、下载源代码地址www.kernel.org
2、linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。
arch目录:arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个cpu的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。/* X86英特尔cpu与之相兼容体系结构的子目录:boot 引导程序compressed内核解压缩 tools生成压缩内核映像的程序 kernel相关内核特性实现方式,如信号处理、时钟处理 lib 硬件相关工具函数*/
documentation内核文档
drivers设备驱动文档
include内核所需要的头文件。与平台无关的头文件在include/linux子目录下,与平台有关的头文件则放在相应的子目录中。
fs目录存放各种文件系统的实现代码。每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统vfs
"|--devpts是/dev/pts虚拟文件系统
||--ext2是第二扩展文件系统
||--fat是MS的fat32文件系统
||--isofs 是IsO9660光盘cd-rom上的文件系统
net是网络协议的实现代码
802无线通讯协议核心支持代码
||--appletalk 与苹果系统连网的协议
AX25无线INTERNET协议
||--bridge 桥接设备
||--ipv4 IP协议族V4版32位寻址模式
||--ipv6 IP协议族V6版
四、linux内核的配置和编译
代码是如何转化为烧写或安装到硬件平台中的系统映像文件的?
1、为什么要配置内核
选出需要的,去掉不要的!1、硬件的需求2、软件的需求
内核后要在linux中解压缩,不要在下解压缩因为windows下不区分大小写,而linux操作系统区分大小写。
进入内核的文件下:
2、内核的配置:
make config:基于文本模式的交互式配置
make menuconfig:基于文本模式的菜单型配置
&*&文件经过编译由.c文件到.o文件,最后链接压缩为内核镜像,它存放在内存。
&M&内核模块,同上经过编译后会把.o文件安装到硬盘。
& &表示不选择该功能
配置结果文件是隐藏文件,可以用ls -a 在内核文件下查看.config version
上面介绍的是一种方法,不过作为初学者我们往往是在一个已有的配置文件基础上,通过修改得到新的配置文件,linux内核提供了一系列可供参考的内核配置文件,位于Arch/cpu/configs
接下来,我们利用上的linux系统的配置文件来创建自己的升级版内核,并在虚拟机上运行该内核。
3、编译内核(编译内核、编译内核模块、制作ramdisk)
3.1、编译内核
make zImage只能编译小于512K的内核
make bzImage我们一般会使用这种方法编译内核
如需获取详细编译信息,可使用:
make zImage V=1
make bzImage V=1
编译好的内核位于arch/cpu/boot/目录下***
3.2编译内核模块
make modules 编译内核模块
make modules_install 将编译好的内核模块,从内核源代码目录复制到/lib/modules下**,为打包做好准备
经过第一步编译后,散落在各个文件下的.ko文件为内存模块。需要集中移动到/lib/modules这个就由make modules_install来完成
3.3制作init ramdisk
方法:mkinitrd initrd-$version $version
例如:mkinitrd initrd-2.6.32 2.6.32
通过uname -r 获得正在运行的内核版本
*$version可以通过查询/lib/modules下的目录得到
4、安装内核
1、cp arch/x86/boot/bzImage
/boot/vmlinuz-$version
2、cp initrd-$version /boot/
3、修改/etc/grub.conf的后四行
5、清理内核
make clean 清理编译内核生产的.o文件
make distclean 清理编译内核生产的.o文件和.config $version
记忆几个命令
rpm -qa | grep kernel 找到内核包信息
rpm -e kernel-内核包名
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'简介/嵌入式培训学校
  嵌入式培训学校指的是能够提供嵌入式培训服务的学校。因为嵌入式培训属于高端IT培训,所以对培训学校也有较高的要求。
嵌入式培训学校的师资团队/嵌入式培训学校
  专业的嵌入式培训学校一般需要具备课程研发团队和授课师资团队。以学院为例:   新南方3G嵌入式学院课程研发团队主要由中科院、华中科技大学、行业协会专家、高校知名教授、Linux内核驱动开发专家和新南方科教资深工程师组成,规划研发培训课程,并根据IT技术的发展方向和潮流,及时更新课程体系。   新南方3G嵌入式学院授课师资团队全部由中科院、华中科技大学和新南方科教资深工程师组成,全部人员均具备研发第一线工作经验,理论功底扎实,实践经验丰富。授课师资全部以团队的形式出现,以工程师最专业最擅长的课程为学员授课。
嵌入式培训学校的实战项目/嵌入式培训学校
  嵌入式Linux开发就业班课程大纲 嵌入式研发具有非常强的实践性,因此实战项目在嵌入式培训学校的课程体系中应该占据很大的比重。以新南方3G嵌入式学院为例:   新南方3G嵌入式学院的嵌入式Linux开发就业班课程分为3个学期,共90天(540课时,6课时/天)   晚自习不算入课时数,晚自习也有老师辅导和答疑   1.第一学期:
25天,150课时   2.第二学期: 嵌入式Linux应用开发 30天,180课时   3.: 嵌入式Linux系统开发 35天,210课时   从上表中可以看到九个实战项目的时间是37天,占全部授课时间的46%,这其实是一个很大的比例。
嵌入式培训学校的实战装备/嵌入式培训学校
  嵌入式培训学校的实战装备包括实验平台、实训系统和实际产品。   新南方3G嵌入式学院为例,下面这个新南方3G嵌入式学院的学员上课用的ARM 11 6410实验开发板,以上所有的实战项目都可以在它上面运行!   ARM 6410 开发板对于一些更加复杂和专业的应用开发,可能还需要用到各种功能更加强大的试验箱。下面是新南方3G嵌入式学院学员学习嵌入式时经常要用到的arm 11 。
嵌入式培训分类/嵌入式培训学校
  嵌入式培训是满足广大嵌入式爱好者需求而开设的高级课程。&    一般培训结构的就业班都是从职业规划角度出发,系统性的对广大爱好者进行培训。&    培养一批精英的嵌入式开发和嵌入式系统工程师需要更多的教学经验,需要更多的实践经验。&    嵌入式培训一般分为如下几个类别:&    1、长期培训:一般四五个月左右,适合于毕业后有志于从事嵌入式方面的开发工作的应届大学毕业生和已经工作过一段时间,但是想进行职业方向的转型,转而从事嵌入式开发方面的工作的职场人士。在长期培训的基础上很多培训机构都会包就业,如武汉众嵌,连续3年达到百分百就业率!&    2、短期培训:时间较短,培训一般在周末、节假日等业余时间进行,适合于在职的工程师进行工作方面的知识充电,学员需要一定的技术基础;&    3、企业级培训:一般时间非常短,需要根据企业的需求进行定制化的课程讲授,属于企业组织的员工职场充电。
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:7次
参与编辑人数:5位
最近更新时间: 12:58:52
贡献光荣榜

我要回帖

更多关于 新南方 的文章

 

随机推荐