uboot的jumptable_init函数分析】的更多相关文章

一.函数说明 函数功能:安装系统函数指针 函数位置:common/exports.c 二.函数分析 void jumptable_init (void) { int i; gd->jt = (void **) malloc (XF_MAX * sizeof (void *)); //在堆中开辟指针空间 ; i < XF_MAX; i++) gd->jt[i] = (void *) dummy; //指针空间都初始化成指向空函数 //依次安装函数指针 gd->jt[XF_get_ve…
在分析start.S文件过程中提到过,最后从汇编跳到C函数执行的是start_armboot函数,位于lib_arm\board.c文件下,它的执行流程图如下,截图来源于<嵌入式LINUX应用开发完全手册>.根据流程图,以下内容大致分几步写: 1.gd全局变量初始化 2.调用init_sequence函数指针数组里的初始化函数.nand初始化.环境变量初始化.USB初始化 3.死循环main_loop()分析 1.gd全局变量初始化 gd是全局引用的变量,它的定义在Global_data.h…
一.函数说明 函数功能: 完成设备的初始化 函数位置: common/devices.c 二.程序分析 int devices_init (void) { #ifndef CONFIG_ARM /* already relocated for current ARM implementation */ ulong relocation_offset = gd->reloc_off; int i; /* relocate device name pointers */ ; i < (sizeof…
一.整体流程 start_amboot()函数是执行完start.S汇编文件后第一个C语言函数,完成的功能自然还是初始化的工作 . 1.全局变量指针r8设定,以及全局变量区清零 2.执行一些类初始化函数,详细见init_sequence所对应的函数 3.初始化norflash 4.初始化显示器 5.初始化堆区 6.初始化nandflash 7.环境变量重定位,详见uboot环境变量(env)初始化 8.网络设置 9.设备初始化,详见uboot的devices_init函数分析 10.函数跳转表初…
U-Boot启动过程完全分析 1.1       U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 (2)第二阶段的功能 初始化本阶段使用的硬件设备 检测系统内存映射 将内核从Flash读取到RAM中 为内核设置启动参数 调用内核 1.1.1             U-Boot启动第一阶段代码分析 第一阶段对应的文件是cpu/arm920t/s…
基于S3C2440的U-BOOT的start.S分析 在了解了ARM相关的汇编指令后,同时结合网上各位大虾的提点开始阅读u-boot的启动代码,现将分析过程记录如下 可执行文件及内存映射 我们可以把可执行文件分为2种情况:存放态和运行态 .存放态:可执行文件经过烧到存储介质上(flash或磁盘)的分布,此时可执行文件通常有2部分组成,代码段和数据段, 代码段又分为可执行代码段 (.text)和只读数据段(.rodata),数据段可以分为初始化数据段(.data)和未初始化代码段(.bss),如下…
转载自:http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html 1.1       U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 (2)第二阶段的功能 初始化本阶段使用的硬件设备 检测系统内存映射 将内核从Flash读取到RAM中 为内核设置启动参数 调用内核 1.1.1   …
一.概述 1.函数位置 common/command.c 2.函数功能分析 解析命令的关键环节是如何根据输入命令查找对应命令的信息,从而跳转到对应命令的函数处执行程序.这必然涉及到如何存放命令的详细信息这个问题.因为一种存法,对应一种查法,进而取法.也就是说,实际上是两个问题: (1)命令的详细信息是如何存放的 (2)如何在命令存储区查找是否有与输入命令匹配的命令 就这两个问题,我们来分别分析uboot的设计方法. 二.".u_boot_cmd"环境变量存储区 1.命令详细信息存储结构…
函数功能:提示用户输入命令,并读取命令/****************************************************************************/ /* * Prompt for input and read a line. * If CONFIG_BOOT_RETRY_TIME is defined and retry_time >= 0, * time out when time goes past endtime (timebase time…
split(),preg_split()与explode()函数分析与介 发布时间:2013-06-01 18:32:45   来源:尔玉毕业设计   评论:0 点击:965 split()函数可以实现使用正则表达式来把字符串拆分为较小的块,并作为一个数组返回,如果出现错误,则返回false.同样也可以根据你需要选择要返回多少个小块.array split(string $pattern,string $string [... split()函数可以实现使用正则表达式来把字符串拆分为较小的块,并…
string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把str2指向的字符串拷贝到str1中去函数返回: 返回str1,即指向str1的指针 /** * strcpy - Copy a %NUL terminated string * @dest: Where to copy the string to * @src: Where to copy the…
Linux-0.11内存管理模块是源码中比較难以理解的部分,如今把笔者个人的理解发表 先发Linux-0.11内核内存管理get_free_page()函数分析 有时间再写其它函数或者文件的:) /*  *Author  : DavidLin  *Date    : 2014-11-11pm  *Email   : linpeng1577@163.com or linpeng1577@gmail.com  *world   : the city of SZ, in China  *Ver    …
在上章和上上上章: 28.QT-QPainter介绍 30.QT-渐变之QLinearGradient. QConicalGradient.QRadialGradient 学习了QPainter基础绘制后,接下来,来学习QPainter其它函数之rotate()函数 首先来看看QPainter其它函数 void QPainter::drawPixmap ( int x, int y, int w, int h, const QPixmap & pixmap, int sx, int sy, in…
又是一篇内核函数分析的博文,我个人觉得Windows的内核是最好的老师,当你想实现一个功能之前可以看看Windows内核是怎么做的,说不定就有灵感呢:) 首先看下官方的注释说明: /*++ Routine Description: For a given virtual address this function returns TRUE if no page fault will occur for a read operation on the address, FALSE otherwis…
STM32F10X固件库函数——串口清状态位函数分析 最近在测试串口热插拔功能的时候,意外发现STM32F10X的串口库函数中,清理串口状态位函数稍稍有点不解.下面是改函数的源码: /******************************************************************************* * Function Name  : USART_ClearFlag * Description    : Clears the USARTx's pend…
string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把str2指向的字符串拷贝到str1中去函数返回: 返回str1,即指向str1的指针 /** * strcpy - Copy a %NUL terminated string * @dest: Where to copy the string to * @src: Where to copy the…
本文转载自:http://blog.csdn.net/lw2011cg/article/details/68954707 uboot的GPIO驱动分析--基于全志的A10芯片 转载至:http://blog.sina.com.cn/s/blog_b5020b670101ft49.html (2013-12-28 10:47:31) 转载▼ 标签: it 分类:uboot的驱动分析 uboot的GPIO相当简单,其就是三层结构.分别为: 1.顶层接口层,其只定义了通用的接口,并不负责实现,实现是我…
本文转载自:http://blog.csdn.net/tigerjibo/article/details/12784823 linux C函数之strdup函数分析 一.函数分析 1.函数原型: #include <string.h> char *strdup(const char *s); 2.功能: strdup()函数主要是拷贝字符串s的一个副本,由函数返回值返回,这个副本有自己的内存空间,和s没有关联.strdup函数复制一个字符串,使用完后,要使用delete函数删除在函数中动态申请…
海思uboot启动流程详细分析(一) 海思uboot启动流程详细分析(二) 海思uboot启动流程详细分析(三)  …
一.概述    main_loop()函数做的都是与具体平台无关的工作.主要包括的工作如下: (1)初始化启动次数限制机制 (2)Modem功能 (3)设置软件版本号 (4)启动延迟 (5)读取命令,解析命令 二.具体分析void main_loop (void){#ifndef CFG_HUSH_PARSER static char lastcommand[CFG_CBSIZE] = { 0, }; int len; int rc = 1; int flag;#endif #if define…
initf_dm, static int initf_dm(void){#if defined(CONFIG_DM) && CONFIG_VAL(SYS_MALLOC_F_LEN) //CONFIG_DM和CONFIG_SYS_MALLOC_F_LEN都有定义    int ret; bootstage_start(BOOTSTATE_ID_ACCUM_DM_F, "dm_f"); uint32_t bootstage_start(enum bootstage_id i…
这篇博客主要分析 init_sequence_f 函数指针数组中的initf_bootstage函数: static int initf_bootstage(void){    bool from_spl = IS_ENABLED(CONFIG_SPL_BOOTSTAGE) &&IS_ENABLED(CONFIG_BOOTSTAGE_STASH); //CONFIG_SPL_BOOTSTAGE和CONFIG_BOOTSTAGE_STASH都未定义,from_spl = false    i…
log_init, int log_init(void){    struct log_driver *drv = ll_entry_start(struct log_driver, log_driver); #define ll_entry_start(_type, _list)                    \    ({                                    \             static char start[0] __aligned(4…
1.启动过程特征总结(1)第一阶段为汇编阶段(start.s).第二阶段为C阶段(board.c中的start_armboot 函数)(2)第一阶段在SRAM中.第二阶段在DRAM中(3)第一阶段注重SoC内部.第二阶段注重SoC外部Board内部 2.移植时的注意点(1)x210_sd.h头文件中的宏定义(2)特定硬件的初始化函数位置(譬如网卡) start.s分析 主要功能分析 头文件包含 -28-启动代码的16字节头部占位 -49-()构建异常向量表 -58- ()设置CPU为SVC模式…
u-boot的环境变量用来存储一些经常使用的参数变量,uboot希望将环境变量存储在静态存储器中(如nand nor eeprom mmc). 其中有一些也是大家经常使用,有一些是使用人员自己定义的,更改这些名字会出现错误,下面的表中我们列出了一些常用的环境变量: bootdelay    执行自动启动的等候秒数     baudrate     串口控制台的波特率     netmask     以太网接口的掩码     ethaddr       以太网卡的网卡物理地址     bootfi…
u-boot命令 先贴一个重要结构,位于uboot/include/command.h,这个结构代表每个uboot命令 struct cmd_tbl_s { char     *name;   /* Command Name       */ int      maxargs;    /* maximum number of arguments*/ int      repeatable;/* autorepeat allowed?   */ /* Implementation function…
uboot的源文件众多,学习庞然大物首先找到脊椎--顶层的makfile,逐一破解.但是,uboot的makefile同样是一个庞然大物,所以也要找到它的主线.倘若过分专注部分细节,很难做到把握全局,实际上也不可能很好理解细节. 介于此,笔者已经写了一篇uboot makefile整体解析,可以先从主体上把握makefile.然后,再读这篇makefile强大功能实现的细节,才能做到循序渐进. 说明:uboot顶层makefile的注释机会全部源码都搬上来了,而注释都是黑体加粗以与源码有强烈的区…
一.概述 位置:common/main.c 功能:根据传入参数(命令),在命令存储区(.u_boot_cmd)中查找对应的命令,找到命令并调用对应的函数执行 流程: 二.分析 1.函数说明信息 /**************************************************************************** * returns: * 1 - command executed, repeatable * 0 - command executed but no…
这东西已经写,我们没有时间发布,如今,终于有时间稍微长送记录汇总uboot学习过程.具体了.以后忘了也能够再温习回来嘛有些特殊字符显示得乱掉了 Makefile追踪技巧: 技巧1:能够先从编译目标開始顺藤摸瓜地分析,先不要关注详细细节,着重关注基本的代码结构和编译过程 技巧2:追踪分析时要通过文本或者其它途径临时记录重要的线索 技巧3:将基本的Makefile文件里export出来的变量以及include的文件提取出来,看看include的文件大致是些什么文件,当看到一些来历不明的变量或者操作时…
1. 前言 书接上文(u-boot启动流程分析(二)_平台相关部分),本文介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的.board有关初始化过程.该过程将持续u-boot的整个生命周期,直到main_loop(即传说中的命令行). 注1:由于u-boot后初始化过程,基本上涉及到了所有的软件模块,因此本文不能一一分析,基本原则就是捡看着顺眼的.熟的下手了~. 2. Generic Board u-boot的基本策略,…