9回答

0收藏

[原创] 【GD32】启动流程解析

 

GD32 GD32 10652 人阅读 | 9 人回复 | 2015-07-05

本帖最后由 荣丰宇 于 2015-7-5 21:03 编辑

一直不敢写系统启动这方面的东西,因为知道自己对它只是一知半解,写出来必然有错误之处,惹大家的笑话……
其实会做单片机开发,至少是ARM内核,会写代码,但是不一定了解系统真正从上电到运行自己的C代码程序,之间到底做了些什么,本着刨根问底的态度,现在我们就仔细剖析一下!有误之处请大家指出,共同进步!
GD32资料共享链接:  http://pan.baidu.com/s/1kTKiYQN
密码:8ujm
1GD32】开箱晒照
2GD32】上电&软件环境
3GD32】硬件原理&软件开发&Demo
4GD32】做开发(全文字)
5GD32】关于小红板时钟配置的故事

本文针对GD32F150小红板相关的3个启动文件startup_gd32f1x0.s
1、  官网固件库
2、  小红板例程
3、  飞鸟操作系统(基于小红板的)

总结一下GD32的启动文件和启动过程:
1对栈和堆的大小进行定义,
2在代码区的起始处建立中断向量表,其第一个表项是栈顶地址,第二个表项是复位中断服务入口地址。
3在复位中断服务程序中跳转到C/C++标准实时库的__main函数,完成用户堆栈等的初始化后,跳转.c文件中的main函数开始执行C程序。
假设GD32被设置为从内部FLASH启动(这也是最常见的一种情况),中断向量表起始地位为0x8000000,则栈顶地址存放于0x8000000处,而复位中断服务入口地址存放于0x8000004处。当遇到复位信号后,则从0x80000004处取出复位中断服务入口地址,继而执行复位中断服务程序,然后跳转__main函数,最后进入mian函数,来到C的世界。

了解系统的启动过程,对于更加深入了解和研究单片机打下基础,不过这也必须要对内核的特点有一定的了解,能力有限,里面可能有些错误,请大家见谅!

更多内容见附件,图片太多发帖不方便……



启动流程解析.pdf

670.5 KB, 下载次数: 89

3个启动文件.zip

6.66 KB, 下载次数: 45

评分

参与人数 1声望 +2 与非币 +10 收起 理由
loveeeboard + 2 + 10 很给力!

查看全部评分

分享到:
回复

使用道具 举报

回答|共 9 个

倒序浏览

沙发

trochili

发表于 2015-7-5 22:12:23 | 只看该作者

非常详细的资料,感谢你的付出。
eeboard大力支持的开源RTOS -- Trochili RTOS
板凳

荣丰宇

发表于 2015-7-5 22:36:20 | 只看该作者

感谢trochili 支持,今天一天的努力没有白费~~~
地板

slotg

发表于 2015-7-5 23:59:30 | 只看该作者

好资料,感谢分享
5#

奋斗哥

发表于 2015-7-6 09:42:33 | 只看该作者


非常详细的资料,感谢你的付出。
6#

奔跑-350257

发表于 2015-7-9 22:20:14 | 只看该作者

感谢楼主分享!!很有用。
7#

ALTIUM2

发表于 2015-7-9 22:44:01 | 只看该作者

谢谢楼楼这么好的分享,赞赞赞
8#

与非朋

发表于 2015-7-24 12:30:55 | 只看该作者

好资料,赞一个
9#

woshizz

发表于 2015-8-10 15:38:02 | 只看该作者

楼主辛苦了 真是好人啊
10#

奋斗逼

发表于 2015-11-9 09:19:24 | 只看该作者

感谢分享
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条