免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 15538 | 回复: 10
打印 上一主题 下一主题

bootloader放在哪里? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-15 09:48 |只看该作者 |倒序浏览
请问bootloader是放在哪里的,必须放在norflash里面么?

系统上电后为什么能从存放bootloader的flash中取得第一条指令,这个和硬件接口有什么关系么?

因为我觉得系统都还没初始化,cpu怎么能通过一个地址就从flash上取得内容.

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2009-12-15 09:52 |只看该作者
norflash
nandflash
都可以
norflash可以直接被加载运行
nandflash需要外部芯片来将其存贮的数据加载然后运行

论坛徽章:
0
3 [报告]
发表于 2009-12-15 09:59 |只看该作者

回复 #2 T-Bagwell 的帖子

外部芯片一般是个什么东东 ?
那加载这一段是硬件直接执行的哦?

  1. 这么说吧

  2. norflash你可以当他是内存
  3. nandfash,一般就当他是硬盘,需要bios来引导
  4. 那bios在哪放着呢?
  5. 我对这个研究的没那么底层,不过我以前也很好奇这个,后来查了些资料,然后知道是这么做的
  6. 也许我误人子弟了,不过这么做确实是有道理的

  7. T-bagwell回答
复制代码

[ 本帖最后由 T-Bagwell 于 2009-12-15 11:43 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-12-15 10:42 |只看该作者
bootloader从哪里启动要看芯片是怎么定义的~

像三星的2440~  启动地址为0x0,还带一个开关可以选择这个0x0是映射到NORFLASH的0地址还是映射到NANDFLASH的0地址~

加载一般都是由硬件进行控制(刚启动的时候CPU还没收到任何指令...... 软件想控制也控制不了吧)~

评分

参与人数 1可用积分 +9 收起 理由
bitmilong + 9 鼓励..

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2009-12-15 11:16 |只看该作者
你可以把flash想象成一块内存块.

CPU取任何指令都必须向地址总线发出地址信号。给出的地址高位就有片选的信号,如果选中的是flash控制器,则flash控制器自动把这个地址解析并到flash中取对应地址的指令数据,并送到CPU的数据总线上,CPU得到这个指令数据后就执行.

上电后第一条指令给出的地址可以是任何地址,不同的CPU各自定义不同.
flash控制器的物理接法决定了flash控制器的片选和地址范围.

注意区分flash和flash控制器

评分

参与人数 1可用积分 +9 收起 理由
bitmilong + 9 鼓励..

查看全部评分

论坛徽章:
0
6 [报告]
发表于 2009-12-15 14:33 |只看该作者

回复 #1 rw99yy 的帖子

bootloader是一个引导装载程序,在嵌入式系统在,现在一般放在nandflash中,
bootloader的运作方式是这样的:
系统加电后,首先bootloader被装载,bootloader启动后,会初始化bootloader所需要的部分硬件,包括bootloader所需要的串口,包括根文件系统(这个文件系统不是我们所说的Linux的文件系统)等,然后,bootloader会加载一个基本引导装载程序,然后,通过这个基本引导装载程序去启动第二引导装载程序,这个第二装载程序就已经有了一个比较强大的功能,之所以用到这个第二装载程序时因为主引导区的空间不够,不能一次性完成引导。然后根据用户或者配置文件的指令(选择相应的系统),去引导相应的系统。在多操作系统的机器上,这个特点体现的相当明显。一旦系统被引导后,所有的权利就交给CPU了,被bootload所初始化的硬件及设备,包括bootloader所产生的文件系统都会被去掉,然后由内核去初始化硬件,加载文件系统。

[ 本帖最后由 feiyinziiu 于 2009-12-15 14:34 编辑 ]

评分

参与人数 1可用积分 +9 收起 理由
bitmilong + 9 鼓励..

查看全部评分

论坛徽章:
0
7 [报告]
发表于 2009-12-29 22:00 |只看该作者
学习了

论坛徽章:
0
8 [报告]
发表于 2009-12-30 12:49 |只看该作者

注意一下itcm( 指令紧耦合器)

如果从nand flash启动(一般由硬件管脚配置),会有一个相似的地址重映射的过程,地址0x0--0x0001ffff处的内容被映射到itcm中,这样在Boot 模式下,CPU 可以直接读取0x00_0000~0x01_FFFF 地址范围的数据,整个空间大小为128KB。
欢迎指正!  wangfeifeiwc@gmail.com  共同学习!

评分

参与人数 1可用积分 +9 收起 理由
bitmilong + 9 鼓励..

查看全部评分

论坛徽章:
0
9 [报告]
发表于 2010-01-15 21:50 |只看该作者
放在哪由处理器决定,要看你的处理器支持从什么地方起动,大多数嵌入式处理器都有在处理器内部有固化代码,这个代码可以把bootloader从处理器指定的地方(一般是flash,SD卡,USB等)加载到内存,然后跳到bootloader开始执行。或者把nor flash的地址映射到处理器的RESET地址直接执行nor flash中的代码

论坛徽章:
0
10 [报告]
发表于 2010-01-15 22:10 |只看该作者

回复 #1 rw99yy 的帖子

谁说系统上电第一条指令就是bootloader的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP