嵌入式linux烧写(二)—Linux内核的裁剪和编译
一、内核的获得
可以从网上下载内核文件,http://www.kernel.org。如果是为了练习,尽量下载2.4.x的内核。因为2.6.x的内核比较大,当然编译也需要更都的时间。
二、内核的编译
Linux内核的编译菜单主要有三个版本:
1)make config:进入命令行,可以一行一行的配置。
2)make menuconfig:开发人员比较熟悉的menuconfig菜单。
3)make xconfig:在2.4.X以及以前版本中xconfig菜单是基于TCL/TK的图形库的.
我们采用menuconfig菜单
编译内核需要root权限,以下操作都假定你是root用户.先在根目录下建立名为ARM2410的目录.然后
把你需要升级的内核拷到/usr/src/下(下文中以2.4.18的内核的linux-2.4.18.tar.gz为例),命令为
#cp linux-2.4.18.tar.gz /usr/src
然后解压该文件,命令为:
#tar -zxvf linux-2.4.18.tar.gz
如果你所下载的是.bz2文件,例如linux-2.4.0test8.tar.bz2,请使用下面的命令
#bzip2 -d linux-2.4.18.tar.bz2
#tar -xvf linux-2.4.18.tar
下面我们开始编译:
第一步:在终端下进入内核所在目录 "/arm2410";
第二步:键入make menuconfig,进入内核配置菜单,如下图:
注意:
1)带有"-->"表示该选项包含选项;
2)每个选项前面有[ ]或< >,中括号表示仅有2种选择(*或空),尖括号表示有3种选择(M,*或空),按空格键可显示这几个选择;
3)M表示以模块方式编译进内核,在内核启动后,需要手工执行insmod命令才能使用该项驱动;*表示直接编译进内核;空表示不编译进内核;
第三步:按着自己的需求,配置内核.一共有21项.
第四步:键入make clean命令,删除已生成的模块和目标文件.
第五步:键入make dep命令,编译变量依赖关系等;
第六步:键入make zlmage生成经压缩以后的内核映像文件zlmage;
第七步:键入make modules编译模块;
第八步:键入make modules_install安装编译完成的模块;
内核映像文件zlmage存放在 ./arch/arm/boot/目录下.
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......
比如top这个工具,他会显示3种数据,作者分别解释如下: VIRT:virtual memory usage。Virtual这个词非常神,一般解释是:virtual adj.虚的, 实质的, [物]有效的, 事实上的。到底是虚的还是实的?让Google给Define之后,将就明白一点,就是这东西还是非物质的,不过有效果的,不发生在真实世界的,发生在软件世界的等等。这 ......
程相关函数:
pthread_attr_init()
pthread_attr_setschedpolicy()
pthread_attr_setschedparam()
pthread_attr_destroy()
具体应用demo:
pthread_attr_init(&attr);
pthread_attr_setschedpolicy ......
工作中用到gdb来分析程序崩溃生产的core文件问题:
这里从网上查来的一个命令用法:
1,说明:
ulimit用于shell启动进程所占用的资源.
2,类别:
shell内建命令
3,语法格式:
  ......