正点原子imx6ull开发板--WSL2开发环境搭建
编译
编译Uboot
编译前在uboot顶层makefile中指定 CROSS_COMPILE 的版本为材料中提供的 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
learn/uboot/include/configs/mx6ull_alientek_emmc.h 中的 findfdt 修改成 setenv fdt_file imx6ull-14x14-evk.dtb
UBOOT_PATH=/home/rong/alientek/learn/uboot
cd $UBOOT_PATH
clear
export ARCH=arm
export CROSS_COMPILE=/home/rong/alientek/tool/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
make distclean
make mx6ull_alientek_emmc_defconfig
make V=0 -j16
编译之后得到 u-boot.bin
编译内核
clear
KERNEL_PATH=/home/rong/alientek/learn/kernel
cd $KERNEL_PATH
export ARCH=arm
export CROSS_COMPILE=/home/rong/alientek/tool/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
make mrproper
make imx_alientek_emmc_defconfig
# 在.config文件中开启
# make imx_v7_defconfig -j 16
make menuconfig
#图形界面开启DeviceDrivers -> USBsupport -> USB anno..
#编译前把 dtc-lexer.lex.c dtc-parser.tab.c 两个文件中的 YYLTYPE yylloc; 前面加上extern
make all -j16
编译rootfs
修改 busybox 顶层 Makefile 的 CROSS_COMPILE 和 ARCH
CC_PATH=/home/rong/alientek/tool/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
BUSY_PATH=$PWD
RTFS_PATH=/home/rong/alientek/learn/rootfs
make defconfig
make
make install CONFIG_PREFIX=$RTFS_PATH
#从交叉编译器获取并添加库文件
cd $RTFS_PATH
mkdir lib
cd $CC_PATH/arm-linux-gnueabihf/libc/lib
cp *so* *.a $RTFS_PATH/lib/ -d
rm $RTFS_PATH/lib/ld-linux-armhf.so.3
cp ld-linux-armhf.so.3 $RTFS_PATH/lib/
cd $CC_PATH/arm-linux-gnueabihf/lib
cp *so* *.a $RTFS_PATH/lib/ -d
cd $RTFS_PATH/lib/
ls
#向 rootfs 的“usr/lib”目录添加库文件
cd $RTFS_PATH/usr/
mkdir lib
cd $CC_PATH/arm-linux-gnueabihf/libc/usr/lib
cp *so* *.a $RTFS_PATH/usr/lib/ -d
cd $RTFS_PATH/usr/lib/
ls
cd $RTFS_PATH
du ./lib ./usr/lib/ -sh
#创建其他文件夹
cd $RTFS_PATH
mkdir dev proc mnt sys tmp root
#创建/etc/init.d/rcS 文件
cd $RTFS_PATH
mkdir etc;cd etc;mkdir init.d;cd init.d
touch rcS
chmod 777 rcS
vim rcS
然后在 rcS 中输入如下所示内容
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
export PATH LD_LIBRARY_PATH
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
创建/etc/fstab 文件
cd $RTFS_PATH
cd etc
touch fstab
chmod 777 fstab
vim fstab
#在 fstab 文件中输入如下内容:
#<file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
创建/etc/inittab 文件
cd $RTFS_PATH
cd etc
touch inittab
chmod 777 inittab
vim inittab
#在 inittab 文件中输入如下内容:
#etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
打包
cd $RTFS_PATH
tar -vcjf rootfs.tar.bz2 *
打包
cd /home/rong/alientek/learn/
mkdir output
RTFS_PATH=/home/rong/alientek/learn/rootfs
UBOOT_PATH=/home/rong/alientek/learn/uboot
KERNEL_PATH=/home/rong/alientek/learn/kernel
OUTPUT_PATH=/home/rong/alientek/learn/output
#需要重命名
cp $KERNEL_PATH/arch/arm/boot/dts/imx6ull-alientek-emmc.dtb $OUTPUT_PATH/zImage-imx6ull-14x14-evk-emmc.dtb
cp $KERNEL_PATH/arch/arm/boot/zImage $OUTPUT_PATH
cp $RTFS_PATH/rootfs.tar.bz2 $OUTPUT_PATH/rootfs_nogpu.tar.bz2
cp $UBOOT_PATH/u-boot.imx $OUTPUT_PATH/u-boot-imx6ull14x14evk_emmc.imx
烧写系统
- 将
zImage
、u-boot-imx6ull14x14evk_emmc.imx
和zImage-imx6ull-14x14-evk-emmc.dtb
这三个文件拷贝到mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware
目录中,替换掉原来的文件 - 所有 4 个文件都拷贝到
mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files
目录中 - 这两个操作完成以后我们就可以进行烧写了
- 双击
mfgtool2-yocto-mx-evk-emmc.vbs
,打开烧写软件 - 拨码开关到下载模式
0100_0000
- 点击 Start 按钮开始烧写,由于我们自己制作的 rootfs 比较小,因此烧写相对来说会快一点
- 烧写完成以后设置开发板从EMMC 启动(拨码开关
1010_0110
),启动我们刚刚烧写进去的系统,测试有没有问题
启动系统
mmc dev 1
ls mmc 1:1
setenv bootcmd 'mmc dev 1;fatload mmc 1:1 80800000 zImage;fatload mmc 1:1 83000000 imx6ull-14x14-evk.dtb;bootz 80800000 - 83000000'
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
saveenv
setenv ipaddr 192.168.1.11
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.10
ping 192.168.1.10
saveenv
#备份
#setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
启用网络
#启用网络
ifconfig eth0 up
#自动分配ip
udhcpc -i eth0
#手动分配ip
ifconfig eth0 192.168.1.11 netmask 255.255.255.0
route add default gw 192.168.1.1
#直接ping host
ping 192.168.1.10
创建用户
touch /etc/group
touch /etc/passwd
mkdir /home
cd /home
mkdir rong
cd /
adduser rong
vi /etc/passwd
#rong:i2aIXyXy13rYw:0:0:root:/home/rong:/bin/sh
passwd rong
su rong
# 开启ftpd服务器, windows使用 ftp连接, 用户名和密码是上面设置的
tcpsvd -vE 0.0.0.0 21 ftpd -w -a /ftpd/ &
测试快速体验版本
#LED测试
echo none > /sys/class/leds/sys-led/trigger
echo 1 > /sys/class/leds/sys-led/brightness
echo 0 > /sys/class/leds/sys-led/brightness
#蜂鸣器测试
echo 1 > /sys/class/leds/beep/brightness
echo 0 > /sys/class/leds/beep/brightness
使用wlan USB WIFI
ifconfig wlan0 up
# wpa_cli -i wlan0 scan_result
cd ~/shell/wifi
source ./alientek_usb_wifi_setup.sh -m station -i Xiaomi_505 -p 1qaz0plm -d wlan0
ping www.baidu.com -I wlan0
#未获取到IP地址则执行下面的命令
udhcpc -i wlan0