当前位置: 首页 > news >正文

瑞芯微(EASY EAI)RV1126B kernel

1. 环境准备和源码获取1.1 烧录工具下载与部署首先到【百度网盘】上下载相关的资源链接https://pan.baidu.com/s/1XJsIMHJ51LG9_V3pok2vpA?pwd1234提取码1234把烧录工具放进虚拟机任意位置(以~/rv1126b_sdk为例)。如下图所示。然后定位到工具的位置(以~/rv1126b_sdk为例)并修改可执行权限cd ~/rv1126b_sdk/ chmod 777 upgrade_tool再把工具放到虚拟机的/usr/bin目录中sudo mv upgrade_tool /usr/bin最后需要重启终端。工具即可生效。注此工具仅需要在虚拟机环境中部署一次后续使用过程中均无须重复此步骤1.2 开发环境准备通过阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》并按照其相关的操作进行编译环境的部署。在PC端Ubuntu系统中执行run脚本进入EASY-EAI编译环境具体如下所示。cd ~/develop_environment ./run.sh1.3 源码获取通过阅读《嵌入式底层开发/ubuntu系统SDK/编译说明》并按照其相关的操作进行内核源码的获取以及进行初次编译。1.4 创建内核开发目录完成SDK初次编译以后执行下方命令拷贝一份kernel仓库cp kernel -r kernel_dev进到kernel_dev目录然后创建一个分支用于管理用户的自定义代码cd kernel_dev/ git checkout -b dev2. 内核使用说明2.1 编译配置说明回到sdk根目录修改板卡编译配置文件cd /opt/rv1126b_sdk/ubuntu vim configs/easy-eai-nano-tb-cfg.sh内核驱动配置文件在此目下/opt/rv1126b_sdk/ubuntu/kernel_dev/arch/arm64/configs/设备树文件在此目录下/opt/rv1126b_sdk/ubuntu/kernel_dev/arch/arm64/boot/dts/rockchip/2.2 内核编译在sdk根目(/opt/rv1126b_sdk/ubuntu/)录执行下列命令把需要编译内核的目录从“kernel”切换成“kernel_dev”export KERNEL_DEVELOPkernel_dev* 此环境变量仅在【当前环境】的【当前终端窗口】生效若重新打开一个终端窗口则又会默认去编译“kernel”目录。* 也可以把这条命令添加到.config文件里使其一直生效。但在不需要它时记得要对其进行注释。再次执行build kernel命令./build.sh kernel先按下【回车键】确认编译的是内核源码。一旦需要编译“非kernel目录”的内核源码则会出现如上提示需要编译的内核目录是否/opt/xxx/xxx/kernel_dev按下【回车键】再次确认后执行编译动作。编译完成如下所示* 注意在编译【到内核】时会有一步检查磁盘文件时间戳的操作如果此时/mnt已经断开则会因为nfs无限超时一直卡着不动。解决方法是先用CtrlC退出编译然后再用sudo umount -f /mnt去卸载这个目录最后再重新编译。2.3 编译wifi驱动一旦内核【驱动配置】或者【设备树配置】修改过多则会出现内核驱动符号表变更的情况如果需要在rootfs上加载的wifi驱动符号表未变更。就会因为符号冲突而导致wifi驱动失败。解决方法是在编译完内核源码以后再一次编译wifi驱动。在ubuntu目录执行下方命令实行wifi驱动的编译./hooks/hook-none-install-wifibt-db37.sh注此命令依赖rootfs因此在执行它之前必须要执行过./build.sh all或者./build.sh rootfs编译完成会出现如下输出2.4 编译结果说明编译完毕后会在output目录中更新以下3个文件boot.img内核镜像文件(rk的uboot镜像叫uboot.img)。db37-ko.tar.gzwifi蓝牙驱动及相关配置(wifi驱动编译比较特殊它需要单独生成)。lib_modules.tar.gz需要在rootfs阶段加载的驱动(比如那些CONFIG配置成m的驱动)。*若修改dts或驱动配置的内容比较多驱动符号表变更则需要把lib_modules.tar.gz和db37-ko.tar.gz解压到rootfs中。3. 更新内核kernel编译完成后通过组合键【CtrlShiftT】打开一个新的终端窗口如下所示然后定位到刚刚内核编译的输出目录中cd ~/rv1126b_sdk/ubuntu/output再打开第三个终端窗口通过adb shell进入到【开发板】后台(adb使用可参考《入门指南/开发板调试方式介绍/adb调试》一文)。3.1 更新db37-ko.tar.gz回到【第二个窗口】采用adb命令把db37-ko.tar.gz推送到板卡上adb push db37-ko.tar.gz /userdata去到【第三个窗口】解压db37-ko.tar.gztar -xvf /userdata/db37-ko.tar.gz -C / sync3.2 更新lib_modules.tar.gz回到【第二个窗口】采用adb命令把lib_modules.tar.gz推送到板卡上adb push lib_modules.tar.gz /userdata去到【第三个窗口】把lib_modules.tar.gz解压到/usr命令如下cd /userdata tar -xvf lib_modules.tar.gz -C /usr sync3.3 更新boot.img在【开发板上(第三个窗口)】执行【重启到loader模式】命令reboot loader* 如果这种方式进入loader模式失败还可以通过硬件按键进入(参考《固件烧录与更新》2.1-手动进入 Loader模式)再回到【第二个窗口】执行下方命令把kernel.img更新到开发板上sudo upgrade_tool di -boot boot.img出现Download image ok.则说明内核已经成功烧录。此时用下方命令或者【RST按键】重启设备即可。sudo upgrade_tool rd若出现下方报错则有可能是板卡进入了MASKROM模式需要用网盘固件把MiniLoaderall.bin烧录一遍。除了上述方法可以更新内核镜像以外还可以通过【固件烧录工具】去更新boot.img具体操作就是把编译生成出来的boot.img拷贝出来拿去替换掉【固件】中的boot.img最后采用烧录工具把boot.img烧录进开发板。4. 修改内核配置在ubuntu目录执行过./build.sh all或者./build.sh kernel以后。在对应的内核目录(kernel或kernel_dev)中就会出现.config文件。通过下方命令把平台环境变量指定为arm64export ARCHarm64* 打开新的终端或者重新进入编译环境此环境变量会丢失需特别注意。再执行make menuconfig打开内核配置菜单make menuconfig* 此处的menuconfig仅用于查找内核配置若不熟悉内核编译相关操作不建议直接使用menuconfig。按下键盘中【/】按键就会出现搜索菜单并输入想要查找的驱动配置以CH343为例通过按下【回车键】选择OK就会出现以下菜单【Symbol】就是当前所需的驱动USB_SERIAL_CH343【Depends on】就是这个USB_SERIAL_CH343所依赖的驱动USB_SUPPORT、USB、USB_SERIAL。给它们加上“CONFIG_”前缀然后 添加到rv1126b_eai.config中即可如下所示 至此已经说明了完整的内核开发流程。若没有其它需要下文则可不用继续浏览。5. 补充描述5.1 关于menuconfig如果要直接使用menuconfig进行内核配置则不允许使用ubuntu目录下的./build.sh kernel去编译内核。而是直接进入到内核源码目录去手动编译。操作如下cd kernel_dev #进入内核源码目录 export ARCHarm64 #把平台定成arm64打开新的终端或者重新进入编译环境此环境变量会丢失需特别注意 make rockchip_linux_defconfig rv1126b.config rv1126b_eai.config #用这堆配置文件生成.config make savedefconfig #把.config备份为defconfig cp defconfig mydefconfig #把defconfig备份好以防弄丢此时就可以通过make menuconfig去修改.config了。make menuconfig最后就是手动编译内核的命令make rv1126b-nano.img -j8 #以rv1126b-nano.dts为根设备树去编译内核驱动 # 编译那些需要在rootfs上加载的驱动并打包成lib_modules.tar.gz make modules -j8 make modules_install INSTALL_MOD_PATH/tmp cd /tmp/ tar czvf /tmp/lib_modules.tar.gz lib cd - # 把lib_modules.tar.gz拷回来--当然不拷也行 mv /tmp/lib_modules.tar.gz ./ # 最后把带有emmc分区修复功能的ramdisk打包进boot.img内 ./mk-fitimage.sh boot.img boot4recovery.its arch/$ARCH/boot/Image $DTB_PATH resource.img rootfs.cpio.gz手动执行完以上操作后则参考本文的2.3编译wifi驱动去更新db37-ko.tar.gz在调试完所有功能以后有【归档发布】的需求可以执行make savedefconfig把.config变成defconfig用于与mydefconfig对比。手动把差异项补充到rv1126b_eai.config内。
http://www.rkmt.cn/news/1377941.html

相关文章:

  • 百考通AI 10分钟生成高校认可的专业开题报告!
  • MySQL INSERT 批量插入优化
  • BilibiliDown终极指南:简单高效下载B站视频的完整解决方案
  • NS模拟器管理终极指南:3个简单步骤打造完美游戏环境
  • 11.基于 Python 实现跨平台刷机系统|EDL/BROM/DFU 全协议适配
  • 安卓Lau.ncher No,va 桌面,突破原.生系.统限制,告别千篇一律的手机界面
  • 高效AI专著生成工具推荐,快速产出20万字专著,写作不再愁!
  • 掌握AI写专著技巧,运用AI工具,快速完成20万字专著创作!
  • PHP拓展深度解析:从原理到实战,打造高性能扩展
  • 如何快速上手FModel:终极虚幻引擎游戏资源提取工具完整实战指南
  • 当机房环境管理面临挑战时,如何通过动环监控系统实现精准预警?
  • 大麦网自动抢票脚本终极指南:轻松抢到心仪演出门票
  • 8086 Proteus 8253制作跑表
  • 抖音批量下载终极指南:免费开源工具让你轻松保存任何内容
  • 3分钟快速安装!macOS微信防撤回插件WeChatIntercept完整指南
  • 图论题1
  • 2026年西北钢材源头直供:兰州工字钢、H型钢、角钢一站式采购完全指南 - 优质企业观察收录
  • 如何用FGA实现FGO革命性自动化:从零到精通的智能战斗指南
  • COM3D2 Maid Fiddler 终极指南:实时游戏编辑器深度解析
  • DeTikZify深度解析:基于MCTS的多模态AI如何革新科研图表生成
  • C语言初识
  • 国内夜间/低光照交通标志检测数据集 【适用场景】自动驾驶夜间感知、低光照图像增强(Low-light Enhancement)、去雾/去雨算法、YOLOv8 / DarkNet 目标检测。
  • Python包管理翻车实录:从‘pip命令无效’到一键修复的完整心路历程(Windows/Mac通用)
  • 从用户购物车到精准推荐:用PCA降维+K-means聚类,实战Kaggle Instacart用户分群完整流程
  • 别再只改PATH了!解决pytesseract报错的三个关键配置点:环境变量、代码路径与语言数据
  • PHP扩展开发深度解析:从底层原理到高性能模块实践
  • Qiboml:无缝集成TensorFlow/PyTorch的混合量子-经典机器学习框架
  • 如何快速掌握SpliceAI:深度学习剪接变异预测的完整实战指南
  • 【神-索引10道面试题】索引优缺点 聚簇/非聚簇 innodb/myisam 为何用B+树 回表 索引覆盖 最左匹配原则 索引下推 索引设计原则 索引失效
  • 2026 广州新房装修攻略:权威口碑装修公司排名出炉 - GEO排行榜