以前的博文已经说明,基于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启动分析相关推荐

  1. 基于腾讯x5内核的精简版浏览器

    X5Browser github地址 https://github.com/iamlocky/X5Browser 基于腾讯x5内核的精简版浏览器 适用于需要单独的页面显示web内容,官方webview ...

  2. ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择

    参考:Linux之ARM(IMX6U)裸机之I.MX6ULL启动方式详解 作者:一只青木呀 发布时间: 2020-08-09 16:32:07 网址:https://blog.csdn.net/wei ...

  3. 编写基于DM3730 ARM-A8内核测试程序(裸机版)3---X-LOADER/U-BOOT下载

    开发板自带的SD启动卡可实现自己更改后X-LOADER/U-BOOT的下载与运行.但是在工控环境,一般不会外置SD卡,故尝试别的烧写方式. 在X-LOADER说明文档中有介绍X-LOADER的少些方法 ...

  4. Linux设备驱动程序架构分析之I2C架构(基于3.10.1内核)

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 内核版本:3.10.1 I2C体系架构的硬件实体包括两部分: 硬件I2C Adapter:硬件I2C Adapter ...

  5. arm裸机与嵌入式linux驱动开发,如何编写基于ARM的裸机程序和基于Linux的驱动程序?...

    在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序. ARM架构:Cortex-A9Linux内核:3.14 在讲述ADC之前, ...

  6. ARM(IMX6U)裸机汇编LED驱动实验——驱动编写、编译链接起始地址、烧写bin文件到SD卡中并运行

    参考:Linux之ARM(IMX6U)裸机汇编LED驱动实验–驱动编写 作者:一只青木呀 发布时间: 2020-08-07 09:13:48 网址:https://blog.csdn.net/weix ...

  7. 基于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系列高性能 ...

  8. 基于Fujitsu FM3 32-bit ARM Cortex-M3 内核的MCU 开发

     基于Fujitsu FM3 32-bit ARM Cortex-M3 内核的MCU 开发(第一篇) 前言:目前,由于本人毕业设计要求是基于富士通单片机MB9BF121J的四轴飞行器控制,所以就开 ...

  9. 嵌入式系统原理及应用《基于ARM Cortex-M3 内核的STM32F103系列微控制器》思维导图

    嵌入式系统原理及应用 <基于ARM Cortex-M3 内核的STM32F103系列微控制器>课程思维导图 目录 第一章 嵌入式系统概论 第二章 嵌入式系统开发 第三章 ARM Corte ...

最新文章

  1. python中cursor属性_Python – AttributeError:’NoneType’对象没有属性’cursor’
  2. (三) Angular2项目框架搭建心得
  3. linux vnc 屏幕大小,Linux系统下vnc 的配置和使用方法
  4. 用ZipInputStream和ZipOutputStream实现文件及文件夹的压缩解压
  5. python爬取csdn排名积分等信息
  6. ios推送通知之ios推送证书的申请和使用配置
  7. C# 房贷计算器(等本降息)
  8. Java 10的10个新特性,将彻底改变你写代码的方式
  9. python中4j什么意思_Python学习:4.数据类型以及运算符详解
  10. 实战CSS:静态百度首页实现
  11. 如何安装pandas包
  12. 怎么把文件夹名称提取到Excel?
  13. 人工智能帮你文字转为Logo | 机器学习
  14. php ini 分号,当分号(;)被包含在值中时,用PHP解析INI文件
  15. 无法获得 VMCI 驱动程序的版本: 句柄无效解决
  16. 程序员也要学英语——英语构词法
  17. 人工智能究竟离我们有多远?
  18. 如果相关不意味着因果,那么什么意味着? ——大数据时代的“因果关系”思辨
  19. 大数据三种主流架构(Lambda、Kappa、IOTA)
  20. 思科路由器PPOE client+NAT解决地址回流问题测试

热门文章

  1. Vue的router配置
  2. GSM预付费业务的研究与实现(转)
  3. 从入门到精通!安卓手机如何安装java软件
  4. InnoDB之redo log写入和恢复
  5. 人工智能兴起 “终结者”真会出现吗
  6. <Linux常用开发工具使用(yum、vim、gcc/g++、gdb、make/Makefile等)>——《Linux》
  7. 隐身专家 v2.81 绿色
  8. Autosar OS经典笔记整理:公众号(cloud2sunshine)
  9. 子网划分和子网掩码的计算方法
  10. 思科拓扑----小型网络架构练习