- 收藏
- 点赞
- 分享
- 举报
linux内核裁剪学习基于s3c6410
long long ago,好像是5年前了。学习s3c6410记录的文档。发出来共享下。在硬盘上也是躺尸。
附上pdf档方便阅读
[attach]2223[/attach] Linux Kernel 内核裁减
序
改文档为公司内部交流资料…
第一部分 前言 1.1 主机硬件平台 CPU: Intel(R) Pentium(R)Dual E2160 @ 1.80GHz 内存: 2.0G Memery 硬盘: 160G
1.2 目标板硬件平台 CPU: S3C6410 DDR-RAM: H5MS1G62MFP(64M32位256M) Nand Flash: K9G8G08U0B(1G) 以太网IC: DM9000AEP
2.1 主机软件环境 2.1.1 Windows操作系统 DNW V0.60C 3Cdaemon Version 2.0 Revision 10 Quick Easy Ftp Server 3.9.1
2.1.2 Linux操作系统 Fedora 2.6.3.33 GNU交叉编译器GCC 4.3.2 Tree 工具 v1.5.3 ftp://mama.indstate.edu/linux/tree/ VIM编辑器 version7.0
2.2目标板运行环境 启动程序Uboot1.1.6
Linux内核2.6.28
3.1 虚拟机Fedora相关软件安装及配置 3.1.1Vmware下安装虚拟机Fedora(略) 3.1.2 Fedora与Windows文件互访配置 使用Quick Easy Ftp Server 3.9.1将Windows下的文件加入到服务器内供虚拟机加载使用,配置如下图所以:
图3-1-1配置Windows下服务器
图3-1-2设置windows服务器的虚拟目录 在ftp服务设置好后,便可以方便使得window与linux相互交换文件,在linux操作界面下通过place->Connect to Server…;进入以下界面输入FTP所设置的IP地址即可登录到windows下的目录来获取所需要的文件。
图3-1-3 Fedora访问Windows下文件
3.1.3 linux开发软件安装(略) 下面为安装软件所设置的环境变量,设置完环境变量后在当前目录下使用source ./bashrc重新启动
4.1.1 Linux-Kernel配置界面
在linux内核的配置上有两种配置界面,使用make menuconfig 得到的配置界面如同DOS下一般,个人觉得界面不怎么友好。而make xconfig命令在编译的过程中将会提示缺失Qt组件,因此在所安装的Fedora 13中是无法使用Qt来配置linux-kernel,必须更新Qt软件,本人的操作步骤如下:
1>将虚拟网卡,本地物理网卡通过桥的方式绑定在一起,再设置网桥的IP
图4-1-1将虚拟网卡与本机物理网卡桥接
2>将虚拟机的网络配置能成够通过物理网卡来登录外网获取更新源,此次的设置为DHCP,且vmware的Network Adapter配置如下图所示:
图4-1-2 在eth0的DHCP 或手动配置为同一个网段的IP地址 3 3>确认虚拟机Fedora连接外网 可以打开浏览器试试,亦可使用Konsole命令执行ping www.baidu.com
图4-1-3 确认虚拟机连通外网 4>手动配置IP地址后,通过以下两条命令将网卡重新启动1.ifconfig eth0 down 2.ifconfig eth0 up,并打开Konsole输入:yum install qt-*
图4-1-4更新Qt组件 4>Linux-Kernel配置界面 更新Qt完毕,在Konsole界面下执行make xconfig命令即可获得下图4-1-5配置界面 相对于make menuconfig的配置界面更友好。
图4-1-5 Make xconfig配置内核界面
图4-1-6 Make menuconfig配置内核界面 5.1 Linux内核裁减 5.1.1 Linux-Kernel 介绍(略)
5.1.2 Linux内核裁减的目的 若根据自己的需求来定制符合自己硬件平台的内核更利于系统的高效,稳定。因此就必须重新编译内核,为了正确的合理地设置内核编译选项,从而只编译开发系统所需要的代码。一般情况下从以下三个方面考虑内核的裁减 1>定制的内核在自己的硬件平台更快(代码量减少,多余的驱动等去掉) 2>内核需要更多的内存(内核部分将不会交换到虚拟内存中) 3>将某种功能编译成模块方式会比编译到内核模式速度要慢一些(模块需要加载,而内核方式在不使用的情况下也占据了部分内存) 5.1.3 Linux内核的编译模式 要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模块(module),动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。 5.1.4 内核步骤(内核各项item介绍略) 原本提供的内核大小有2.4M(Izmage内核压缩格式),解压后运行使用的内存也相当大,内存使用情况如下图5-1-1,裁减前大致了解整个内核的代码分布,如图5-1-2
图5-1-1 未裁剪前内核v2.6.28.6内存使用
图5-1-2 内核代码架构树形图 从图上看,蓝色的为目录,包含若干子目录。绿色的是可执行文件(有点类似window下的.exe执行文件),白色的为一些文本文件(一般情况下在konsole下执行命令cat filename可以在终端上打印出改文件的信息)。其中arch为各种处理器架构(如MIPS,ARM,DSP等),block块设备(如flash,scsi接口设备,U盘等)等等…以下为裁减步骤 1.根据产品的RM881板卡硬件平台做相关裁剪,原内核代码中提供了许多RM881板卡上不需要的驱动,诸如:触摸屏LCD,DM9000,键盘,USB驱动 等进入内核代码目录下并在Konsole下执行make xconfig命令调出内核配置界面,详细步骤如下图
对于输入输出设备中,产品不需要的鼠标,键盘,麦克,事件等驱动disable,但是触摸屏的触摸采样部分未能够去除,因为在makefile文件中所涉及的头文件没有处理,因此在make编译过程中报错!
5-1-5 内核裁剪结果 以上步骤基本将产品rm881板卡不需要的驱动disable掉,在konsole下执行make编译,不出意外将获得。下载到板子测试结果如下:
图5-1-20 裁剪后内核执行内存使用情况 6-1-1 内核裁剪遇到的问题 裁剪工程中,试图将触摸屏的触摸采样驱动拿掉,但涉及到相关文件编译未能够通过,需要修改make file文件。
图6-1-1 配置触摸屏驱动
图6-1-2由于内核触摸屏处配置disable后丢失定义的变量
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
-
2015-01-23 22:10:29
-
2020-12-29 15:56:39
-
2015-01-21 22:06:56
-
42018-07-02 14:18:02
-
2012-12-04 11:28:47
-
2016-03-25 16:43:36
-
2009-06-26 08:59:47
-
2017-02-15 10:55:57
-
2018-12-25 11:04:12
-
2008-11-08 13:46:56
-
2015-01-13 22:56:29
-
2018-09-06 13:40:35
-
2012-12-24 15:15:25
-
2017-06-24 14:39:22
-
2018-09-06 13:42:57
-
2018-09-05 14:43:59
-
2019-06-04 11:13:15
-
2017-06-24 14:43:03
-
2020-11-10 17:59:05
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明