一、裸机编译
二、u-boot引导烧录
三、linux内核系统
一、裸机编译
1、nfs服务
sudo apt-get install nfs-kernel-server rpcbind
sudo vi /etc/exports
/home/fyp/linux_bsp/nfs *(rw,sync,no_root_squash)
sudo /etc/init.d/nfs-kernel-server restart
nfs 80800000 192.168.1.253:/home/fyp/linux_bsp/nfs/zImage
2、tftp服务
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
创建/home/fyp/linux_bsp/tftpboot,存入镜像和设备树dtb
文件/etc/xinetd.d/tftp:
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/fyp/linux_bsp/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
sudo service tftpd-hpa start
文件/etc/default/tftpd-hpa:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/fyp/linux_bsp/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
sudo service tftpd-hpa restart
启动tftp 80800000 zImage
3、烧录
编译arm-linux-gnueabihf-gcc -g -c led.s -o led.o
链接arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf
转换arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
Makefile文件
4、下载
imxdownload工具
./imxdownload led.bin /dev/sxx (sxx为sd卡)
二、u-boot引导烧录
1、u-boot
烧录SD卡./imxdownload u-boot.bin /dev/sxx
2、指令
终端bootargs
信息printenv
setenv bootdelay 5
saveenv
网络指令:
setenv ipaddr 192.168.1.50
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.253
saveenv
nfs、tftp指令->文件系统与内核(镜像与设备树)
mmc,如mmc info/list
设备文件目录fatls mmc 1:1
加载文件到DRAM区fatload,fatload mmc 1:1 80800000 zImage
确定哪个分区存放根文件/内核/设备树 lsblk fdisk -l /dev/mmcblk1
# 示例:解压 tar 包到 eMMC 分区
sudo mount /dev/mmcblk1p2 /mnt
sudo tar -xvjf rootfs.tar.bz2 -C /mnt
sudo umount /mnt
# 进入 U-Boot 命令行
U-Boot> setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw ip=dhcp'
U-Boot> setenv bootcmd 'mmc dev 1; fatload mmc 1:1 0x80800000 zImage; fatload mmc 1:1 0x83000000 imx6ull.dtb; bootm 0x80800000 - 0x83000000'
U-Boot> saveenv
U-Boot> reset
三、linux内核系统
1、设备树文件dts->dtb、内核镜像zImage
直接被u-boot引导烧录
2、文件系统rootfs
制作完成文件系统
网络挂载setenv bootargs
'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.10.11:/home/fyp/linux_bsp/nfs/rootfs,proto=tcp rw
ip=192.168.10.12:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off'
本地挂载setenv bootargs
'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw ip=dhcp'
设置内核和设备树加载命令 (假设内核也在 eMMC 的 boot 分区)
setenv bootcmd 'mmc dev 1; mmc read 0x80800000 0x4000 0x8000; bootm 0x80800000'
boot启动
3、总体
uboot、 linux kernel 和.dtb(设备树)->DDR中引导烧录
引导烧录->uboot、 linux kernel、 .dtb(设备树)和 rootfs