上周朋友来电话问ARM接SATA硬盘的问题,如果CPU不带SATA口,或带的SATA口不够用,通常可以用PCI转SATA的芯片扩展SATA口。ATP8624就是这样的芯片,可以将1路PCI转为4路SATA。
ATP8624的驱动源码就2个文件:atp8624.h和atp8624.c。原先顺利的加到cortina的NAS板的kernel source里面了。现在换成了MPC平台,MPC8379E是有4个SATA口的,在加上ATP8624扩展的,一共就可以有8个SATA接口了。
今天在ltib下把ATP8624的驱动源码加到了kernel source,算是ltib的小试了。虽然有些特殊,但kernel也属于ltib的一个packet。所以这样的工作应该属于ltibFaq里面的“How do I make changes to a package and capture them ”。
第一步 解压出源码包
$./ltib -m prep -p kernel
第二步 修改源码包
解出的源码包在/rpm/BUILD下,我的是linux-2.6.25。现在可以对这个源码包进行修改操作。添加ATP8624的驱动主要有三步:把atp8624.h和atp8624.c复制进source tree;修改其所在目录的makefile添加编译选项;修改其所在目录的kconfig文件添加配置界面选项。
第三步 编译,安装和部署
修改完成后,按下面的步骤分步重新编译,安装和部署kernel。
$./ltib -m scbuild -p kernel
$./ltib -m scinstall -p kernel
$./ltib -m scdeploy -p kernel
或使用
$./ltib --configure
在LTIB配置界面中选择配置内核,然后在配置内核时将/device driver/scsi目录中出现的ATP8624的选项选中。
第四步 生成一个patch文件并更新spec文件
命令如下:
$./ltib -m patchmerge -p kernel这一步非常重要,不做这一步,ltib就不会保存你对kernel这个package做的修改。ltib的自动化就显现不出来了。而且,patch会清晰的记录你对package做的修改。
生成的patch文件在
/opt/freescale/pkgs目录下,每个patch都有独立的编号
而对应的/dist/lfs-5.1/kernel/kernle-2.6.25-mpc837xerdb.spec.in也被更新
我生成的patch文件是kernel-2.6.25-1270523050.patch
查看kernle-2.6.25-mpc837xerdb.spec.in文件可以看到这个patch编号为patch12。
......
Patch10 : kernel-2.6.25-MPC837xE-RDB-add-esdhc-support.patc。
Patch11 : kernel-2.6.25-MPC837xE-RDB-add-PM-support.patch
Patch12 : kernel-2.6.25-1270523050.patch
......
至此ATP8624的驱动添加完成。注意这里采用的是将驱动添加到内核中的方法。当然也可以将驱动编译为ko模块格式,放到文件系统中,在系统启动后再进行驱动加载。