正点原子 linux 开发板学习 uboot 篇 一

本文详细介绍了飞思卡尔i.MX6ULL微处理器的U-Boot启动过程,包括烧写步骤、启动信息解析以及常用命令的使用。内容涵盖U-Boot的版本信息、硬件状态、启动选项、网络配置、存储设备操作和文件系统管理等。此外,还讲解了如何通过命令行更新固件和配置启动参数,以及引导Linux内核的过程。
摘要由CSDN通过智能技术生成

源码选择

出厂可以直接使用 原子出厂源码, 出厂源码会随时修复bug或者添加新的驱动以兼容正点原子的其他模块

学习的时候

U-Boot 烧写与启动

uboot 启动位置根据拨码开关

烧写 通过.imxdownload 工具把 编译后的u-boot.bin 烧进sd 卡

/imxdownload u-boot.bin /dev/sdd

U-Boot 输出信息详解

U-Boot 2016.03 (Apr 12 2019 - 02:33:00 +0800)

/*版本 和当前时间*/

CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 528MHz)

/*飞思卡尔单片机  imx属于飞思卡尔 被NXP收购 */

CPU: Industrial temperature grade (-40C to 105C) at 46C

/*CPU温度 */

Reset cause: POR

/*复位原因 POR*/

Board: MX6ULL 14x14 EVK

/*板卡名称*/

I2C: ready

DRAM: 512 MiB

MMC: FSL_SDHC: 0, FSL_SDHC: 1

/*IMX6ull 支持2个MMC/SD卡控制器   FSL_SDHC(0)  接SD卡   FSL_SDHC(1) 接EMMC*/

Display: ATK-LCD-7-1024x600 (1024x600)

Video: 1024x600x24

/*上2行 表示LCD型号*/

In: serial

/*标准输入终端  此处串口*/

Out: serial

/*标准输入终端  此处串口*/

Err: serial

/*标准输入终端  此处串口*/

switch to partitions #0, OK

mmc0 is current device

/*切换到emmc的第0分区。因为当前的uboot 是emmc版本的 也就是从emmc启动*/

Net: FEC1

/*网口信息  用的网口1*/

Normal Boot

/*正常启动  也就是说uboot 要从 emmc  读取环境变量 和参数信息启动linux内核了*/

Hit any key to stop autoboot: 0

/*倒计时*/

U-Boot 常用命令

  • help  or ?  查看支持的所有命令

  • help or ? + 命令名称 查看该命令用法

信息查询命令

  • bdinfo    打印boot 参数地址位置  DRAM起始地址 网卡信息  波特率信息   堆栈指针等信息

                                

  • printenv  打印环境变量

  

  • version  查看 boot版本号

环境变量操作命令

  • setenv  bootdelay 5   设置
  • saveenv                     保存

   

  • setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

设置多个值的环境变量 用 ' ' 包含  各组值 用 空格隔开

  • setenv  author kongbin   当没有此变量  该命令会 创建环境变量
  •      setenv author                 无参, 删除环境变量

网络操作命令

setenv ipaddr 192.168.1.50      板卡IP地址

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    服务器IP地址  也就是ubutun 主机IP地址

saveenv

  • ping 命令   例 ping 192.168.1.105
  • dhcp 命令  从路由器获取IP地址  该命令还会通过TFTP来启动linux 内核

  • nfs [loadAddress] [[hostIPaddr:]bootfilename]   网络文件系统命令  通过nfs 协议获取网络文件文件到 指定地址

例如:nfs 80800000 192.168.1.253:/home/zuozhongkai/linux/nfs/zImage

            把主机中的 zImage 加载到DRAM的0x8080000 地址处

  • tftp [loadAddress] [[hostIPaddr:]bootfilename] 通过tftp协议 获取网络文件文件到 指定地址

ubutun 主机端设置

sudo apt-get install tftp-hpa tftpd-hpa

sudo apt-get install xinetd

在目录/etc/xinetd.d/ 中创建  tftp文件

并输入以下内容

server tftp 
{
    socket_type = dgram
    protocol = udp
    wait = yes 
    user = root 
    server = /usr/sbin/in.tftpd
    server_args = -s /home/kongbin/linux_aph/tftpboot/ 
    disable = no 
    per_source = 11 
    cps = 100 2 flags = IPv4  
}

并修改   /etc/default/tftpd-hpa    中 TFTP_DIRECTORY的值为 tftp 目录

EMMC 和SD卡操作命令

  • mmc  一系列命令 操作emmc 和sd 卡
    • mmc info   
    • mmc read   addr blk# cnt      从mmc 读取内容到 dram中     
    • mmc write   addr blk# cnt      把dram中的数据写入到 mmc中
    • mmc rescan    扫描mmc社保
    • mmc part         列出mmc设备分区
    • mmc dev        切换mmc设备   例如 mmc dev 0  //切换到sd卡   0:sd卡  1:eMMC
    • mmc list
    • mmc hwpartition
    • mmc rst
    • mmc setdsr

  • mmc part  可以查看emmc 分区情况   完整的应该是 

part 0 : uboot   

part1:linux内核 image  和 设备树 dts 

part2:根文件系统

  • mmc dev 1 2  把emmc 的分区2 设置为当前mmc设备  然后就可以完成一些读写操作

  • mmc read  addr blk# cnt   emmc >> dram  addr DRAM地址  blkMMC:块地址 cnt:块数量

例如 mmc read 80800000 600 10   0x10 = 16     一个扇区512      16  * 512  = 0x2000

读完可以通过 md.b  80800000 2000  查看DRAM中的内容

  • mmc write  addr blk# cnt    dram>> write

    综合应用 更新sd 卡中uboot程序 

        tftp 80800000 u-boot.imx

        mmc dev 0 0 

       mmc write 80800000 2 32E

    综合应用 更新emmc 卡中uboot程序 

        tftp 80800000 u-boot.imx    //下载u-boot.imx 到dram中

        mmc dev 1 0                       //切换到emmc的分区0

        mmc write 80800000 2 32E //烧写u-boot.imx到emmc中

        mmc partconf 1 1 0 0 //分区配置, EMMC需要这一步!         

FAT  一系列操作命令  

        对SD、EMMC 存储的文件进行操作

  • fatinfo <interface> [<dev[:part]>]  查询文件系统信息   例如 fatinfo mmc 1:1

  • fatls  <interface> [<dev[:part]>] [directory]   列出该目录下 有哪些文件  和linux中的ls 命令类似

  • fstype <interface> <dev>:<part>   查询分区文件系统类型
  • fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]  加载文件到DRAM

        例如 fatload mmc 1:1 80800000 zImage  加载zImage  到dram中

boot 操作命令  重中之中

        uboot 本质工作就是引导linux  

  • bootz [addr [initrd[:size]] [fdt]]  

        addr: linux 内核 imge dram地址

        initrd是initrd文件在dram中的地址   可用-代替

        fdt:设备树地址

        例:

        tftp 80800000 zImage

        tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb

        bootz 80800000 - 83000000 

        8080000 加载linux镜像文件  

        83000000  加载设备树文件

       

  • bootm   参数、功能和 bootz类似

        boot 命令

最重要的2个环境变量

bootcmd 

uboot启动后会运行环境变量 bootcmd 中的命令 去加载 内核 和设备树

调试阶段 可通过tfp 从服务器获取 文件 加载 内核 zImage 文件  和设备树文件

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb; bootz 80800000 - 83000000'

生产阶段  从emmc中 加载文件

把linux keneral 和  设备树 (dts)文件 

setenv bootcmd fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-800*480-c.dtb; bootz 80800000 - 83000000'

        

bootargs 

  调试阶段 通过 nfs 加载根文enü

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.14:/home/kongbin/linux_aph/nfs/rootfs,v3 ip=192.168.1.50:192.168.1.14:192.168.1.1:255.255.255.0::eth0:off'

注意:nfs 服务 系统是ubutun18.04  加个v3

生产阶段  从emmc的分区2 中加载根文件系统

setenv bootcmd ‘console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw’

bootz 命令启动流程如下图:

 

      

        

        

### 回答1: 正点原子Linux开发板 PCB 是一块专为Linux操作系统开发设计的电路板。它采用了高质量材料制造而成,具有良好的稳定性和性能。该开发板提供了一些核心组件,如处理器,存储器,输入输出接口等,以帮助用户进行快速开发和原型设计。 正点原子Linux开发板 PCB 提供了丰富的连接接口和扩展插槽,以满足开发人员对不同外围设备的需求。用户可以通过这些接口连接各种传感器,执行器,通信模块等,从而实现各种应用场景。此外,该开发板还具有强大的计算和嵌入式能力,可以支持复杂的算法和应用程序。 正点原子Linux开发板 PCB 具有丰富的软件支持。用户可以通过预装的Linux操作系统访问开源软件和工具,以进行应用开发和调试。同时,该开发板还提供了完善的开发文档和示例代码,帮助用户快速上手和开发。 总之,正点原子Linux开发板 PCB 是一块功能强大的电路板,适用于各种Linux应用开发和原型设计。它的高质量材料和稳定性使得它成为开发人员的理想选择,并且丰富的软件支持和接口使得开发过程更加便捷。无论是学习嵌入式系统开发还是进行实际应用的开发,正点原子Linux开发板 PCB 都是一个可靠的工具。 ### 回答2: 正点原子Linux开发板PCB是一种基于Linux操作系统的嵌入式开发板,具有高性能、低功耗和可扩展性等特点。它适用于物联网、智能家居、工业自动化等领域的应用开发。 这款PCB板具有丰富的硬件资源,包括处理器、内存、存储、网络接口、UART、GPIO等,可以满足各种应用的需求。其主要的处理器架构是ARM,支持各种型号的ARM处理器,如ARM Cortex-A7、Cortex-A9等。内存容量通常为1GB或2GB,存储空间可以通过SD卡或者eMMC进行扩展。 正点原子Linux开发板PCB提供了完整的软件开发环境,支持各种主流的开发工具,如GCC、Make、Python等。它的操作系统基于Linux内核,提供了丰富的Linux驱动,方便开发者进行系统调试和应用开发。 这款开发板还支持多种外设接口,如以太网口、USB接口、HDMI等,可以连接各种外部设备和传感器,实现与外界的数据交互。同时,它还支持无线通信,如WiFi、蓝牙等,方便应用开发者实现无线连接和控制。 由于正点原子Linux开发板PCB具有模块化设计,其底板与核心板分离,开发者可以根据需求选择不同规格的底板和核心板组合,实现快速开发和产品迭代。此外,它还提供了丰富的开发文档和示例代码,方便开发者进行学习和参考。 总之,正点原子Linux开发板PCB是一款功能强大、易于开发和定制化的嵌入式开发板,适用于各种应用场景的嵌入式系统开发。 ### 回答3: 正点原子Linux开发板PCB是一款全球领先的开发板,其PCB设计采用了先进的技术和工艺,具有高度的可靠性和稳定性。该开发板搭载了Linux操作系统,为使用者提供了丰富的开发资源和工具,使得开发者可以快速进行应用开发和系统优化。 正点原子Linux开发板PCB设计考虑了多个因素,包括电路布局、分离地平面、电源管理等,确保了每个电路模块之间的电气隔离和优化布局。该开发板还配备了高性能的处理器,能够实现快速的数据处理和计算能力。 正点原子Linux开发板PCB上的电路连接点和接口丰富多样,支持各种外设和传感器的连接,方便用户进行模块化的扩展和定制。同时,该开发板还提供了丰富的软件开发包和驱动程序,使得开发者可以快速进行软件开发和系统调试。 正点原子Linux开发板PCB还具有低功耗和节能特性,能够有效降低系统的能耗。此外,该开发板还具备丰富的通信接口和网络连接功能,可以方便地与其他设备进行数据交互和远程控制。 综上所述,正点原子Linux开发板PCB是一款强大而可靠的开发板,适用于各种嵌入式系统开发和物联网应用场景。无论是初学者还是专业开发者,都可以通过该开发板进行快速、高效的应用开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值