[002-u-boot-Exynos4412] SDK BL2阶段详解

0. 前言

本文以Exynos4412芯片为例,简要介绍了uboot的相关概念,并择重分析了BL2阶段的软件流程。

1. uboot简介

uboot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。

它的作用是进行系统引导(相当于BIOS)。它的目标包含以下两个方面:

  1. 支持多种嵌入式操作系统。如:Linux、NetBSD、VxWorks等。
  2. 支持多种嵌入式芯片架构。如:PowerPC、MIPS、x86、ARM等。

2. uboot硬件抽象

从uboot的设计目标中,我们可以得知uboot是一个跨平台、跨设备的引导程序,因此其对于硬件设备的抽象和封装就显得相当的重要。那么uboot是如何能以简介、高效的方式移植于不同的平台呢?它的解决方案是“board->machine->arch->cpu”框架。

  • ARCH:以指令集架构作为区分标准,对应于不同的CPU系列。
  • CPU:对应于IP Core的概念。
  • Machine:对应于SOC。指一些专业应用的场景,芯片厂商会在芯片上集成DSP、RAM、FLASH等外部器件,这些集成了其它功能的芯片被称为SOC。
  • Board: 对应于需要移植的单板。

3. BL2介绍

BL2是执行在iRAM中的代码,负责初始化CPU Core,系统时钟和DRAM控制器等,并负责将uboot的镜像拷贝到内存中。它可以解决iRAM空间较小的问题(iRAM只有256KB),衔接BL1和uboot阶段。

BL2由工具mkbl2生成,参看脚本sd_fusing.sh可知BL2实际上就是由uboot的前14K代码组成。

4. BL2软件流程

  • 橘黄色部分为BL2和uboot阶段共有的代码。
  • 紫色部分为BL2阶段特有的代码。
  • 蓝色部分为uboot阶段特有的代码。

5. 详细流程

u-boot.lds

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
 . = 0x00000000;
 . = ALIGN(4);
 .text :
 {
  arch/arm/cpu/armv7/start.o (.text)
  board/samsung/smdk4212/libsmdk4212.o (.text)
  arch/arm/cpu/armv7/exynos/libexynos.o (.text)
  *(.text)
 }
  1. 系统的入口函数为_start。入口函数的具体地址由CONFIG_SYS_TEXT_BASE定义。
  2. uboot镜像的前三个二进制文件依次为start.o -> libsmdk4212.o -> libexynos.o,因此我们如果需要在BL2中增加新功能,应该放到这三个二进制文件中。

start

lowlevel_init

Memory map

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: exynos4412-pwm 蜂鸣器开发是指使用Exynos4412芯片的PWM模块来控制蜂鸣器的开发。PWM模块可以产生一定频率和占空比的脉冲信号,通过控制脉冲信号的频率和占空比,可以控制蜂鸣器发出不同的声音。在开发过程中,需要了解Exynos4412芯片的PWM模块的使用方法,以及蜂鸣器的工作原理和控制方式。同时,还需要编写相应的驱动程序和应用程序,实现蜂鸣器的控制。 ### 回答2: exynos4412-pwm蜂鸣器开发是指在使用exynos4412芯片的板子上使用pwm技术来控制蜂鸣器发出声音。该方案的实现需要一些必要的硬件和软件条件。 首先,需要准备一款带有蜂鸣器的arduino或类似的板子,同时还需要exynos4412芯片的板子,以及一些杜邦线和电阻等电子元器件。其次,需要在板子上安装linux操作系统,并配置好相关的驱动程序和开发环境。在这个过程中需要熟悉linux的内核驱动开发和用户空间开发,同时还需要掌握pwm技术和蜂鸣器的原理。 在完成硬件和软件准备后,可以开始进行exynos4412-pwm蜂鸣器开发。首先创建一个设备驱动程序来控制蜂鸣器,并在其中实现pwm技术来生成不同频率的蜂鸣器声音。然后可以在应用程序中调用这个驱动程序来实现具体的功能,比如根据输入的命令生成不同的蜂鸣器声音。 总的来说,exynos4412-pwm蜂鸣器开发需要掌握一定的硬件和软件技能,包括linux开发、驱动程序开发、pwm技术和蜂鸣器原理等。在掌握了这些技能后,可以很方便地在exynos4412芯片的板子上实现蜂鸣器声音的控制和应用。 ### 回答3: exynos4412-pwm是一种嵌入式系统的PWM控制器,它能够对某些外设进行精准控制。而蜂鸣器则是常用的一种简单外设,能够通过PWM信号控制而发出声音。因此,我们可以结合exynos4412-pwm的特性,来进行蜂鸣器的开发。 首先,我们需要确定使用的蜂鸣器的型号和规格,以及它的工作电压和最大工作频率。根据这些参数,我们就可以计算出需要给PWM控制器发送的频率和占空比等参数。在编码实现上,我们可以通过Linux操作系统中的sysfs文件系统对PWM控制器进行设置和控制。具体而言,我们需要修改/sys/devices/platform/pwm-ctrl/目录下的相关文件来设置频率和占空比等属性,以及控制PWM输出信号的开关状态。 此外,在硬件设计上,我们还需要将蜂鸣器接入到exynos4412-pwm控制器的PWM输出信号。需要注意的是,蜂鸣器的极性也需要正确接入,以确保PWM正负半周的输出方向正确。 综上所述,exynos4412-pwm蜂鸣器开发需要我们在硬件和软件两个方面进行开发和实现。在硬件方面,需要正确接入蜂鸣器和PWM控制器,并确保信号方向和极性正确;在软件方面,需要通过Linux操作系统的sysfs文件系统对PWM控制器进行设置和控制。通过这样的方式,我们就可以很方便地实现蜂鸣器的声音输出,以满足一些嵌入式系统的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值