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组件只有一种运行模式 ...
随机推荐
- dede时间格试,dede时间标签
dede的日期时间格式[field:pubdate function='strftime("时间",@me'/]这个是固定格式,(利用strftime()函数格式化时间),因些只需 ...
- Linux查看进程线程个数
1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...
- java正則表達式的坑
java中正則表達式比較有意思,这里列举几个常见的坑 1.[]符号,中括号表示当中的数据都是或的关系 假设[\\w+]是匹配条件 abc能否够匹配的到呢? 首先\\w(注意这里没有中括号)表示a-z ...
- Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket
Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket 特征 ...
- php-GD库函数(三)
<?php //imagefilledellipse — 画一椭圆并填充 /*bool imagefilledellipse ( resource $image , int $cx , int ...
- STM32F103 TIM1输出PWM设置
//TIM1 分频 #define TIM1_DIV1 (1-1) #define TIM1_DIV2 (2-1) #define TIM1_DIV4 (4-1) #define TIM1_DIV8 ...
- 王立平--Program Files (x86)
window7根据系统.program files(x86) 它是应用程序目录,在64下位系统.为了更好的相容性32位程序,在一些安装32位程序(请注意,有些节目自己是32位),将默认被安装progr ...
- jsp的原则执行
什么时候server一对JSP页面运行时,第一个请求,server向上JSP引擎首先JSP页的文件翻译成Java文件.那么这Java文件编译的字节码文件..而当这个JSP页面再次被请求运行时,JSP引 ...
- Blink: Chromium的新渲染引擎
编自http://www.chromium.org/blink 关于blink Google Chrome/Chromium 从创始至今一直使用 WebKit(WebCore) 作为 HTML/CSS ...
- Nginx Rewrite规则记录
Rewrite 是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术.它还可以实现限制特定IP访问网站的功能.很多情况下,某个 IP 的访问很容易造成 CPU ...