2022-1-13 11:51:12 [显示全部楼层]
6702浏览
查看: 6702|回复: 2

[《树莓派4B系列教程》] 树莓派4B+centos8 交叉编译linux内核获取域格信号强度

[复制链接]
本帖最后由 Caner 于 2022-1-14 10:13 编辑

废话不多说哈,至于编译内核是因为要使用4G模块的信号强度,问了域格的客服,em还是挺给力,给了修改linux内核的方法,但是需要重新编译内核,这,,,不是刚出坑又掉进去了,搜索了一波,找到编译内核的方法:https://shumeipai.nxez.com/2020/10/18/compile-raspberry-pi-4b-linux-5-9-kernel.html,感谢大佬,但是他使用的Ubuntu,em,,,其实内核都是一样,注意对照内核架构X86

1. 按照教程下载rpi的内核,目前最新的是5.10的,建议打包下载吧,git clone 有点慢,有梯子另说
      GitHub 地址:https://github.com/raspberrypi/linux
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图1


2. 下载编译工具目前最新的也是7.5

     https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图2树莓派4B+centos8 交叉编译linux内核获取域格信号强度图3

3.  安装所需的依赖centos 使用yum 安装,下面使用的apt的库名,yum的库名略有不同,哈哈,留给大家去着磨
    bc bison flex libssl-dev make libc6-dev libncurses5-dev

4.  解压上面下载的安装包我是下载到root目录下的,使用root权限~
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图4

5.  添加编译工具到环境变量注意路径
     首先 nano ~/.bashrc
     在 .bashrc 后面加上:export PATH=$PATH:~/gcc-linaro/bin
     然后执行 source ~/.bashrc 刷新环境变量


6.  编译前的配置(重点)
     cd /root/linux-rpi-5.10.y 修改内核配置,根据kernel版本情况选择性修改,我的内核不支持blacklist~
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图5树莓派4B+centos8 交叉编译linux内核获取域格信号强度图6
     执行 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig 这个是默认配置(本人内核不懂就选了默认配置),     如果需要其它配置
     执行 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711 后,再执行 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig,会弹出内核配置窗口进行配置


7.  编译 -j8 是线程数,根据个人情况编译时间看个人设备配置
     make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-


8. 生成编译后的modules依赖包
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=../ modules_install
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图7

9.  将编译好的文件打包上传到树莓派
    打包zip -r **.zip **/*
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图8

10.  树莓派内核替换(树莓派解压完成,替换内核就是复制粘贴过程)
     cd lib/modules/5.9.0-v8/source/arch/arm64/boot
     执行以下命令:
     cp Image /boot/kernel8.img     cp dts/broadcom/*.dtb /boot/
     cp dts/overlays/*.dtb* /boot/overlays/
     cp dts/overlays/README /boot/overlays/

10. 生成内核模块(需要切换目录cd lib/modules/5.9.0-v8/source)
      在执行这一步之前你可能需要安装kmod依赖项
      执行:make ARCH=arm64 modules_install
      如果你是在交叉编译的机上直接进行安装,则要执行:make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=rootDirect modules_install

11.  修改配置文件(可选)
       树莓派默认是用32位内核启动,需要修改 boot 分区下的 config.txt 文件
       arm_64bit=1
       kernel=kernel8.img
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图9
12.  重启reboot
启动后执行 uname -a 可查看内核版本。
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图10

13. 通过脚本拿到信号强度
树莓派4B+centos8 交叉编译linux内核获取域格信号强度图11

实在懒得打字





pATAq  版主

发表于 2022-4-10 20:07:14

感谢分享,重新排下版增加语法高亮可读性会更好。
回复

使用道具 举报

pATAq  版主

发表于 2022-4-10 20:07:38

另外可以简介下原理和代价吗?为什么默认参数不这样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail