CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 10498|回复: 0

内核驱动移植准备工作

[复制链接]
发表于 2014-9-25 11:18:00 | 显示全部楼层 |阅读模式
SD 卡中的 linaro 系统构架
上一个教程我们已经讲了怎么通过脚本命令的方式烧写一
个 linaro 系统到 SD 卡,烧写成功后,插到 cubieboard 启动,在
cubieboard 系统中的/dev/目录下会出现 mmcblk0
mmcblk0p1 mmcblk0p2.
其中 mmcblk0 包含有系统启动的 boot 信息,u-boot 就放在
里面
mmcblk0p1 中包含有 script.bin 和 uImage 文件, script.bin
文件是 linaro 系统开机启动的时候一个默认配置文件,例如
可以通过修改 script.bin 文件来更改系统显示是默认为 VGA
还是 LCD,可以修改芯片管脚的默认的电平等等. uImage 文件
则是 linux 内核镜像,可以通过替换这个镜像修改系统内核
mmcblk0p2 中则包含了 linaro 文件系统的系统文件,linux
内核模块编译产生的 modules 里面的.ko 模块驱动文件也在
这里面,具体路径在/lib/modules/目录下,如果你编译 linux 内
核的时候对模块驱动配置做了更改,那就要替换这个目录
linux 内 核 与 驱 动 移 植 就 是 把 我 们 自 己 做 好 的 script.bin 和
uImage 文 件 替 换 掉 mmcblk0p1 中 包 含 有 script.bin 和
uImage 文件,具体怎么处理后面会讲到
NFS 配置
NFS 可 以 让 你 的 PC 机 的 文 件 挂 载 到 cubieboard 中 , 从 而 使
cubieboard 可以下载和访问 PC 机上 ubuntu 的文件
首先你的 PC 机和 cubieboard 系统要有一个固定的 IP 地址,具体怎么
固定系统 IP,这里就不讲了,你也可以不固定 IP,自动获取的 IP 也可以,
查看自己系统的 IP 可以使用命令
#ifconfig
现在以 PC 机上的 IP 为:192.168.1.11
cubieboard 上 IP 为:192.168.1.235 为例
在 PC 的终端上输入如下命令:
# sudo mkdir /home/waveshare
# sudo apt-get install portmap
# sudo apt-get install nfs-kernel-server
修改配置文件
#sudo gedit /etc/exports
在打开的文件中添加:
/home/ waveshare *(subtree_check,rw,no_root_squash,async)
其中/home/ waveshare 为主机要共享的目录; *为允许共享的 IP 地址
段; (subtree_check,rw,no_root_squash,async)为权限设置.
# sudo /etc/init.d/portmap restart
# sudo /etc/init.d/nfs-kernel-server restart
在 cubieboard 上的输入如下命令:
$ apt-get install nfs-common
$ mkdir /mnt/nfs
然后运行测试命令看一下:
$ showmount -e 192.168.1.11
Export list for 192.168.1.11
/home/waveshare *
然后手动挂载, 运行如下命令:
$ mount -t nfs4 192.168.1.11:/home/waveshare /mnt/nfs
这样 PC 机上 ubuntu 系统的文件夹 waveshare 下的内容就全部挂载
到 linaro 系统的/mnt/nfs 下了,以后你移植内核或者驱动可以直接
在文件夹 waveshare 中进行,这样,在 cubieboard 的/mnt/nfs 下可以直
接得到 PC 机编译好的内核与驱动文件
在后面的内核与驱动移植介绍中,只要涉及到从 PC 机复制文件到
cubieboard,或者在 cubieboard 上运行 PC 机上编译好的文件都是通过
NFS 方式实现的,在 cubieboard 上运行 PC 上编译好的驱动或者测试
程序可以直接在挂载目录/mnt/nfs 下进行,不用再次进行复制操作,如
果你已经完成了以上 nfs 的安装与挂载操作,然后你的 PC 机或者
cubieboard 重启,需要再次在 cubieboard 上执行如下命令,重新挂载:
$ mount -t nfs4 192.168.1.11:/home/waveshare /mnt/nfs
另外文件共享还有其他的很多方式,比如 samba,这里就不在一一介
绍了
.
.
fex2bin 以及 bin2fex 的安装
进入 cubieboard 终端,输入如下命令:
$ apt-get install git
然后通过命令
$ git clone git://github.com/linux-sunxi/sunxi-tools.git
得到安装文件 sunxi-tools,或者复制我们光盘里面 DVD_DVK521_CN\
相关源码\sunxi-tools 到 cubieboard 中,然后
$ cd sunxi-tools/
$ apt-get install make
$ apt-get install gcc
$ apt-get install libusb-1.0
$ make
然后目录下会产生 fex2bin 与 bin2fex 2 个文件,执行如下命令:
$ cp fex2bin bin2fex /usr/bin/
这样在 cubieboard 你可以通过这 2 个命令对 script.bin 文件进行
转换了,其中 script.bin 为二进制文件,不可以配置更改,要先
通过 bin2fex 命令把 script.bin 转换为 script.fex,然后你就可以
更改 script.fex 配置文件(具体更改里面的内容后面的驱动移
植会讲怎么配置和更改),更改 script.fex 文件需要安装 vim
$ apt-get install vim
改完后再通过 fex2bin 命令把 script.fex 转换为 script.bin,2 个命
令的使用方法如下:
$ bin2fex script.bin > script.fex
$ fex2bin script.fex > script.bin
覆盖 uImage 和 script.bin
覆盖 cubieboard 上 SD 卡中 mmcblk0p1 中包含有 script.bin 和
uImage 文件是后面内核与驱动移植要进行的操作,这里只讲
怎么对这 2 个文件进行覆盖,具体怎么对这 2 个文件进行更
改,后面的内核与驱动移植会讲到
进入 cubieboard 终端,先对 SD 卡第一分区挂在
$ mkdir /mnt/mmp1
$ mount /dev/mmcblk0p1 /mnt/mmp1/
$ cd /mnt/mmp1/
进去后会发现 script.bin 与 uImage 2 个文件,通过 nfs 把 PC 机上编译
修 改 好 的 uImage 文 件 替 换 掉 这 里 的 uImage, 通 过 bin2fex 把
script.bin 转换为 script.fex,然后更改好 script.fex 文件后,通过
fex2bin 命令把 script.fex 转换为 script.bin,替换掉这里的 script.bin,
这里要说明的是,每次替换掉 script.bin 或者 uImage 任意一个文件,都
要重启 cubieboard 后配置才会生效
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-22 13:18 , Processed in 0.024804 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部