Bootloader引导过程分析

⭐发布日期:2024年10月03日 | 来源:东南网

⭐作者:冯艳 责任编辑:Admin

⭐阅读量:828 评论:1人

【最新澳门6合开彩结果查询直播】

【澳门结果+结果2023】

【澳门2o21年结果】 【205期澳门传真尾数出炉结果查询】 【澳门六开彩+结果查询194期】 【奥彩今期开什么号】 【澳门天天彩结果风险分析查询】 【澳冂正版资料免费大全2023】 【澳门结果直播】 【澳彩图库资料图片2024最新版本】
【最新二四六天下彩天空彩票大全查询】 【澳门六开彩结果241期】 【2021年澳彩结果记录】 【新澳门历史结果近期十五期万能钥匙】 【天天彩票app官网下载安装手机版】 【天空彩澳门彩49cpn0m】 【澳门天天彩是正规公司吗还是私人开的店】 【澳门49彩结果历史记录2022】

一、Bootloader基本架构

大致可以分为三部分:

1. 固件部分。这部分即为stage1,为加电或复位后CPU执行的最开始的指令地址。它不会被加载进RAM,只初始化硬件,以及将mini_loader加载进内存。

2. mini_loader部分。这部份主要任务是将CFE加载进内存,并且解压。

3. CFE部分。这部分进行硬件环境初始化,并进行image的更新,以及加载kernel。

Bootloader在flash上的布局如下图所示:

二、 Broadcom Bootloader引导过程代码分析

1) 加载mini_loader

Broadcom Bootloader在系统加电以后从src\shared\boot.S中的第一行代码开始执行。boot.S文件的主要任务有:

1.判断芯片类型

2.设置时钟

3.缓存的初始化

4.把Mini-loader加载进RAM

5.C跳转,即进入Mini-loader中执行c_main函数

2) 执行mini_loader

文件:src\shared\load.c

函数名:c_main()

{

...系统初始化…

lode();//加载CFE,并解压缩;

……..

((void(*)(void))LOADADDR)();//跳转到CFE中执行cfe_main()

}

3) 执行CFE

文件:src\cfe\cfe\main\cfe_main.c

函数名:cfe_main()

主要功能:完成硬件的初始化,包括ether driver,PCI,console等外部设备的初始化,image更新,引导kernel等。

void cfe_main(int a,int b)

{

……

board_console_init(); //硬件初始化,包括LED的初始化

cfe_say_hello(); //CFE开始信息

board_device_init(); //设备初始化,包括ether driver等设备

cfe_startup_info(); //输出环境信息,例如存储空间使用情况

cfe_init_ui(); //UI接口的初始化,包括console命令行初始化

board_final_init(); //硬件部分初始化

cfe_autostart(); //image更新,加载kernel

cfe_command_loop(); //如果上一步按了Ctrl-c,则在此循环执行

……

}

4) ether driver

ether driver相关结构体

struct cfe_driver_s {

char *drv_description;// Description of device for SHOW commands

char *drv_bootname; // Devices name prefix for open() */

int drv_class;

const cfe_devdisp_t *drv_dispatch;

void (*drv_probe)(struct cfe_driver_s *drv,unsigned long probe_a,unsigned long probe_b, void *probe_ptr);

} cfe_driver_t;

5) image更新与kernel引导

一个完整的image可能的格式

struct trx_header {

uint32 magic; /* "HDR0" */

uint32 len; /* Length of file including header */

uint32 crc32; /* 32-bit CRC from flag_version to end of file */

uint32 flag_version; /* 0:15 flags, 16:31 version */

uint32 offsets[TRX_MAX_OFFSET]; /* Offsets of partitions from start of header */

};

Kernel的引导过程

三、 Broadcom cfe下操作

# 在 CFE commands获取帮助

CFE>help

#在CFE >状态下修改网络配置

设定MAC地址:

CFE>macprog 97405 1027 8 //芯片类型,序列号,修正版本号

或者

CFE>macprog2 00-10-18-04-22-03

你可以输入CFE>help macprog 或者CFE>help macprog2 获得更多信息

设定IP地址:

自动获取时输入:

CFE>ifconfig eth0 –auto

手动设置时:

CFE>ifconfig eth0 down

CFE>ifconfig eth0 192.168.10.64

CFE>ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

CFE>ifconfig eth0 up

# 在 CFE >状态下通过TFTP存储kernel到flash

CFE>ifconfig eth0 –auto 或者 CFE>ifconfig eth0 192.168.10.64

CFE>flash -noheader 192.168.10.115:vmlinuz-7405b0 flash0.kernel

# 在 CFE >状态下通过TFTP更新到新的cfe程序

CFE>ifconfig eth0 –auto 或者 CFE>ifconfig eth0 192.168.10.64

CFE>flash –noheader 192.168.10.115:cfe_le_400.bin flash0.cfe

# 在 CFE >状态下通过TFTP导入initrd kernel

CFE>ifconfig eth0 –auto 或者 CFE>ifconfig eth0 192.168.10.64

CFE>boot –z –elf 192.168.10.115:vmlinuz-initrd-7405b0

显示Login:时输入root

# 在 CFE >状态下通过TFTP导入常规kernel (可以理解为是initrd kernel 的精简版本)

CFE>ifconfig eth0 –auto 或者 CFE>ifconfig eth0 192.168.10.64

CFE>boot -z -elf 192.168.10.115:vmlinuz-7405b0 rootfstype=jffs2 root=/dev/mtdblock0 ro

# 在 CFE >状态下从flash分区中导入压缩的内核

CFE>boot -z –elf flash0.kernel: rootfstype=jffs2 root=/dev/mtdblock0 ro

显示Login:时输入root

# 在 CFE >状态下设置为开机自动从flash分区中导入内核

CFE>setenv -p STARTUP “boot -z -elf flash0.kernel: rootfstype=jffs2 root=/dev/mtdblock0 ro”

# 取消自动从flash分区中导入内核(重启板子后会停止在CFE >状态)

CFE>unsetenv STARTUP

# 在 CFE >状态下从磁盘加载跟文件系统

CFE>boot –z –elf 192.168.10.115:vmlinuz-initrd-7405b0

stbutil 192.168.10.115:

Select option 3 // Install root filesystem on harddisk

CFE>ifconfig eth0 -auto

CFE>boot -z -elf 192.168.10.115:vmlinuz-7405b0 rootfstype=ext2 root=/dev/hda1 rw

# 在 CFE >状态下显示FLASH中的可用分区(也可以显示其他设备分区)

CFE>show devices

# 在 CFE >状态下存储文件到一个可用的FALSH分区

CFE>flash -noheader IPADDRESS:filename FLASHPARTITON (可用的FLASHPARTITON 可以通过show devices 命令查看)

# 在 CFE >状态下进入vmlinuz-initrd内核后,通过TFTP安装根文件系统到flash

CFE>boot –z –elf 192.168.10.115:vmlinuz-initrd-7405b0

stbutil 192.168.10.115:

Select option 2 // Install RW JFFS2 rootfs on flash with no special setup 注意此操作执行后,会擦除flash!

# 安装应用软件到平台

如果是只读的文件系统,线先设置为读写权限(平台端):

mount -o remount,rw/

复制编译生成的应用软件包到NFS根目录(linux服务器端):

cd /home/ray/bcm/BSEAV/bin/refsw-20100514.97405-linux-uclibc.bin.tgz /opt/nfsroot/

挂载linux服务器的目录(平台端):

mount 192.168.10.115:/opt/nfsroot /mnt/nfs

然后建立brutus目录,解压/保存软件包,安装,执行(平台端):

mkdir /home/brutus

cd /home/brutus

tar zxvf /mnt/nfs/refsw-20100514.97405-linux-uclibc.bin.tgz

settop install

settop brutus 或者 nexus brutus

【2024澳门天天开好彩大全免费】 【新澳天天开奖资料大全最新】
【2024年天天开好彩资料】 【新澳天天开奖资料大全最新54期】
【2024澳门天天开好彩大全53期】 【澳门天天开彩期期精准】
【2024全年资料免费大全】 【新澳天天开奖资料大全】
【澳门内部最精准免费资料】 【2024澳门天天开好彩大全】
【2024年新奥门天天开彩免费资料】 【新澳2024今晚开奖资料】 【澳门天天彩历史记录2023年302期】
上一条新闻 下一条新闻

推荐文章

发表评论

李团

2秒前:168.

IP:70.92.6.*

罗曼雅

9秒前:c函数名:cfe_main()主要功能:完成硬件的初始化,包括ether driver,PCI,console等外部设备的初始化,image更新,引导kernel等。

IP:77.71.1.*

刘震

2秒前:缓存的初始化4.

IP:47.12.4.*

东南网APP介绍

APP图标

2024澳门现场结果查询APP名:东南网

版本:V8.92.781

更新时间:2024-10-02 21:17

246期澳门彩结果今天查询表图片大全这是一个功能强大的澳门直播现场直播视频回放管APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:168.

澳门天天结果2021年APP介绍

APP图标

澳门六开彩结果2020全年记录APP名:东南网

版本:V1.21.777

更新时间:2024-10-02 14:15

2024澳门记录历史查询表格大全这是一个功能强大的澳门天天开彩结果1230期APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:C跳转,即进入Mini-loader中执行c_main函数2) 执行mini_loader文件:src\shared\load.

澳门天天彩结果查询表今天直播APP介绍

APP图标

正版资料免费大全2020下载安装APP名:东南网

版本:V2.11.633

更新时间:2024-10-02 23:24

六盒宝典2024年最新版澳门这是一个功能强大的澳门2020结果+记录精选资APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:void cfe_main(int a,int b){……board_console_init(); //硬件初始化,包括LED的初始化cfe_say_hello(); //CFE开始信息board_device_init(); //设备初始化,包括ether driver等设备cfe_startup_info(); //输出环境信息,例如存储空间使用情况cfe_init_ui(); //UI接口的初始化,包括console命令行初始化board_final_init(); //硬件部分初始化cfe_autostart(); //image更新,加载kernelcfe_command_loop(); //如果上一步按了Ctrl-c,则在此循环执行……}4) ether driverether driver相关结构体struct cfe_driver_s {char *drv_description;// Description of device for SHOW commandschar *drv_bootname; // Devices name prefix for open() */int drv_class;const cfe_devdisp_t *drv_dispatch;void (*drv_probe)(struct cfe_driver_s *drv,unsigned long probe_a,unsigned long probe_b, void *probe_ptr);} cfe_driver_t;5) image更新与kernel引导一个完整的image可能的格式struct trx_header {uint32 magic; /* "HDR0" */uint32 len; /* Length of file including header */uint32 crc32; /* 32-bit CRC from flag_version to end of file */uint32 flag_version; /* 0:15 flags, 16:31 version */uint32 offsets[TRX_MAX_OFFSET]; /* Offsets of partitions from start of header */};Kernel的引导过程三、 Broadcom cfe下操作# 在 CFE commands获取帮助CFE>help#在CFE >状态下修改网络配置设定MAC地址:CFE>macprog 97405 1027 8 //芯片类型,序列号,修正版本号或者CFE>macprog2 00-10-18-04-22-03你可以输入CFE>help macprog 或者CFE>help macprog2 获得更多信息设定IP地址:自动获取时输入:CFE>ifconfig eth0 –auto手动设置时:CFE>ifconfig eth0 downCFE>ifconfig eth0 192.

澳门六开彩+结果查询171APP介绍

APP图标

新澳特料2024澳门结果查询直播APP名:东南网

版本:V6.14.223

更新时间:2024-10-02 15:13

澳门天天彩是骗局吗知乎记录下载这是一个功能强大的澳门最快最准结果246APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:# 安装应用软件到平台如果是只读的文件系统,线先设置为读写权限(平台端):mount -o remount,rw/复制编译生成的应用软件包到NFS根目录(linux服务器端):cd /home/ray/bcm/BSEAV/bin/refsw-20100514.

澳门码今晚上结果125期APP介绍

APP图标

澳门天天开彩历史记录查询最新消息APP名:东南网

版本:V7.60.709

更新时间:2024-10-02 14:24

2024澳门现场结果是什么呢这是一个功能强大的澳彩资料库360图片下载大全APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:168.

澳门今晚结果2023年风险APP介绍

APP图标

昨天的澳门结果APP名:东南网

版本:V8.43.904

更新时间:2024-10-02 14:21

澳门现场直播结果查询官网下载这是一个功能强大的新澳门六开彩结果历史查询APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:97405-linux-uclibc.

特区总站免费资料一百度APP介绍

APP图标

最新澳门6合开彩结果查询直播回放APP名:东南网

版本:V4.76.336

更新时间:2024-10-02 19:22

澳门天天彩200期结果查询直播这是一个功能强大的2023年澳门今晚号码直播8APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:168.

澳门天天彩2023记录表图片大全APP介绍

APP图标

2O21澳门结果十记录APP名:东南网

版本:V3.14.605

更新时间:2024-10-02 13:19

澳门2020结果这是一个功能强大的澳门直播十结果查询APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:2.