[讨论]关于UBOOT的初始化函数跳转

内核编译和嵌入式产品的设计与开发
回复
SUPERFIGHT
帖子: 17
注册时间: 2007-11-10 15:51
送出感谢: 0
接收感谢: 0

[讨论]关于UBOOT的初始化函数跳转

#1

帖子 SUPERFIGHT » 2007-12-16 2:03

代码: 全选

 
    typedef int (init_fnc_t) (void);

    init_fnc_t *init_sequence[] = {
    cpu_init,       /* basic cpu dependent setup */
    board_init,     /* basic board dependent setup */
    interrupt_init,     /* set up exceptions */
    env_init,       /* initialize environment */
    init_baudrate,      /* initialze baudrate settings */
    serial_init,        /* serial communications setup */
    console_init_f,     /* stage 1 init of console */
    display_banner,     /* say that we are here */
    dram_init,      /* configure available RAM banks */
    display_dram_config,  

    #if defined(CONFIG_VCMA9)
    checkboard, 
    #endif

    NULL,

    };

代码: 全选

 
    for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
        if ((*init_fnc_ptr)() != 0) {
              hang ();
         }
    }
如何知道跳转到相应的主板和CPU的初始化函数?~ 是不是还有个连接文件之类的用来指明跳转路径? ~

我看不大明白~ 谢谢大家~
上次由 SUPERFIGHT 在 2007-12-16 2:22,总共编辑 2 次。
头像
晶晶守护神
帖子: 705
注册时间: 2007-12-02 14:09
送出感谢: 0
接收感谢: 0

#2

帖子 晶晶守护神 » 2007-12-16 2:08

应该是中断不是函数 。。是固定值 ~~ 我只是推测不做这个不清楚
SUPERFIGHT
帖子: 17
注册时间: 2007-11-10 15:51
送出感谢: 0
接收感谢: 0

#3

帖子 SUPERFIGHT » 2007-12-16 2:18

我的理解是 这是个指针数组 里面的每个指针都是 int (init_fnc_t) (void) 型的~

然后通过不断读取来跳转到初始化函数~

不过怎么跳转的不大清楚~
yuefengleeU
帖子: 1
注册时间: 2006-10-03 20:02
送出感谢: 0
接收感谢: 0

Re: [讨论]关于UBOOT的初始化函数跳转

#4

帖子 yuefengleeU » 2007-12-17 1:26

SUPERFIGHT 写了:

代码: 全选

 
    typedef int (init_fnc_t) (void);

    init_fnc_t *init_sequence[] = {
    cpu_init,       /* basic cpu dependent setup */
    board_init,     /* basic board dependent setup */
    interrupt_init,     /* set up exceptions */
    env_init,       /* initialize environment */
    init_baudrate,      /* initialze baudrate settings */
    serial_init,        /* serial communications setup */
    console_init_f,     /* stage 1 init of console */
    display_banner,     /* say that we are here */
    dram_init,      /* configure available RAM banks */
    display_dram_config,  

    #if defined(CONFIG_VCMA9)
    checkboard, 
    #endif

    NULL,

    };

代码: 全选

 
    for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
        if ((*init_fnc_ptr)() != 0) {
              hang ();
         }
    }
如何知道跳转到相应的主板和CPU的初始化函数?~ 是不是还有个连接文件之类的用来指明跳转路径? ~

我看不大明白~ 谢谢大家~
In my opinion,

代码: 全选

/ *        定义个函数指针类型 init_fnc_t         */
typedef int (init_fnc_t) (void);  

代码: 全选

/*以下定义一个函数指针数组init_sequence[],并用'硬件初始化函数名'来初始化此数组。*/
init_fnc_t *init_sequence[] = {
    cpu_init,       /* basic cpu dependent setup */
    board_init,     /* basic board dependent setup */
    interrupt_init,     /* set up exceptions */
    env_init,       /* initialize environment */
    init_baudrate,      /* initialze baudrate settings */
    serial_init,        /* serial communications setup */
    console_init_f,     /* stage 1 init of console */
    display_banner,     /* say that we are here */
    dram_init,      /* configure available RAM banks */
    display_dram_config,  

    #if defined(CONFIG_VCMA9)
    checkboard, 
    #endif

    NULL,

    };

代码: 全选

 
/*使用循环分别调用’硬件初始化函数‘,  直到  数组init_sequence[] 的最后一个元素NULL 结束 循环。*/
    for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
        if ((*init_fnc_ptr)() != 0) {  /*当非成功返回(0),跳转至hang()*/
              hang ();
         }
    }

That's all.
头像
晶晶守护神
帖子: 705
注册时间: 2007-12-02 14:09
送出感谢: 0
接收感谢: 0

#5

帖子 晶晶守护神 » 2007-12-17 1:48

SUPERFIGHT 写了:我的理解是 这是个指针数组 里面的每个指针都是 int (init_fnc_t) (void) 型的~

然后通过不断读取来跳转到初始化函数~

不过怎么跳转的不大清楚~
爱一个意思就是中断 怎么跳转的可以看一下相关的cpu体系结构~~不半说来都差不多~~
现场保护 中断 恢复现场 返回 ~~
头像
cherry4
帖子: 15
注册时间: 2007-08-01 13:30
送出感谢: 0
接收感谢: 0

#6

帖子 cherry4 » 2008-01-02 13:08

make xxx_config时指定了体系结构和处理器类型,
编译时就去指定的目录下去编译。
wiseman
帖子: 27
注册时间: 2006-11-01 23:59
送出感谢: 0
接收感谢: 0
联系:

Re: [讨论]关于UBOOT的初始化函数跳转

#7

帖子 wiseman » 2008-01-02 22:51

就是一组函数指针,有的需要自己写具体的函数实现,跟中断没有什么关系
fghgje
帖子: 3
注册时间: 2008-10-08 11:12
送出感谢: 0
接收感谢: 0

Re: [讨论]关于UBOOT的初始化函数跳转

#8

帖子 fghgje » 2008-10-21 11:33

wiseman 写了:就是一组函数指针,有的需要自己写具体的函数实现,跟中断没有什么关系
同样观点
jeffzhou
帖子: 1
注册时间: 2008-08-21 2:24
送出感谢: 0
接收感谢: 0

Re: [讨论]关于UBOOT的初始化函数跳转

#9

帖子 jeffzhou » 2009-03-06 22:47

同意四楼的
回复

回到 “内核及嵌入式开发”