rk3399移植linux kernel

这篇具有很好参考价值的文章主要介绍了rk3399移植linux kernel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


参考文章:
1.RK3399移植u-boot
2.I.MX6Q-SDB开发板移植ubuntu
3.Rockchip RK3399 - 移植ubuntu 20.04.4根文件系统
4.Rockchip RK3399 - 移植uboot 2023.04 & linux 6.3

0.前言

  在前一节中移植了rk3399的u-boot,这一节就继续移植linux kernel。不过rk3399在移植kenel前,需要先制作根文件系统,这样才能在生成内核镜像文件Image时,将根文件系统的相关信息填入。

一、移植ubuntu根文件系统

  这里就不再赘述移植步骤,参考之前对i.mx6Q移植的步骤即可。不过有一些步骤略有不同,比如暂时先不配置串口的输出,后续启动板卡到u-boot界面再进行配置。另外,制作好的根文件系统需要打包成.img格式。这里就简述下打包步骤作为记录:
制作好的ubuntu根文件系统在ubuntu_base目录下,在同级目录下新建一个目录ubuntu_ext4_mount,用于挂载虚拟磁盘,并格式化成ext4格式:

mkdir ubuntu_ext4_mount
#挂载虚拟磁盘
sudo dd if=/dev/zero of=ubuntu_ext4.img bs=1M count=1300
#格式化
sudo mkfs.ext4 ubuntu_ext4.img
#挂载img镜像
sudo mount ubuntu_ext4.img ubuntu_ext4_mount/
#拷贝根文件系统
sudo cp ubuntu_base/* ubuntu_ext4_mount/ -af

其中count为根文件系统大小的2倍,可以使用du -h --max-depth=1命令查看目录大小。
之后就可以卸载并删除ubuntu_ext4_mount目录,然后检查下制作好的img即可:

umount ubuntu_ext4_mount
rm -rf ubuntu_rootfs
#用e2fsck修复及检测镜像文件系统
e2fsck -p -f ubuntu_ext4.img
#resize2fs减小镜像文件的大小
resize2fs -M ubuntu_ext4_rootfs.img

二、移植linux

官网下载地址:https://www.kernel.org/
镜像下载站:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/。
这里下载最新的linux-6.4.7并解压:

tar -xvf linux-6.4.7.tar.gz

修改顶层makefile中的目标平台及交叉编译链:
rk3399移植linux kernel,没事瞎玩,linux,SW799,RK3399
由于官方kernel只有一个默认配置,所以需要对其进行一些裁剪。

#配置文件存放位置
ll arch/arm64/configs/defconfig
#加载默认配置
make defconfig
#手动裁剪
make menuconfig

1.支持NFS(可选)

NFS为网络文件系统,如果后续需要对内核或文件系统进行开发,用NFS会更加方便,这里先勾选上。
rk3399移植linux kernel,没事瞎玩,linux,SW799,RK3399

2.配置uevent helper

该选项的作用是启用uevent helper程序的支持。uevent是内核与用户空间之间通信的一种方式,当内核检测到新的设备时,会生成一个uevent来通知用户空间,使得用户空间能够及时响应设备插拔事件,并做出相应的处理。其中, uevent helper程序就是在接收到uevent后执行的用户空间程序,用来完成设备的热插拔处理。
rk3399移植linux kernel,没事瞎玩,linux,SW799,RK3399

3.支持etx4文件系统(默认已支持)

rk3399移植linux kernel,没事瞎玩,linux,SW799,RK3399

4.配置DRM驱动

DRM,全称Direct Rending Manger。是目前Linux主流的图形显示框架,配置这个是为了后续支持带有桌面的ubuntu根文件系统。
rk3399移植linux kernel,没事瞎玩,linux,SW799,RK3399

5.有线网卡驱动

板子上带了一个RTL8111有线网卡,按照以下配置:
rk3399移植linux kernel,没事瞎玩,linux,SW799,RK3399
注:在6.4版本中STMicroelectronics 10/100/1000/EQOS Ethernet driver改成了STMicroelectronics Multi-Gigabit Ethernet driver。

6.无线网卡驱动

板载AP6236无线网卡,按照如下进行配置:

Device Drivers  ---> 
	<*> Broadcom specific AMBA  ---> 
		[*]   Support for BCMA on PCI-host bus (NEW)                                       
		[*]   Support for BCMA in a SoC                                             
		[*]   ChipCommon-attached serial flash support (NEW)                               
		[*]   BCMA Broadcom GBIT MAC COMMON core driver                                    
		[*]   BCMA GPIO driver

配置完保存即可。

三、设备树

这里笔者使用的设备树是从网上找到的反编译出的dts文件,可以直接拿来使用,所以就先略过。将该dts添加进dtb编译目录即可。

四、内核镜像文件制作

编译完成后会在arch/arm64/boot/文件夹下生成内核镜像文件Image.gz,因为mkimage是根据its文件中的描述来打包镜像生成itb文件(FIT uImage),所以首先需要制作一个its文件,在its文件中描述需要被打包的镜像,主要是kernel镜像,dtb文件等。
kernel.its:

/*
 * Simple U-Boot uImage source file containing a single kernel and FDT blob
 */
/dts-v1/;
/ {
	  description = "Simple image with single Linux kernel and FDT blob";
	  #address-cells = <1>;
	  images {
	          kernel {
	                  description = "Vanilla Linux kernel";
	                  data = /incbin/("arch/arm64/boot/Image.gz");
	                  type = "kernel";
	                  arch = "arm64";
	                  os = "linux";
	                  compression = "gzip";
	                  load = <0x280000>;
	                  entry = <0x280000>;
	                  hash-1 {
	                          algo = "crc32";
	                  };
	                  hash-2 {
	                          algo = "sha1";
	                  };
	          };
	
	         fdt {
	                  description = "Flattened Device Tree blob";
	                  data = /incbin/("arch/arm64/boot/dts/rockchip/rk3399_sw799.dtb");
	                  type = "flat_dt";
	                  arch = "arm64";
	                  compression = "none";
	                  load = <0x8300000>;
	                  entry = <0x8300000>;
	                  hash-1 {
	                          algo = "crc32";
	                  };
	                  hash-2 {
	                          algo = "sha1";
	                  };
	          };
	
	  };
	
	  configurations {
	          default = "conf-1";
	          conf-1 {
	                  description = "Boot Linux kernel with FDT blob";
	                  kernel = "kernel";
	                  fdt = "fdt";
	          };
	  };
};

然后将u-boot-2023.07/tools/路径下的mkimage工具拷贝过来,使用mkimage工具编译即可:

cp u-boot-2023.07/tools/mkimage linux-6.4.7/
./mkimage -f kernel.its kernel.itb

五、烧录

相关文件已全部制作完毕,如果不需要在u-boot下进行功能开发,则使用前一节制作的u-boot即可。如有需要,由于较新版本的u-boot也分成了u-boot + 设备树dtb的方式,所以在编译u-boot时将相关设备树指定为自己板子的设备树进行编译即可。
rk3399烧录地址:

idbloader.img     --->     eMMC的0x40扇区
u-boot.itb        --->     0x4000扇区
kernel.itb        --->     0x8000扇区
ubuntu_ext4.img   --->     0x40000扇区

除了上述的几个文件,rk3399还需要一个rk3399_loader_v1.24.126.bin文件,这个文件在芯片启动时,会被加载到内部的sram中,用来初始化板载内存等基本外设。此文件从rockchip官方即可下载。
烧录工具有两种,一种是使用rockchip官方的RKDevTool,这个需要在windows环境下运行。另一种是使用rkdeveloptool,可以在linux下使用命令行进行烧录,具体的使用方式可以参考这篇文章,笔者使用的也是这种方式。将芯片进入Loader模式或Maskrom模式,然后使用以下命令将对应文件烧写到板卡上去:

rkdeveloptool db rkxx_loader_vx.xx.bin
rkdeveloptool wl 0x40 idbLoader.img
rkdeveloptool wl 0x4000 uboot.itb
rkdeveloptool wl 0x8000 boot.itb
rkdeveloptool wl 0x40000 ubuntu_ext4.img

六、总结

笔者制作的kernel中没有使能对应的GPU驱动,所以后续使用桌面显示的话会比较卡,且CPU占用较高,发热严重。所以最后笔者还是沿用了大佬移植的armbian系统(躺平真爽)。这里附上对应的镜像和工具下载地址,如果是同款SW799板子可以使用对应的镜像烧录使用,这里还有一些其他板子和一些简单教程,也可以借鉴一点。硬件就先玩到这里了,后面找点嵌入式小demo做做看看。文章来源地址https://www.toymoban.com/news/detail-632373.html

到了这里,关于rk3399移植linux kernel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RK3399平台开发系列讲解(基础篇)Linux 传统间隔定时器

    🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将详细 介绍 Linux 传统间隔定时器。 Linux 的传统间隔定时器设置接口是 setitimer,它可以设定在未来某个时

    2023年04月11日
    浏览(41)
  • [RK-Linux] RK3399使用RK开源SPL,修改U-Boot为FIT打包方式,裁剪trust分区

    RK3399平台根据前级Loader代码是否开源,目前有两套启动方式: TPL 相当于 ddr bin,SPL 相当于 miniloader。TPL+SPL 的组合实现了跟 RK 闭源 ddr.bin+miniloader 一致的功能,可相互替换。 FIT(flattened image tree)是U-Boot支持的一种新固件类型的引导方案,支持任意多个image打包和校验。FIT 使

    2024年01月16日
    浏览(43)
  • RK3399驱动开发 | 15 - RTC实时时钟芯片HYM8563S调试(基于linux5.4.32内核)

    Linux内核中使用RTC设备来提供硬件时间,为了兼容各种各样的RTC硬件,Linux内核提供了R

    2024年02月09日
    浏览(50)
  • RK3399驱动开发 | 21 -Marvell交换机芯片88E6390X调试(基于linux主线5.4.32内核)

    88E6390X芯片是Marvell的一款11端口交换器芯片,有1个CPU端口、8个10/100/1000Mbsp以太网端口、两个XAUI/RXAUI/2500光口。 RK3399只有一个MAC控制器,所以只能外接一个PHY芯片作为网口,但有了外部的交换机芯片后,连接架构如下:

    2024年02月13日
    浏览(50)
  • linux | RK3568 Debian AIC8800移植

    一、WiFi        1.看RK的文档,把DTS节点配好 然后直接从安卓13的项目中把驱动给移过来,文件位置是 kernel/drivers/net/wireless/rockchip_wlan/,然后在Makefile和Kconfig中加入对应的宏 然后再在rockchip_linux_defconfig中加入对应的宏: 然后编译,编译后出错: 然后编译就成功了 先手动将

    2024年01月17日
    浏览(54)
  • RK3399之8250串口驱动

    前言 内核版本4.4 平台 瑞芯微RK3399 8250串口 一、驱动整体框架 二、驱动结构体对象 关系如下图所示 三、驱动代码流程 驱动加载由以下入口 1.8250_core.c的serial8250_init 个人理解代码里有三套串口设备注册代码, 方式一,嵌入式常用的方式,驱动通过与dts硬件信息匹配注册uart

    2024年02月09日
    浏览(52)
  • 基于RK3588的嵌入式linux系统开发(二)——uboot源码移植及编译

            由于官方的SDK占用空间较大(大约20GB左右),需要联系相关供应商提供,且官方的SDK通过各种脚本文件进行集成编译,难以理解系统开发的详细过程。本章介绍直接从官方Github网站下载源码进行移植,进行uboot移植及编译,具体内容如下所述: 1.进入官方的github网

    2024年01月16日
    浏览(60)
  • RK3399 板子烧录Armbian

    本来不想写在CSDN这里的。帮有需要的同学了吧。 板子上面标记型号为: 没有HDMI接口(我也是汗,买的时候注意到,坑了),配置信息。 刷机过程 准备12V电压; USB先连接microUSB 网线一根 img下载:http://my.kos.org.cn:880/rockchip/mrk3399_kj/Armbian_23.8.1_mrk3399_jammy_current_6.1.50.7z 1. 按住

    2024年02月03日
    浏览(51)
  • 【RK3399】2.制作ubuntu20.04 roomfs

    firefly自带的文件系统,由于缺少一些基本功能模块,因此,我们可以自己手动制作一个ubuntu20.04的文件系统。 http://cdimage.ubuntu.com/ubuntu-base/releases/ 复制一下虚拟机的运行环境 将开发板挂载到虚拟机上,将开发板的/vendor,/system,/lib/firmware,这三个文件夹复制到我们自己的文件

    2024年02月01日
    浏览(78)
  • rk3399 android以太网和wifi共存

    1.修改 frameworks/base/core/java/android/net/NetworkFactory.java evalRequest 方法 注释两行 2.修改frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java文件修改 NETWORK_SCORE=30  降低优先级 这样以太网和wifi都能连接成功 frameworksoptnetethernetjavacomandroidserverethernetEthernetNetwork

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包