pcDuino内核开发指南

     最近在pcDuino上做AP的功能的,但是内核不支持NAT,需要改内核,添加wifi驱动,这里把内核开发的方法分享给大家,方便大家以后学习调试其他的驱动。

一,搭建交叉开发环境

按照传统的开发方法,我们需要下载交叉编译器,设置环境变量,有些时候交叉编译器还不能用,等等一些问题。在pcDuino上搭建很简单:

1,在电脑安装ubuntu系统,虚拟机或者硬盘安装都行,具体的安装过程我就不在这里赘述了;

2,sudo apt-get update  #更新一下软件源;

3,sudo apt-get upgrade # 更新一下系统;

4,sudo apt-get install g++-arm-linux-guneabihf #安装交叉编译器,安装的过程会设置好系统的交叉编译环境

二,下载pcduino内核源码

构建pcDuino系统所有的源码都在https://github.com/pcduino/kernel里面,我们只需要安装git下载下来就可以了。

1,sudo apt-get install git-core #下载安装git工具

2,git clone https://github.com/pcduino/kernel.git #下载所有源码

这个源码比较大加上git管理有2G左右,而且还不断增加中。这里需要找个安静的网络,可以长时间下载。下载后源码如图所示:

1

三,编译内核源码

linux-sunxi目录就是内核源码目录,我们到这个目录下:

make mrproper  #深度清除以前的配置

回到kernel目录下

make

第一次编译可能会出现一下问题:

1,提示有些.c文件找不到,其实这些文件是有的,按照提示,你到出现错误的目录里面去找,其实那个.c文件被加了其他的后缀,把后缀去掉可以了。

2,提示找不到工具mkimage ,这个工具是在编译u-boot的时候生成的所以你需要到

/home/pillar/WORK/kernel/build/pcduino-u-boot/tools

目录下,把mkimag拷贝到/usr/bin/目录下

除了以上问题应该没有其他的问题了。

四,配置Linux内核

传统的方法是到Linux 内核源码下面执行make menuconfig

由于pcDuino把整个工程都包装的很好,这里就不能到内核源码目录下执行了

由于Linux内核源码的图像化界面是基于ncurses库的,所以这里需要安装那个库

‘sudo apt-get install libncurses5-dev

安装完毕后,切换到/home/pillar/WORK/kernel/build/sun4i_defconfig-linux/下

make CROSS_COMPILE=arm-linux-gnueabi-    ARCH=arm    menuconfig

2

 

这样就看到了久违的Linux内核配置界面了。

配置完成后保存退出

执行 ls -a 命令就可以看到当前目录下隐藏的,config 文件

从底层的Makefile分析可以知道,编译的时候并不是读取这个目录下的.config

cp .config           /home/pillar/WORK/kernel/patch/linux-sunxi/arch/arm/configs/sun4i_defconfig

这样就会编译我们配置的内核。

五,在内核中添加驱动

这里我以添加雷凌的rt5370 USB wifi驱动为例介绍如何在内核中添加驱动。具体的内核驱动开发学习过程,请关注我后期的博客。

拷贝已经开发好的rt5370驱动到

/home/pillar/WORK/kernel/linux-sunxi/drivers/net/wireless

修改该目录下的Kconfig 文件,在文件的最后添加一下内容

source “drivers/net/wireless/rtxx7x/Kconfig”

修改该目录下的Makefile文件,在文件的最后加上一下内容

obj-$(CONFIG_RTXX7X_SW) += rtxx7x/

最后在刚才介绍的目录下安装刚介绍的命令配置内核,在内核的

Device Drivers  —>

[*] Network device support  —>

[*]   Wireless LAN  —>

<M>   Ralink 3070/3370/5370/5372 USB WiFi for SW

3

 

选择M表示是动态加载,编译完成之后会生成ko文件,你直接把它拷贝到文件系统,然后执行

insmod *.ko

就可以了,或者你选择*,这样就会编译进内核。

六,烧写刚刚修改过的内核

pcDuino提供了一个很简单的方式修改内核,告别了传统的TF卡,USB等等设备

编译生成的内核文件在

/home/pillar/WORK/kernel/build/sun4i_defconfig-linux/arch/arm/boot

目录下,我只需要用U盘拷贝到pcDuino上,或者你没有U盘执行以下命令就可以直接拷贝过去了

scp uImage root@192.168.3.101:/home/ubuntu/

当然你执行这个命令你需要在pcduino上执行一下命令安装SSH

sudo apt-get install openssh-server openssh-client

回到pcDuino,我们可以在/home/ubuntu/看到刚才的uImage,执行以下命令就可以直接将刚才修改的内核烧写到pcDuino上:

sudo mount  /dev/nanda     /boot

sudo cp uImage   /boot   -f

sudo cp evb.bin    /boot     -f

sudo reboot

这个evb.bin你需要到pcDuino的官网www.pcduino.com上面去下载。

这样内核就烧写完成了。

pcDuino很多驱动都是动态加载的,因此内核里面是没有驱动那些驱动的,你需要把刚才编译生成的驱动拷贝到当前的文件系统中来。驱动生成的目录如下:

/home/pillar/WORK/kernel/output

这个目录里面有a10_hwpack_20130417.tar.xz包,具体包的名字会根据当前日期来定。

把这个包拷贝到pcDuino上解压,解压后rootfs/lib/modules里面的3.4.29+里面都是ko文件,你只需替换到当前就可以了

首先到pcDuino的/lib/modules目录下删掉原来的驱动,新驱动和原来的是不兼容的,然后把刚才的3.4.29+拷贝到过来。

这里很多东西需要都需要手动加载,比如你想用USB wifi 你需要到net/wireless下执行

insmod rt5370sta.ko

这样驱动就加进去了,你的wifi模块就可以用了。

转载于:https://my.oschina.net/pcduino/blog/141917

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值