打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
树莓派3B内核移植

作者:杨文

在树莓派的系统中,提供了很多的现成的驱动程序和资源,尽管这样,还是远远不能适用于大部分情况下的设计使用,所以在使用某些设备时,需要自行编写或者修改一些驱动,以适用于想要控制的设备。编写linux驱动,需要内核源码树,所以编写驱动的第一步就是移植内核,以获得内核源码树。


1.准备工作:

1.1开发环境系统ubuntu 16(64位),在PC上安装虚拟机。

1.2树莓派系统为 ubuntu 16.04,(官方的系统为Raspbian,不过树莓派支持很多系统,这里用ubuntu因为UI看着更爽),树莓派官网下载。

1.3下载源码:https://github.com/raspberrypi

Linux:树莓派内核源码

tools:树莓派的交叉编译工具

注意:要下载系统对应的源码,我现在系统是4.4.38,所以下载4.4.y。

下载方式:

(1)网页下载

直接下载zip

(2)命令下载

Git clone --depth=1 https://github.com/raspberrypi/linux

git clone https://github.com/raspberrypi/tools

保存路径为~/Raspberry/下

2.确定版本

2.1查看当前树莓派编译器的信息

root@raspberrypi:~# cat /proc/version 

linux version 4.4.38-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #894 SMP Mon Jun 13 13:13:27 BST 2016


2.2 确定交叉编译工具

root@ubuntu:~/Raspberry/tools-master/arm-bcm2708# ls

arm-bcm2708hardfp-linux-gnueabi

arm-bcm2708-linux-gnueabi

arm-rpi-4.9.3-linux-gnueabihf

gcc-linaro-arm-linux-gnueabihf-raspbian

gcc-linaro-arm-linux-gnueabihf-raspbian-x64


此目录下有5个目录,是不同版本的交叉编译工具。其中arm-rpi-4.9.3-linux-gnueabihf和gcc-linaro-arm-linux-gnueabihf-raspbian-x64是64位机器用的。

每一个交叉编译工具的目录下都有bin目录进入,执行./arm-linux-gnueabihf-gcc -v可查看gcc版本。

这里我使用arm-rpi-4.9.3-linux-gnueabihf,因为目前板子上的gcc版本是4.9.3

3.开始编译

3.1 进入linux内核目录:

$ cd ~/Raspberry/linux-rpi-4.4.y

$ 修改内核根目录的Makefile文件,修改下面的这两行

  ARCH      ?=arm

  CROSS_COMPILE ?=/home/xxx/Raspberry/tools-master/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-

(xxx表示你自己的用户名)

$ KERNEL=kernel7

$ make bcm2709_defconfig

Note:如果是多处理系统可以添加选项-j n ,n为数字,表示多处理器的数量*1.5。可以加快编译速度

$ make -j4 zImage modules dtbs


3.2 创建目录modules

在linux内核目录顶层下创建modules目录。

$ mkdir modules

$ make INSTALL_MOD_PATH=modules modules_install



3.3 将SD卡插入读卡器,插入电脑,在虚拟机读取SD卡。

在/media/xxx/ 目录下会出现两个目录 PI_BOOT/ PI_ROOT/


执行命令

sudo scripts/mkknlimg arch/arm/boot/zImage /media/xxx/PI_BOOT/$KERNEL.img

sudo cp arch/arm/boot/dts/*.dtb /media/xxx/PI_BOOT/

sudo cp arch/arm/boot/dts/overlays/*.dtb* /media/xxx/PI_BOOT/overlays/

sudo cp arch/arm/boot/dts/overlays/README /media/xxx/PI_BOOT/overlays/

sudo cp -r modules/lib/ /media/xxx/PI_ROOT/ 

4.将SD卡插回树莓派,重新启动树莓派,查看系统版本变成了 4.4.50-v7 ,则成功更新了内核,以后就可以使用源码来编写树莓派驱动了。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
树莓派2和树莓派3交叉编译Qt 5.5/5.6,含我的操作注解
Configuring Qt Creator for the Raspberry Pi
[ 编译篇 ] 嵌入式平台 使用GoogleTest框架测试C++代码
SSD202开发笔记 | 01
基于AM335X开发板 (ARM Cortex-A8)——Linux系统使用手册 (上)
手动编译移植库/软件的一般方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服