免费注册 查看新帖 |

Chinaunix

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

[BootLoader] 尝试gcc工具链后产生的几个疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-13 12:00 |只看该作者 |倒序浏览
本帖最后由 vhouse2013 于 2013-06-13 22:03 编辑

最近在折腾arm-none-eabi-gcc工具链,用过之后才发现暴露出很多问题,确实,以往用MDK的时候,只需要选择芯片加入启动代码和自己的应用程序,一个按键就搞定了预处理、编译、汇编、连接等过程。但是用gcc工具链的话,才知道这背后很多工作自己一点都不了解。又没有找到相关的资料,所以到这里问问各位前辈几个问题。
1、使用GCC工具链,还需要使用启动代码么?
2、如果需要,是要自己提供呢,还是工具链的包里面有呢?
3、linker script 的作用是什么?(它本身是否就是一个启动文件?或者通过它才能将启动文件和应用程序连接起来?)
先在这里谢过各位,非常感谢。

论坛徽章:
0
2 [报告]
发表于 2013-06-13 18:46 |只看该作者
自己顶一个

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
3 [报告]
发表于 2013-06-14 08:41 |只看该作者
回复 1# vhouse2013


    1,是要的,因为GCC这样的,只是工具,具体什么东西,还是要你指定工具去做的。
    2,这个当然是自己提供,工具是不知道你要做什么的,但它会有这样的机制,这个机制,其实就是你看到的LINK SCRIPT
    3, 所有的,到这里你已经明白了,就是复用工具进行组装的设计图。

论坛徽章:
208
巨蟹座
日期:2013-09-02 09:16:36卯兔
日期:2013-09-02 20:53:59酉鸡
日期:2013-09-05 21:21:45戌狗
日期:2013-10-15 20:51:17寅虎
日期:2013-10-18 21:13:16白羊座
日期:2013-10-23 21:15:19午马
日期:2013-10-25 21:22:48技术图书徽章
日期:2013-11-01 09:11:32双鱼座
日期:2013-11-01 20:29:44丑牛
日期:2013-11-01 20:40:00卯兔
日期:2013-11-11 09:21:32酉鸡
日期:2013-12-04 19:56:39
4 [报告]
发表于 2013-06-14 09:16 |只看该作者
汗一个,mdk是帮了人,还是害了人啊

论坛徽章:
0
5 [报告]
发表于 2013-06-14 10:39 |只看该作者
提示: 该帖被管理员或版主屏蔽

论坛徽章:
0
6 [报告]
发表于 2013-06-14 16:00 |只看该作者
这个需要稍微了解芯片的启动过程。一般来说,芯片上电之后,CPU都会跳转到一个固定的地址开始执行。
以ARM为例,这个固定地址一般都是0。为了确保系统可以boot起来,从地址0开始的一小段区域理需要预先存放一段有效的指令。这段区域一般称为bootloader。
不同的硬件厂商对bootloader有不同的实现;可以是一块norflash,也可以是固化在芯片内部的一块ROM(称为BootROM)。这段bootloader称为一级bootloader

如果一级bootloader是norflash,用户可以通过烧写norflash来修改。但是如果一级bootloader是BootROM,那么用户自己的boot代码(称为二级bootloader)需要按照厂商规定的格式存放在外部存贮介质中(比如SD/MMC卡,NAND等等),芯片上电之后,一级bootloader会自动将二级bootloader加载到一个固定的地址。

如果希望用gcc编译出来的程序可以正确启动,需要仔细阅读芯片手册
1. 了解bootloader的起始地址。并且将程序的入口地址设置成该地址。
2.  将bootloader存放到指定的地方

   

论坛徽章:
0
7 [报告]
发表于 2013-06-15 08:52 |只看该作者
回复 3# jeppeter
嗯,但是我昨天又看了下PDF,里面提到说LINKER SCRIPT有提供startup and termination code。请看原文
It provides appropriate program startup and termination code, and causes the linker to pull in any low-level board support libraries that are required to run code on the target.
所以有点迷惑,这个startup code究竟包含在哪里,如何编辑配置它。可偏偏看不懂linker script语言


   

论坛徽章:
0
8 [报告]
发表于 2013-06-15 08:54 |只看该作者
回复 5# helloxxxyyy
哥们打广告么?点进去也没看到什么,就一个普通的电影网站,名字倒是很奇怪。

论坛徽章:
0
9 [报告]
发表于 2013-06-15 09:04 |只看该作者
回复 6# prc
这里的硬件是指一块芯片么?买来的控制器芯片里面难道不是空白的么?
我的理解是,刚买的芯片里面是无任何东西的,而且bootloader不是固定的,甚至说没有bootloader这个概念,因为都是裸机程序,所以startup在某种程度上来说,充当了bootloader的角色。真正的bootloader应该是在芯片移植了操作系统后才出现的,对么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP