lv12 开发板启动过程

2023-12-11 08:44
文章标签 启动 过程 开发板 lv12

本文主要是介绍lv12 开发板启动过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 开发板启动过程 

1.1 回顾芯片手册第三章内存映射

 

对于arm来说,不是给它多大的内存都能读。寻址空间(地址空间)读写范围是有限的,寻址空间的大小与地址总线宽度有关,如32位,地址空间4G(2^32)。4412的CPU在工作的时需要读写内存,还需要控制硬件,读取寄存器,所以需要规范这4G的空间。

上电PC为0,0地址执行了IROM,内部三星公司写入了BL0(即boot load 0)

IRAM是内部的内存

SFR是特殊功能寄存器

最后3G 外扩内存(我们开发板上的内存1G,地址是0x40000000-0x80000000)

EMMC断电不丢失,安装系统是安装在EMMC中,上电后再把linux从EMMC加载到SD卡

1.2 linux启动流程

上电流程主要包括以下几个步骤:

  1. BL0(固件)进行基本软硬件初始化(这段代码先对基本的软硬件环境时钟等)。
  2. BL0读取拨码开关状态,确定启动方式。
  3. 如果拨码开关指定SD卡启动,BL0会将SD卡中的程序复制到内存中,外部存储器CPU无法运行。
  4. 然后再将对应存储器中的uboot搬移到内存,然后跳转到uboot运行(Universal Bootloader),进行基本软硬件初始化。
  5. UBOOT将EMMC中存储的Linux系统复制到内存中(前提是已经将Linux安装到了EMMC)。
  6. 将设备树二进制文件(Device Tree Blob,DTB)从EMMC加载到内存中,Linux系统需要用到它来配置硬件。
  7. 将根文件系统(Root File System,rootfs)从EMMC加载到内存中,Linux运行时需要访问其中的文件。
  8. Linux系统开始运行,当系统启动完成后,Linux再从内存中(或网络)挂载根文件系统。

这样,系统就完成了从上电到Linux系统正常运行的过程。在此过程中,通过读取拨码开关状态和选择不同的存储设备,可以决定系统的启动方式,例如从SD卡或EMMC中启动,并将对应的程序和文件加载到内存中。

2 系统移植步骤

知道了启动过程,那么大致需要完成系统移植的步骤也就清楚了

  • uboot移植
  • linux内核移植(包含设备树)
  • 根文件系统移植

3 练习

简述开发板启动过程?略

这篇关于lv12 开发板启动过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/480107

相关文章

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于