打印

树莓派2B+体验-1

[复制链接]
2529|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cedar_renjun|  楼主 | 2015-10-20 10:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编译树莓派内核4.1.y
前言
拿到树莓派后,刚好手里有个360 Wi-Fi网卡(MT7601的芯片),就准备放树莓派上使用
插上去不识别,一搜才知道要重新编译内核,编译驱动什么的
原来没折腾过linux的编译,所以趁此机会,好好学习一下
期间查了网上很多资料,尝试,然后各种错误,最后还是官网资料英文资料最靠谱
搭建ubuntu环境
这个比较简单,请参考网上教程,完成ubuntu基本环境的搭建
搭建交叉编译环境
编译内核,可以在树莓派上进行,也可以在PC主机上进行编译,因为PC主机内存大,CPU性能高,所以一般都是在PC上进行
这里就引入了一个名次“交叉编译环境”
其实,刚听说交叉编译时,以为是多么高大上的技术,后来发现,就是在PC上安装工具,为CPU编译出可执行文件
我们一直以来用MDK,IAR开发STM32,AVR,也算是交叉编译了,,,哈哈
这里不做过多解释
树莓派官方为我们提供了对应的编译工具
官方推荐用git来下载,命令如下
1
$ git clone https://github.com/raspberrypi/tools

但实际下载时,git的速度实在难以恭维,建议直接用浏览器去github页面点击”Down as zip”下载
特别注意:下载完成后,注意检查下载包是否完整,不然在编译时会出现一堆莫名其妙的错误
下载完成后,将tools解压到某一个目录(XXX)下,那么tools的可执行目录为
1
2
3
4
5
32-bit 版本
XXX/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin

64-bit 版本
XXX/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
接下来,我们将这个路径添加到PATH环境变量中
这里有一个小插曲,因为我用的是普通用户,添加路径到.bashrc文件中后,编译源码的时候,提示没有系统权限,所以又加了sudo来提升权限
但是仍然编译出错,提示找不到gcc和ld工具,找了半天原因,发现
1)下载的tools压缩包不完整,丢失了一些文件,所以重新下载了tools
2)普通用户的.bashrc和超级用户的.bashrc不在同一个目录,即便是把PATH添加到/etc/profile中也不能,仍然会提示超级用户找不到gcc之类的错误
解决方法就是先通过sudo su来切换为超级用户,然后把PATH添加到root的.bashrc文件中
添加方法如下
  • 打开root/.bashrc
  • 在最后一行,添加export PATH=$PATH:XXX/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
添加完成后,注销超级用户,然后重新切换为超级用户,在shell下输入arm-linux-gnueabihf-gcc -v来验证PATH变量是否生效
下载内核源码
到git上下载源码
1
$ git clone --depth=1 https://github.com/raspberrypi/linux

还是那句话,git速度太慢,建议网页直接下载,但注意检查文件完整性
事后证明,很多错误,都是因为下载的源代码不完整导致的
下载后,随意放一个目录下,将目录名改为linux
编译内核
进入linux目录,输入下面的命令
树莓派1代
1
2
3
$ KERNEL=kernel
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

树莓派2代
1
2
3
$ KERNEL=kernel7
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

然后就是漫长的编译时间,在mac下,大概编译了一个小时左右
如果你电脑是多核的,可以在make 命令中增加-jn进行多线程编译
原则上,n是你处理器个数多1.5倍,比如我是4核电脑,就可以-j6
1
$ make -j6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
编译完成后的安装过程,请参考INSTALL DIRECTLY ONTO THE SD
CARD
最后,当我编译完成后,突然发现树莓派4.1.y内核已经默认支持了我的360wifi 2代,所以就没有继续编译网卡驱动了
^_^
参考资料



相关帖子

沙发
cgd| | 2015-10-21 22:55 | 只看该作者
沙发

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

150

帖子

5

粉丝