匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“No os hardware boot”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
没有操作系统硬件启动
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
该页面已被保护以防止编辑和其他操作。
您可以查看与复制此页面的源代码。
=第01节_XIP的概念= who runs programe? 我们常说运行程序,程序通过cpu运行,保存在存储设备上。 存储设备有多种,如下分类 <syntaxhighlight lang="c" > |----hard dsik |----sd card |----Flash |----Nor Flash |----Nand FLash </syntaxhighlight> 无论是哪一种存储设备,内部的抽象结构是一样的,如下图所示 图1 ------------- 比如,第0个存储空间存放的0x31这个数据,第一个存储空间存放的0x30这个数据 如何访问存储空间,通过访问每行左上角的编号去访问里面的数据,称这些编号为地址,而编号对应的数值,称为数据 如何访问存储设备(就是为了读写某一个存储空间)?<br> #发出地址 #读数据(从设备里面范围给CPU)/写数据(从CPU发给存储设备) ------------- 地址和数据如何传输?<br> 如果地址和数据直接来自CPU,或者说数据直接发给CPU,那么这个存储设备,我们就称为XIP device(cpu可以直接访问存储设备) --------------------图2 按照正常的执行流程,cpu和存储设备之间还会有内存控制器 U盘的内部存储结构 如何访问U盘的内部存储结构 U盘对外只有5条线,cpu不可能直接发数据给u盘的,中间需要引入一个USB控制器 cpu可以直接访问到usb控制器,通过usb控制器发送符合U盘传输协议的信息,间接的访问U盘数据。所以usb设备不是XIP device 如何识别一个存储设备是否是XIP设备? 1.CPU可以直接寻址的设备。 2.看是否有分开的地址总线和数据总线。 CPU通过SPI控制器才能得到spiflash中的数据,所以,spi flash不是XIP device ------------图3 13.09 对于SD card也是类似的,CPU需要通过SD/MMC Controller才能把地址发给SD card,也必须通过SD/MMC Controller得到里面的数据并执行,所以SDcard不是XIP device =第02节_嵌入式系统硬件组成= 一句话引出整个嵌入式系统: 支持多种设备启动 问题引出: a. 系统支持SPI FLASH启动. 这意味着可以运行SPI FLASH上的代码 the system can boot from spi flash, so it needs to run code on spi flash b. 但是SPI FLASH不是XIP设备, cpu无法直接执行里面的代码 but the spi flash isn't xip device, cpu can't run code on spi flash directly 问题来了, CPU如何执行SPI FLASH上的代码? 一上电, CPU执行的第1个程序、第1条指令在哪里? how can the cpu run the code on spi flash ? where is the first code run by cpu, when power up ? 答案: a. ARM板子支持多种启动方式:XIP设备启动、非XIP设备启动等等。 比如:Nor Flash、SD卡、SPI Flash, 甚至支持UART、USB、网卡启动。 这些设备中,很多都不是XIP设备。 问:既然CPU无法直接运行非XIP设备的代码,为何可以从非XIP设备启动? 答:上电后,CPU运行的第1条指令、第1个程序,位于片内ROM中,它是XIP设备。 这个程序会执行必要的初始化, 比如设置时钟、设置内存; 再从"非XIP设备"中把程序读到内存; 最后启动这上程序。 猜测: ARM芯片内部有很多部件,这是一个片上系统(System on chip), 比如有: cpu rom ram memory controller --- ddr sd/mmc controller --- sd card spi controller --- spi flash usb controller --- usb storage device uart controller ...... interrtupt controller b. 跟PC的类比 CPU ---- 单独的芯片 启动设备 ---- BIOS芯片 DDR ---- 单独的可拔插式模块 存储设备 ---- SATA硬盘,可拔插 usb controller ... =第03节_SOC框架= =第04节_具体单板的启动流程=
该页面使用的模板:
模板:Space
(
查看源代码
)(受保护)
返回至
没有操作系统硬件启动
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志