首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

arm初始化

arm初始化

Cache的初始化


ARM9的BSP,在romInit()函数里对cache进行的操作为:
1.设置几个cache区;
2.flush caches(通过以下代码实现:
LDR R0,=0x00000000
MCR p15,0,R0,c7,c5,0
MCR p15,0,R0,c7,c6,0
)
问题:
1.flush cache是什么意思?
2.在romInit()函数里一般对cache进行的操作是什么?



1.flush cache是什么意思?
使所有的 IDC 无效,这样CPU读取数据和指令时可以直接到原存储地址去读取,而不必从cache中得到,因为cache保留的是以前的数据,而当前原地址的数据可能发生了变化,这样保证了数据的正确性.使CPU得到最新的数据,当然,这样会降低CPU的处理速度.


2.在romInit()函数里一般对cache进行的操作是什么?
在romInit()函数里,对cache主要的操作就是flush cache,因为对系统初始化前,必须要保证初始化过程的正确和连续,所以要有flush cache,disable interrupt 等操作.



VxWorks系统装入ARM的过程 


问题:开发基于ARM7和VxWorks的嵌入式系统,Tornado/VxWorks 和一个基于ARM7TDMI的单板机是否足够了?VxWorks 怎么样装入单板机运行?不用JEENI可以装入么?



把 VXWORKS IMGAGE 装入ARM 的过程大体上是这样的:
ARM 7 内部有 128 BYTE 的 BOOT ROM,和 2K 的 SRAM,当需要DOWNLOAD VXWORKS 时 ARM 采用 BOOT 方式启动运行存在 BOOTROM 中的程序初始化 ARM 内部的 COM 口,从 COM 口接受数据到 2K 的 SRAM,这 2K 程序是用来真正 LOAD VXWORKS 的,2K 程序 LOAD 完毕后系统自动跳转到这 2K 程序执行它的作用是首先通过 COM 口接受 VXWORKS 到 DRAM ,然后由 DRAM 写入 FLASH 。


写入完毕后,切换到 NORMAL 模式重新启动系统,系统自动跳到 FLASH 0X00000000 开始运行 VXWORKS。


可以用 PC 机上的 COM1 与 ARM 内部的 UART1(COM) 通信来 DOWNLOAD VXWORKS。


Bootloader怎么得到,如果对开发板有些改动,还能使用开发板的bootloader吗?bootloader起到什么作用?


Bootloader相当于PC机主板上的BIOS,是最底层的引导软件,初始化主板的基本设置,为接收外部程序做硬件上的准备.


有些bootloader已经嵌在CPU内了,没有bootloader的CPU可以在片外的eeprom内做bootloader,也可以不要bootloader,直接通过JTAG口灌入程序,开发板改动基本上不会影响bootloader.


 


VxWorks 下的驱动的问题


问题:vxworks中有两种驱动模式,一个是是分层结构,特别对网络协议栈来说有network protocol/MUX/network driver(END,BSD).还有一种就是没有层次的概念,在应用程序中直接访问硬件的。比方说现在有两种类型的驱动,譬如USB 和ATM,他们需要直接交换数据,不想走OS那一套标准的流程,也就是我们想用后面的一种(OS Independent)。应如何去做?


我没有做过 ATM,USB 的驱动,在 VXWORKS 上做过其它驱动, MODEM,SPI等,我认为如果 VXWORKS 不支持莫种协议的话,可以在 VXWORKS 上直接对硬件操作,自己按照相关协议标准封装数据包按照硬件定义放入相应的地址空间。这等于自己写协议和驱动。


这种方法是可行的,当然如能找到 VXWORKS 下支持该协议的驱动更好。


这种程序和 VXWORKS 系统也是相关的:


1。MMU 对该硬件的地址映射正确 (改 BSP )
2。中断向量表(改 BSP )
3。硬件中断登记 (INTCONNECT ),及 ISR
4。系统任务协调,保证在该程序执行时,没有其它任务占用 CPU


基本上和开发其它的驱动程序是一样的。

51 c8051f(f020,f040) msp430 arm(2410,2510) fpga(xc3s4000) dsp(5116 dm642) keilc vc++ matlab linux protel Ten_layerPCB mpegx h.26x Rscode Turbocode ofdm VideoBroadcasting ldpc_code(now!)
不错哦,帮你顶下

不错,帮你顶

不错。
返回列表