天嵌 ARM开发社区

 找回密码
 注册
查看: 14227|回复: 33

七夕礼物—μCOSII在TQ2440成功移植(KEIL MDK平台)

[复制链接]
snrtibi 发表于 2012-8-18 17:42:22 | 显示全部楼层 |阅读模式
本帖最后由 snrtibi 于 2012-8-26 02:04 编辑

题外话:
         TQ2440的板子在10年5月份,也是就读研半年后和舍友一起买的,一方面是出于兴趣,另一方面是打算自己以后的工作方向应该就是搞嵌入式这块。刚买了的时候还抽时间学了学,后来老师那边项目忙,而且是搞理论的和嵌入式没啥关系,所以就玩了玩裸奔,编了几个简单的程序就收起来了。转眼已毕业工作几个月了,因为现在的工作就是搞这方向的,用的是cortex-A8的arm,在做一个项目。我进去的时候linux移植工作已经做完了,所以我负责linux应用层的程序开发。以及FPGA的niosII软核下的μCOS程序开发。为了更好的了解这两个系统,多学点知识,于是我把TQ2440又拿出来了,开始在上面跑系统。TQ资料里面的μCOS还是基于ADS1.2开发的,ADS1.2我就在刚买板子的时候装过,后来因为对J-LINK仿真器支持太差,果断换成KEIL MDK平台了。在读研阶段接了个arm7的项目也是在KEIL MDK下开发的,用的是软件自带的TCP库,开发以太网通讯相当方便。所以我认为开发arm7,arm9的IDE最好选KEIL MDK平台。对于刚开始学习arm的同学建议装ADS1.2跑几个测试程序后尽快转到MDK,熟悉MDK的操作。有点事先出去了,源码晚上送上,同时继续和想从事arm开发的同学聊下学习的经验。

回来了,继续。关于arm的选择,arm9的TQ2440还是不错的,无论是裸奔还是移植操作系统,可学习的知识相当多。另外,参考资料和例程也十分丰富,特别资料大部分是中文的,学习起来比较容易。不像我们现在用的TI的达芬奇系列,参考资料就只有官方的英文手册,遇到问题网上很难找到解决办法。好在嵌入式的知识都是相通的,只是复杂的程度不同,所以掌握了某个型号,再学习其他型号上手会比较快。
linux下的程序开发我现在用的是eclipse,不用关心makefile文件的制作,调试程序也很方便。有从事linux程序开发的同学可以试试。
裸奔开发平台推荐KEIL MDK。好处就不多说了,完美支持J-LINK仿真,功能也是相当强大,特别是对LPC2xxx系列的arm7的支持,在上面进行工程开发相当轻松。而且自带RTX实时操作系统,和μCOS类似,优势是支持时间片任务切换,任务的优先级可以相同。因此我打算将μCOS移植到MDK平台上。

具体的移植过程有时间写个教程,功能应该没有问题,对于任务切换,中断的处理方式可能不是最优,借鉴了网上移植μCOS到arm平台的一些思想,同时也添加了些自己的想法。为了便于调试看到效果,工程文件除了μCOS内核外,还添加了一个串口打印信息的驱动和4个LED灯的驱动,还有一个nandflash驱动支持从nandflash启动。启动代码是我参考ADS工程下的启动代码然后对MDK自带的启动代码进行了修改,支持nandflash,norflash,j-link仿真三种启动方式(j-link调试时,如果要调试中断,开关必须要切换到nandflash模式)

关于在μCOS下中断的使用方法:在S3C2440.s文件下最末尾是一个中断向量表,在写一个ISR函数之后(不用加关键字__irq),比如uart0_isr()(中断源是UART0),在 IMPORT  Timer0_ISR  下面加一行IMPORT  uart0_isr,然后将 ISR_UART0_Handle   B     ISR_UART0_Handle      B后面的ISR_UART0_Handle替换成uart0_isr即可。记得在中断函数里要清除中断。
本来打算做中断嵌套的,由于s3c2440有子中断源,需要清除子中断,另外还要屏蔽优先级小于等于当前优先级的中断源,对优先级的判断也是个复杂的过程,所以就没做。以后有时间再看看,有兴趣的同学可以试试,接口预留着,主要是处理子中断源和中断优先级的问题。

先说这么多吧,这是我第一次发分享帖,移植纯属个人兴趣,以后有使用心得再和大家分享。为了缩小工程文件体积,我将目标文件都删除了,使用前先编译一下工程,J-LINK都配置好了,不用再设置就可以在线仿真。
我用的keil MDK是最新的V4.53,建议用4.20以上版本。

抱歉,感谢long0702同学提出的问题,我试了下,在norflash下是正常的,程序烧到nandflash有问题,也就是启动代码的nandflash拷贝程序那块还有些问题,μCOS移植是没问题的,启动代码是很久以前移植的,忽视了nand启动的测试,现在正在解决中,下个版本会修复的。

nand问题已修正,1.1版本已更正nandflash启动的问题。太累了,明天还要加班,感谢大家的关注和指正,愿和大家分享keil MDK的使用心得,有时间会出一些参考教程的,敬请期待。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 4 +33 收起 理由
cz1129 + 5 赞一个!
fangjun0221 + 10 很给力!
sun_001 + 10 很给力!
billy1618 + 8 很给力!

查看全部评分

Rick.w 发表于 2012-8-18 19:52:11 | 显示全部楼层
直播
沙发!!!
TQ-lkp 发表于 2012-8-20 08:45:12 | 显示全部楼层
楼主给力啊
zbb564833642 发表于 2012-8-20 10:09:46 | 显示全部楼层
支持开源 ,一起加油 !!!
496812749 发表于 2012-8-20 10:39:28 | 显示全部楼层
楼主强大,请问楼主现在是做什么工作的:)
yangjing29 发表于 2012-8-21 18:12:55 | 显示全部楼层
多谢分享,不错呀,如果能弄个移植教程就更美妙了。可惜我不需要,呵呵。
xujibicool 发表于 2012-8-22 01:49:17 | 显示全部楼层
多谢分享,不错呀:lol
 楼主| snrtibi 发表于 2012-8-22 17:51:40 | 显示全部楼层
496812749 发表于 2012-8-20 10:39
楼主强大,请问楼主现在是做什么工作的

呵呵,就是嵌入式方向,做数据流加密的板子。
496812749 发表于 2012-8-22 18:14:31 | 显示全部楼层
snrtibi 发表于 2012-8-22 17:51
呵呵,就是嵌入式方向,做数据流加密的板子。

楼主你qq多少啊,想向你学习学习
zsjalive 发表于 2012-8-22 18:39:12 | 显示全部楼层
学习了

一直是伸手党   觉得不好  今天自己分享点
这个网站资料蛮全的  很多精华区
http://www.180code.com/index.asp?id=2389664522
long0702 发表于 2012-8-24 16:41:33 | 显示全部楼层
本帖最后由 long0702 于 2012-8-24 16:41 编辑

楼主,有一个问题,你的程序在电源(不是按复位键)关闭再打开后不能运行。希望能解决一下。
songzhezhe 发表于 2012-8-24 17:23:32 | 显示全部楼层
楼主给力啊    壮哉
Zhhu218 发表于 2012-9-3 08:01:34 | 显示全部楼层
感谢楼主。。。正在研究uC/OS
547886405 发表于 2012-10-30 19:59:10 | 显示全部楼层
好贴,谢谢Lz
zhwbiao123 发表于 2012-10-31 08:44:44 | 显示全部楼层
谢谢楼主,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-29 04:38 , Processed in 1.046875 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表