精华内容
下载资源
问答
  • 树莓派3 编译驱动

    千次阅读 2019-02-18 13:27:34
    分为本地编译和交叉编译,主要是Makefile的写法: 本地编译: 1 2 3 4 5 6 7 8 obj-m := bcm2835-i2s.o KDIR := /lib/modules/$(shell uname -r)/build ...

     

    分为本地编译和交叉编译,主要是Makefile的写法:

    本地编译:

    1

    2

    3

    4

    5

    6

    7

    8

    obj-m := bcm2835-i2s.o

    KDIR := /lib/modules/$(shell uname -r)/build

    PWD := $(shell pwd)

    all:

        make -C $(KDIR) M=$(PWD) modules

    clean:

        rm *.o *.ko *.mod.c modules.order Module.symvers

    .PHONY:clean

     

    交叉编译:

    1

    2

    3

    4

    5

    6

    7

    8

    KERN_DIR = /home/qiengo/doc/Linux/raspberrypi/linux_all/linux

    PWD:=$(shell pwd)

     

    obj-m   += ker_rw.o

    all:

        make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C $(KERN_DIR) M=$(PWD) modules

    clean:

        rm -rf *.o *.ko *.order *.mod.c

    展开全文
  • 使用树莓派4B平台,可以直接在改平台直接编译驱动开发 下载linux内核 在您的Raspberry Pi上,首先安装Git和构建依赖项,安装最新的内核以及相应的内核头文件: sudo apt update sudo apt install git bc bison ...

    内核编译准备

    使用树莓派4B平台,可以直接在改平台直接编译和驱动开发

    下载linux内核

    在您的Raspberry Pi上,首先安装Git和构建依赖项,安装最新的内核以及相应的内核头文件:

    sudo apt update
    sudo apt install git bc bison flex libssl-dev make
    sudo apt install raspberrypi-kernel raspberrypi-kernel-headers
    

    如有必要,请重新启动以确保您正在运行正确的内核版本:

    sudo reboot
    

    构建并安装内核模块:

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

    获取当前树莓派系统的配置文件

    这里很有必要说明是,在raspberrypi系统的3.x版本以前,树莓派系统默认存在/proc/config.gz文件,但是更新到4.x版本之后,/proc/config.gz文件默认不存在了,所以我们需要先获取到这个文件。

    执行命令:

    sudo modprobe configs
    

    执行以上命令之后,会在/proc/目录下生成config.gz文件。然后将此文件从树莓派系统内拷贝到我们的PC平台(有很多种方法,比如U盘,NFS系统文件共享,TCP,samba等等)。

    然后在需要编译的内核的顶层目录下执行命令:

    命令:

    zcat config.gz > .config
    

    目的是生成.config配置文件

    编译内核

    首先,根据您的Raspberry Pi版本,通过运行以下命令来准备默认配置:Raspberry Pi 1,Pi Zero,Pi Zero W和Compute Module默认构建配置

    cd linux
    KERNEL=kernel
    make bcmrpi_defconfig
    

    Raspberry Pi 2,Pi 3,Pi 3+和Compute Module 3默认构建配置

    cd linux
    KERNEL=kernel7
    make bcm2709_defconfig
    

    Raspberry Pi 4默认构建配置

    cd linux
    KERNEL=kernel7l
    make bcm2711_defconfig
    

    构建并安装内核,模块和设备树blob;根据使用的Pi型号,此步骤可能需要很长时间:

    make -j4 zImage modules dtbs
    sudo make modules_install
    sudo cp arch/arm/boot/dts/*.dtb /boot/
    sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
    sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
    sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
    

    注意:在Raspberry Pi 2/3/4上,该-j4标志将工作分配到所有四个内核之间,从而显着加快了编译速度。

    交叉编译

    参考如下两个链接:

    https://www.raspberrypi.org/documentation/linux/kernel/building.md
    https://blog.csdn.net/wxh0000mm/article/details/88567468
    
    展开全文
  • 1、首先检查交叉编译工具和源码版本是否一样 2、交叉编译工具环境变量是否正确配置 ...6、驱动源码路径下的 Makefile 是否添加了要编译驱动模块 7、以上问题都不能解决的话 clean make 再重新执行编译模块的操作 ...

    1、首先检查交叉编译工具和源码版本是否一样

    2、交叉编译工具环境变量是否正确配置

    3、.config 文件是否成功获取

    4、make menuconfig 裁剪库是否配置正确

    5、编译的命令是否正确,有些复制会乱码

    6、驱动源码路径下的 Makefile 是否添加了要编译的驱动模块

    7、以上问题都不能解决的话重新编译一遍
    make clean 之后再 make
    再重新执行编译模块的操作

    展开全文
  • 其实构建树莓派的交叉编译环境和其他的linux-arm开发是一致的,这里比较让人头疼的主要是树莓派内核源码的获取和编译工具的获取。搜了很多博客,大神门都是采用git工具从github上获取linux下的源码、...

    转载请注明出处https://blog.csdn.net/li84006800/article/details/103958869

        问题一:用git clone下载源码遇到的问题

    其实构建树莓派的交叉编译环境和其他的linux-arm开发是一致的,这里比较让人头疼的主要是树莓派内核源码的获取和编译工具的获取。搜了很多博客,大神门都是采用git工具从github上获取linux下的源码、tool下的编译工具。

    git clone git://github.com/raspberrypi/linux.git RpiLinux
    git clone git://github.com/raspberrypi/tools.git RpiTools

        然而,你会发现,需要安装git工具

    sudo apt-get install git

      以上解决方案都不可避免的遇到一个问题-从github下载code是非常非常之慢

    问题2-压缩格式的问题

      既然从github直接git clone速度慢,有另外一种方式是利用码云创建仓库,将github上的code克隆岛码云上,这样下载速度会明显提升。

        这时用windows下的git工具从码云git clone源码会发现下载的是解压后的源文件(linux下未验证),编译会报各种格式、语法方面的错误。

    如果直接在码云上下载zip格式的压缩文件,在linux环境下解压后编译也会报各种错误。这里意识到应该下载tar.gz格式的源码。

    经过以上两个问题的折磨之后搜索总结出一套交叉编译环境的方法

    一、下载源码

    1、查看树莓派上的系统版本

    uname -a

    得到的系统版本号为Linux raspberrypi 4.14.98+ 。因此下载的内核源码版本也应为4.14.98

    2、github上查看可用的分支

    a、打开https://github.com/raspberrypi/linux,默认当前分支为rpy-4.19.y。

    b、查看该分支下Makefile文件,说明当前分支code的linux版本为4.19.93,不是我们想要的4.14.98。

     c、更改分支,选择Branches-->4.14.y,发现其Makefile说明当前版本为4.14.114,也不是我们想要的4.14.98.这里是一个大坑,开始我以为4.14.y就是所有4.14版本开头都可以的源码,结果编译内核驱动之后无法加载到树莓派。

     d、更改分支,选择Tags-->raspberrypi-kernel_1.20190401-1,发现其Makefile说明当前版本为4.14.98

     

    【技巧】选择哪个日期的Tags分支,可以查看你从树莓派官网下载的raspberrypi系统的发行日期,一般Tags分支下日期最近的就是发行版的系统源码。

    e、直接浏览器打开如下网址,自动弹出下载框,较慢,但下载的是tar.gz的压缩包
    https://codeload.github.com/raspberrypi/linux/tar.gz/raspberrypi-kernel_1.20190401-1

    其中raspberrypi-kernel_1.20190401-1改为你需要的分支,这种下载的好处是windows下也能下载tarz.gz压缩包,不用git工具,还可以用迅雷加速下载,虽然也慢,但格式保证正确、不用额外工具。

    至此源码工作下载完成。

    二、下载交叉编译工具

    https://github.com/raspberrypi/tools下载交叉编译工具会出现如下问题

    1、arm-linux-gnueabihf-gcc -v,会报“error:no input files compilation terminated”错误

    2、编译内核时也会报“error:no input files compilation terminated”错误

    因此不用该网址的tool工具,选择从http://mirrors.ustc.edu.cn/kernel.org/tools/crosstool/files/bin/x86_64/4.9.4/ 下载,选择如下

     至此,交叉编译工具下载完成。

    三、编译环境搭建

    1、安装VMware虚拟机,安装Ubuntu 14 64位

    2、安装交叉编译工具

    3、编译内核

    4、编写编译用于测试的内核驱动模块

    5、将生成的内核驱动模块复制到树莓派后加载测试

    以上步骤可以参考https://blog.csdn.net/shanglin163/article/details/88828427,在此不详细赘述

     

    展开全文
  • 基于交叉编译平台编译树莓派驱动程序的Makefile文件的编写 在嵌入式Linux开发过程中,我们经常使用交叉工具链编译嵌入式平台的程序。最近在学习树莓派驱动程序的开发,用到树莓派官方在github上提供的交叉编译工具链...
  • 关于树莓派内核编译驱动编写(2)

    千次阅读 2015-06-26 10:35:18
    前几天搞定了树莓派2的内核编译运行工作,这几天集中研究了树莓派的gpio操作,那么现在是时候把它搞出来了 我们知道,gpio操作是驱动的基础操作,那么研究一块板子,一个版本的内核,首先要从gpio入手。 基础...
  • 关于树莓派内核编译驱动编写(1)

    千次阅读 2015-06-23 09:55:31
    一周前入手了一块树莓派,算上配件总共307,按照论坛的方法烧好SD卡,启动,那么接下来就要开始折腾了。 鉴于本人是一个新手驱动的事实,于是着手开始在pi上写驱动。 那么按照驱动的基础知识,编写linux驱动,...
  • 树莓派内核驱动 1、加载内核驱动:sudo insmod xxx.ko 2、打印内核的printk打印的东西:dmesg 3、显示当前内核模块装载的模块(查看驱动):lsmod 4、修改加载后内核驱动的权限:sudo chmod 666 /dev/pin4 (666代表...
  • 1.驱动触发流程: open read write 软中断触发异常进入sys_call -> (系统调用)sys_call ->(vfs) sys_open,sys_read,sys_write ->驱动里面的open,read,write->硬件 2.Linux内核驱动基础框架 #include <...
  • 4、下载源码并配置编译 git clone git://code.qt.io/qt/qtbase.git -b 5.8 cd qtbase ./configure -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/...
  • 驱动代码精简demo #include <linux/fs.h> //file_operations声明 #include <linux/module.h> //module_init module_exit声明 #include <linux/init.h> //__init __exit 宏定义声明 #include <...
  • 【以下命令没有特别说明,皆在上位机端运行(wsl不原生支持树莓派官方的32位编译器,自行查找资料折腾)。】 1.交叉编译环境准备 arm设备性能低,一般不在arm板上编译东西,所以使用交叉编译。此处上位机为linux pc...
  • 文章目录开发环境树莓派查看内核版本PC下载树莓派内核下载交叉编译工具Tools把交叉编译工具路径加入到环境变量编译树莓派内核编写驱动程序测试 开发环境 PC: Ubuntu 14.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_...
  • 我没事搞了一个RTL8723BU芯片的无线蓝牙网卡,京东搞的,挺可靠,想要给树莓派用,然而插进去,呵呵,没有驱动,于是就上网找办法,编译驱动。 首先是搭建好编译环境,在Raspbian之下,编译环境是全的,不用怎么...
  • 树莓派驱动之设备树覆盖

    千次阅读 2019-11-22 13:10:39
    树莓派驱动之设备树覆盖 一、前言 由于是初学者,所以对于一些操作需要记录下方便自己查找。 附上:树莓派设备树官网 我只从官网上了解到一点点内容,还有许多没看懂的和还没学的 一个常规的Arm-Linux设备树,主要是...
  • KDIR := /rk3288/raspberry/linux #树莓派内核源码目录 all: make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=/tools/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- #交叉编译工具的路径 ...
  • 一、驱动开发认知 1、驱动开发思想 ...因此我们在进行驱动开发的时候,从底层到上层依次实现,首先在内核空间添加驱动,通过文件名和设备号来区分底层驱动,然后编写底层设备驱动函数,最后编译驱动
  • 2,在树莓派上本地编译 详细记录: 由于ASIX的驱动只是linux 2.6以上的内核,并启动源码文件,针对ARM平台,需要重新编译驱动文件。 在asix网站上下载最新的源码,重命名为axasix.c axasix.h,并且在源码中修改...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 324
精华内容 129
关键字:

树莓派驱动编译