系统初始化 VxWorks网络配置及分析 硬件中断 FlashROM 驱动 文件系统 网卡驱动(Linux) LCD和触摸屏 MODEM 拨号 实时时钟 RTC VxWorks PCI驱动编程步骤 MPC860串口SCC UART模式编程
系统初始化
可参见 PowerPC初始化示例 和 ARM_Boot示例
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
基本上和开发其它的驱动程序是一样的。
|