如何学习为嵌入式系统构建自己的引导程序



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

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

术语bootloader相当宽泛,那么您的任务是否源于串行bootloader的几十行代码,或者您是否对具有大量功能、驱动程序和堆栈的linux类型的全面操作系统(uboot)感兴趣?

如果你还不知道答案,或者不知道我在说什么,你需要弄清楚,我会从小开始。。。即使你想要巨大的怪物操作系统解决方案,你也应该从裸机(这就是引导程序,裸机程序)开始。芯片复位后,你的代码首先运行,闪烁一个led。然后控制led闪烁的速率,然后如果你有一个按钮,读取按钮并使其改变led(演示输入和输出)。然后找到并使用计时器闪烁led,如果你还没有(请先使用轮询,稍后中断)。现在你可以做时钟计算,知道芯片时钟树是如何的,所以用它来获得uart,首先是tx,然后是rx/tx回声你的接收。然后你就可以谈论你的第一个引导程序了,它应该涉及一些串行协议(发明你自己的或使用xmodem或其他什么),它实际上"引导"了,然后让你在引导后"加载"其他程序。

你可以使用模拟器完成所有这些(好吧,其他形式的虚拟led),这可能不是一个坏主意,因为裸机的核心部分首先是控制汇编编译器和链接器,以生成一个真正启动并运行的二进制文件。然后是一堆低于10美元和低于20美元的板,你可以学习为其编写引导程序(msp430启动板,其他启动板,stm32f0和f4发现板,树莓派,可能不是比格犬。现在要避免这些,哦,还有无数基于avr的板,避免x86从微控制器开始,arm,avr,msp430)。

最新更新