编写基于DM3730 ARM-A8内核测试程序(裸机版)1---X-LOADER启动分析
以前的博文已经说明,基于DM3730单独开发DSP程序是不可行的,因为ARM是主控制器,DSP是协控制器。
因此尝试开发基于ARM的裸机测试程序,只完成对硬件外围电路的基本测试。创龙的开发板无此功能,本人按以下步骤进行尝试:
先了解X-LOADER、U-BOOT、DVSDK的代码,看是否可以借鉴;
因为以前没有认真研究过嵌入式Linux,此次设计也毫无头绪,上来就盯着DVSDK研究,导致花费了1天时间,看的云里雾里;后来在想,是不是在开机启动时,就已经加载了部分DM3730硬件功能,因此可以从开机启动开始研究,转而研究X-LOADER。
DM3730自带了SD卡启动程序,上电按照X-LOADER----U-BOOT-----KERNAL这个顺序执行,详细可参考
https://blog.csdn.net/houyizi337825770/article/details/7978397
参考创龙的开发板,对其X-LOADER文件进行研究,执行文件流程如下:
(1)因为X-LOADER使用命令
make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm omap3evm_config编译
对应makefile中
omap3evm_config : unconfig
@./mkconfig $(@:_config=) arm omap3 omap3evm
也就是omap3和omap3evm文件夹生效
对于X-LOADER执行流程可参考
https://blog.csdn.net/xiaojiaohuazi/article/details/8709522
从文件cpu/omap3/start.s开始执行,其中有如下语句:
cpu_init_crit:
..................................
bl lowlevel_init /* go setup pll,mux,memory */
lowlevel_init在文件board/omap3evm/platform.s中,有如下语句:
.globl lowlevel_init
lowlevel_init:
ldr sp, SRAM_STACK
str ip, [sp] /* stash old link register */
mov ip, lr /* save link reg across call */
bl s_init /* go setup pll,mux,memory */
s_init在文件board/omap3evm/omap3evm.c中,如下:
void s_init(void)
{
watchdog_init();
#ifdef CONFIG_3430_AS_3410
/* setup the scalability control register for
* 3430 to work in 3410 mode
*/
__raw_writel(0x5ABF,CONTROL_SCALABLE_OMAP_OCP);
#endif
try_unlock_memory();
set_muxconf_regs();
delay(100);
prcm_init();
per_clocks_enable();
}
其中set_muxconf_regs()函数很重要,确认了启动加载的外围接口功能。
执行C语言函数为lib/board.c的start_armboot()
在此函数中,跳转到u-boot无返回执行。
编写基于DM3730 ARM-A8内核测试程序(裸机版)1---X-LOADER启动分析相关推荐
- 基于腾讯x5内核的精简版浏览器
X5Browser github地址 https://github.com/iamlocky/X5Browser 基于腾讯x5内核的精简版浏览器 适用于需要单独的页面显示web内容,官方webview ...
- ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择
参考:Linux之ARM(IMX6U)裸机之I.MX6ULL启动方式详解 作者:一只青木呀 发布时间: 2020-08-09 16:32:07 网址:https://blog.csdn.net/wei ...
- 编写基于DM3730 ARM-A8内核测试程序(裸机版)3---X-LOADER/U-BOOT下载
开发板自带的SD启动卡可实现自己更改后X-LOADER/U-BOOT的下载与运行.但是在工控环境,一般不会外置SD卡,故尝试别的烧写方式. 在X-LOADER说明文档中有介绍X-LOADER的少些方法 ...
- Linux设备驱动程序架构分析之I2C架构(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 内核版本:3.10.1 I2C体系架构的硬件实体包括两部分: 硬件I2C Adapter:硬件I2C Adapter ...
- arm裸机与嵌入式linux驱动开发,如何编写基于ARM的裸机程序和基于Linux的驱动程序?...
在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序. ARM架构:Cortex-A9Linux内核:3.14 在讲述ADC之前, ...
- ARM(IMX6U)裸机汇编LED驱动实验——驱动编写、编译链接起始地址、烧写bin文件到SD卡中并运行
参考:Linux之ARM(IMX6U)裸机汇编LED驱动实验–驱动编写 作者:一只青木呀 发布时间: 2020-08-07 09:13:48 网址:https://blog.csdn.net/weix ...
- 基于Arm Cortex内核的32位MCU和MPU(M0、M0+、M3、M4、M33、M7、A7)
基于Arm Cortex内核的32位MCU和MPU ST意法半导体产品矩阵 M3典型--STM32 F1系列Cortex-M3基础型MCU M4典型--带有DSP和FPU指令的STM32F4系列高性能 ...
- 基于Fujitsu FM3 32-bit ARM Cortex-M3 内核的MCU 开发
基于Fujitsu FM3 32-bit ARM Cortex-M3 内核的MCU 开发(第一篇) 前言:目前,由于本人毕业设计要求是基于富士通单片机MB9BF121J的四轴飞行器控制,所以就开 ...
- 嵌入式系统原理及应用《基于ARM Cortex-M3 内核的STM32F103系列微控制器》思维导图
嵌入式系统原理及应用 <基于ARM Cortex-M3 内核的STM32F103系列微控制器>课程思维导图 目录 第一章 嵌入式系统概论 第二章 嵌入式系统开发 第三章 ARM Corte ...
最新文章
- python中cursor属性_Python – AttributeError:’NoneType’对象没有属性’cursor’
- (三) Angular2项目框架搭建心得
- linux vnc 屏幕大小,Linux系统下vnc 的配置和使用方法
- 用ZipInputStream和ZipOutputStream实现文件及文件夹的压缩解压
- python爬取csdn排名积分等信息
- ios推送通知之ios推送证书的申请和使用配置
- C# 房贷计算器(等本降息)
- Java 10的10个新特性,将彻底改变你写代码的方式
- python中4j什么意思_Python学习:4.数据类型以及运算符详解
- 实战CSS:静态百度首页实现
- 如何安装pandas包
- 怎么把文件夹名称提取到Excel?
- 人工智能帮你文字转为Logo | 机器学习
- php ini 分号,当分号(;)被包含在值中时,用PHP解析INI文件
- 无法获得 VMCI 驱动程序的版本: 句柄无效解决
- 程序员也要学英语——英语构词法
- 人工智能究竟离我们有多远?
- 如果相关不意味着因果,那么什么意味着? ——大数据时代的“因果关系”思辨
- 大数据三种主流架构(Lambda、Kappa、IOTA)
- 思科路由器PPOE client+NAT解决地址回流问题测试