Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1300291
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: LINUX

2011-03-06 20:31:16

  1. ===========
  2. kernel
  3. ===========

  4. 一、

  5. 二、

  6. 三、

  7. 四、内核目录
  8.     arch:        包含和硬件体系结构相关的代码,每种平台占一个相应的目录.

  9.     block:        块设备(磁盘...)驱动程序I/O调度算法.

  10.     crypto:        常用加密和散列算法(如AES、SHA...),还有一些压缩和CRC检验算法.

  11.     Doucmentation:    内核各部份的通用

  12.     drivers:    设备驱动程序,每个不同的驱动占用一个子目录.

  13.     fs:        支持的各种文件系统及其实现.

  14.     include:    头文件,与系统相关的头文件被放置在include/linux子目录下.

  15.     init:        内核初始化代码.

  16.     ipc:        进程间通信代码.

  17.     kernel:        内核的最核心部份,包括过程调度、定时器等,而和平台相关的一部份代码放在arch/*/kernel目录下.

  18.     lib:        库文件代码.

  19.     mm:        内存管理代码,和平台相关的一部份代码放在arch/*/mm目录下.

  20.     net:        网络相关代码,实现了各种常见的网络协议.

  21.     scripts:    用于编译内核的一些工具脚本实现

  22.     security:    提供安全机制SElinux.

  23.     sound:        所有内核音卡相关资料(ALSA...此还在更新中,还待完善)

  24.     usr:        用户相关

  25.     virt:        内核虚拟化的支持

  26. 五、内核编译

  27.     tar -xvjf linux-2.6.29.tar.bz -C /nfsroot        //解压内核源代码的压缩文件

  28.     cp uplooking.config .config && make menuconfig        //先保存内核的配置文件并配置、编译

  29.     make                            //make



  30. 六、升级内核只需编译一次后每次就升级它的补丁

  31. 七、链接:1、启动代码(crt.o):(1)分配栈空间 (2)bl main

  32. 八、内核的应用程序应按内核规则:也就是说我们编译的程序怎么样让内核执行:或在内核下怎么样编译一个文件
  33.        一\找MAKEFILE
  34.         ARM的makefile分5类:
  35.             1\top makefile:(里面放了内核所包含的文件目录)
  36.                     makefile可用include包含子makefile
  37.         makefile的作用:1\决定那些程序被编译(当其中一个文件被修改过,则make会智能的只编译修改的程序,没有修改过的它就不会再次编译)
  38.             
  39. :.ko模块文件(类似.so动态库文件):linux下的驱动编译成模块:在makefile中写:obj-m += test.o就会生成一个test.ko模块文件
  40.     TEST = y
  41.     TEST1 = m
  42.     obj-$(TEST) += test.o用宏定义编译进内核
  43.     obj-$(TEST1) += test.o用宏定义编译成模块
  44.     内核将所有的宏定义写在.config中,但make是不会去执行,其实内核是执行 include/config/auto.conf

  45.     kconfig:由script脚本去读所有文件中的此文件,然后生成图形配置界面,它与makefile成对出现(script其实是读arch/arm/kconfig:是用此文件来读其它所有文件的kcofig)

  46.     make menuconfig中由kconfig中配置来生成各个条目(bool:二态:选或不选/tristate:三态:/不选/M),此时可以看到设置条目的选项,但此时选择make是不起作用,.config会生成对应的条目:这也就是你在图形界面中的选择,此时生成的条目也就是上例中makefile中的宏定义,在对应的makefile使用此宏定义,同时也就生成了内核的.config文件)

  47.     kconfig语法:
  48.         1\bool:二态:选或不选/tristate:三态:/不选/M
  49.         2\memu"":在memuconfig中生成目录结构(一般写在第一行,表示下面包含在此目录中)
  50.         3\dpangd on TEST:这表示编译此文件需依赖TEST(因此需先编译TEST才能编译此代码)
  51.     
  52.     make bzImage:只编译所有选-y的文件
  53.     make modules:只编译内核所有选M的文件
  54.     make modules clean:清除所有编译成.ko的文件
  55.     make M=/drivers/test modules:单独编译指定目录选M的文件
  56.     make M=/drivers/test modules clean:单独删除指定目录中的模块文件
  57.     make -C ../../(指定顶层的makefile位置) M='pwd'(表示本路径下) modules:这样就可编译当前目录下所有选M文件,清除同理
  58.     注:为了防止有依赖关系中一个选-y一个选M分开编译就会报错,此时需要两个一起编译
阅读(694) | 评论(0) | 转发(1) |
0

上一篇:kernel-modules1

下一篇:中断体系结构

给主人留下些什么吧!~~