Ubuntu 16.04 64位桌面版
$ sudo apt-get install build-essential git-core libncurses5-dev u-boot-tools
$ sudo apt-get install flex bison texinfo zip unzip zlib1g-dev gettext
$ sudo apt-get install gperf libsdl-dev libesd0-dev
$ sudo apt-get install g++ xz-utils
$ sudo apt-get install subversion
安装32位兼容库
$sudo apt-get install libc6-i386 lib32stdc++6 lib32z1
将官方提供的04-Linux_source文件内所有文件考入自己创建的WORKDIR文件目录下
设置交叉编译工具
$ cd WORKDIR/Toolchain
$ tar xvf gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz
$ export PATH=$PATH:/home/fish/WORKDIR/Toolchain/gcc-linaro-5.3-2016.02-x86_64_arm-linux -gnueabihf/bin
$ export ARCH=arm
$ export CROSS_COMPILE=arm-linux-gnueabihf-
vi ~/.profile
在行尾添加:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/fish/WORKDIR/Toolchain/ gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin
source ~/.profile
$echo $ARCH
arm
$echo $CROSS_COMPILE
arm-linux-gnueabihf-
$ arm-linux-gnueabihf-gcc -vUsing built-in specs. COLLECT_GCC=arm-linux-gnueabihf-gcc ……Thread model: posix gcc version 5.3.1 20160113 (Linaro GCC 5.3-2016.02)
目的:得到U-Boot
进入Bootloader目录,解压U-boot源码压缩包
自己创建myir-u-boot文件夹,将解压后文件放入此文件夹
$ cd WORKDIR/Bootloader
$ tar -jxvf myir-u-boot.tar.bz2
$ cd myir-u-boot
编译u-boot
$ make distclean
$ make myd_c335x_defconfig
$ make
编译完成后,会在myir-u-boot下生成要用到的MLO和u-boot.img文件
目的:得到Linux内核
进入Kernel目录,解压内核源码压缩包
自己创建myir-kernel文件夹,将解压后的文件放入此文件夹
$ cd <WORKDIR>/Kernel
$ tar -jxvf myir-kernel.tar.bz2
$ cd myir-kernel
编译内核,注意事项
$ export INSTALL_MOD_PATH=$HOME/export/rootfsa/
$ make distclean
$ make myd_c335x_defconfig
$ make zImage dtbs
$ make modules
$ make modules_install
编译完成后,会在myir-kernel/arch/arm/boot目录下生成zImage文件
在myir-kernel/arch/arm/boot/dts目录下生成设备树的二进制.dtb文件
进入Filesystem目录,解压文件系统压缩包
自己创建myir- buildroot文件夹,将解压后的文件放入此文件夹
$ cd WORKDIR/Filesystem/myir-buildroot/
$ make myd_c335x_defconfig
打开配置界面的命令
$ make menuconfig
配置bootloader代码来源
$ cd WORKDIR/Bootloader/myir-u-boot
$ git init
$ git add . -f
$ git commit -m "Initial Version" -a
并在配置界面-Bootloaders将U-boot Version路径替换成
/home/fish/WORKDIR/Bootloader/myir-u-boot/.git
配置Kernel代码来源同理
根据自己需求再在配置界面进行相应更改
最后编译
$ make
等待很长一段时间后,在
WORKDIR/Filesystem/myir-buildroot/output/images
下得到bootloader,kernel,以及各种格式的文件系统镜像
使用NAND Flash启动
Nand启动映像的更新需要借助于u-boot来完成。不管NAND Flash是否有数据,都可以利用TF卡启动的u-boot 对NAND Flash更新映像。
将带有系统映象的TF卡插入开发板,连接对应板子设置启动方式的跳线帽的1-2脚,上电启动,在u-boot 的提示读秒处,按下键盘上任意键进入u-boot
出现MYIR>#表示进入u-boot命令行
U-Boot 2016.05 (Jan 09 2017 - 19:37:43 +0800) Watchdog enabled I2C: ready DRAM: 512 MiB NAND: 512 MiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 *** Warning - bad CRC, using default environment Net: cpsw Press SPACE to abort autoboot in 2 seconds
MYIR>#
若u-boot分区有调整,需输入nand erase.chip擦除整个NAND Flash,无则直接下一步
MYIR># nand erase.chip NAND erase.chip: device 0 whole chip Erasing at 0x1ffe0000 -- 100% complete. OK
进入u-boot命令行后,输入run updatesys
MYIR># run updatesys switch to partitions #0, OK mmc0 is current device reading MLO 55092 bytes read in 10 ms (5.3 MiB/s) NAND write: device 0 offset 0x0, size 0xd734 55092 bytes written: OK reading myd_c335x.dtb 39229 bytes read in 10 ms (3.7 MiB/s)NAND write: device 0 offset 0x80000, size 0x993d 39229 bytes written: OK reading u-boot.img 321300 bytes read in 34 ms (9 MiB/s) NAND write: device 0 offset 0xc0000, size 0x4e714 321300 bytes written: OK reading zImage 4480016 bytes read in 396 ms (10.8 MiB/s) NAND write: device 0 offset 0x200000, size 0x445c10 4480016 bytes written: OK reading rootfs.ubi 24248320 bytes read in 2111 ms (11 MiB/s) NAND write: device 0 offset 0xa00000, size 0x1720000 24248320 bytes written: OK
MYIR>#
再次出现MYIR>#,断电拔出TF卡,连接对应板子设置启动方式的跳线帽的2-3脚,重新上电,即可从Nand Flash启动,输入账户名root登录