ARM11系统板内核修改说明书涉及内核裁剪flash加载以及spi字符设备驱动的完整移植开发DOC.docx
- 文档编号:17151730
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:19
- 大小:677.76KB
ARM11系统板内核修改说明书涉及内核裁剪flash加载以及spi字符设备驱动的完整移植开发DOC.docx
《ARM11系统板内核修改说明书涉及内核裁剪flash加载以及spi字符设备驱动的完整移植开发DOC.docx》由会员分享,可在线阅读,更多相关《ARM11系统板内核修改说明书涉及内核裁剪flash加载以及spi字符设备驱动的完整移植开发DOC.docx(19页珍藏版)》请在冰点文库上搜索。
ARM11系统板内核修改说明书涉及内核裁剪flash加载以及spi字符设备驱动的完整移植开发DOC
文档控制记录
序号
修改状态
修改内容
修改人
完成时间
V1.0
创建文档
完成本文档的所有章节内容
2013-01-28
目录
文档控制记录II
1.引言1
2.内核修改相关说明2
2.1修改字符设备驱动加载方式2
2.2卸载USB等一系列不需要的模块4
2.2修改4G版本内核的nandflash配置部分5
2.3移植SPI驱动模块,读写flashw25q64bvsfig9
1.引言
目的:
本文档旨在对采集机系统板的内核修改做相关说明,基本操作和指导都进行图片和文字讲解,由于是在原厂内核的基础上做项目相关的功能扩展和修改,因此不会涉及太多的内核相关知识。
内核的相关修改操作都是基于搭建好交叉编译环境的基础之上,交叉编译环境的搭建,可以参见相关搭建文档,在此不再说明。
对象:
系统板维护的研发人员。
2.内核修改相关说明
2.1修改字符设备驱动加载方式
说明:
修改内核中字符设备加载方式,使其能够在内核启动后,可以通过命令行动态加载,卸载字符设备驱动模块。
1、进入到内核目录中,如图2-1-1内核根目录:
图2-1-1内核根目录
2、命令行输入命令makemenuconfig,会弹出内核配置的图形化界面,如图2-1-2内核配置图形界面:
图2-1-2内核配置图形界面
3、选中第三行,按enter键进入,如图2-3字符设备驱动加载选项:
图2-1-3字符设备驱动加载选项
请按照图2-1-3字符设备驱动加载选项所示,选中该配置的选项(*号代表选中对应项),按空格键进行选中取消,按上下键可以移动选项行数的位置。
4、配置好字符设备驱动加载选项后,通过Exit选项退出当前配置菜单,最后会提示是否保存当前配置信息,选中save保存退出即可,如图2-1-4配置信息保存。
图2-1-4配置信息保存
5、通过命令:
makezImage,编译内核,最终会在/arch/arm/boot目下生成支持字符设备驱动加载和卸载的内核zImage,如图2-1-5内核编译及所在目录。
图2-1-5内核编译及所在目录
2.2卸载USB等一系列不需要的模块
说明:
4G版本在调试的时候,出现了USB冲突的问题,实际中我们的硬件并没有添加USB,固在内核移植时,裁剪掉这部分!
1、在内核源码下,通过makemenuconfig命令进入到内核图形化配置界面,选择其中的DeviceDrivers,如图2-2-1DeviceDrivers选择。
图2-2-1DeviceDrivers选择
2、按enter键进入DeviceDrivers子选项中,将其中的Soundcardsupport、HIDDevices、USBsupport从勾选状态改为未选择状态,如图2-2-2原厂USB选项选中状态、图2-2-2卸载USB模块。
图2-2-2原厂USB选项选中状态
图2-2-3卸载USB模块
3、退出并保存,重新编译内核makezImage即可.
2.2修改4G版本内核的nandflash配置部分
说明:
修改内核配置文件中nandflash配置部分,使其将nandflash挂载上,由于项目新购入的为4G的nandflash,但是系统加载后,nandflash并未完全成功,实际上应用的只有200多M的空间,固在此修改内核的nandflash配置部分,使其支持4G版本的nandflash挂载。
1、参照“修改字符设备驱动加载方式”的方法,通过命令行makemenuconfig进入到内核配置界面,查看内核所采用的版本,如图2-2-1内核版本:
图2-2-1内核版本
2、通过内核版本,便知,我们的开发板采用的是SMDK6410版本,找到内核目录中对应的内核相关配置文件所在目录:
/linux-3.0.1/arch/arm/mach-s3c64xx;核对开发板版本SMDK6410,我们就可以确认,采用的内核配置文件为
mach-smdk6410.c,如图2-2-2内核配置文件:
图2-2-2内核配置文件
3、通过gedit打开内核配置文件,将如图2-2-3原厂内核的nandflash配置,修改为如图2-2-4支持4G的nandflash配置所示:
图2-2-3原厂内核的nandflash配置
图2-2-4支持4G的nandflash配置
说明:
如图2-2-5nandflash驱动加载模块所示,由于系统中只加载了mtd0、mtd1、mtd2,三块nandflash驱动加载,固此处采用删除第三块用户的分配的区域,将nandflash剩下的所有空间全部分配给文件系统,这也正好跟nandflash启动方式:
setenvbootargs"root=/dev/mtdblock2rootfstype=yaffs2console=ttySAC0,115200"相吻合,nandflash正好是将三块分区作为文件系统的存储位置所在。
图2-2-5nandflash驱动加载模块
4、保存修改后的nandflash配置文件,退出目录到linux-3.0.1下,通过命令:
makezImage,重新编译内核,最终会在/arch/arm/boot目下生成支持4Gnandflash的内核zImage,如图2-2-5内核编译及所在目录。
图2-2-5内核编译及所在目录
5、最后启动操作系统后,可见已经支持4Gnandflash,如图2-2-6支持4Gnandflash加载:
图2-2-6支持4Gnandflash加载
2.3移植SPI驱动模块,读写flashw25q64bvsfig
说明:
由于RE100项目要做一个通过SPI总线,将一个FPGA配置文件传输到业务子板,但是系统板原始所带的SPI驱动并不能正确使用,没有完全将用户接口映射到用户空间,固此处需要修改相关配置文件和重新编译内核,向内核增加SPI驱动模块,使其支持能够通过SPI读写flash的功能。
在3.0的linux内核中,SPI的驱动架构可以分为如下三个层次:
SPI核心层、SPI控制器驱动层和SPI设备驱动层。
图2-3-1SPI驱动模块框图
如图2-3-1SPI驱动模块框图:
sysfs(dev是用户空间接口,根据sysfs下的class目录由mdev负责建立);bus总线,linux下的设备都是建立在总线上的,platform总线是一个虚拟的总线,所有的的片上设备基本上都接在这个虚拟总线上;
device是设备;
device_driver是设备驱动;
class是类别,从功能角度对设备进行分类。
注意,在sys/bus目录下有platform目录和spi目录,platform下的设备有s3c64xx-spi0和s3c64xx-spi1分别对应了s3c6410上的spi0和spi1接口。
由于SPI整个驱动模块比较复杂,而本文只是讲解如何移植SPI驱动模块,此处给出整体的一个驱动框架模型,不再一一讲解,有兴趣可以参见相关资料关于SPI的驱动分析。
SPI相关主要目录为:
SPI核心层:
driver/spi
SPI控制器驱动层(头文件):
include/liunx/spi/spi.h
SPI初始化加载:
arch/arm/mach-s3c64xx/mach-smdk6410.c
SPI测试程序:
Documentation/spi/spidev_test.c
flashw25q64bvsfig简介:
w25q64bvsfig是一种能够片擦除、4K模式擦除、支持BUSY位读取、设备ID读取、支持SPI串行烧写数据的串行flash存储器。
SPI驱动移植具体过程:
1、命令行输入makemenuconfig进入内核图形配置界面,如图2-3-1内核配置图形界面:
图2-3-1内核配置图形界面
2、按照图2-3-2SPI配置选项,通过方向键和enter键进入到SPI配置选项界面,并按图示将SPI相关配置项选中。
图2-3-2SPI配置选项
3、选择好SPI配置选项后,通过Exit选项退出当前配置菜单,最后会提示是否保存当前配置信息,选中save保存退出即可,如图2-3-3配置信息保存。
图2-3-3配置信息保存
4、通过修改nandflash配置,我们的开发板采用的是SMDK6410版本,找到内核目录中对应的内核相关配置文件所在目录:
/linux-3.0.1/arch/arm/mach-s3c64xx;核对开发板版本SMDK6410,我们就可以确认,采用的内核配置文件为
mach-smdk6410.c,如图2-3-4内核配置文件:
图2-3-4内核配置文件
5、通过gedit打开内核配置文件,将如图2-3-5原厂内核的SPI头文件,修改为如图2-3-6RE100内核的SPI头文件所示:
图2-3-5原厂内核的SPI头文件
图2-3-6RE100内核的SPI头文件
6、找到原厂内核文件中,如图2-3-7原厂内核SPI结构信息所示的代码位置,替换成RE100的SPI结构信息,如图2-3-8RE100的SPI结构信息。
(其实原厂的开发板,是做了一个用于mcp251的SPI驱动,实际中未注册成功,固删除此部分代码,修改为自己的SPI驱动加载模块)
图2-3-7原厂内核SPI结构信息
图2-3-8RE100的SPI结构信息
6、找到smdk6410_devices这个结构,加入如下两行对字符设备进行初始化,如图2-3-9RE100的SPI字符设备加载。
图2-3-9RE100的SPI字符设备初始加载
7、找到初始化函数smdk6410_machine_init(),在其中添加,如图2-3-10RE100的spi注册函数所示的代码:
图-10RE100的spi注册函数
8、修改内核配置文件同目录的Makefile,通过gedit打开,将其中如图2-3-11原厂SPI的Makefile,修改为如图2-3-12RE100SPI的Makefile,保存并推出。
图2-3-11原厂SPI的Makefile
图2-3-12RE100SPI的Makefile
9、最后回到内核的顶层目录,从新编译内核makezImage;当开发板加载内核后,我们可以在/dev/下看到spidev0.0和spidev1.0则表示SPI驱动模块移植成功,如图2-3-13SPI字符设备接口。
图2-3-13SPI字符设备接口
10、使用Linux源码包下的linux/Documentation/spi/spidev_test.c程序来检测
#geditspidev_test.c修改spidev1.1为spidev1.0
#arm-linux-gccspidev_test.c-ospi
将编译好的程序下到板子上
用一根跳线将用户IO1的8针脚和9针脚连接
结果如图2-3-14SPI测试结果:
图2-3-14SPI测试结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM11 系统 内核 修改 说明书 涉及 裁剪 flash 加载 以及 spi 字符 设备 驱动 完整 移植 开发 DOC
![提示](https://static.bingdoc.com/images/bang_tan.gif)
链接地址:https://www.bingdoc.com/p-17151730.html