[SPRD][uboot]展讯平台启动流程介绍

本文详细介绍了u-boot启动过程中stage1和stage2的区别与作用,包括初始化内存、设置异常向量、复制程序到RAM以及C语言实现的stage2的初始化流程。还提及了后续将深入分析基于LCD的加载流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创地址:http://blog.youkuaiyun.com/dearsq/article/details/51063207
转载请注明,谢谢!

bootloader 分为 stage1 和 stage2 两部分。u-boot 亦然。
stage1 中的多依赖于 CPU 体系结构代码,常放在 stage1 且可用汇编语言来实现。
stage2 中的由 C 语言来实现,不仅易于实现复杂的功能,且有更好的可读性和移植性。

stage1 start.S

u-boot64/arch/arm/cpu/armv7/start.S
(1)定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。
(2)设置异常向量(Exception Vector)。
(3)设置CPU的速度、时钟频率及终端控制寄存器。
(4)初始化内存控制器。
(5)将ROM中的程序复制到RAM中。
(6)初始化堆栈。
(7)转到RAM中执行,该工作可使用指令ldr pc来完成。

最后会 bl _main

Stage2

C语言代码部分
u-boot64/arch/arm/board.c
中的start arm boot是C语言开始的函数也是整个启动代码中C语言的主函数,同时还是整个u-boot (armboot)的主函数,该函数只要完成如下操作:
(1)调用一系列的初始化函数。
(2)初始化Flash设备。
(3)初始化系统内存分配函数。
(4)如果目标系统拥有NAND设备,则初始化NAND设备。
(5)如果目标系统有显示设备,则初始化该类设备。//比如 LCM
(6)初始化相关网络设备,填写IP、MAC地址等。
(7)进去命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

下一篇中以 LCD 为主线,分析其在展讯平台的加载流程。

原创地址:http://blog.youkuaiyun.com/dearsq/article/details/51063207
转载请注明,谢谢!

<think>好的,用户的问题是关于在Android展讯平台上修改开机音乐的音量设置的源码调整方法。我需要结合用户提供的引用资料,找到相关的信息来回答这个问题。 首先,用户提到的两个引用都是关于展讯平台电源键相关功能的修改。引用[1]涉及去掉组合键进入recovery模式,引用[2]则是调整长按电源键的开机时间。虽然这两个引用主要处理的是电源键的行为,但可能相关的代码位置和修改方法对于调整开机音量有参考价值,因为它们都涉及到系统启动过程中的硬件控制部分。 接下来,我需要考虑Android系统开机音乐音量的设置通常位于哪里。一般来说,开机音乐属于系统启动过程中的一部分,可能由bootloader或kernel层控制,或者在Android框架层的音频服务中设置。但根据展讯平台的特性,可能需要在bootloaderuboot部分进行调整,类似引用中提到的cmd_cboot.c和sprd_kp.c文件的位置。 用户的问题需要具体的源码路径和调整方法。根据引用中提到的核心类路径,如bsp\bootloader\u-boot15\common\cmd_cboot.c,可能开机音量的相关设置也在类似的目录中。另外,音频相关的设置可能在音频驱动或硬件抽象层(HAL)中,比如audio_hw.c或audio_policy.conf等文件。 另外,需要确定音量设置是否由某个配置文件控制,例如default_volume_tables.xml或audio_policy_configuration.xml,这些文件通常位于设备的overlay配置中。修改这些文件中的音量参数可能可以调整开机音量。 可能还需要查看系统属性,例如persist.sys.boot.sound.volume,在init.rc或某个启动脚本中设置该属性值,从而影响开机音量。 需要确保用户了解修改这些文件的方法,比如如何找到对应的源码路径,如何编译和烧写修改后的镜像。同时提醒用户注意不同平台可能有差异,建议参考展讯的文档或社区资源。 总结步骤:确定开机音量控制的模块位置,查找相关源码或配置文件,调整音量参数,编译并测试。可能涉及的源码包括音频驱动、uboot命令处理、系统属性设置或音频配置文件。</think>在Android展讯平台中调整开机音乐音量大小,需从音频系统架构和硬件抽象层入手。以下是具体实现路径和方法: ### 一、核心实现路径 1. **音频配置文件** 音量参数定义位于:`device/sprd/xxx/audio/audio_policy.conf` 修改`global_configuration`中`default_output`的`attrib`参数,例如: ```xml global_configuration { attached_output_devices AUDIO_DEVICE_OUT_SPEAKER default_output_device AUDIO_DEVICE_OUT_SPEAKER speaker { sampling_rates 8000|16000|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_SPEAKER flags AUDIO_OUTPUT_FLAG_PRIMARY attrs { attrib "amp_volume=85" // 调整此处数值(0-100) } } } ``` 2. **硬件抽象层(HAL)** 关键代码文件:`hardware/sprd/audio/audio_hw.c` 定位到`adev_set_parameters`函数,修改`AMP_VOLUME`参数: ```c static int adev_set_parameters(struct audio_device *adev, const char *kvpairs) { ... if (!strcmp(key, "amp_volume")) { int vol = atoi(value); // 限制音量范围并写入寄存器 vol = (vol < 0) ? 0 : ((vol > 100) ? 100 : vol); sprd_audio_set_amp_vol(vol); } ... } ``` ### 二、实现步骤 1. **编译前配置** 在`BoardConfig.mk`中启用音频调试模式: ```makefile BOARD_USE_AUDIO_DEBUG := true ``` 2. **修改系统属性** 在`system.prop`中添加持久化属性: ```properties persist.sys.boot.sound.volume=85 ``` 3. **启动脚本集成** 在`init.rc`中添加音量初始化动作: ```rc on early-init setprop audio.sprd.bootvol 85 ``` ### 三、验证方法 1. **ADB调试命令** ```bash adb shell dumpsys audio | grep "Boot volume" ``` 2. **寄存器级验证** 通过`cat /sys/kernel/debug/audio_reg_dump`查看AMP寄存器值是否同步变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值