酷德网

酷制造~
查看: 78|回复: 0

树莓派实时补丁教程之交叉编译篇

[复制链接]
  • TA的每日心情
    擦汗
    2019-8-13 14:13
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2020-6-11 08:54:49 | 显示全部楼层 |阅读模式
    此教程的环境是国产Deepin系统,硬件是虚拟机,如有问题请后台留言。您的支持是小编更新下去的动力。另外,点赞分享,共同进步,欢迎大家转发。1.安装工具。
    指令:
    apt-get install git bc bison flex libssl-dev make libc6-dev libncurses5-dev
    85abf4609284780e901d37a43a38706c.png
    工具说明:
    Git : 一个开源的分布式版本控制系统。
    Bc:它类似基本的计算器, 使用这个计算器可以做基本的数学运算。
    bison :根据文法把一系列的记号转换成一个语法分析树。
    Flex:一个词法分析器。用来将一个.l文件生成一个.c程序文件。即生成一个词法分析器。
    libssl-dev:是OpenSSL通用库,SSL也即Secure Socket Layer,是由网景公司为了传输敏感数据而提出的协议
    make :一个用来控制可执行文件和其他一些从源文件来的非源代码文件版本的软件
    libncurses5-dev:是一个Linux系统下的图形支持的函数库,字符终端处理库,包括面板和菜单
    2.新建一个文件夹Kernel,获取树莓派Linux内核源码
    4c6fdab375cdd2853f19b48b076f1bb0.png
    命令:
    git clone --depth=1 https://github.com/raspberrypi/linux
    查看Linux版本:
    进入Linux目录,输入指令:
    head Makefile -n 4
    # SPDX-License-Identifier: GPL-2.0
    VERSION = 4
    PATCHLEVEL = 19
    SUBLEVEL = 122
    3.下载实时补丁
    https://mirrors.edge.kernel.org/ ... ects/rt/4.19/older/
    命令:
    wget mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patch-4.19.120-rt52.patch.xz

    6949904e62595f789b0d881e840e09dd.png
    4.打补丁
    命令
    sudo xz -cd ../patch-4.19.120-rt52.patch.xz | patch -p1 --verbos
    补丁打成功截图
    704f6cffb141ca19627d8b4229c63180.png
    5.树莓派工具链配置:
    包括Binutils(汇编工具)、GCC(编译器)和Glibc(标准C函数库),主要用于把源代码编译连接生成可执行程序。
    下载工具链(需要时间可能较长)。
    指令:
    git clone https://github.com/raspberrypi/tools ./
    d0a12d91352dff3153a264fa56bb26e6.png

    配置环境变量:
    echo PATH=\$PATH:~/Desktop/ToolChain/arm-bcm2708/arm-linux-gnueabihf/bin >> ~/.bashrc
    8e4dc72459ef395d8547e6e083b6feb4.png

    source ~/.bashrc
    0e02da88f63c6d7552a4ff5242d05adb.png

    6.通过Make menuconfig配置PREEMPT_RT编译开关
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

    d0628fcc71f22100187e0113f2f754f7.png

    7.应用默认配置
    对于树莓派2,3,3+来说
    KERNEL=kernel7make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

    对于树莓派4来说
    KERNEL=kernel7lmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig

    8.编译内核(时间较长)
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 zImage modules dtbs
    9.直接在SD卡中进行安装
    上一步编译成功后会在下面路径下生成zImage。
    64b6732e3dbbeec56a238e09af1454a6.png
    将SD卡插入读卡器,并挂载到虚拟机上,使用lsblk命令查看挂在情况
    a1da1abd54e3c53117afb48d83b69a14.png

    8982009c38675407db6eb8ae31c8108d.png

    安装modules
    sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install
    复制内核和设备树到SD卡,并备份老的内核
    sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img
    sudo cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img
    sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
    sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
    sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/
    sudo umount mnt/fat32sudo umount mnt/ext4


    8d68511133da45e1dd1926d35f45a0de.png

    10.树莓派插上SD卡
    输入uname -a,发现已经是实时版本了
    fd18145623f1a172e884164be90abd9b.png
    10.CODESYS任务测试
    1fc448c9e6302e11ff66e2e83c466ba1.png

                   
    打赏鼓励一下!
    +10
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|小黑屋|手机版|Archiver|酷德论坛 ( 苏ICP备16065247号 )|网站地图

    GMT+8, 2020-7-14 03:54 , Processed in 0.151030 second(s), 48 queries , MemCache On.

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表