![]() |
|
||||||||||||||
| | 网站首页 | 综合电子 | 51单片机 | AVR单片机 | ARM专栏 | MSP430 | 网上商城 | PSOC | 下载中心 | 公司事项 | DSP专栏 | | ||
|
||
|
|||||
| eCos在基于ARM7硬件平台上的应用(下) | |||||
| eCos在基于ARM7硬件平台上的应用(下) | |||||
作者:未知 ARM专栏来源:本站原创 点击数: 更新时间:2008-1-1 ![]() |
|||||
|
③ 修改内存布局文件,使configtool能够正确定位程序在系统存储器中的位置。eCos提供3种不同的运行方式,即ROM方式、RAM方式、ROMRAM方式。每种模式都有两个相应的布局文件,如RAM方式的mlt_ARM_at91_eb55_ram.ldi和mlt_ARM_at91_eb55_ram.h。*.ldi和常见的ARM开发环境ADS中scattered链接方式下的*.scf文件的作用类似,即用来对不同段分别指定不同的链接地址。在*.ldi中需要修改MEMORY和SECTIONS两部分。对于代码在RAM中运行的内核及应用程序,需要根据系统RAM的实际情况修改内存布局文件中相关参数的值。本系统具有1 MB的RAM,但有一半用来存放测量数据,根据系统实际的硬件情况,其起始地址为0x02000000,大小为0x80000,所以这个内存块定义为ram: ORIGIN=0x02000000, LENGTH=0x80000。处理器内部集成了8 KB SRAM,其起始地址为0,大小为0x2000,所以这个内存块定义为sram: ORIGIN=0x00000000,LENGTH=0x2000。这样系统的MEMORY部分就由名为ram和sram的两个内存块构成。系统比较重要的两处SECTIONS部分的修改为SECTION_fixed_vectors (sram, 0x20, LMA_EQ_VMA) 和SECTION_rom_vectors (ram, 0x02008000, LMA_EQ_VMA),第一处表示fixed_vectors段分配在从0x20开始的sram中,且LMA_EQ_VMA指定其加载地址等于虚拟地址。由于RedBoot运行时需要占用从0x02000000开始的一定空间的RAM,所以第二处使程序代码从0x02008000开始的ram中运行。*.ldi文件修改完毕后需要相应地修改*.h文件中的宏,如#define CYGMEM_REGION_ram (0x02000000)。 ④ 在组件仓库ecos.db中为以关键字target添加名为Flow55的新目标平台。在这个目标平台中还必须用关键字packages包括ARM7体系结构层包和AT 3.2 内核的配置 移植完成以后,一个最基本的目标平台就产生了。在configtool中可以看到Templates菜单的硬件平台列表中新增了Flow55目标平台模版,以default方式打开这个模版。各个软件包的CDL脚本中都给出了默认的配置值,有些值需要根据具体的应用要求重新配置。本系统一些重要的配置情况如下: ① 由于系统线程数量较少(小于10),所以选择效率更高的位图调度器Bitmap scheduler,并将线程数numbers of priority levels限定为16,以提高任务切换的速度。当点击位图调度器的单选按钮时,configtool会检测到一个配置冲突。由于时间片轮转是默认使能的,而时间片轮转仅仅对应于多级队列调度器,所以出现配置冲突。Configtool会给出一个推荐的解决冲突的方法,即禁止时间片轮转,按照这个推荐的解决方法可以安全地解决这个冲突。这个地方可以充分体现出eCos强大的可配置性。 ② 由于配合RedBoot一起使用,所以内核配置为RAM启动方式。这样,系统上电后程序将由RedBoot复制到RAM中运行,以提高速度。 ③ 系统的晶振频率为16 MHz,经PLL倍频后为32 MHz,所以需将Clock speed配置为32000000;RTC是系统的时钟节拍发生器,本系统的时钟节拍时间选为20 ms,所以也需要对RTC相关项进行配置。具体参数为Realtime clock numerator配置为2000000000,Realtime clock denominator配置为100,Realtime clock period配置为20000。 其余的配置选项使用默认的配置值即可。完成配置工作后,对内核进行编译可以产生内核库文件和链接脚本以及相关头文件。这些生成的文件再同应用程序一起编译、链接,生成最终的可执行映像文件。
图4 应用软件结构 3.3 基于eCos操作系统的应用软件的编写 eCos是一个单进程多线程的操作系统,多个线程在宏观上可以认为是并发运行的,而且各线程之间耦合低,便于软件的编写和维护。针对这一特点,本系统的软件结构如图4所示。 本系统主要有两种程序运行方式,分别称为方式A和方式B。方式A中,硬件中断产生后,相应的ISR(Interrupt Service Routine)程序运行,由于ISR中是禁止中断的,所以在ISR中只进行最简单的操作,ISR退出后内核调用相应的DSR(Deferred Service Routine)。DSR中中断是使能的,所以可以进行一些稍复杂的处理,如简单的数据运算、内核调用(发送信号量和邮箱等)。在得到相应的信号量或消息邮箱后,相应的线程进入就绪态被内核调度运行。本系统中对键盘的处理就是基于这种方式——按键产生硬件中断、ISR执行,接着在DSR中进行相应的运算得到具体的键值后以消息邮箱的方式通知并唤醒键盘处理线程,键盘处理线程在完成任务后进入休眠直到再次有按键发生而被唤醒。方式B中,各线程只是周期性地被内核调度运行,如测量数据显示线程,在显示一次数据后调用延时函数进入休眠,直到延时完毕后再次进入就绪态被内核调用。 根据测控系统的实际情况,具体的线程编写如下: 方式A为流量计算线程、温度测量线程、键盘处理线程、USB通信处理线程。方式B为测量数据显示和曲线绘制线程、流量控制线程、初始标定线程。 4 结论 经过实践,本系统运行稳定,实时性能良好。由于eCos的强大可配置性使得系统的软硬件可维护性强,在进行硬件改动或应用要求改动后可方便地进行升级。 参考文献[1] Massa A J. 嵌入式可配置实时操作系统eCos软件开发[M]. 颜若麟,等译. 北京:北京航空航天大学出版社,2006. 钱问发(硕士研究生),主要研究方向为工业测控网络与嵌入式系统应用; |
|||||
| ARM专栏录入:dycxin 责任编辑:dycxin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| eCos在基于ARM7硬件平台上的… 由AT91 M55800A构成的简易数… 基于ARM7的指纹考勤机设计 基于ARM7的新型嵌入式心电监… 基于ARM7+μC/OSII的数据采集… 一种基于ARM7的无线局域网系… ARM处理器的选型原则 选择ARM CPU的操作系统(3) 选择ARM CPU的操作系统(2) 选择ARM CPU的操作系统(1) |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | | 设为首页 | 购买方法 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 联系我们 | 网络答疑| | | |||
|