Java编写的日历,输入年月,输出这个月的日期与星期 修改前的代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class calendar { static int year, month, yearFirstDay, monthFirstDay; // 定义静态变量,以便其它类调用 p…
nova start 虚机的代码流程分析,以ocata版本为分析基础1.nova api服务接受用户下发的 nova start启动虚机请求其对应的http restfull api接口为post /servers/{server_id}/action发送的action为os-start nova/api/openstack/compute/servers.py class ServersController(wsgi.Controller): def _start_server(self, r…
一.vectors.S 1.1 代码地址 vectors.S (arch\arm\lib) 1.2 流程跳转 跳转符号 B 为 start.S 中的 reset 执行代码,暂且先不看,先看看 vector.S 中的执行. 1.3 代码分析 ldr{条件} 目的寄存器 <存储器地址> _start: #ifdef CONFIG_SYS_DV_NOR_BOOT_CFG .word CONFIG_SYS_DV_NOR_BOOT_CFG #endif /* LDR{条件} 目的寄存器 <存储器地…
一.重定位 1.以前版本的重定位 2.新版本 我们的程序不只涉及一个变量和函数,我们若想访问程序里面的地址,则必须使用SDRAM处的新地址,即我们的程序里面的变量和函数必须修改地址.我们要修改地址,则必须知道程序的地址,就需要在链接的时候加上PIE选项: 加上PIE选项后,链接时候的地址就会生成,然后存储在段里面,如下段(u-boot.lds): 然后我们根据这些地址的信息来修改代码,程序就可以复制到SDRAM的任何地方去. 二.代码流程 start.S中执行到了 bl _main,跳转到_ma…
一.代码执行总体流程图 1.1 代码路径 U-boot.lds (arch\arm\cpu) vectors.S (arch\arm\lib) start.S (arch\arm\cpu\arm920t) lowlevel_init.S (board\samsung\jz2440) crt0.S (arch\arm\lib) relocate.S (arch\arm\lib) Board_init.c (common\init) Board_f.c (common) Jz2440.h (incl…
我们通常使用Busybox来构建根文件系统的必要的应用程序.Busybox通过传入的参数来决定执行何种操作.当init进程启动时,实际上调用的是Busybox的init_main()函数,下面我们来分析这个函数,看init进程究竟是怎样一个流程.我分析的Busybox源码是1.7.0版本的,其他版本会略有不同.部分代码省略我们只看关键性代码. 首先看init_main函数 [cpp] view plain? 01.int init_main(int argc, char **argv); 02.…
7.1 start.S 修改 在上一节中的流程中,发现初始化的过程并没由设置看门狗,也未进行中断屏蔽 如果看门狗不禁用,会导致系统反复重启,因此需要在初始化的时候禁用看门狗:中断屏蔽保证启动过程中不出现异常现象 时钟不需要初始化,直接由外部晶振提供初始化,在第二阶段 C 部分再进行初始化. 代码主要在 start.S 中进行修改.修改后的代码如下: /* 头文件包含 */ #include <asm-offsets.h> #include <common.h> #include &…
本文转载自:http://blog.csdn.net/dearsq/article/details/72770295 Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.04 IC: TI BQ25700.RK808 已知问题 驱动分析 函数调用链 已知问题 cw2015 的代码默认是 rk3288 平台的,3399 平台有一些接口已经升级. 所以默认编译是无法通过的. 所以当前的问题是进行代码的修改以适用于当前 3399 平台…
6.1 _start 入口函数 6.1.1 vectors.S (arch\arm\lib) 从上一节可以知道,uboot 的入口函数为 _start .此 函数定义在 vectors.S (arch\arm\lib) 中. 在此文件中,定义了异常向量表,及其操作函数._start 开始后,直接跳入  reset 复位中执行启动. /* 头文件包含,包含架构和配置相关的头文件,自动生成的 */ #include <config.h> /* * A macro to allow insertio…
执行完 board_init_f 后,重新跳转回 _main 中执行. 9.1 relloc_code 前 9.1.1 gd 设置 在调用board_init_f()完成板卡与全局结构体变量 gd 的初始化后将其拷贝到在代码段下重新分配的全局结构体中.接下来进行sp的重新设置,将r9指向重新分配的全局变量gd,然后进行代码的重定位. /* 将 sp 指针指向全局gd的gd->start_addr_sp,即栈底 */ ldr r0, [r9, #GD_START_ADDR_SP] /* sp =…