最近公司用基于AM335x处理器的开发板(EAC-T335)集成调试环境对Starterware进行编译调试,目前已经在整理文档中...个人觉得还是不错的,所以想跟大家分享下!因为内容有点多,共有四章节,所以会分次发出!!!
前言
以EAC-T335-starterware、EAC-T335为软硬件平台,介绍了LED、UART、LED等裸机程序调试方案。
开发环境: 硬件平台:EAC-T335 软件平台:starterware
第一章节:《Starterware源码简介》
Starterware是一个非操作系统的软件开发包,包含SOC启动代码,DDR内存初始化代码,以及串口,I2C,USB,Ethernet,LCD,中断等驱动。由于没有操作系统复杂平台化功能,所以Starterware是一个结构简单的软件包。非常适合于有高实时性,但无并行性需求的应用领域,目前在工控,HMI,工业缝纫机,PLC等工业方向已经有了很多成功应用。 在此链接下载starterware源码包:http://processors.wiki.ti.com/index.php/StarterWare Starterware源码包的文件夹的布局除了考虑功能模块的划分外,也在板级支持和编译环境两个方面有所考虑,理清了这两点便于理解Starterware的架构,说明如下: A. 按支持不同开发板划分的目录。在driver,example,platform等目录中,子目录evmAM335x, beaglebone和 evmskAM335x,分别针对AM335x的三个开发板GP EVM,BeagleBone和Starter Kit,存放着相应的板级配置代码。 B. 按不同编译环境划分的目录。Starterware把所有编译相关的工程文件放在了build/armv7a目录中,其子目录cgt_ccs, ewarm和gcc,存放分别对应CCS, IAR和GCC编译环境的工程配置文件。 从软件结构来看, Starterware有两部分组成,Bootloader和Application(应用程序),具体介绍如下:
1.1 BootLoader BootLoader被ROMcode加载到片上SRAM中。AM335x启动后,首先运行ROM code,ROM code根据sys_boot(具体可以参考AM335x technical reference manual中的Initialization章节)的配置,从相应的存储器或者外设中得到Bootloader,并加载到片上的SRAM的起始地址处,即0x402F0400。 BootLoader中完成如下工作: A. ARM core的配置,包括中断向量表,Cache,MMU等配置。 B. PRCM模块(具体可以参考AM335xtechnical reference manual中的PRCM章节)的配置,主要是对各PLL,power management等的配置。 C. I2C,PMIC的配置。如果使用了推荐的PMIC,首先对I2C模块配置,然后通过I2C配置PMIC。 D. UART配置,主要用于输出调试信息。 E. DDR配置。 F. 根据配置,会初始化相应的外设或者存储器。 G. 完成了上述配置后,BootLoader会相在应的外设或存储器中读取Application,并加载到DDR中。 上述工作过程和SPL很接近。但在Starterware中, BootLoader没有和u-boot一样复杂的外设工具支持,编译完成后只有34K Bytes,可以放在片上SRAM上,所以只要一级boot loader就可以完成需要的任务了。
1.2 Application Application是 应用的主体,实现应用的逻辑,并调用相应的外设驱动。 Starterware中在example目录。其软件架构如下:
该架构很清晰,上层应用调用下层驱动或者中间件,以实现逻辑对底层模块的调用。这样的结构,在生成可执行文件时,只是链接需要的库文件,使得文件比较小,便于JTAG下载调试,同时,清晰的结构十分便于调试,查找问题所在。 Application中仅对模块的时钟进行配置,而PRCM中相关PLL,基本的电源管理功能等是在BootLoader或者编译环境的脚本中配置的,所以,Application需要在这两者准备好的环境中运行。
1.3 StarterWare 源码文件夹简介
以下列出了StarterWare 软件开发包中所包含的各种驱动文件、例子程序、库文件和其他文件以及对这 些文件相应的描述。 drivers --- 包含所有外设驱动的源文件,可以编译成库的形式进行调用 examples --- 展示外设端口的示例程序
docs --- 相关的文档介绍 grlib --- 包含图形库的源文件和头文件
mmcsdlib --- MMCSD 库的源文件和头文件 nandlib --- Nand Flash 库的源文件和头文件
u***lib --- USB 库的源文件和头文件 host_apps --- 执行以太网例程的源文件 build --- makefile 文件以及链接脚本的存放路径 binary --- 生成的可执行文件存放的路径。
include --- 头文件存放的路径。 platform --- 官方平台相关的源文件
system_config --- 系统配置和初始化相关的源文件 bootloader --- bootloader 的源文件
third_party --- 第三方提供的源码 tools --- 各种工具,如flash 烧写工具、SD 卡的格式化工具等 utils --- 通用源文件
第一章节简介Starterware源码,接下来还会: |