“No os hardware boot TI”的版本间的差异
(→AM335x) |
Zhouyuebiao(讨论 | 贡献) |
||
(未显示1个用户的7个中间版本) | |||
第1行: | 第1行: | ||
+ | {{DISPLAYTITLE:没有操作系统硬件启动(TI)}} | ||
+ | |||
AM335x和AM437x启动流程 | AM335x和AM437x启动流程 | ||
第25行: | 第27行: | ||
|SYSBOOT[11:10] || 对于XIP设备用, 来选择引脚是否复用;对于NAND启动这个值必须设为00b | |SYSBOOT[11:10] || 对于XIP设备用, 来选择引脚是否复用;对于NAND启动这个值必须设为00b | ||
|- | |- | ||
− | |SYSBOOT[9] ||对于nand启动, 用来设置ECC的模式; 对于"Fast External Boot", 这个值必须为0b | + | |SYSBOOT[9] || 对于nand启动, 用来设置ECC的模式; 对于"Fast External Boot", 这个值必须为0b |
|- | |- | ||
− | |SYSBOOT[8] ||对于XIP启动, 用来设置位宽 | + | |SYSBOOT[8] || 对于XIP启动, 用来设置位宽 |
|- | |- | ||
|SYSBOOT[7:6] || 对于网卡启动, 用来设置PHY mode | |SYSBOOT[7:6] || 对于网卡启动, 用来设置PHY mode | ||
|- | |- | ||
− | |SYSBOOT[5] | + | |SYSBOOT[5] || 是否使能CLKOUT1 |
|- | |- | ||
|SYSBOOT[4:0] || 用于选择"boot device list" | |SYSBOOT[4:0] || 用于选择"boot device list" | ||
|} | |} | ||
+ | 对于100ask_am3358, | ||
+ | 启动开关拔向MMC时(MMC就表示SD卡): | ||
+ | SYSBOOT[4:0] = 11011b,boot device list为:XIP, UART0, SPI0, MMC0 | ||
+ | 启动开关拔向Nand时: | ||
+ | SYSBOOT[4:0] = 10011b,boot device list为:Nand, NANDI2C, MMC0, UART0 | ||
+ | ==AM437x== | ||
+ | AM437x: Chapter 5 Initialization | ||
+ | SYSBOOT引脚用来确定"boot device list", | ||
+ | 手册中Table 5-10. SYSBOOT Configuration Pins | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | | SYSBOOT[18] || CLKOUT2 output | ||
+ | |- | ||
+ | | SYSBOOT[17] || 是否使能CLKOUT1 | ||
+ | |- | ||
+ | |SYSBOOT[16] || USB接口的DP、DM引脚是否交换 | ||
+ | |- | ||
+ | |SYSBOOT[15:14] || Crystal Frequency, 确定晶振频率 | ||
+ | |- | ||
+ | |SYSBOOT[13:12] || 00b for normal operation | ||
+ | |- | ||
+ | |SYSBOOT[11] || 对于Fast Nor启动或Nor启动, 用来设置引脚是否复用 | ||
+ | |- | ||
+ | |SYSBOOT[10] || 未使用 | ||
+ | |- | ||
+ | |SYSBOOT[9] || 对于Fast Nor启动或Nor启动, 用来设置是否使能WAIT引脚 | ||
+ | |- | ||
+ | |SYSBOOT[8] || 对于Fast Nor启动, 设为1b | ||
+ | 对于Nor/Nand/NandI2C启动方式, | ||
+ | 用于设置Wait mux option | ||
+ | |- | ||
+ | |SYSBOOT[7] || QSPI位宽选择/Nor引脚复用 | ||
+ | |- | ||
+ | |SYSBOOT[6] || Nor引脚复用,或 | ||
+ | QSPI引脚复用,或 | ||
+ | Nand,NandI2C的ECC | ||
+ | |- | ||
+ | |SYSBOOT[5] || 网卡启动时, 用于设置PHY接口类型 | ||
+ | |- | ||
+ | |SYSBOOT[4:0] || 用于选择"boot device list" | ||
+ | |||
+ | |} | ||
+ | 对于100ask_am4378, | ||
+ | 启动开关拔向MMC时(MMC就表示SD卡), | ||
+ | SYSBOOT[4:0] = 00001b,boot device list为:MMC0, MMC1, USB_MS(USB1), USB_CL(USB0) | ||
+ | 启动开关拔向QSPI时, | ||
+ | SYSBOOT[4:0] = 01010b,boot device list为:QSPI | ||
=启动流程= | =启动流程= | ||
+ | AM335x和AM437x都分为两个系列:HS(High Sercue)和GP(General Purpose)。我们只介绍GP系列。 | ||
+ | AM335x和AM437x的启动方式分为:Memory Boot(内存启动)和Peripheral Boot(外围设备启动)。Memory Boot指从Flash、SD卡等存储设备启动,Peripheral Boot指从串口、网口等外围设备启动。我们只介绍Memory Boot。 | ||
+ | Memory Boot又分为XIP设备启动、非XIP设备启动。我们常用的Nand Flash、eMMC Flash、SD卡、SPI Flash都是非XIP设备。 | ||
+ | 启动流程: | ||
+ | a. 通过SYSBOOT选择”boot device list” | ||
+ | b. ROM程序先执行必要的初始化,再根据”boot device list”,逐个尝试从其中的设备启动 | ||
+ | b.1 ROM程序启动流程 | ||
+ | b.2 boot流程 | ||
+ | b.3 Memory boot流程 | ||
+ | 问题: | ||
+ | Q1. ROM程序如何判断一个设备(Flash、SD卡上)的程序是有效的?从什么地址开始读? | ||
+ | A1. ROM程序会去读扇区,如果扇区的前4字节不是0x00000000或0xFFFFFFFF,它就认为这是一个有效的“boot image”。 | ||
+ | 那么,去读哪些扇区呢? | ||
+ | 另外,对于SD卡,它除了支持“Raw Mode”外,还支持“FAT Mode”。 | ||
+ | 所谓”Raw Mode”就是映象文件作为原始数据,直接烧写在设备上; | ||
+ | 而“FAT Mode”就是,先把SD卡分区、格式化,再把映象文件“作为一个文件”保存进SD卡上,这个文件的名字必须是“MLO”。换句话说,你要把MLO这个文件保存到SD卡上。 | ||
+ | |||
+ | Q2. ROM程序把程序复制到哪里去?复制多长? | ||
+ | A2. 烧写在SPI、Nand上的映象文件格式如下,前面8字节被称为GP image Header: | ||
+ | ROM程序会根据GP Header复制bin文件到内存。 | ||
+ | |||
+ | 特别地,对于SD卡,如果是Raw Mode,映象文件格式如下(我们不关心Raw Mode,不关心TOC结构): | ||
+ | 对于SD卡,如果是FAT Mode,它的MLO文件的格式也是“GP image Header” + “image” |
2020年1月7日 (二) 10:39的最新版本
AM335x和AM437x启动流程
对于所有的单板,拿到时要先了解这些事情:
- 1.Memory Map: 内存、Flash
- 2.启动方式的选择: 启动设备能选择/不能选择? 选择一个/选择多个(list)
- 3.启动流程: ROM程序初始化硬件、从启动设备中读程序到内存中、运行
MemoryMap
启动方式的选择
AM335x
AM335x: Chapter 26 Initialization SYSBOOT引脚用来确定"boot device list", 手册中Table 26-7. SYSBOOT Configuration Pins
SYSBOOT[15:14] | Crystal Frequency, 确定晶振频率 |
SYSBOOT[13:12] | 00b for normal operation |
SYSBOOT[11:10] | 对于XIP设备用, 来选择引脚是否复用;对于NAND启动这个值必须设为00b |
SYSBOOT[9] | 对于nand启动, 用来设置ECC的模式; 对于"Fast External Boot", 这个值必须为0b |
SYSBOOT[8] | 对于XIP启动, 用来设置位宽 |
SYSBOOT[7:6] | 对于网卡启动, 用来设置PHY mode |
SYSBOOT[5] | 是否使能CLKOUT1 |
SYSBOOT[4:0] | 用于选择"boot device list" |
对于100ask_am3358, 启动开关拔向MMC时(MMC就表示SD卡):
SYSBOOT[4:0] = 11011b,boot device list为:XIP, UART0, SPI0, MMC0
启动开关拔向Nand时:
SYSBOOT[4:0] = 10011b,boot device list为:Nand, NANDI2C, MMC0, UART0
AM437x
AM437x: Chapter 5 Initialization SYSBOOT引脚用来确定"boot device list", 手册中Table 5-10. SYSBOOT Configuration Pins
SYSBOOT[18] | CLKOUT2 output |
SYSBOOT[17] | 是否使能CLKOUT1 |
SYSBOOT[16] | USB接口的DP、DM引脚是否交换 |
SYSBOOT[15:14] | Crystal Frequency, 确定晶振频率 |
SYSBOOT[13:12] | 00b for normal operation |
SYSBOOT[11] | 对于Fast Nor启动或Nor启动, 用来设置引脚是否复用 |
SYSBOOT[10] | 未使用 |
SYSBOOT[9] | 对于Fast Nor启动或Nor启动, 用来设置是否使能WAIT引脚 |
SYSBOOT[8] | 对于Fast Nor启动, 设为1b
对于Nor/Nand/NandI2C启动方式, 用于设置Wait mux option |
SYSBOOT[7] | QSPI位宽选择/Nor引脚复用 |
SYSBOOT[6] | Nor引脚复用,或
QSPI引脚复用,或 Nand,NandI2C的ECC |
SYSBOOT[5] | 网卡启动时, 用于设置PHY接口类型 |
SYSBOOT[4:0] | 用于选择"boot device list" |
对于100ask_am4378, 启动开关拔向MMC时(MMC就表示SD卡), SYSBOOT[4:0] = 00001b,boot device list为:MMC0, MMC1, USB_MS(USB1), USB_CL(USB0) 启动开关拔向QSPI时, SYSBOOT[4:0] = 01010b,boot device list为:QSPI
启动流程
AM335x和AM437x都分为两个系列:HS(High Sercue)和GP(General Purpose)。我们只介绍GP系列。 AM335x和AM437x的启动方式分为:Memory Boot(内存启动)和Peripheral Boot(外围设备启动)。Memory Boot指从Flash、SD卡等存储设备启动,Peripheral Boot指从串口、网口等外围设备启动。我们只介绍Memory Boot。 Memory Boot又分为XIP设备启动、非XIP设备启动。我们常用的Nand Flash、eMMC Flash、SD卡、SPI Flash都是非XIP设备。 启动流程: a. 通过SYSBOOT选择”boot device list” b. ROM程序先执行必要的初始化,再根据”boot device list”,逐个尝试从其中的设备启动 b.1 ROM程序启动流程 b.2 boot流程 b.3 Memory boot流程 问题: Q1. ROM程序如何判断一个设备(Flash、SD卡上)的程序是有效的?从什么地址开始读? A1. ROM程序会去读扇区,如果扇区的前4字节不是0x00000000或0xFFFFFFFF,它就认为这是一个有效的“boot image”。 那么,去读哪些扇区呢? 另外,对于SD卡,它除了支持“Raw Mode”外,还支持“FAT Mode”。 所谓”Raw Mode”就是映象文件作为原始数据,直接烧写在设备上; 而“FAT Mode”就是,先把SD卡分区、格式化,再把映象文件“作为一个文件”保存进SD卡上,这个文件的名字必须是“MLO”。换句话说,你要把MLO这个文件保存到SD卡上。
Q2. ROM程序把程序复制到哪里去?复制多长? A2. 烧写在SPI、Nand上的映象文件格式如下,前面8字节被称为GP image Header: ROM程序会根据GP Header复制bin文件到内存。
特别地,对于SD卡,如果是Raw Mode,映象文件格式如下(我们不关心Raw Mode,不关心TOC结构): 对于SD卡,如果是FAT Mode,它的MLO文件的格式也是“GP image Header” + “image”