【正点原子I.MX6U-MINI】删除开机内核Logo和进度条界面Logo(二)
一、编译内核
内核源码1、例程源码-》3、正点原子 Uboot 和 Linux 出厂源码-》linux-imx-4.1.15-2.1.0-g8a006db.tar.bz2。
在 Ubuntu 中新建名为“alientek_linux”的文件夹,然后将 linux-imx-4.1.15-2.1.0-g8a006db.tar.bz2 这个压缩包拷贝到前面新建的 alientek_linux 文件夹中并解压,命令如下:
tar -vxjf linux-imx-4.1.15-2.1.0-g0d2381d-v2.4.tar.bz2
解压完成以后的 Linux 源码根目录如图所示:
新建名为mx6ull_alientek_emmc.sh
的 shell 脚本,
touch mx6ull_alientek_emmc.sh
然后在这个 shell 脚本里面输入如下所示内容:
#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16
使用 chmod 给予mx6ull_alientek_emmc.sh
可执行权限,然后运行此 shell 脚本,命令如下:
./mx6ull_alientek_emmc.sh
删除内核LOGO
编译的时候会弹出 Linux 图形配置界面,如图所示:
Device Drivers->Graphics support->Bootup logo不设置;
最后会将生成的zImage 文件拷贝至mfgtool工具的\mfgtool\Profiles\Linux\OS Firmware\files\boot中
将拨码开关调至USB档位。这时mfgtool工具会出现符合HD标准的供应商定义设备这几个字,如果没有请检查接线是否正确以及拨码开关是否拨码至USB档位。同时打开一个串口调试终端软件,可以观察在烧写系过程中的打印信息。
点击“Start”按钮即可开始烧写。
二、烧写内核
MfgTool 其实是先通过USB OTG
先将uboot、kernel 和.dtb(设备树)
这是三个文件下载到开发板的DDR
中,注意不需要下载rootfs。就相当于直接在开发板的DDR上启动Linux 系统,等Linux 系统启动以后再向EMMC中烧写完整的系统,包括uboot、linuxkernel、.dtb(设备树)和 rootfs
,因此MfgTool工作过程主要分两个阶段:
- ①、将 firmware 目录中的uboot、linux kernel和.dtb(设备树),然后通过
USB OTG
将这个文件下载到开发板的DDR
中,目的就是在DDR中启动Linux系统,为后面的烧写做准备。 - ②、经过第①步的操作,此时Linux系统已经运行起来了,系统运行起来以后就可以很方便的完成对 EMMC的格式化、分区等操作。EMMC分区建立好以后就可以从files中读取要烧写的uboot、linux kernel、.dtb(设备树)和rootfs 这4个文件,然后将其烧写到EMMC中,这就是 MfgTool的大概工作流程。
1、开始烧写
这个时候可以在Mobaterm上看到具体的烧写过程:
等待烧写完成,因为正点原子的根文件系统比较大,因此烧写的时候耗时会久一点。烧写完成以后 MfgTool 软件如图所示:
2、设置网络
如上图所示新烧写的系统不支持网络,uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linuxkernel的时候需要使用到 uboot的网络功能做调试。这时候给uboot添加网络相关的环境变量。
setenv ipaddr 192.168.10.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.10.1
setenv netmask 255.255.255.0
setenv serverip 192.168.10.100
saveenv
网络地址环境变量的设置要根据自己的实际情况,确保 Ubuntu 主机和开发板的 IP地址在同一个网段内,比如我现在的开发板和电脑都在 192.168.10.0 这个网段内,所以设置开发板的 IP 地址为 192.168.10.50,我的 Ubuntu 主机的地址为 192.168.10.100,因此 serverip 就是192.168.10.100。ethaddr 为网络 MAC 地址,是一个 48bit 的地址,如果在同一个网段内有多个开发板的话一定要保证每个开发板的 ethaddr 是不同的,否则通信会有问题!设置好网络相关的环境变量以后就可以使用网络相关命令了。
开发板的网络能否使用,是否可以和服务器(Ubuntu 主机)进行通信,通过 ping 命令就可以验证,直接ping服务器的 IP 地址即可,比如我的服务器 IP 地址为 192.168.10.100,命令如下:
ping 192.168.10.100
将环境变量 bootdelay 改为 5,就是在启动内核之前倒计时时间为5s,进入uboot。
setenv bootdelay 5
saveenv
3、设置静态 ip
由于LAN8720 PHY网络芯片没有MAC地址,系统启动时会生成随机MAC地址给网络使用。每次都生成一个MAC地址,导致每次开机网络获取的ip不是固定的。所以我们要设置给它一个静态的ip,不因MAC地址的改变而改变,设置固定ip方法调试。开发板启动时会自动获取ip,最简单的方法是直接设置一个ip 给它。这样我们就可以直接使用这个ip 了。
在出厂文件系统里/etc/rc.local 文件里如图位置添加以下文件。
vi /etc/rc.local
添加以下内容,请根据个人使用的路由器,设置相应网段的ip地址。下图为设置eth0的静态ip 地址。
PATH=/sbin:/bin:/usr/sbin:/usr/bin
ifconfig eth0 192.168.10.50 netmask 255.255.255.0
route add default gw 192.168.10.1
echo "nameserver 114.114.114.114" > /etc/resolv.conf
4、删除进度条界面logo
进入开发板,执行以下命令删除logo
rm /usr/bin/psplash
rm /usr/bin/psplash-write
reboot