arm9引导码没那么神奇
来源:互联网 发布:人脸识别算法开源代码 编辑:程序博客网 时间:2024/06/08 09:14
小弟初学S3C2440,写此博客仅想记录学习过程中的痛并快乐的辛酸历程。由于只学到了点点皮毛,难免看问题有些片面,甚至出错。还请各位高人指正,让小弟对问题有全新认识,同时也避免了误人子弟,不胜感激。
在学51的时候,就老师说到了引导码,他说单片机需要用引导码,指引他,才能成功运行代码。由于烧录软件(我用的是STCISP)自动吧引导码加载进去了,所以就不需要我们再去配置了。从那时开始,我就觉得这个引导码真神奇,一直想学习一下怎么写,但是对于51没有找到相关资料。有幸在学习arm9的时候又碰到了这个问题,能让我了此心愿。
言归正传,引导码说白了就是用汇编语言调用C函数,(完全个人意见,如有错误,请指正)而这个函数比较特别,是C语言的MAIN函数。
1设置堆栈:既然是调用C语言函数,那么免不了要配置堆栈,为什么一定要配置堆栈,可以看一下反汇编,当调用MAIN函数时,使用的是BL,一定会存在LR寄存器存值现象,但在C语言中也会有调用子函数现象,所以也会存在使用LR现象,那么可想而知,如果不把 BL main这时保存在LR的地址压入栈,LR寄存器中的值一定会被后来值冲掉,当代码运行完MAIN函数后,程序找不到返回地址,便会跑飞。
2调用主函数MAIN(保持队形;有些废话,)
3清理工作:MAIN函数返回后,做一些后续工作
4配置时钟:
5各种硬件资源配置。
*注:只有1,2才是最重要的,一旦1,2 写好后,就可以运行C语言了,4,5两项完全可以在C语言函数里面配置。
0 0
- arm9引导码没那么神奇
- 支出,没那么,那么,
- uboot 引导arm9 平台
- 没那么简单,没那么困难
- 其实没那么难
- 原来没那么复杂
- 也没那么消极...
- 《没那么简单》-黄小琥
- ~没那么简单~
- 没那么简单
- 微软没那么邪恶
- 没那么简单
- 没那么简单
- 没那么简单
- 这个,没那么简单
- BroadcastReceiver,没那么简单!
- 集合,没那么简单
- container_of, 没那么简单
- 房间安排(nyoj168)
- ICMP协议
- JAVA的整型与字符串相互转换 android
- xlrd---Python中读取excel文件的利器
- 按资源分配管理技术,输入输出设备类型可分为哪三类?
- arm9引导码没那么神奇
- main函数及ISR init分析
- Unity3D学习之(封装和继承)
- 操作系统: 数据传送方式有哪几种?
- 二叉树递归与非递归遍历(附完整源码)
- EditPlus添加到右键菜单
- μCOS-II移植到ARM处理器上的几个要点
- [POJ3613]Cow Relays && Floyd倍增
- View和 Viewgroup之间的区别