Boot loader startup sequence

简介:
The boot loader's primary function is to initialize enough of the hardware and CPU to allow the hardware to communicate with the development environment for downloading a Windows CE-based run-time image. 

A boot loader manages the boot process of the target device by initializing the target device, downloading the run-time image, and booting the run-time image on the target device. The boot loader is a utility that is an integral part of the OEM device development process. In some cases, it is also included in the final OEM product. The general purpose of the boot loader is to place the run-time image into memory, and then jump to the OS startup routine. The boot loader can obtain the run-time image in a number of different ways, including loading it over a cabled connection, such as Ethernet, a universal serial bus (USB), or serial connection. The boot loader also loads the OS from a local storage device, such as Compact Flash, or a hard disk. The boot loader might store the run-time image in RAM or in nonvolatile storage, such as flash memory, electrically erasable programmable read only memory (EEPROM), or some other storage device for later use.

Only couple ideas about Boot loader booting sequence. 
1. Initialise the read and write clock speed for the SDRAM to from 95 MHz to 115 MHz. I don't know why 95 MHz to 115 MHz.

2. Initialise the read and write clock speed for the Flash memory to between 9 MHz and 12 MHz. I got no idea why 9 MHz and 12 MHz.

3. Initialise the QVGA display.

4. Initialise the back-light of the display.

5. Initialise microprocessor FFUART (baud rate, data bits, stop bit and so forth). (FFUART: This serial port is what developers can connect to to obtain console access to the Gumstix. Another module which uses this shared serial port is the VDIP module which provides a serial to usb host functionality. ) 

FFUART
The FFUART (for Full-Function UART) serves as the default Linux console on the Gumstix, and supports rates of up to 230kbaud. It is exposed on nearly all 60-pin expansion boards.

The Gumstix Linux kernel maps the FFUART to /dev/ttyS0.

Despite its name, the Gumstix does not use the FFUART as a "full-function" serial port by default: when used as the system console, hardware flow control is disabled.

On all of the boards which have USB, the FFUART CTS and RTS signals are currently used as part of the USB hardware. The RTS is used to tell the host that it's ready (cable plugged in), and the CTS is used to detect cable insertion.

FFUART GPIO configuration:

echo "AF1 in" > /proc/gpio/GPIO34
echo "AF2 out" > /proc/gpio/GPIO39
  
Refer to  http://docwiki.gumstix.org/index.php/UART_Schematics

UART (universal asynchronous receiver/transmitter) is a type of "asynchronous receiver/transmitter", a piece of computer  hardware  that translates data between parallel and serial forms. UARTs are commonly used in conjunction with other communication standards such as EIA RS-232.

As of 2008, UARTs are commonly used with RS-232 for embedded systems communications. It is useful to communicate between microcontrollers and also with PCs. Many chips provide UART functionality in silicon, and low-cost chips exist to convert logic level signals (such as TTL voltages) to RS-232 level signals.

Refer to http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter

I think FFUART is serial port for debugging. And it can be communicated with a host PC. 

6. Initialise I2C controller.

7. Initialise the peripherals such as keyboard.  

8. If a sequence of key presses is detected, shall change booting mode or execute a particularly operation.  

9. Verify and validate the integrity of System Software image.

10. Copy the System Software image from flash memory to the SDRAM.

11. Pass control to the System Software image.

 


    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2010/06/10/Boot-loader-startup-sequence.html,如需转载请自行联系原作者


相关文章
|
存储 设计模式 缓存
DDD领域驱动设计实战-分层架构及代码目录结构(下)
DDD领域驱动设计实战-分层架构及代码目录结构
2052 0
DDD领域驱动设计实战-分层架构及代码目录结构(下)
|
9月前
|
测试技术 持续交付 开发者
Logic Error: 如何识别和修复逻辑错误
识别和修复逻辑错误是软件开发中的重要技能。通过理解程序需求、使用调试工具、打印日志和编写单元测试,可以有效地识别逻辑错误。修复逻辑错误时,需仔细阅读代码,回溯错误来源,并进行全面的重新测试。遵循最佳实践,如保持代码简洁、进行代码审查和使用持续集成,可以进一步减少逻辑错误的发生,提高代码质量。希望本文能帮助开发者更好地识别和修复逻辑错误,编写出高质量的软件。
684 16
|
9月前
|
存储 缓存 Apache
小红书湖仓架构的跃迁之路
小红书研发工程师李鹏霖(丁典)在StarRocks年度峰会上分享了如何通过结合StarRocks和Iceberg实现极速湖仓分析架构。新架构使P90查询性能提升了3倍,查询响应时间稳定在10秒以内,存储空间减少了一半。RedBI自助分析平台支持灵活、快速的即席查询,优化了排序键和Join操作,引入DataCache功能显著提升查询性能。未来将探索近实时湖仓分析架构,进一步优化处理能力。
|
10月前
阿里云百炼,付费了也会超时吗?
讨论一下,阿里云百炼为啥回答问题会超时?付费了不应该一直算,算出来为止吗?反正都是用户花钱让算的。为啥要自己中途掐断计算?
|
前端开发 JavaScript UED
什么是组件化设计
【10月更文挑战第22天】什么是组件化设计
|
JSON API 数据格式
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
|
流计算 Java
Flink广播变量
广播变量简介 在Flink中,同一个算子可能存在若干个不同的并行实例,计算过程可能不在同一个Slot中进行,不同算子之间更是如此,因此不同算子的计算数据之间不能像Java数组之间一样互相访问,而广播变量Broadcast便是解决这种情况的。
2601 0
Py之zhon:zhon库的简介、安装、使用方法之详细攻略
Py之zhon:zhon库的简介、安装、使用方法之详细攻略
Py之zhon:zhon库的简介、安装、使用方法之详细攻略
|
编译器 Linux 测试技术
SDL开发笔记(一):SDL介绍、编译使用以及工程模板
SDL开发笔记(一):SDL介绍、编译使用以及工程模板
SDL开发笔记(一):SDL介绍、编译使用以及工程模板