【问题标题】:How can I learn to build my own bootloader for an embedded system?如何学习为嵌入式系统构建自己的引导加载程序?
【发布时间】:2014-01-01 02:10:51
【问题描述】:

有没有人知道为嵌入式系统构建自己的引导加载程序的良好学习资源?通过阅读各种教科书,我对引导加载程序应该做什么有一个很好的概述,一些教科书包括汇编程序的 sn-ps 以显示应该如何构建引导加载程序。

但是,当我搜索描述如何构建引导加载程序的资源/教程时,到目前为止,我发现的所有内容要么太高级(假设了解某些预备知识,因此难以理解),要么,他们正在处理为 PC 或模拟器创建引导加载程序。理想情况下,我正在寻找一个单一的资源/书籍,它涵盖了预备知识,并引导我完成整个过程。如果教程/教科书需要,我很乐意购买特定的芯片和相关电缆。

【问题讨论】:

    标签: embedded


    【解决方案1】:

    引导加载程序这个词相当广泛,所以您的任务是否源于带有串行引导加载程序的几十行代码,或者您是否对具有大量功能和驱动程序的 linux 类型的完整操作系统 (uboot) 感兴趣,以及堆栈?

    如果您还不知道答案或不知道我在说什么,您需要弄清楚,我会从小处着手......即使您想要庞大的操作系统解决方案,您也应该从裸机开始(这就是引导加载程序,裸机程序)芯片复位后,您的代码首先运行,闪烁一个 LED。然后控制 LED 闪烁的速率,如果您有按钮,请读取按钮并使其更改 LED(演示输入和输出)。然后找到并使用计时器让 LED 闪烁(如果您还没有的话)(请先使用轮询,稍后再中断)。现在您可以进行时钟数学运算并了解芯片时钟树是如何使用它来启动 uart 的,首先仅 tx,然后 rx/tx 回显您收到的内容。那么你准备好谈论你的第一个引导加载程序,它应该涉及一些串行协议(发明你自己的或使用 xmodem 或其他东西),它实际上“引导”,然后让你在引导后“加载”其他程序。

    您可以使用模拟器完成所有这些操作(以及其他形式的虚拟 LED),这可能不是一个坏主意,因为裸机的难点首先是控制汇编编译器和链接器以生成一个二进制文件实际上启动并运行。然后是一堆低于 10 美元和低于 20 美元的板子,你可以学习为(msp430 启动板、其他启动板、stm32f0 和 f4 发现板、树莓派,可能不是小猎犬暂时避开那些,哦,还有无数基于 avr 的开发板,避免 x86 以微控制器、arm、avr、msp430 开始)。

    【讨论】:

    • 是的,我想从很小的地方开始。所以知道我可能从一个模拟器开始并毕业到树莓派是很有用的。
    • 那么你可能最终会找到我的树莓派 xmodem 引导加载程序,并且你可以改进它,因为它是一个 30 分钟的项目。不管是好是坏,只要了解它就是有价值的知识。 (为什么我把程序放在我做的 ram 中,了解 uart init,了解 uart tx 和 rx 例程,当然还有 xmodem 的东西,然后它如何跳转到加载的程序)。
    猜你喜欢
    • 2014-08-22
    • 2012-02-07
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多