Skip navigation.
Home

u-boot 结构分析 —— 基于S3C2410

u-boot是广泛应用于嵌入式系统的bootloader,该软件主页是http://www.denx.de/wiki/U-Boot

 

解压缩开代码包后,以下几个目录中分类存放了主要的源码

board目录——用于放置板支持代码,相当于bootloader级的BSP。与特定板相关的代码包括频率合成、GPIO、板参数、调试串口、能源管理、按键处理等。如本例子的板级代码

common目录——用于存放体系结构无关的公共代码,主要是各种命令实现代码、环境变量实现代码等,如bootm命令

cpu目录——用于存放处理器和SOC特定代码,分别存在于以cpu名称命名的子目录中。如arm1136处理器或者是本例中的S3C2410片上系统的特有代码

driver目录——存放硬件驱动的代码,目前还没有做到完全清晰的分离架构相关/无关的代码。如S3C2410 RTC驱动和流行的dm9000百兆网卡驱动

fs目录——存放文件系统代码,包括fatext2以及cramfs

include目录——存放u-boot头文件,相当一部分和linux内核中的一致

lib_xxx目录——存放于xxx架构相关的代码,如浮点routine和实际的引导代码。如arm架构内核引导代码

net目录——存放体系结构无关的网络协议,tftpbootp

tools目录——在本机运行的u-boot工具,如用来创建uImage的mkimage工具

 

 

 

 

本文作者:周明 原载于嵌入式技术博客,请尊重作者劳动,欢迎转载但需注明原文链接!

u-boot logo

周老师,我现在u-boot能启动一个logo出来,是480*270的。然后内核配置的时候。我没有选logo的选项,我想让u-boot启动的这个logo一直显示直到我的QT程序起来为止,但现在内核启动的时候会把整个屏都清了。跟踪了一下代码,也改了一些,但还是不行;如果我选上内核的logo选项,显示一个图片,但图片是480x270,很大。内核直接就崩溃了。周老师,你看你有没有好的解决方法呢?谢谢

关于 u-boot logo

比较优雅的方法:

  1. u-boot启动时显示logo
  2. 内核启动后接管显示,绘制logo。如果做得没问题是不会崩溃的。内核可以支持很大的logo
  3. 用户程序启动,负责在framebuffer绘制logo。你可以看一下usplash或psplash软件。

如果想省力:

  • 修改你的LCD驱动初始化代码,去掉显存初始化和寄存器初始化。即告诉驱动,让bootloader负责硬件初始化,驱动只作软件对象初始化,硬件保持untouch。

 


 

这两种方法都实际用过,请参考