K60 启动过程分析
很高兴老师借给我一K60的开发板,趁着暑假好好鼓捣鼓捣!
有了上图的过程分析我想心里大概有个低了吧!
以下看代码:
/* CodeWarrior ARM Runtime Support Library * Copyright �2012 Freescale Semiconductors. All rights reserved. * * $Date: 2013/02/08 07:14:44 $ * $Revision: 1.6 $ */ /* * __arm_start.c - entry-point for ARM programs * */ #include <string.h> #include <stdlib.h> #include <runtime_configuration.h> _EWL_BEGIN_EXTERN_C #if SUPPORT_SEMIHOST_ARGC_ARGV #define __MAX_CMDLINE_ARGS 10 static char *argv[__MAX_CMDLINE_ARGS] = { 0 }; #else static char *argv[] = { 0 }; #endif #if __GNUC__ #define __call_static_initializers __init_cpp #endif #if SUPPORT_SEMIHOST_ARGC_ARGV extern int __argc_argv(int, char **); #endif /* SUPPORT_SEMIHOST_ARGC_ARGV */ extern void __call_static_initializers(void); extern int main(int, char **); #ifdef __VFPV4__ extern void __fp_init(void); #endif /* __VFPV4__ */ extern void __init_registers(); extern void __init_hardware(); extern void __init_user(); #if defined(__APCS_ROPI) extern void __init_pic(); #endif #if defined(__APCS_RWPI) extern void __init_pid(); #endif #if defined(__APCS_ROPI) || defined(__APCS_RWPI) extern void __load_static_base(); #endif #if defined(__SEMIHOSTING) extern void __init_semihost(void) _EWL_WEAK; #endif #if SUPPORT_ROM_TO_RAM extern void __copy_rom_sections_to_ram(void); extern char __S_romp[]; #endif static void zero_fill_bss(void) { extern char __START_BSS[]; extern char __END_BSS[]; memset(__START_BSS, 0, (__END_BSS - __START_BSS)); } #ifndef __thumb // Thumb version #error Thumb startup #endif // To keep iar debugger happy void __iar_program_start(void) _EWL_NAKED; void __thumb_startup(void); void __iar_program_start() { __thumb_startup(); } void __thumb_startup(void) _EWL_NAKED; void __thumb_startup(void) { // Setup registers __init_registers(); // setup hardware __init_hardware(); #if defined(__APCS_ROPI) || defined(__APCS_RWPI) // static base register initialization __load_static_base(); #endif #if defined(__APCS_RWPI) // -pid // setup static base for SB relative position independent data // perform runtime relocation __init_pid(); #endif #if defined(__APCS_ROPI) // -pic // perform runtime relocation for position independent code __init_pic(); #endif // zero-fill the .bss section zero_fill_bss(); #if SUPPORT_ROM_TO_RAM if (__S_romp != 0L) __copy_rom_sections_to_ram(); #endif // initialize the floating-point library #ifdef __VFPV4__ __fp_init(); #endif // call C++ static initializers __call_static_initializers(); // initializations before main, user specific __init_user(); #if defined(__SEMIHOSTING) // semihost initializations __init_semihost(); #endif // call main(argc, &argv) #if SUPPORT_SEMIHOST_ARGC_ARGV exit(main(__argc_argv(__MAX_CMDLINE_ARGS, argv), argv)); #else exit(main(0, argv)); #endif // should never get here while (1); } _EWL_END_EXTERN_C
封尘浪用的库为 苏州大学 的库这两天一直在移植,各种问题,整体来说苏州的库还是不错的。就是资料有点少。这个暑假准备拿下K60,(鸭梨山大)好了,有时间在把学习过程与大家共享受!
同时,欢迎您来交流和共同探讨,解决这个问题。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
K60 启动过程分析的更多相关文章
- ASP.Net Core MVC6 RC2 启动过程分析[偏源码分析]
入口程序 如果做过Web之外开发的人,应该记得这个是标准的Console或者Winform的入口.为什么会这样呢? .NET Web Development and Tools Blog ASP.NE ...
- 开机SystemServer到ActivityManagerService启动过程分析
开机SystemServer到ActivityManagerService启动过程 一 从Systemserver到AMS zygote-> systemserver:java入层口: /** ...
- Neutron分析(2)——neutron-server启动过程分析
neutron-server启动过程分析 1. /etc/init.d/neutron-server DAEMON=/usr/bin/neutron-server DAEMON_ARGS=" ...
- linux视频学习7(ssh, linux启动过程分析,加解压缩,java网络编程)
回顾数据库mysql的备份和恢复: show databases; user spdb1; show tables; 在mysql/bin目录下 执行备份: ./mysqldump -u root - ...
- Activity启动过程分析
Android的四大组件中除了BroadCastReceiver以外,其他三种组件都必须在AndroidManifest中注册,对于BroadCastReceiver来说,它既可以在AndroidMa ...
- Spark Streaming应用启动过程分析
本文为SparkStreaming源码剖析的第三篇,主要分析SparkStreaming启动过程. 在调用StreamingContext.start方法后,进入JobScheduler.start方 ...
- ActivityManagerService启动过程分析
之前讲Android的View的绘制原理和流程的时候,讲到过在Android调用setContentView之后,Android调用了一个prepreTravle的方法,这里面就提到了Activity ...
- Disconf源码分析之启动过程分析下(2)
接上文,下面是第二次扫描的XML配置. <bean id="disconfMgrBean2" class="com.baidu.disconf.client.Dis ...
- Service启动过程分析
Service是一种计算型组件,用于在后台执行一系列的计算任务.由于工作在后台,因此用户是无法直接感知到它的存在.Service组件和Activity组件略有不同,Activity组件只有一种运行模式 ...
随机推荐
- POJ 2182 Lost Cows(牛排序,线段树)
Language: Default Lost Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9207 Acce ...
- 隐马尔科夫模型(HMM)及事实上现
马尔科夫模型 马尔科夫模型是单重随机过程,是一个2元组:(S,A). 当中S是状态集合,A是状态转移矩阵. 仅仅用状态转移来描写叙述随机过程. 马尔科夫模型的2个如果 有限历史性如果:t+l时刻系统状 ...
- Z.ExtensionMethods 扩展类库
Z.ExtensionMethods 一个强大的开源扩展库 今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去 ...
- 从零开始学Xamarin.Forms(二) 环境搭建、创建项目
原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建: 1.下载并安装jdk.Android SDK和NDK,当然还需要 VS2013 ...
- 泛型Binary Search Tree实现,And和STL map比较的经营业绩
问题叙述性说明: 1.binary search tree它是一种二进制树的.对于key值.比当前节点左孩子少大于右子. 2.binary search tree不是自平衡树.所以,当插入数据不是非常 ...
- cisco(思科)交换机配置篇【两】
上一页大家津津乐道cisco基本操作命令开关,而端午假期,该cisco简单的开关配置,并希望请您分享"端午节快乐"!Ok,配置交换机,首先,你必须进入全局配置模式Switch,在成 ...
- android 设置默认启动network mode
network mode常见类型 WCDMA preferred : 0 GSM only : 1 WCDMA only : 2 GSM UMTS : 3 CDMA : 4 ... (参考RILCon ...
- BZOJ 3172([Tjoi2013]单词-后缀数组第一题+RMQ)
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 268 Solved: 145 [ Submit][ St ...
- Android中一个类实现的接口数不能超过七个
近期一段时间,在开发Android应用程序的过程中,发现Android中一个类实现的接口数超过七个的时候,常常会出现超过第7个之后的接口不能正常使用.
- BrowserSync使用
在Gulp中使用BrowserSync 2016-02-24 23:47 by 那时候的我, 116 阅读, 0 评论, 收藏, 编辑 博客已迁移至http://lwzhang.github.io. ...