01 OrangePi uboot编译

嵌入式系统搭建指南

计算机系统的组成:
CPU , 内存, 输入/输出设备, 外存(硬盘)

单片机: 一个芯片上就是一个完整的计算机系统.
SOC: 片上系统(system on chip), 其实就是功能更强大的单片机

arm: 一种CPU核心(如:51(intel)). arm公司不会生产具体的硬件芯片, 只设计CPU核心.

arm通过与芯片厂家合作, 生产基于arm核心的具体CPU芯片.
基于arm的合作厂家有: 三星, 高通, MTK, 华为海思, 全志, TI, 晨星(MStar)

/////////////////////////////////////////////////////////
接线:
uart ttl转usb线
红色的ttl线是输出5v (注意只作uart用是不需要此接口的)
黑色线–> gnd
绿色线–> txd
白色线–> rxd

板上的调试接口:
gnd rx tx

/////////////////////////////////////////////////////////

pc机的启动过程:
bios —> grub —> kernel —> fs

arm启动过程:
bios(soc内部的rom) –> uboot —> kernel —> fs

grub 与 uboot都是bootloader的一种, 用于引导linux内核启动

///////////////////
源码及所需的工具下载:
https://pan.baidu.com/s/1mhU4a8K 密码: b375




先安装dtc工具(用于linux内核的设备树)
解包:   dtc-master.zip
    进源码目录"dtc-master""make && make install"


编译uboot:

   1). 解包orangepi_sdk.tar.bz2   
       进入orangepi_sdk目录

   2). mkdir output            //创建目录,用于存放编译生成的程序镜像
       mkdir output/u-boot/     //创建uboot子目录
       mkdir output/dtb/       //创建设备树子目录

       yum install ncurses*   // ncurses是个终端的图形库, 用于配置编译项使用

       进入toolchain/sunxi-tools目录:
     执行make   //编译出用于生成内核的script.bin工具(bin2fex  fex2bin)    
         cp bin2fex fex2bin sunxi-fexc  /bin/   //复制这几个工具到系统的bin目录

   3). 回到orangepi_sdk目录下: 

       make config_uboot  // 配置uboot, 出现配置界面后,直接退出就可以了.

       make uboot         // 编译uboot
     第一次时会发生错误: make_uboot.sh: line 31: mkimage: command not found
       发生错误后: cp source/u-boot-2016.07/tools/mkimage /bin/
       再次执行"make uboot"    //mkimage工具用于内核镜像上加文件头用


       编译完成后,在output/u-boot/目录里有:
    boot.scr                   script.bin                 u-boot-sunxi-with-spl.bin

    // boot.src其实是个uboot环境变量存放文件

   4). 把sd卡放入读卡器,再接入pc, 确认它的设备文件(一般是/dev/sdb)
    make install_uboot sdcard=/dev/sdb   //把uboot镜像烧入sd卡的指定扇区位置 

   5). 安装pc端的uart工具
    yum install minicom*

    配置minicom:  minicom -s
            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+
        选择"Serial port setup"
        +-----------------------------------------------------------------------+
        | A -    Serial Device      : /dev/ttyUSB0                              |
        |                                                                       |
        | C -   Callin Program      :                                           |
        | D -  Callout Program      :                                           |
        | E -    Bps/Par/Bits       : 115200 8N1                                |
        | F - Hardware Flow Control : No                                        |
        | G - Software Flow Control : No                                        |
        |                                                                       |
        |    Change which setting?                                              |
        +-----------------------------------------------------------------------+
        注意: /dev/ttyS0表示PC机后面的RS232接口, usb转232接口得设为/dev/ttyUSB0

        选择好后, “Save setup as dfl”, 保存好后,以后使用时直接输入命令"minicom"即可   
        // 退出minicom,  先按"ctrl+a", 松手后再按'q'键,即可选择退出

     6). 把sd卡接到板子上,接上电源线,uart线.在minicom里会有信息:
    U-Boot SPL 2016.07-cazure (May 22 2017 - 12:28:32)
    DRAM: 512 MiB
    Trying to boot from MMC1


    U-Boot 2016.07-cazure (May 22 2017 - 12:28:32 +0800) Allwinner Technology

    CPU:   Allwinner H3 (SUN8I 1680)
    Model: Xunlong Orange Pi
    DRAM:  512 MiB
    MMC:   SUNXI SD/MMC: 0
    In:    serial
    Out:   serial
    Err:   serial
    Net:   No ethernet found.
    starting USB...
    USB0:   USB EHCI 1.00
    USB1:   USB OHCI 1.0
    scanning bus 0 for devices... 1 USB Device(s) found
    Hit any key to stop autoboot:  0          //出现这句信息时按任意键就会停住
    u-boot@orangepi#

 


### Orangepi U-Boot SD卡烧录教程 #### 准备工作 在开始之前,需要确认开发环境已经配置完成并安装必要的工具链。确保Ubuntu系统能够正确识别SD卡设备[^1]。可以通过以下命令检查SD卡是否被挂载: ```bash ls /dev/sd* -l ``` 如果成功检测到SD卡,则会显示类似`/dev/sdb`的设备名称。 --- #### 格式化SD卡 为了确保数据一致性,在烧写前建议先对SD卡进行格式化操作。可以使用`mkfs.fat`或其他适合的文件系统格式化工具来清理SD卡中的旧数据。例如: ```bash sudo mkfs.vfat /dev/sdb ``` 此步骤并非强制性,但如果SD卡中有残留的数据可能会干扰正常启动过程。 --- #### 编译U-Boot 假设已下载Orangepi对应的U-Boot源码包,并完成了交叉编译设置。以下是典型的编译流程: ```bash make orangepi_h616_defconfig make CROSS_COMPILE=<your-cross-toolchain> -j$(nproc) ``` 完成后会在`spl/`目录下生成`sunxi-spl.bin`以及根目录下的`u-boot.itb`或`u-boot-sunxi-with-spl.bin`文件[^3]。 --- #### 烧写SPL和U-Boot至SD卡 根据具体需求选择不同的方法将引导程序烧入SD卡。 ##### 方法一:单文件方式(推荐) 对于某些版本的U-Boot,可以直接通过单一文件`u-boot-sunxi-with-spl.bin`完成整个烧写过程。执行如下命令即可[^2]: ```bash sudo dd if=./u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1K seek=8 ``` 这里需要注意的是,由于全志H6系列芯片设计原因,BL1阶段从第8KB偏移位置加载初始固件,因此指定参数`seek=8`非常重要。 --- ##### 方法二:分步烧写法 另一种常见做法是分别烧写SPL(Serial Peripheral Interface Loader) 和 主体部分(U-Boot ITB Image)[^3] : 1. **烧写 SPL** ```bash sudo dd if=spl/sunxi-spl.bin of=/dev/sdb bs=1024 seek=8 ``` 2. **烧写 U-Boot** ```bash sudo dd if=u-boot.itb of=/dev/sdb bs=1024 seek=40 ``` 这种两步走策略提供了更大的灵活性,尤其当遇到特殊硬件定制情况时更为适用。 --- #### 验证烧写结果 最后一步是对新刷好的SD卡做基本测试验证其功能是否正常运作。插入目标板子开机观察串口调试信息输出状况;如果没有错误提示则说明一切顺利! ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值