打印

ARM9 和 ARM11的区别

[复制链接]
5326|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dogsun88|  楼主 | 2012-6-7 21:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dogsun88|  楼主 | 2012-6-7 21:04 | 只看该作者
cpu的初始化的状态不同,比如中断的处理方式,cache是否使能?这些一般和协处理器有关,已经考虑了,tlb没有用,还有其他的需要考虑吗?arm9初始化还包括什么?

使用特权

评论回复
板凳
dogsun88|  楼主 | 2012-6-7 21:08 | 只看该作者
是不是和编译选项有关系?用的编译器是codewarrie,选的是arm920ej-s

使用特权

评论回复
地板
dxb_dxb| | 2012-8-18 21:18 | 只看该作者
ARM9 五级流水线,带MMU,能跑LINUX等大多数嵌入式操作系统,ARM11 比ARM9更强大,开始增加了很多信号处理方面的指令,网上这方面的的资料很多,自己多看看去

使用特权

评论回复
5
xinzha| | 2012-8-19 08:04 | 只看该作者
在我碰到的那次中,问题主要是因为编译器对不同类型cpu产生的指令类型和代码位置不同造成的。
1、arm9内核中是不支持非对齐访问的,而编译器不能够检查类似于strd和ldrd这样的八字节对齐操作的,所以在arm9中所有用到64位变量的地方都得注意。
2、即使是字访问或者半字访问,如果arm11打开了非对齐访问允许并关闭了非对齐检查(U位和A位,自己在ARM手册的cp15操作中都能查到),也可以正常访问到,但是在arm9中遇到这样的非对齐访问,要么是直接data abort,要么是给出错误数据,导致后续问题。
这两个问题一般是需要用仿真器并且能够读懂汇编之后比较好查。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
dong_abc + 1
6
xinzha| | 2012-8-19 08:08 | 只看该作者
cache初始化,tlb,中断这些东西只要你没去动,arm9和arm11的初始状态基本是一样的。

使用特权

评论回复
7
dogsun88|  楼主 | 2012-9-26 21:58 | 只看该作者
总结一下,好长时间了,结贴了,谢谢xinzha的帖子。

最主要的不同有两点:
1、中断处理方式,arm11支持Vectored Interrupt Controller,arm9是否支持不一定,我们的板子不支持。
2、对齐方式的处理,arm11支持非对齐访问,arm9不支持,有两个层次,一个cpu层次,一个编译器层次,非对齐访问cpu层次保证cpu不报错,编译器层次来实现具体的翻译。

还有一点很重要,对于实时系统,arm9的处理效率比arm11的处理效率低也是需要考虑的。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不想吃屎的狗

0

主题

10

帖子

0

粉丝