0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么使用uboot引导应用程序?

汽车电子技术 来源:嵌入式与Linux那些事 作者:仲一 2023-02-17 16:01 次阅读

uboot默认是支持执行应用程序的,就像引导内核一样,我们也可以自己写一个应用程序,让uboot启动时引导。

在uboot examples/standalone 目录下,有hello_world.c文件,编译uboot的时候,会自动编译hello_world.bin文件。

裸机程序未加链接地址时,只能使用text代码段,如果裸机程序中使用出现了跨端操作(使用text端段以外的段:rodata,data,bss段),必须在链接时手工指定连接链接地址为实际的运行地址。

默认的链接地址由 Makefile中通过CONFIG_STANDALONE_LOAD_ADDR 指定。

图片

这个地址不一定适合我们的板子,为了不影响uboot的正常运行,我们修改该地址为内核的链接地址0x280000

重新编译的uboot后,将hello_world.bin通过tftp加载到内存中。

uboot设置好参数

=> setenv ipaddr 192.168.137.110
=> setenv serverip 192.168.137.1
=> setenv gatewayip 192.168.137.1
=> tftp 0x00280000 hello_world.bin
ethernet@fe300000 Waiting for PHY auto negotiation to complete.. done
Speed: 1000, full duplex
Using ethernet@fe300000 device
TFTP from server 192.168.137.1; our IP address is 192.168.137.110
Filename 'hello_world.bin'.
Load address: 0x280000
Loading: #
         0 Bytes/s
done
Bytes transferred = 794 (31a hex)

执行go指令去引导我们的程序。

=> go 0x280000
## Starting application at 0x00280000 ...
Example expects ABI version 9
Actual U-Boot ABI version 9
Hello World
argc = 1
argv[0] = "0x280000"
argv[1] = ""
Hit any key to exit ...

成功打印出Hello World。

也可以将 go 0x280000 添加到bootcmd 中,每次启动内核前,先去引导应用程序,再引导内核。

end

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1362

    浏览量

    40215
  • 应用程序
    +关注

    关注

    37

    文章

    3240

    浏览量

    57593
  • Uboot
    +关注

    关注

    4

    文章

    125

    浏览量

    28157
收藏 人收藏

    评论

    相关推荐

    使用uboot引导应用程序

    uboot默认是支持执行应用程序的,就像引导内核一样,我们也可以自己写一个应用程序,让uboot启动时
    发表于 11-16 14:00 977次阅读

    引导程序应用程序重置向量的问题

    *Read设备。在MPLAIDE内部,我为我的应用程序设置以下限制:ROM范围:默认,-1B9C-1FFFand用于引导加载程序:ROM范围:1BA0- FFFAll似乎工作得很好。应用程序
    发表于 08-23 08:54

    请问uboot该如何引导裸机程序

    时运行uboot,然后引导我的裸机程序,尝试了一下,将之前我仿真时正常的LED小程序通过uboot下载到flash中,但是怎么样都
    发表于 07-15 05:45

    PIC32引导加载程序应用程序固件问题

    大家好,我有一个奇怪的问题:硬件是PIC32MX695+LAN8740。我有一个程序成功地独立运行和连接到sslWeb服务(没有引导加载程序、链接器文件等)。当我使用引导加载
    发表于 09-29 14:01

    为什么引导加载程序不启动应用程序

    和电源的卡。我的简单应用程序会闪烁一个LED,当我编程时它会工作。但是使用引导加载程序时,我没有看到任何闪烁。在没有SDcard的情况下,一个接一个的程序
    发表于 10-29 10:37

    如何首次下载应用程序后跳过引导加载程序

    嗨,我是dspic的新手,但我正在尝试开发一个CAN引导程序应用程序,它似乎工作得很好,但是在第一次应用程序下载之后出现了一个奇怪的行为。o可以看到
    发表于 10-29 08:06

    怎么从应用程序跳回到引导程序

    一个面包屑,引导程序可以使用它来知道我不想让它跳转到应用程序?是否有一种方法来重新创建函数中的“yReSeTyAdDR”代码,以创建可以从应用程序跳转的位置?我跳出
    发表于 04-06 07:06

    【MaaXBoard开发板试用体验】uboot 应用程序开发

    Uboot 是近似裸机的程序,没有 libc 库使用,更没有高级的组件可用,开发uboot 开发应用程序想想就很很不容易。可是 uboot
    发表于 01-19 21:02

    IMX6UL从自定义引导加载程序引导vxworks,音频应用程序不工作的原因?

    我有一个基于 IMX6UL 的定制板,音频编解码器连接到 SAI1。应用程序适用于 vxworks。BSP 有自己的 SDMA 和 SAI 驱动程序。当 vxworks 内核从 uboot 启动时
    发表于 03-16 08:43

    blhost应用程序可以与ROM引导加载程序通信吗?

    NXP LPCXpresso54S018 中的 ROM 引导加载程序支持使用串行 ISP 下载应用程序固件映像到闪存 ? 如果不支持,我们可以为此使用 EVK 闪存加载程序
    发表于 05-06 08:27

    BIOS和UEFI引导修复工具应用程序免费下载

    本文档的主要内容详细介绍的是BIOS和UEFI引导修复工具应用程序免费下载。
    发表于 04-15 08:00 1次下载
    BIOS和UEFI<b class='flag-5'>引导</b>修复工具<b class='flag-5'>应用程序</b>免费下载

    IMX6ULL Uboot 移植

    使用的开发板:正点原子ALPHA V2.2Uboot简介在学习STM32的过程中使用过IAP在线升级就会知道,有引导程序+APP程序,即bootloader
    发表于 12-22 19:08 13次下载
    IMX6ULL <b class='flag-5'>Uboot</b> 移植

    Qt应用程序出现卡顿的现象怎么解决呢

    在使用Qt完成项目开发后,需要将其运行在嵌入式linux平台上,在设备启动后,经uboot引导和linux内核后,直接进入Qt应用程序
    的头像 发表于 09-23 10:38 8347次阅读

    AN-2058: ADuCM355用户引导加载程序

    用户应用程序可以实现自己的引导加载程序,提供一个用于现场自我更新的机制。实现自己的用户引导加载程序要求以适当的方式构建用户
    的头像 发表于 06-16 16:31 925次阅读
    AN-2058: ADuCM355用户<b class='flag-5'>引导</b>加载<b class='flag-5'>程序</b>

    uboot的基本概念和启动流程分析

    当我们厌倦了裸机程序,而想要采用操作系统的时候,uboot就是不得不引入的一段程序。所以,uboot就是一段引导
    的头像 发表于 10-24 17:19 2848次阅读
    <b class='flag-5'>uboot</b>的基本概念和启动流程分析