STB启动过程
术语解释:
RAM常说的内存它是与CPU进行沟通的桥梁计算机中所有程序的运行都是在内存中进行。                                                特点:易失性(断电后数据丢失),速度快。
ROM : 只读存储器(Read-Only Memory 一般在ROM出厂前注入信息,没有特殊情况一般不会更改内                          特点:非易失性,速度慢(相比RAM
Flash Memory:存,闪存是电子可擦除只读存储器(EEPROM)的变种,黄圣依被文强睡图片非易失性。
缓存:数据交换的缓冲区(Cache)硬件要读取数据时,首先从缓存中查需要的数据,
如果到了则直接执行,不到从内存中。缓存的行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。          特点:易失性,速度快。
1. CPU上电之后怎么就启动Bootrom了?比如一个刚生产出来的STB,啥都没有也能启动Bootrom吗?
映像文件怎么打开答:能启动。首先讲能启动的理论支持:
Bootrom是一段引导程序,同时也决定从什么地方去获取运行程序。Bootrom程序本身的数据存在芯片里的eROM里,eROM固化在芯片中。
再说CPU上电之后Bootrom启动的过程:
CPU(系统)上电后,芯片立即执行位于eROM中的Bootrom程序。  类似于给机械手表上好弦,表针就开始走了。
2. eROM里的Bootrom数据是怎么放进去的?
答:出厂的时候借助PC外部硬件和软件工具,将数据烧到eROM里。
3. Send Sync byte:Send的Sync byte是指什么?
答:Sync byte是芯片设计时约定好的字符。这个步骤就是Bootrom通过串口(UART)将Sync byte把发给PC,等待PC响应(比如200ms)。
4. UART是什么东西?  除了UART还有什么其他的跟PC通信的方式?
答:UART是一种通用串行数据总线, 该总线双向通信,可以实现全双工传输和接收
板子与主机间传输文件时,可以使用串口的xmodem/ymodem/zmodem协议;还可以使用网络通过tftp、nfs协议来传输,这时,主机上要开启tftp、nfs服务;还有其他方法,比如USB等
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源
USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯
5. ACK指收到什么应答?
答:PC主机的应答,是否是收到了约定好的字符,如果PC端通过工具传预定好的字符过去那就是ACK Yes.
ACK (Acknowledgement),即确认字符 (命令正确应答),在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。)
6. Uboot 和bootloader什么关系?
答:Bootloader是启动加载的意思,是启动嵌入式系统等启动操作系统的软件的统称。也就是说bootloader是统称,u-boot是其中的一种。就如电脑提到的“操作系统”和“windows xp”的关系。
7. 测试中Symphony平台开机后,按任意键进入uboot> 是属于那个步骤?
答:。
指导老师:韩兆飞,王燕文
主要参考文件:
1. 嵌入式系统启动与加载过程(BootLoader)的原理及实现.pdf
2. blog.csdn/conowen/article/details/7253620
吕一老公3. blog.sina/s/blog_4c66653101000cda.html
4. wwwblogs/zzb-Dream-90Time/p/5459616.html
A. Bootloader的启动方式
(1)启动加载(Boot loading)模式。
上电后,Bootloader从板子上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。产品发布时,Bootloader工作在这种模式下。
(2)下载(Downloading)模式。
在这种模式下,开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机(Host)下载文件(比如内核映像、文件系统映像),将它们直接放在内存运行或是烧入Flash类固态存储设备中。
B. uboot 相关:Uboot用于多种嵌入式CPU的BootLoader程序,支持多种嵌入式操作系统的引导。
UBOOT目录结构
1.Borad        与开发板有关的文件。第一个开发板都以一个子目录出现在当前目录中
2.Common    实现Uboot支持的命令
予柔 3.Cpu        与特定CPU架构相关的代码,支持的CPU对应一个子目录
3.Disk        对磁盘的支持
4.Doc        文档目录
5.Drivers    Uboot支持的设备驱动程序  如各种网卡、串品、USB、支持CFI的Flash
6.Fs        文件系统的支持
7.Iclude    Uboot使用的头文件。该目录下configs目录有与开发板相关的配置头文件        该
目录下的asm目录有与CPU体系结构相关的头文件
8.Net        与网络协议相关的代码    各路协议的实现
9.Tools        生成Uboot的工具,如:mkimage,crc等等

Uboot编译分为两步
1.执行每种board相关的配置    如:make amdk_2420
2.编译生成uboot.bin文件        如:make CROSS_COMPILE=arm-linux-(指定正确路径)
--------------------------------------------------------------------------------
UBOOT基于单板机提供了丰富的命令集操作
UBOOT命令
printenv查看环境变量(相当全局变量?)
setenv 添加、修改、删除环境变量
1.setenv name value
set environment variable 'name' to ''
2.setenv name
delete environment variable 'name'
saveenv保存环境变量
将当前定义的所有变量及其值存入flash中
--------------------------------------------------------------------------------
---------------------文件下载------------------------------------
tftp 通过网络下载文件    使用前,配置好网络
配置网络:1.setenv ethaddr 12:34:56:78:8A:BC
2.setenv ipaddr 192.168.1.1
3.setenv serverip 192.168.1.254  (tftp服务器的地址)
连接下载:tftp 32000000 uImage
把server(IP=环境变量中设置的serverip)服务目录下的uImage通过tftp读入到0x32000000处

md 显示内存区的内容
md[.b,.w,.l]address    如:md.w 1000000


mm[.b,.w,.l]address    如:mm.w 100000
mm 修改内存,地址自动递增    提供了一种互动修改存储器内容的方法,如果没有输入任何值,按回车内容保持不变,输入空格然后按下回车,结束输入

flinfo    查看Flash扇区信息
--------------------------------------------------------------------------------
protect Flash写保护  打开或关闭扇区写保护
用法:
protect off all        关闭所有扇区的写保护
protect on all        打开所有扇区的写保护
protect off start end    关闭从start到end扇区的写保护-----》protect off 0 1ffff(前一扇区减去1?)
protect on start end    打开从start到end扇区的写保护
erase 擦除flash扇区
用法: erase start end    如: erase 30000 1efff
在使用cp命令向Nor型Flash写入数据之前必须先使用erase命令擦除flash

cp 数据拷贝
cp [.b,.w,.l]saddress daddress len
cp提供了一种内存与内存,内存与Flash之间数据拷贝的方法
如:cp.b 31000000 50000 d0000 即是将内存地址0x31000000处的数据(长度为0xd0000)拷贝到地址0x50000处(Flash中)

--------------------------------------------------------------------------------
执行程序
go 执行内存中的二进制代码,一个简单的跳转到指定地址
go ]关于长城的资料
start application at address 'addr',
passing 'arg' as arguments


bootm 执行内存中的二进制代码
bootm []]       要求二进制代码有固定格式的文件头
boot application image stored in memory passing arguments '';
when booting a Linux kernel,'arg' can be the address of an initrd image
bdinfo    显示开发板信息  (可用于启动linux内核)
bdinfo命令将在终端显示诸如内存地址和大小、时钟频率、MAC地址等信息
这些信息在传递给LIUNX内核一些参数时可能会用到

设置自动启动
setenv bootcmd tftp 31000000 uImage \;bootm 31000000
saveenv