socfpga armv7 u-boot学习记录

2024-02-17 07:48
文章标签 学习 记录 boot armv7 socfpga

本文主要是介绍socfpga armv7 u-boot学习记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://blog.csdn.net/helonglong88/article/details/51209876

最近在学习altera的socfpga,写一下关于它的u-boot的学习心得。

关于altera的u-boot与linux的交叉编译环境可以在如下网页上查看:

http://www.alterawiki.com/wiki/Compiling_u-boot_and_Linux_Kernel_for_Cyclone_V_SoC

一、 u-boot编译环境的搭建:

下载编译软件: https://sourcery.mentor.com/GNUToolchain/package10928/public/arm-none-eabi/arm-2012.09-63-arm-none-eabi.bin
安装步骤如下:
1. sudo dpkg-reconfigure -plow dash //此步骤弹出对话框,要选择NO,即使用bash,不是dash
2. ls -lh /bin/sh //用来验证sh指向bash还是dash,应指向bash
3. sudo mkdir -p /usr/local/codebench_2012_09_63
4. sudo chown $USER.users /usr/local/codebench_2012_09_63/
5. echo "export PATH=/usr/local/codebench_2012_09_63/bin:\$PATH" >~/CodeBench_setup_linux.sh
6. /bin/sh arm-2012.09-63-arm-none-eabi.bin
 

 

二、u-boot安装编译下载步骤

从altera官方下载uboot原码 ftp://ftp.altera.com/outgoing/SoC_FPGA/ethernet_3.7/u-bootaltera-2012.10.tgz

1.tar xvzf u-boot-altera-2012.10.tgz  //Please make sure your PATH variable is set in the rightway so that thecompile tool armnone-eabi-gcc is available.
2. cd u-boot-altera-2012.10
3. export CROSS_COMPILE=arm-none-eabi-
4. ./MAKEALL socfpga_cyclone5
 

 

三、u-boot代码学习

3.1 socfpga芯片启动流程简介

socfpga的启动主要分为3步:首先执行片内ROM进行一般初始化,如一些外部载入设备的确定等基本信息,然后从外部存储器将preloader(u-boot-spl.bin)复制到片内RAM执行,执行完毕后将bootloader(u-boot.bin)从外部存储器复制到RAM中,跳转到uboot起始地址运行u-boot,u-boot将内核加载环境准备好后就复制内核映像到RAM中启动内核,u-boot使命完成。uboot编译后自动会生成uboot-spl.bin与u-boot.bin两个二进制文件。

socfpga的片内ROM固化了对nand flash,sd/mmc flash与spi flash的最基本支持。对于sd/mmc flash的支持是受限的,它不支持sd卡中有文件系统,支持两种方式MBR方式与RAW方式。由于固化的驱动不支持文件系统,因此在MBR模式下需要将存储preloader与bootloader的分区类型设置为0xA2,即无文件系统,芯片reset后选择SD/MMC启动方式(根据外部引脚电平设置选择),片内ROM经过简单初始化SD/MMC后,分别在MBR方式与RAW方式下去读取flash。若发现SD卡是MBR格式,则搜索类型为0xA2类型的分区,搜索到后读取该分区首地址开始的前64kB内容,即preloader,将其加载到片内RAM中,地址为0xFFFF0000,跳转到preloader的首地址,转移控制权,即PC指针指向了preloader。

3.2 u-boot代码启动流程简介

3.2.1 u-boot-spl启动流程

u-boot-spl代码与u-boot代码有很多是重合的。u-boot-spl的执行过程是start.s(位于/arch/arm/cpu/armv7/)——>board_init_f(位于/arch/arm/lib/board.c)——>board_init_r(位于/common/spl,完成环境变量、串口、DDR等初始化)——>spl_mmc_load_image(位于/drivers/mmc,这是从sd卡启动,从其他设备启动可以类推,将u-boot.bin加载到loadaddr地址)——>jump_to_image_no_args(位于/common/spl),跳转到u-boot的entypoint,一般与loadaddr相同。

3.2.2 u-boot启动流程

u-boot的启动流程也是从start.s开始,设置向量表等(位于/arch/arm/cpu/armv7/start.s)——>board_init_f(位于/arch/arm/lib/board.c)——>relocate_code(位于/arch/arm/cpu/armv7/start.s)——>board_init_r(位于/arch/arm/lib/board.c)——>main_loop (/common/main.c)——>run_command_list(位于/common/main.c)执行脚本命令“bootcmd”(/include/configs/socfpga_cyclone5.h中定义为"run mmcload; run mmcboot","run mmcload"与"run mmcboot"也定义在socfpga_cyclone5.h),内核开始加载并运行。

这篇关于socfpga armv7 u-boot学习记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、