Imx283 Uboot2017+Linux3/4/5系统内核移植

news/2024/11/7 20:50:20/

Imx283 Uboot2017+Linux3/4/5系统内核移植

前言

用的周立功的EasyArm283,实习的时候买的,一直没咋弄,前几天突然看到了想玩一下(其实最近一直再画板子,想玩一下软件了哈哈),感觉2.34的内核有点老所以就移植了4.13,其实就是搬砖哈哈,主要记录下坑把

开始

工具链:arm-fsl-linux-gnueabi- arm-linux-gnueabihf-

编译Linux

首先到linux找到官方demo的config文件,然后这里是mxs_defconfig,将其拷贝到linux源码根目录下:
在这里插入图片描述先修改MakeFile,添加如下:
ARCH = arm
CROSS_COMPILE = arm-linux-gnueabihf-
执行:
make mxs_defconfig
然后make menuconfig选择自己配置项,这里看网上和自己选择,这里调试的时候可以直接定死kernel启动参数,从nfs启动,调试方便。
在这里插入图片描述
然后make zImage dtbs -j8
如果用uImage这里要加上启动地址make uImage LOADADDR=42000000 -j8

编译Uboot

其次编译Uboot,这里的先讲一下他的Nand flash下载原理,先用usb传输一个稳定的linux镜像到ddr然后执行,然后通过usb传输指令,板子上linux执行,把镜像,rootfs,dts写到nandflash上,所以nand flash的分区跟你的官方镜像一样,这里看官方的uboot2009中的uboot/include/configs/mx28-evk.h分区如下:
在这里插入图片描述
仿照这个修改uboot2017/8/9等吧,反正你移植那个版本uboot就修改那个的这个文件,另外启动指令改了如下:
在这里插入图片描述
上面注释的原来官方的,现在修改成自己的,继续修改启动参数,因为我们文件系统位置变了,所以修改如下:
在这里插入图片描述
然后复制配置文件,路径如下,这里复制nand版本,因为从nand启动
在这里插入图片描述
然后make -j8,注意之前要修改Makefile配置ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

打包uboot、zImage、rootfs

把uboot和zImage复制到imx_xXX_bootlets文件夹下面,然后执行./build
然后把linux的dtb,和刚才生成的一堆文件复制自己的文件夹下面备用,这里贴图:
在这里插入图片描述
最后还差一个文件系统,这里要配置一个环境多的太麻烦了,所以直接用周立功的,环境都不用配置了,哈哈,复制imx28xxx_rootfs.tar.bz2,然后解压,修改/etc/inittab,把ttyAM0修改为ttyAMA0,am0是显示屏,ama0是串口,如下:
在这里插入图片描述
然后修改/etc/hostname文件,将板子修改成自己想要的名字!
然后修改issue,这里修改称自己想要的开机打印信息,我的是佛祖哈哈!

下载

然后把文件系统复制到自己备用文件夹里面,复制到win10主机上的MGTool的files中,这里不会去看周立功的教程,用飞思卡尔工具USB下载,这里给上下载配置文件,如下:

<LIST name="NAND uboot-kernel-rootfs-dtb(128MB)" desc="Install on singlechip NAND">
<CMD type="boot" body="Recovery" file="imx28_BootCfg.sb" if="HabDisable">Enable unencrypted boot modes.</CMD>
<CMD type="boot" body="Recovery" file="imx28_BootCfg_ivt.sb" if="HabEnable">Enable unencrypted boot modes.</CMD>
<CMD type="wait" body="ResetToRecovery" timeout="3">Waiting for Reset to Recovery.</CMD>
<CMD type="boot" body="Recovery" file="updater.sb" timeout="60" if="HabDisable">Booting update firmware.</CMD>
<CMD type="boot" body="Recovery" file="updater_ivt.sb" timeout="60" if="HabEnable">Booting update firmware.</CMD>
<CMD type="find" body="Updater" timeout="180"/>
<CMD type="push" body="mknod class/mtd,mtd0,/dev/mtd0" timeout="180" />
<CMD type="push" body="mknod class/mtd,mtd1,/dev/mtd1" timeout="180" />
<CMD type="push" body="mknod class/mtd,mtd2,/dev/mtd2" timeout="180" />
<CMD type="push" body="mknod class/mtd,mtd3,/dev/mtd3" timeout="180" />
<CMD type="push" body="mknod class/mtd,mtd4,/dev/mtd4" timeout="180" />
<CMD type="push" body="mknod class/mtd,mtd5,/dev/mtd5" timeout="180" />
<CMD type="push" body="mknod class/mtd,mtd6,/dev/mtd6" timeout="180" />
<CMD type="push" body="mknod class/misc,ubi_ctrl,/dev/ubi_ctrl"/>
<CMD type="push" body="$ flash_eraseall /dev/mtd0">Erasing partition0</CMD>
<CMD type="push" body="$ flash_eraseall /dev/mtd1">Erasing partition1</CMD>
<CMD type="push" body="$ flash_eraseall /dev/mtd2">Erasing partition2</CMD>
<CMD type="push" body="$ flash_eraseall /dev/mtd3">Erasing partition3</CMD>
<CMD type="push" body="$ flash_eraseall /dev/mtd4">Erasing partition4</CMD>
<CMD type="push" body="$ flash_eraseall /dev/mtd5">Erasing partition5</CMD>
<CMD type="push" body="$ flash_eraseall /dev/mtd6">Erasing partition5</CMD>
<CMD type="push" body="send" file="files/imx28_ivt_uboot.sb">Sending uboot</CMD>
<CMD type="push" body="$ kobs-ng init -v $FILE">Flashing uboot firmware</CMD>
<CMD type="push" body="$ flash_erase /dev/mtd0 0x800000 32">Erasing 0x800000 32</CMD>
<CMD type="push" body="send" file="files/imx28-evk.dtb">Sending dtb</CMD>
<CMD type="push" body="$ mtdwrite -d /dev/mtd0 -f $FILE -a 0x800000">Flashing dtb firmware</CMD>
<CMD type="push" body="$ flash_erase /dev/mtd0 0x400000 32">Erasing 0x00400000 32</CMD>
<CMD type="push" body="send" file="files/zImage">Sending zImage</CMD>
<CMD type="push" body="$ mtdwrite -d /dev/mtd0 -f $FILE -a 0x400000">Flashing zImage firmware</CMD>
<CMD type="push" body="$ ubiattach /dev/ubi_ctrl -m 5 -d 0">Attaching UBI partition</CMD>
<CMD type="push" body="mknod class/ubi,ubi0,/dev/ubi0"/>
<CMD type="push" body="$ ubimkvol /dev/ubi0 -n 0 -N filesystem -m">Creating UBI volumes</CMD>
<CMD type="push" body="$ mkdir -p /mnt/ubi0; mount -t ubifs ubi0_0 /mnt/ubi0" />
<CMD type="push" body="pipe tar -jxv -C /mnt/ubi0"  timeout="180" file="files/rootfs.tar.bz2">Transfer rootfs</CMD>
<CMD type="push" body="frf">Finish Flashing rootfs</CMD>
<CMD type="push" body="$ umount /mnt/ubi0">Unmounting</CMD>
<CMD type="push" body="$ echo Update Complete!">Done</CMD>
</LIST>

下载完毕开机

然后下载完毕开机,打印消息如下:
在这里插入图片描述
可以看出uboot2017和linux4.13启动啦,屏幕的小企鹅也出现了,然后登陆:
在这里插入图片描述
因为用的zlg的文件系统,修改了一下,哈哈,但可以看到这里linux内核已经是4.13哈哈,注意上面的lrz、lsz是串口传输文件的app,自己编译的,然后,执行zlg的界面程序如下:
在这里插入图片描述
上面我瞎敲得,此时qt的启动界面出现了,ok大功告成

结束语

虽然成功,但是其实中间大概四五天把,踩坑,学习,踩坑,学习,终于成功啦。
又下雪了,真好!


http://www.ppmy.cn/news/547921.html

相关文章

NAT穿透详解

1.引言 ​ 要实现两台内网主机进行通信&#xff0c;常规的方案如下&#xff1a; 客户端A<------------>服务端<------------>客户端B​ 服务端提供转发监听服务&#xff0c;需要有固定公网IP和端口。客户端A和B分别连接服务端&#xff0c;数据通过服务端进行转发…

lm283_飞利浦LED泛光灯具 BVP283 LED户外照明灯具350W 超高功率泛光灯

飞利浦LED泛光灯具 LED户外照明灯具 BVP283 350W 超高功率泛光灯飞利浦LED泛光灯具 LED户外照明灯具 BVP283 350W 超高功率泛光灯飞利浦LED泛光灯具 LED户外照明灯具 BVP283 350W 超高功率泛光灯 飞利浦超值经济型LED泛光照明方案 Tango G2 LED Extension BVP282:16000lm/20000…

lm283_数电_芯片手册_74LS283

June 1989 54LS283󰁋DM54LS283󰁋DM74LS283 4-Bit Binary Adders with Fast Carry General Description These full adders perform the addition of two 4-bit binary numbers󰀟 The sum ( R ) outputs are provided for each bit and the resultant carry (C4) is obtai…

283

论文阅读备份

Spring Security系列之基础概念

文章目录 基本原理Authentication接口UserDetailsService 接口PasswordEncoder 接口 基本原理 SpringSecurity 本质是一个过滤器链&#xff0c;采用的是责任链设计模式。 启动的时候&#xff0c;控制台打印出来的 DefaultSecurityFilterChain 过滤器&#xff1a; org.springfr…

举例说明小批量随机梯度下降的原理

小批量随机梯度下降&#xff08;Mini-batch Stochastic Gradient Descent&#xff0c;简称 Mini-batch SGD 或 MB-SGD&#xff09;是一种在深度学习中常用的优化算法。它结合了批量梯度下降&#xff08;Batch Gradient Descent&#xff0c;BGD&#xff09;和随机梯度下降&#…

Android 9.0 SecureElementService 初始化流程分析

1. 相关名词解释 NFC Near Field Communication&#xff0c;近场通信&#xff0c;一种基于13.56 MHz 的短距离通信技术。 NFCC NFC Controller&#xff0c;NFC 控制器&#xff0c;负责 NFC 无线信号的调制解调 SE Secure Element&#xff0c;安全芯片&#xff0c;拥有独立…

AndroidQ(十)Android Q功能和API

Android Q 功能和 API Android Q 为用户和开发者引入了强大的新功能。本文重点介绍面向开发者的新功能。 要了解新版 API&#xff0c;请阅读 API 差异报告或访问 Android API 参考。为醒目起见&#xff0c;将突出显示新版 API。此外&#xff0c;请务必查阅 Android Q 行为变更…