• uboot学习第一天


    Windows操作系统
    BIOS(设置) Windows系统 文件系统 驱动程序 应用程序


    linux操作系统
    bootloader(引导系统) kernel(内核) 文件系统 驱动程序 应用程序

    交叉编译:程序编译与执行不在同一台机器

    交叉编译工具链:交叉编译需要使用的工具

    gcc编译流程
    1、预处理 cpp test.c -o test.i
    2、编译 ./cc1 test.i (test.s /usr/lib/gcc/i686-linux-gnu/4.8)
    3、汇编 as test.s
    4、链接 ld -L 链接库文件(目录) -I 链接头文件(目录)(不推荐)


    命令特点:对于elf文件的处理
    elf:常用语linux/unix系统的二进制文件

    补充命令
    readelf -h test(elf)查看头部信息
    readelf -a test
    magic 魔数 表示了文件类型

    size test 显示elf文件中四个段大小

    nm test 显示链接标号


    重要命令
    file test 查看elf文件的基本信息

    strip test 瘦身命令
    注意:不能对中间文件瘦身

    objdump -d test > test.dis(反编译文件)(反汇编)
    使用条件:1、内核调试时 2、走投无路时

    addr2line 内核调试命令

    objcopy --gap-fill=0xff -O binary test test.bin
    字符填充 指明转换文件类型 elf格式文件 目标文件

    objcopy --gap-fill=0xff -O srec test test.srec 摩托罗拉格式文件


    网络配置(图形界面)

    /etc/network/interface
    1 # interfaces(5) file used by ifup(8) and ifdown(8)
    2 auto lo
    3 iface lo inet loopback

    tftp服务器(文件传输服务)
    1、sudo service tftpd-hpa restart (重启服务,当前有tftp服务器)
    2、sudo apt-get install tftpd-hpa(服务器端) tftp-hpa(客户端)
    3、tftp服务器配置(/etc/default/tftpd-hpa)
    3 TFTP_USERNAME="tftp"
    4 TFTP_DIRECTORY="/tftpboot" (自行指定,自行创建,加777权限) 建议创建到根目录下
    5 TFTP_ADDRESS="0.0.0.0:69" 端口号
    6 TFTP_OPTIONS="-c -s -l"
    记得在修改过配置后重启服务

    4、本机测试(127.0.0.1)
    tftp + ip
    tftp> get + 文件名 下载
    tftp> put + 文件名 上传
    tftp > q 退出

    nfs服务器(网络文件系统)---- 共享文件夹
    1、服务器端(Ubuntu) 客户端(开发板)
    2、sudo service nfs-kernel-server restart (重启nfs服务,当前有nfs服务器)
    3、sudo apt-get install nfs-kernle-server
    4、nfs服务器配置(/etc/exports )
    11 /source/rootfs *(rw,sync,no_subtree_check,no_root_squash)
    (自行指定,自行创建,加777权限)
    记得修改配置后重启服务


    bootloader:Bootloader是硬件启动的引导程序,是运行操作系统的前提

    bootloader:两种模式
    1、交互模式:完成环境变量设置,能完成自启动模式设置
    2、自启动模式:自行启动预设程序,代码

    bootloader的基本功能
    1、初始化相关硬件
    2、把bootloader自搬运到内存中
    3、执行用户的命令
    4、加载并执行内核

    bootloader选用原则:
    1、支持当前开发板体系架构
    2、支持板级结构
    3、功能

    选择了uboot
    uboot版本:2013

    uboot命令
    环境设置
    print 显示当前环境设置
    serverip 服务器ip(Ubuntu)
    ipaddr 开发板ip
    setenv +环境变量 +参数
    saveenv 保存设置
    setenv + 环境变量 删除操作

    数据传输
    ping + 服务器ip 查看网络连接
    tftp 41000000 文件名
    物理地址(40000000-8000000)

    调试
    mm + 内存地址 (地址递增)
    nm + 内存地址 (不递增)
    0x1进行修改值
    q退出

    存储器访问
    movi write kernel 41000000
    写入 emmc分区 物理地址

    movi read kernel 41000000
    读到 emmc分区 物理地址

    fdisk -c mmc 格式化(此格式化是指格式化为那种文件系统)

    加载运行(自启动模式) 分隔 空格 空格
    自启动命令 | 自启动顺序 | |
    setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000
    下载 ( 内核程序 ) ( 设备树文件 ) 内核程序执行 (省略,文件系统) 设备树程序执行

    自启动参数(设置挂载方式执行文件系统)
    setenv bootargs root=/dev/nfs nfsroot=192.168.4.4:/source/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.4.8
    指明了根文件显示方式 根文件系统目录 可读可写 串口显示 文件第一个执行程序 开发板ip

  • 相关阅读:
    Linux启动或禁止SSH用户及IP的登录,只允许密钥验证登录模式
    emacs 入门教程,菜单汉化,配置文件等杂乱文章
    bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏 — 带权并查集
    NOIP复习篇
    HiHocoder 1036 : Trie图 AC自动机
    (皇后移动类)八数码难题引发的搜索思考及总结
    POJ 水题(刷题)进阶
    [TJOI2010] 中位数
    小球和盒子的问题
    [洛谷P2785] 物理1(phsic1)-磁通量
  • 原文地址:https://www.cnblogs.com/renchong/p/5743330.html
Copyright © 2020-2023  润新知