找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2783|回复: 0
打印 上一主题 下一主题
收起左侧

boot

[复制链接]
跳转到指定楼层
楼主
ID:82781 发表于 2015-6-13 01:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我对linux是一窍不通的,最近在搞开发板的时候也无从下手了,所以只能上网充充电,大部分都太泛泛了,现在我对linux的认识上仅仅只停留在烧写别人的代码程序的,裸奔的话基本和ARM7无异多少,这是一项浩大的工程。也许得许多年,也许根本继续不下去,不管了。
linux分为几个部分: 1. bootloader 2.内核 3,文件系统。4。应用程序
bootloader ARM7也有的,我看来就是初始化和加载MAIN函数的入口,个人认为属于系统级别,一般都有厂家提供的文件支撑,很少用户敢于,无论是怎么写怎么搞最后都会加载 _main ()  ,然后开始执行用户代码,其中还可能执行某些系统的HOOK    用来初始化系统时钟。我一般的用法是屏蔽系统HOOK,然后自己偷偷的换上哈哈,但是注意的是BOOT都不一样,不同的硬件BOOT都不同,所以先下手boot至于内核和文件系统,引用程序,这些都留到后面搞,先从头开始,头就是bootloder :
第一:大概
首先嵌入式不是PC系统,无BIOS引导。而仅仅是启动代码启动内核。也就是上电后首先调到启动代码执行,而后者才会启动内核运行操作系统,他负责
初始化硬件设备,和资源分配地址映射。
第二:位置
他存在于flashz之上的,他是编译系统编译完毕存入存储器然后板子加载之,但是我们看到开发板其实可以从NNAD 和NOR分别启动,就是这个道理他的启动加载地址可以从nand 或者NOR了 ,同理也应证硬件的初始化代码加载是两个入口。选一的,
第三:交互
开发板和PC之间主要依赖于USART来通讯。所以我们看到开发板都是用串口打印的信息。
第四: 模式
开发板的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 Boot Loader 写到目标机上的FLASH 类固态存储设备中。Boot Loader 的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用 Boot Loader 的这种工作模式。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口 。这也应征了这个boot里面几乎是用到了很多的硬件的驱动的,这部分驱动并不是内核管理的,因为此时内核还没启动呢,而是类似单片机驱动程序吧。所以这个也是需要单独编译的。比较复杂。好在有一些现成程序可用。
bootloder 分2段第一段ASM完成第二段 C语言完成。

第一阶段:
  • 硬件设备初始化。

  • 为加载 Boot Loader 的 stage2 准备 RAM 空间。

  • 拷贝 Boot Loader 的 stage2 到 RAM 空间中。

  • 设置好堆栈。

  • 跳转到 stage2 的 C 入口点。
  • 第二阶段:

    • 初始化本阶段要使用到的硬件设备。

    • 检测系统内存映射(memory map)。

    • 将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。

    • 为内核设置启动参数。

    • 调用内核。
    •   
    • 每一个阶段的代码都是神一样的惊人。但是总归揭底,最后都是一样的,永不反回,加载操作系统后。这个和RTOS是一样的本质应该都差不多,只是手段狠了许多。
    • 20140529
    • 老王与日照

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表