四、U-boot的使用(四)


下载与烧写

使用U-boot将映像文件烧写到板上的Flash,一般步骤是:
(1)通过网络、串口、U盘、SD卡等方式将文件传输到SDRAM;
(2)使用Nand Flash或Nor Flash相关的读写命令将SDRAM中的数据烧入Flash。
下面是烧写范例:
如果使用 SD卡和U盘形式更新U-boot,那么首先SD卡和U盘中必须有FAT32文件系统,并在里面存放了u-boot.bin 文件。
1) 通过SD卡烧入Nand Flash:

[u-boot@MINI2440]# mmc init

mmc: Probing for SDHC ...

mmc: SD 2.0 or later card found

trying to detect SD Card...

Manufacturer:       0x00, OEM "Product name:       "     ", revision 0.0

Serial number:      7864775

Manufacturing date: 11/2006

CRC:                0x4f, b0 = 1

READ_BL_LEN=6, C_SIZE_MULT=7, C_SIZE=4095

size = 0

SD Card detected RCA: 0x2 type: SD

mmc1 is available

[u-boot@MINI2440]# fatload mmc 1 0x30008000 u-boot.bin

reading u-boot.bin

 

256220 bytes read

[u-boot@MINI2440]# nand erase 0 0x40000

 

NAND erase: device 0 offset 0x0, size 0x40000

Erasing at 0x2000000000004 --   0% complete.

OK

[u-boot@MINI2440]# nand write 0x30008000 0 0x40000

 

NAND write: device 0 offset 0x0, size 0x40000

Writing at 0x2000000020000 -- 100% is complete. 262144 bytes written: OK

2) 通过U盘烧入Nor Flash:

[u-boot@MINI2440]# usb start

(Re)start USB...

USB:   scanning bus for devices... 2 USB Device(s) found

       scanning bus for storage devices... 1 Storage Device(s) found

[u-boot@MINI2440]# usb storage

  Device 0: Vendor: Kingston Rev: PMAP Prod: DT 101 II      

            Type: Removable Hard Disk

            Capacity: 3875.0 MB = 3.7 GB (7936000 x 512)

[u-boot@MINI2440]# usb part 0

print_part of 0

 

Partition Map for USB device 0  --   Partition Type: DOS

 

Partition     Start Sector     Num Sectors     Type

    4                     63         7935937    c

 [u-boot@MINI2440]# fatload usb 0:4 0x30008000 u-boot.bin

reading u-boot.bin

........................

 

256220 bytes read

[u-boot@MINI2440]# protect off all

Un-Protect Flash Bank # 1

[u-boot@MINI2440]# erase 0x0 0x3ffff

Erasing sector  0 ... ok.

Erasing sector  1 ... ok.

Erasing sector  2 ... ok.

Erasing sector  3 ... ok.

Erased 4 sectors

[u-boot@MINI2440]# cp.b 0x30008000 0x0  0x3ffff

Copy to Flash... done


3) 通过TFTP服务烧入Nand Flash:

[u-boot@MINI2440]# tftpboot 30008000 192.168.1.100:u-boot.bin

dm9000 i/o: 0x20000300, id: 0x90000a46

DM9000: running in 16 bit mode

MAC: 08:08:11:18:12:27

operating at 100M full duplex mode

Using dm9000 device

TFTP from server 192.168.1.100; our IP address is 192.168.1.101

Filename 'u-boot.bin'.

Load address: 0x30008000

Loading: T ##################

done

Bytes transferred = 256220 (3e8dc hex)

[u-boot@MINI2440]# nand erase 0 0x40000

NAND erase: device 0 offset 0x0, size 0x40000

Erasing at 0x2000000000004 --   0% complete.

OK

[u-boot@MINI2440]# nand write 0x30008000 0 0x40000

 

NAND write: device 0 offset 0x0, size 0x40000

Writing at 0x2000000020000 -- 100% is complete. 262144 bytes written: OK


4) 通过NFS 服务烧入Nand Flash:
 

[u-boot@MINI2440]# nfs 30008000 192.168.1.100:/home/tekkaman/development/share/u-boot.bin

dm9000 i/o: 0x20000300, id: 0x90000a46

DM9000: running in 16 bit mode

MAC: 08:08:11:18:12:27

operating at 100M full duplex mode

Using dm9000 device

File transfer via NFS from server 192.168.1.100; our IP address is 192.168.1.101

Filename '/home/tekkaman/development/share/u-boot.bin'.

Load address: 0x30008000

Loading: ###################################################

done

Bytes transferred = 256220 (3e8dc hex)

[u-boot@MINI2440]# nand erase 0 0x40000

NAND erase: device 0 offset 0x0, size 0x40000

Erasing at 0x2000000000004 --   0% complete.

OK

[u-boot@MINI2440]# nand write 0x30008000 0 0x40000

 

NAND write: device 0 offset 0x0, size 0x40000

Writing at 0x2000000020000 -- 100% is complete. 262144 bytes written: OK


内核引导

内核的引导步骤如下:
(1)用U-boot的mkimage工具处理内核映像zImage。
(2)通过网络、串口、U盘、SD卡等方式将处理过的内核映像传输到SDRAM的一定位置(一般使用0x30008000)
(3)然后使用”bootm"等内核引导命令来启动内核。

为什么要用U-bootmkimage工具处理内核映像zImage?

因为在用bootm命令引导内核的时候,bootm需要读取一个64字节的文件头,来获取这个内核映象所针对的CPU体系结构、OS、加载到内存中的位置、在内存中入口点的位置以及映象名等等信息。这样bootm才能为OS设置好启动环境,并跳入内核映象的入口点。而mkimage就是添加这个文件头的专用工具。具体的实现请看U-bootbootm的源码和mkimage的源码。

mkimage工具的使用:

 

参数说明:

-A 指定CPU的体系结构,可用值有:alphaarm x86ia64mipsmips64ppc s390shsparc sparc64m68k

-O 指定操作系统类型,可用值有:openbsdnetbsdfreebsd4_4bsdlinuxsvr4esixsolarisirixscodellncrlynxosvxworkspsosqnxu-bootrtemsartos

-T 指定映象类型,可用值有:standalonekernelramdiskmultifirmwarescriptfilesystem

-C 指定映象压缩方式,可用值有:

none 不压缩(一般使用这个,因为zImage是已经被bzip2压缩过的自解压内核)

gzip gzip的压缩方式

bzip2 bzip2的压缩方式

-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage制作映象时,这个参数所指定的地址值来下载

-e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)

-n 指定映象名

-d 指定制作映象的源文件

 

以下是制作内核映像的命令示例:

mkimage -n 'tekkaman' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage zImage.img

 
以下是使用范例:
1) 通过SD卡引导内核:
首先SD卡中必须有FAT32文件系统,并在里面存放了处理过的内核映像文件。

[u-boot@MINI2440]# mmc init                 

mmc: Probing for SDHC ...

mmc: SD 2.0 or later card found

trying to detect SD Card...

Manufacturer:       0x00, OEM "Product name:       "     ", revision 0.0

Serial number:      7864775

Manufacturing date: 11/2006

CRC:                0x4f, b0 = 1

READ_BL_LEN=6, C_SIZE_MULT=7, C_SIZE=4095

size = 0

SD Card detected RCA: 0x2 type: SD

mmc1 is available

[u-boot@MINI2440]# fatload mmc 1 30008000 zImage.img

reading zImage.img

 

2277540 bytes read

[u-boot@MINI2440]# bootm 30008000

## Booting kernel from Legacy Image at 30008000 ...

   Image Name:   tekkaman

   Created:      2010-03-29  12:59:51 UTC

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    2277476 Bytes =  2.2 MB

   Load Address: 30008000

   Entry Point:  30008040

   Verifying Checksum ... OK

   XIP Kernel Image ... OK

OK

 

Starting kernel ...

 

Uncompressing Linux... done, booting the kernel.

Linux version 2.6.33.1 (tekkaman@MAGI-Linux) (gcc version 4.3.2 (crosstool-NG-1.6.1-tekkaman) ) #5 Mon Mar 29 20:58:50 CST 2010

CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177

CPU: VIVT data cache, VIVT instruction cache

Machine: MINI2440

(略)


2) 通过TFTP服务引导内核:

[u-boot@MINI2440]# tftpboot 0x30008000 192.168.1.100:zImage.img

dm9000 i/o: 0x20000300, id: 0x90000a46

DM9000: running in 16 bit mode

MAC: 08:08:11:18:12:27

operating at 100M full duplex mode

Using dm9000 device

TFTP from server 192.168.1.100; our IP address is 192.168.1.101

Filename 'zImage.img'.

Load address: 0x30008000

Loading: T #################################################################

        #################################################################

        ##########################

done

Bytes transferred = 2277540 (22c0a4 hex)

[u-boot@MINI2440]# bootm 30008000

## Booting kernel from Legacy Image at 30008000 ...

   Image Name:   tekkaman

   Created:      2010-03-29  12:59:51 UTC

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值