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

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

3天内不再提示

最简单的bootloader的编写步骤

0BFC_eet_china 来源:未知 作者:李倩 2018-08-08 08:46 次阅读

内核从板载启动的 bootargs--内核启动参数, bootargs 是 bootloader 传递给内核的启动字符串。

BootLoader的目标是启动内核, 大多数 boot loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式 。

嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。常见的BootLoader程序如下:

最简单的bootloader的编写步骤:

1). 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH

1.关看门狗:2440的开发板一上电看门狗是打开的,不关闭的话每三秒就会复位一次开发板。看门狗的地址为:0x53000000

2.设置时钟:CLKDVIN寄存器的地址为0x4c000014,必须设置为异步模式,这是datasheet所规定的。

注:

判断从nand启动还是nor启动就往内存中写数据即可,之后看是否能从内存相应地址读出对应的值。

Nand_Flash的时序(s3c2440中)nand-flash存在先天缺陷:会位反转为此引入OOBoutofbank。

Nand_Flash芯片手册中

相关时间参数的获取:

2). 如果bootloader比较大,要把它重定位到SDRAM

3). 把内核从NAND FLASH读到SDRAM

4). 设置"要传给内核的参数"

在u-boot中查看分区,使用命令mtd

5). 跳转执行内核

在简单的BootLoader编写的过程中出现过以下错误,错误之处是.lds链接脚本文件出错,要注意相关格式。

修改完最后的这个错误,最终一个最简BootLoader及完成了。

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

    关注

    10

    文章

    541

    浏览量

    70257
  • bootloader
    +关注

    关注

    2

    文章

    230

    浏览量

    45052

原文标题:最最简单的Bootloader怎么写?

文章出处:【微信号:eet-china,微信公众号:电子工程专辑】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何编写bootloader

    每一个MCU都是PIC18F46K22@ 20MHz VDD=5V DIP40引脚封装。我想学习如何为我的MCU编写S基本Bootloader,这样我就可以从UART端口闪出它。有人可以指点一下我
    发表于 09-21 10:13

    BootLoader是什么? 怎样去编写BootLoader源程序?

    BootLoader是什么?怎样去编写BootLoader源程序?BootLoader的编译、链接和下载
    发表于 04-27 07:08

    关于编写Bootloader的资料大合集

    在使用MCU的时候如果要使用程序下载、程序升级或程序备份,那么都需要自己编写Bootloader。那么编写Bootloader使首先应该完成的是什么呢?没错,就是中断向量表。那如果操作
    发表于 11-03 08:05

    怎样给单片机编写bootloader?

    怎样给单片机编写bootloader
    发表于 10-30 07:45

    一个简单的组合逻辑编写

    一个简单的组合逻辑编写 一 实验内容:完成实验内容:
    发表于 02-08 14:37 913次阅读

    简单的c编写的旋进数组

    简单的c编写的旋进数组。
    发表于 03-11 13:39 0次下载

    AVR的bootloader的设置步骤教程及注意事项

    熔丝位的烧写:BOOTRST要进行编程,这样单片机在复位后自动跳转到bootloader区执行bootloader的代码,然后要根据自己bootloader的大小设置boot区的的熔丝位。
    的头像 发表于 05-20 09:46 6439次阅读
    AVR的<b class='flag-5'>bootloader</b>的设置<b class='flag-5'>步骤</b>教程及注意事项

    如何编写ARM处理器的Bootloader

    作者 | strongerHuang 微信公众号 | strongerHuang 之前从应用的角度给大家分享过Bootloader相关的文章,今天从底层原理来给大家描述ARM处理器如何编写
    的头像 发表于 10-27 11:02 3867次阅读
    如何<b class='flag-5'>编写</b>ARM处理器的<b class='flag-5'>Bootloader</b>

    【MCU】BootLoader简单介绍

    一、pandas是什么?在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行,用来初始化硬件设备,建立内存空间映射图,以便为操作系统的启动做准备。在嵌入式系统中,通常没有想BIOS
    发表于 10-27 19:21 48次下载
    【MCU】<b class='flag-5'>BootLoader</b>的<b class='flag-5'>简单</b>介绍

    关于M0内核MCU的Bootloader编写

    在使用MCU的时候如果要使用程序下载、程序升级或程序备份,那么都需要自己编写Bootloader。那么编写Bootloader使首先应该完成的是什么呢?没错,就是中断向量表。那如果操作
    发表于 10-28 11:36 16次下载
    关于M0内核MCU的<b class='flag-5'>Bootloader</b><b class='flag-5'>编写</b>

    在STM32F103C8上实现一个简单bootloader

    在STM32F103C8上实现一个简单bootloader最近在琢磨单片机在线更新程序的事情,查资料查到在STM32上实现一个bootloader比较简单,废话不多说,动手尝试一下。
    发表于 11-23 17:51 20次下载
    在STM32F103C8上实现一个<b class='flag-5'>简单</b>的<b class='flag-5'>bootloader</b>

    如何实现简单bootloader功能

    考虑到瑞萨的MCUBoot的ROM占用和某些客户的需求,本篇主要讲述在不使用瑞萨MCUboot驱动下,如何实现简单bootloader功能。
    的头像 发表于 09-06 13:13 2099次阅读

    倍福PLC学习:编写函数块及简单调试

    今天这篇文章我们来编写一个简单的电机控制函数块,并将其下载到倍福CX5020控制器进行测试,以熟悉TwinCAT3环境下基本的编程步骤
    的头像 发表于 11-09 09:34 3668次阅读

    如何编写一个简单的电机控制函数块?

    今天这篇文章我们来编写一个简单的电机控制函数块,并将其下载到倍福CX5020控制器进行测试,以熟悉TwinCAT3环境下基本的编程步骤
    的头像 发表于 02-07 14:00 1301次阅读
    如何<b class='flag-5'>编写</b>一个<b class='flag-5'>简单</b>的电机控制函数块?

    ARM处理器如何编写Bootloader

    前面给大家分享过Bootloader从应用角度执行的相关文章,今天从底层原理来给大家描述ARM处理器如何编写Bootloader,以及底层流程。
    的头像 发表于 07-26 09:10 564次阅读
    ARM处理器如何<b class='flag-5'>编写</b><b class='flag-5'>Bootloader</b>