0%

一、裸机编译
二、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