笔记整理—uboot启动过程(5)BL2板级初始化

news2024/11/15 15:50:10

         上一章说到了uboot在BL2阶段大概都要干什么,也说到了为了实现这些要先进行内存排布,实现了这些后便可实现BL2部分的板级初始化。首先先来看一下init_fnc_ptr函数指针。

for(init_fnc_ptr=init_sequence;*init_fnc_ptr;++init_fnc_ptr)
    {
        if((*init_fnc_ptr)()!0){
            hang();
        }
}

        init_fnc_ptr是一个二重(函数)指针。

        init_sequence是一个函数指针数组,存了许多个函数指针类型为init_fnc_t类型特征为返回值int类型,输入void。

        init_fnc_ptr 二重指针,能指向函数指针数组。

        结束于(*init_fnc_t)开始于init_sequence[]第一个函数地址,没有函数就结束,每for一次,指针指向下一个函数。在init_sequence的最后一个值为NULL,所以其结束于NULL。

        通过去用指针指向函数名,去一个个执行函数(遍历),遍历数组的方法有两种:1.下标法。2.在最后放一个flag(NULL)像是字符串‘\0’。

        由于数组中全是函数指针所以以NULL结束,这样做的好处是不用去人为的统计数组元素。

        所调用的if((*init_fnc_ptr)()!0)的所有函数,正确的时候都会返回值为0,执行不正确时返回-1,如果有执行失败则hang()挂起。

        init_fnc_t是负责进行板级初始化的init函数。其中包括cpu_init以及bord_init。cpu_init(),cpu初始化在start.S中已经结束了,所以一般为空函数。bord_init()是相关开发板的板级初始化相关函数,对于X210而言,将DECLARE_GLOBAL_DATA_PTR进行声明,这是一个宏,是为了使用相关的gd。在bord_init()中初始化网卡CONFIG_DRIVER_DM9000,这是一个DM9000的配置宏,dm9000_pre_init()不是驱动,而是gpio等硬件的相关。

        bord_init()中初始化DDR,第二次初始化的DDR与lowlevel_init中不同,在当时DDR进行的硬件初始化,现在互补性的是软件层次的初始化,如属性、地址设置等让uboot知道有几个DDR、地址起始等,使用宏去进行这些软件级别的初始化。

        PC上的BIOS能去自动读取硬件信息是因为有标准化的规定。而X210是使用PHYS_SDRAM_1宏进行初始化(是一个标准宏,可以改值,但别改名)。

        bi_boot_params(不是DDR)是用于相关DDR传参到kernel的,其中信息包括:

CONFIG_NR_DRAM_BANKS    几片内存
SDRAM_BANK_SIZE         内存大小
PHYS_SDRAM_1            1号基地址
PHY_SDRAM_1_SIZE        1号片大小
PHYS_SDRAM_2            2号基地址
PHY_SDRAM_2_SIZE        2号片大小
等等

        bd->bi_arch_number就是开发板机器码,用处就是uboot与内核进行适配,因为嵌入式的设备有着高度的定制化所以内核不会与别的开发板正常适配。所以需要开发板、uboot、kernel进行机器码对比,对于x210设备的机器码为2456,这个数字非法,但是能用。

        bd->bi_boot_params是uboot给kernel传递了一些内存地址与信息(其实就是放某些地址)0x30000100<-PHYS_SDRAM_1+0x100。

        uboot传给kernel的三个参数就放在r0、r1、r2中。

        interrupt_init看似像是与中断相关,但实际上在x210中是用于初始化timer4定时器。

        在PWM设置中,Timer0~3都可以输出PWM波形,但Timer4没有引脚输出,只有TCNTB没TCMPB且No PIN。可见Timer4就不是用于输出PWM波形的这个计算器是用作计时的。

        TCONB定时次数(每一次时间由时钟决定),定时时间/基准时间=TCONB,用TCNT0去观察TCONB有没有减到0,当到0时TCONT0可观察到。

        Timer4没有中断,所以cpu要论调方法进行查看TCONT0。uboot中定时,就是通过Timer4做定时,不可做别的事,如bootdelay(其处理回车就是轮询实现的)。

        Timer4在初始化中定时10ms:get_PCLK();得到66Mhz/(16*100)=TCONTB然后自动重装载就可以了,但是开始的时候还是要进行一次手动装载。

        这一章先写到这,主要说了一下BL2的板级初始化,和Timer4用来干什么的。下一章说一下env_init与环境变量初始化相关的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2073782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文带你了解html标签

一、文档结构标签 <html>&#xff1a;网页的根标签 &#xff0c;嵌套包含所有标签。 <head>&#xff1a;头标签&#xff0c;包含文档的元数据用于编写网页的修饰内容&#xff0c;附加信息。 <body>&#xff1a;身体标签&#xff0c;用于编写展示内容&…

精益工程师资格证书:2024年CLMP报名指南

随着全球对精益管理的需求日益增长&#xff0c;精益管理专业人士资格认证&#xff08;CLMP&#xff09;正成为越来越多精益工程师和精益管理人员提升职业竞争力的首选。作为一种注重管理而非生产的认证&#xff0c;CLMP不仅适用于制造业的专业人士&#xff0c;也吸引了各行业的…

Qt之窗口

目录 Qt窗口简介: 菜单栏 ⼯具栏 状态栏 浮动窗⼝ 对话框 Qt内置对话框 1.消息对话框QMessageBox 2.颜⾊对话框QColorDialog 3.⽂件对话框QFileDialog 4.字体对话框QFontDialog 5.输⼊对话框QInputDialog 总结 接下来的日子会顺顺利利&#xff0c;万事胜…

Android Studio:模拟器页面闪烁,手机模拟器输入画面闪烁 android studio闪屏

主要解决&#xff0c;android studio 启动app测试&#xff0c;输入数据时&#xff0c;手机画面就会闪烁&#xff0c;闪屏 1. 如图所示&#xff0c;依照顺序找到Edit &#xff0c;并点击Edit 2. 找到Graphics 选择为SoftWare &#xff0c;并保存修改即可 3. 如果此处不能选择S…

奇安信渗透测试岗位三面经验分享

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

算法的学习笔记—二叉搜索树与双向链表(牛客JZ36)

&#x1f600;前言 在数据结构的学习过程中&#xff0c;二叉搜索树&#xff08;Binary Search Tree, BST&#xff09;是一个常见的主题。它不仅具有排序的特性&#xff0c;还为各类算法的实现提供了基础。然而&#xff0c;在某些特定的应用场景中&#xff0c;我们可能需要将二叉…

Web安全:SQL注入实战测试.(扫描 + 测试)

Web安全&#xff1a;SQL注入实战测试. SQL注入就是 有些恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容中&#xff0c;同时程序的本身对用户输入的内容过于相信&#xff0c;没有对用户插入的SQL语句进行任何的过滤&#xff0c;从而直接被SQL语句直接被服务端执行&am…

Docker绑定挂载使用手册

目录 目标 官方文档 绑定挂挂载&#xff08;Bind mounts&#xff09; 简介 基本创建方法 控制读写权限&#xff08;默认有读写权限&#xff09; 为什么绑定挂载不适合做数据库持久化 为什么绑定挂载更适合做热部署 临时挂载&#xff08;tmpfs mounts&#xff09; 简介…

CSS中的元素布局与定位详细说明

1、前言 在CSS开发中&#xff0c;很重要的一个工作就是根据UI设计稿&#xff0c;进行元素的布局与定位&#xff0c;使得元素&#xff08;比如某一段文本、按钮、图片等&#xff09;显示在页面正确的位置。本文就元素的布局与定位方面&#xff0c;做一些讲解和说明。 2、元素的…

PHP易支付系统,支付系统源码下载,已测试,带多个支付接口

易支付系统源码&#xff0c;已测试&#xff0c;功能齐全&#xff0c;带有多支付接口&#xff0c;站内有对应的视频教程&#xff0c;详细教程 搭建出来的网站前端和后台还是比较美观的 PHP全开源易支付系统源码&#xff0c;一键安装版 搭建环境&#xff1a;PHP 5.4 以上 推荐7…

数学基础(九)

一、相关分析 相关分析&#xff1a; 衡量事物之间或称变量之间线性相关的强弱&#xff0c;并适当的统计指标表示出来的过程 相关系数&#xff1a; 连续变量的相关分析&#xff1a; 连续变量即数据变量&#xff0c;它的取值之间可以比较大小&#xff0c;可以用加减法计算出差…

Google Colab快速使用

Google Colab快速使用 1. 引言2. Jupyter笔记本的创建3. 上传代码和数据集4. Colab常规指令 1. 引言 Google Colab是谷歌提供的免费Jupyter&#xff0c;很类似于Linux系统这些在终端界面操纵的感觉&#xff0c;不需要深度学习环境配置就可以使用&#xff0c;完全基于云端运行。…

【celery-2】python-Django发送邮件-短信-钉钉通知

一 Python发送邮件 1.1 使用SMTP模块发送邮件 import smtplib from email.mime.text import MIMEText from email.header import Headermsg_from xxxqq.com # 发送方邮箱 passwd xxx # 填入发送方邮箱的授权码(填入自己的授权码&#xff0c;相当于邮箱密码) msg_to [xxx…

两种方式实现图片标记

效果图 第一种&#xff1a;通过动态添加dom元素实现标记 代码如下 // index.tsx import React from "react"; import "./index.less";export default function index() {const parentRef React.useRef<any>(null);const ulRef React.useRef<a…

网站技术分析必备插件Wappalyzer Chrome介绍

引言 在日常的开发过程中&#xff0c;开发者们经常会对访问的某些网站使用了哪些技术感到好奇。无论是网页的前端框架、后台的编程语言&#xff0c;还是数据库的类型&#xff0c;这些信息对于开发者优化自己的网站或者了解行业趋势都非常有用。然而&#xff0c;直接从浏览器获…

LLM开发之自动编码系统实战开发(一)-- MiniRBAC 集成

文章目录 前言&#x1f387;MiniRBAC部署启动日志修改更换Mysql创建数据库数据库连接修改查询 Next ✨ 前言&#x1f387; 首先这个系统呢&#xff0c;俺们目前是还没有做好的&#xff0c;但是相关的技术积累我们是完全没有问题的。当然这个系统其实将是我们这个项目&#xff…

Android 消息机制Handler完全解析(一)

提到Handler相信即使你是刚入行的android开发也会用过&#xff0c;可能你会觉得很简单&#xff0c;但是Handler中包含的内容真的不是你理解的那么简单&#xff0c;可能有些工作3-5年的同学也没有对其有很深入的了解。但Handler在android中的地位非常重要&#xff0c;并且几乎是…

图解Kafka | 5张图讲透Kafka 消费者交付语义

Kafka 消费者交付语义指的是 Kafka 消费者在处理消息时如何保证消息的可靠性和一致性。这涉及到消息是否被丢失、重复处理或者按顺序消费。 Kafka消费者交付语义有三种&#xff0c;即&#xff1a; 最多一次至少一次精确一次 当消费者组/消费者从 Kafka 消费数据时&#xff0…

昂科烧录器支持Airoha达发科技的蓝牙音频芯片AB1568

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Airoha达发科技的蓝牙音频芯片AB1568已经被昂科的通用烧录平台AP8000所支持。 AB1568是一款获得蓝牙5.3和LE音频认证的单芯片解决方案&#xff0c;包含一个ARM Cortex-M4F应用…

香蕉梨:自然的甜蜜宝藏

在水果的缤纷世界里&#xff0c;有一种独特的存在&#xff0c;它融合了香蕉的软糯与梨子的清甜&#xff0c;那便是令人惊艳的香蕉梨。 食家巷香蕉梨&#xff0c;外形圆润可爱&#xff0c;色泽金黄中带着一抹清新的嫩绿&#xff0c;宛如大自然精心雕琢的艺术品。当你拿起一个香蕉…