U-boot使用

一、U-boot介绍

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。

常见的boot-loader有Redboot、ARMboot、U-Boot等,U-Boot,全称 Universal Boot Loader;

选择U-Boot的理由:

1、开放源码;

2、支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;

3、支持多个处理器系列,如PowerPC、ARM、x86、MIPS;

4、较高的可靠性和稳定性;

5、 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;

6、 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;

7、较为丰富的开发调试文档与强大的网络技术支持;

二、U-boot命令

启动开发板

U-Boot 2010.09-00000-ga6a1bb1-dirty (Mar 26 2018 - 10:39:02)



DRAM:  64 MiB

NAND:  256 MiB

*** Warning - bad CRC or NAND, using default environment



In:    serial

Out:   serial

Err:   serial

Net:   dm9000

Hit any key to stop autoboot:  0

在U-boot延时时间结束前按任意键进入U-boot

[fl2440@lingyun]#

[fl2440@lingyun]#

 

输入help或者?帮助,可以列出所有命令

[fl2440@lingyun]# help

?       - alias for 'help'

base    - print or set address offset

bdinfo  - print Board Info structure

boot    - boot default, i.e., run 'bootcmd'

bootd   - boot default, i.e., run 'bootcmd'

bootelf - Boot from an ELF image in memory

bootm   - boot application image from memory

bootp   - boot image via network using BOOTP/TFTP protocol

bootvx  - Boot vxWorks from an ELF image

cmp     - memory compare

coninfo - print console devices and information

cp      - memory copy

crc32   - check
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
u-boot使用 gdb 进行调试,需要进行以下几个步骤: 1. 在配置文件中开启调试信息选项。在 u-boot 的配置文件(比如 `include/configs/board.h`)中添加以下选项: ``` #define CONFIG_DEBUG_UART 1 #define CONFIG_DEBUG_UART_BOARD_DETECT #define CONFIG_SYS_DEBUG 1 #define CONFIG_SYS_DEBUG_UART CONFIG_DEBUG_UART #define CONFIG_DEBUG_LL #define CONFIG_GDB_PORT 6666 ``` 其中,`CONFIG_GDB_PORT` 指定了 gdb 调试器连接的端口号。 2. 编译 u-boot。在编译 u-boot 时需要开启调试信息选项,可以使用以下命令: ``` make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- <board>_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all ``` 其中 `<board>` 为开发板的名称。 3. 烧录 u-boot 到开发板。将编译好的 u-boot 烧录到开发板中,可以使用 JTAG 调试器或者通过串口进行烧录。 4. 连接开发板和 host 机。通过串口连接开发板和 host 机,并使用以下命令启动 gdbserver: ``` arm-linux-gnueabihf-gdbserver :6666 ./u-boot ``` 其中 `./u-boot` 为编译好的 u-boot 的可执行文件。 5. 连接 gdb 调试器。在 host 机上打开一个新的终端窗口,使用以下命令连接到 gdbserver: ``` arm-linux-gnueabihf-gdb u-boot (gdb) target remote :6666 ``` 其中 `u-boot` 为编译好的 u-boot 的可执行文件。 6. 开始调试。使用 gdb 调试命令进行调试,比如设置断点、单步执行等。例如,设置断点可以使用以下命令: ``` (gdb) b main ``` 然后使用以下命令运行程序: ``` (gdb) c ``` 程序会在 `main` 函数处停下来,等待 gdb 命令。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值