S3C2440学习笔记五(2440slib.s源程序的分析)

发布者:Qingfang最新更新时间:2016-08-01 来源: eefocus关键字:S3C2440  源程序 手机看文章 扫描二维码
随时随地手机看文章
以下程序是什么意思: 为啥这个文件是一堆的汇编代码,因为这里面涉及到了底层驱动,这里既是CPU的核心控制。涉及到了直接操作的寄存器和高速缓存,实际上和51的CPU是一回事,就是51可以干一件事,他就要干几十件事,没有强悍的架构和强大的寄存器和缓存团队,他就没法强悍!就跑400M吧,他为了效率加了cp15这个比较高速的协处理器,这个cp15的本质是数据处理中心。只有早期的PC机和现行的ARM还有这个东西,现在的PC机跑得非常快了,不需要CP15这类东西帮忙了。

补充一点是,CP15可以理解为MMU,它主要的工作是地址映射,也就是给CPU提供地址。SDRAM一般为32M或64M,但是对于32位的CPU,可以管理4G的空间。那么就把这个4G的空间分成4096份,每一份1M,那么32位地址变成一个组合,14位+18位。

;=====================================================================
; File Name : 2440slib.s
; Function  : GT2440  (Assembly)
; Revision  : 1.0
;=====================================================================
 
;Interrupt, FIQ/IRQ disable禁止中断FIQ/IRQ
NOINT  EQU 0xc0    ; 1100 0000---->CPSR
 
;Check if tasm.exe(armasm -16 ...@ADS 1.0) is used.
   GBLL    THUMBCODE
   [ {CONFIG} = 16
THUMBCODE SETL  {TRUE}
CODE32
   |
THUMBCODE SETL  {FALSE}
   ]

;这段指令判断是否是THUMBCODE指令集,是的话就要用

;ADS的tasm.exe进行编译。首先用GBLL定义了全局逻辑

;变量HUMBCODE,默认值为0。“[]"相当于C语言中的{},

;| 相当于else?

   MACRO
     MOV_PC_LR
     [ THUMBCODE
       bx lr
     |
       mov pc,lr
     ]
   MEND
;函数返回宏定义
   AREA |C$$code|, CODE, READONLY

;定义了代码段,此代码段是外部的可以被C程序调用的关于?

;寄存器和存储管理单元(MMU)操作函数。?

   EXPORT EnterCritical
;用内存单元r0存储CPSR?
EnterCritical   
mrs r1, cpsr
str r1, [r0]
orr r1, r1, #NOINT
msr cpsr_cxsf, r1
MOV_PC_LR
;restore cpsr, r0 = address to restore cpsr
EXPORT ExitCritical
ExitCritical
ldr r1, [r0]
msr cpsr_cxsf, r1
MOV_PC_LR

;这里的cxsf表示从低到高分别占用的4个8bit的数据域?

;指令中有时还有出现cpsr_cf, cpsr_all, cpsr_c等,这里:?

      c 指CPSR中的control field ( PSR[7:0])?

      f 指flag field (PSR[31:24])?

      x 指 extend field (PSR[15:8])?

      s 指status field ( PSR[23:16])?

;其中cpsr的位表示为:?

31 30 29 28  ---   7   6   -   4     3     2     1     0?

N   Z   C   V         I   F       M4  M3  M2    M1    M0

;==============
; CPSR I,F bit设置CPSR的I位(IRQ)和F位(FIQ)
;置位CPSR_IR,即禁止IRQ中断和FIQ中断
;==============
;int SET_IF(void);
;The return value is current CPSR.
EXPORT SET_IF
SET_IF;仅在特权模式下可用此程序。
    ;This function works only if the processor is in previliged mode.
   mrs r0,cpsr
   mov r1,r0
   orr r1,r1,#NOINT
   msr cpsr_cxsf,r1
   MOV_PC_LR
 
;void WR_IF(int cpsrValue);写值到CPSR
   EXPORT WR_IF
WR_IF;仅在特权模式下可用此程序。
    ;This function works only if the processor is in previliged mode.
   msr cpsr_cxsf,r0
   MOV_PC_LR
 
 
;void CLR_IF(void);清CPSR_IR,即允许IRQ中断和FIQ中断
   EXPORT  CLR_IF
CLR_IF;仅在特权模式下可用此程序。
    ;This function works only if the processor is in previliged mode.
   mrs r0,cpsr
   bic r0,r0,#NOINT
   msr cpsr_cxsf,r0
   MOV_PC_LR
   
    EXPORT outportw
outportw strh r0, [r1]
MOV_PC_LR
 
EXPORT inportw
inportw ldrh r0, [r0]
MOV_PC_LR
请原谅这里不是原创,只因还在努力学习!
在ARM的嵌入式应用中,存储系统是通过协处理器CP15完成的。CP15包含16个32位的寄存器,其编号是0-15。对于CP15协处理器的操作使用mcr和mrc两条协处理器指令,这两条指令的记法是从后往钱看:mcr是把r(CPU核寄存器)中的数据传送到c(协处理器寄存器)中,mrc则是把c(协处理器寄存器)中的数据传送到r(CPU核寄存器)中。对CP15协处理器的所有操作都是通过CPU寄存器和CP15寄存器之间交换数据完成的。
寄存器C0,C1。C0的基本作用是ID编码;C1的基本作用是控制位(可读可写)。
C1的第12位:I(bit[12])。当数据和地址处于分开时,该控制位禁止使能指令cache;其中0是禁止指令cache,1是使能指令cache;如果系统中使能统一的指令cache和数据cache或者系统中不含cache,读取时该位返回0,写入时忽略该位。当系统中的指令cache不禁止时,读取该位时返回1,写入时忽略该位。当系统中的指令cache不禁止时,读取时该位返回1,写入时忽略该位。
C1的第2位:C(bit[2])。当数据和地址处于分开时,本控制位禁止使能数据cache;如果系统中使用统一的指令cache和数据cache时,该控制位禁止使能整个cache。其中0是禁止cache,1是使能cache;如果系统中不含cache,读取时该位返回0,写入时忽略该位。当系统中的cache不能禁止时,读取时该位返回1,写入时忽略该位。
C1的第1位:A(bit)。对于可以选择是否支持内存访问时地址对齐检查的那些系统,本位禁止使能地址对齐检查功能;0是禁止地址对齐检查功能,1是使能对齐检查功能;对齐内存访问时地址对齐检查功能不可选择的那些系统,读取该位时根据系统是否支持地址功能对齐检查功能返回0或者1,写入时忽略该位。
      C1的第0位:M(bit[0])。禁止使能MMU或者PU;其中0是禁止地址对齐检查功能,1是使能地址对齐检查功能;如果系统中没有MMU及PU,读取时该位返回0,写入时忽略该位。

C1的30位设置快速总线模式
C2的31位模式异步模式
;====================================
; MMU Cache/TLB/etc on/off functions        MMU的缓存,快表等的允许和禁止操作
;====================================
R1_I EQU (1<<12)       ;其实汇编也不想想象中那么汇,有事可以看到C的身影
R1_C EQU (1<<2)       ;其实C就是构建在这些汇编之上,一看二看三看有种杂交的感觉
R1_A EQU (1<<1)
R1_M    EQU (1)
R1_iA EQU (1<<31)
R1_nF   EQU (1<<30)
 
;使能命令Cache
;void MMU_EnableICache(void)
   EXPORT MMU_EnableICache
MMU_EnableICache
   mrc p15,0,r0,c1,c0,0
   orr r0,r0,#R1_I
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;void MMU_DisableICache(void)禁止命令Cache
   EXPORT MMU_DisableICache
MMU_DisableICache
   mrc p15,0,r0,c1,c0,0
   bic r0,r0,#R1_I
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;使能数据Cache
;void MMU_EnableDCache(void); 当地址Cache和数据Cache分开时,使能数据Cache,反之使能整个Cache。
EXPORT MMU_EnableDCache
MMU_EnableDCache
   mrc p15,0,r0,c1,c0,0
   orr r0,r0,#R1_C
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;void MMU_DisableDCache(void)    ; 当地址Cache和数据Cache分开时,禁止数据Cache,反之禁止整个Cache。
EXPORT MMU_DisableDCache
MMU_DisableDCache
   mrc p15,0,r0,c1,c0,0
   bic r0,r0,#R1_C
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;使能地址对齐检查功能
;void MMU_EnableAlignFault(void)
   EXPORT MMU_EnableAlignFault
MMU_EnableAlignFault
   mrc p15,0,r0,c1,c0,0
   orr r0,r0,#R1_A
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;void MMU_DisableAlignFault(void)  ;禁止地址对齐检查功能   
EXPORT MMU_DisableAlignFault
MMU_DisableAlignFault
   mrc p15,0,r0,c1,c0,0
   bic r0,r0,#R1_A
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;void MMU_EnableMMU(void)   ;  使能MMU
   EXPORT MMU_EnableMMU
MMU_EnableMMU
   mrc p15,0,r0,c1,c0,0
   orr r0,r0,#R1_M
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;void MMU_DisableMMU(void)  ;禁止MMU
   EXPORT MMU_DisableMMU
MMU_DisableMMU
   mrc p15,0,r0,c1,c0,0
   bic r0,r0,#R1_M
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;void MMU_SetFastBusMode(void)  ;设置快速总线模式
; FCLK:HCLK= 1:1
  EXPORT MMU_SetFastBusMode
MMU_SetFastBusMode
   mrc p15,0,r0,c1,c0,0
   bic r0,r0,#R1_iA:OR:R1_nF
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;void MMU_SetAsyncBusMode(void)   ;  设置异步模式
; FCLK:HCLK= 1:2
   EXPORT MMU_SetAsyncBusMode
MMU_SetAsyncBusMode
   mrc p15,0,r0,c1,c0,0
   orr r0,r0,#R1_nF:OR:R1_iA
   mcr p15,0,r0,c1,c0,0
   MOV_PC_LR
 
;=========================
; Set TTBase    C2:地址转换表基地址
;=========================
;void MMU_SetTTBase(int base)
   EXPORT MMU_SetTTBase
MMU_SetTTBase
   ;ro=TTBase
   mcr p15,0,r0,c2,c0,0
   MOV_PC_LR
 
;=========================
; Set Domain  域访问控制位
;=========================
;写控制位到C3
;void MMU_SetDomain(int domain)
   EXPORT MMU_SetDomain
MMU_SetDomain
   ;ro=domain
   mcr p15,0,r0,c3,c0,0
   MOV_PC_LR
 
;=========================
; ICache/DCache functions
  C7控制指令和数据缓存和写缓冲区
  它是一个只写的寄存器。使用MRC指令读取该寄存器,将产生不可预知效果。
  指令具体格式如下:
  MCR  P15,0,,,,
  ,的不同的组合决定指令执行的不同的操作。完成操作将产生的数据写到Rd,然后写到C7。
;=========================
;使无效整个统一的cache
;void MMU_InvalidateIDCache(void)
   EXPORT MMU_InvalidateIDCache
MMU_InvalidateIDCache
   mcr p15,0,r0,c7,c7,0
   MOV_PC_LR
 
;void MMU_InvalidateICache(void) ;使无效整个指令cache
   EXPORT MMU_InvalidateICache
MMU_InvalidateICache
   mcr p15,0,r0,c7,c5,0
   MOV_PC_LR
 
;void MMU_InvalidateICacheMVA(U32 mva) ;使无效指令cache的某块mva,并把数据(虚拟地址)写到C7   
EXPORT MMU_InvalidateICacheMVA
MMU_InvalidateICacheMVA
   ;r0=mva
   mcr p15,0,r0,c7,c5,1
   MOV_PC_LR
 
;void MMU_PrefetchICacheMVA(U32 mva) ;预取指令cache中的某块mva,并把数据(虚拟地址)写到C7
   EXPORT MMU_PrefetchICacheMVA
MMU_PrefetchICacheMVA
   ;r0=mva
   mcr p15,0,r0,c7,c13,1
   MOV_PC_LR
 
;void MMU_InvalidateDCache(void)  ; 使无效整个数据cache
   EXPORT MMU_InvalidateDCache
MMU_InvalidateDCache
   mcr p15,0,r0,c7,c6,0
   MOV_PC_LR
 
;void MMU_InvalidateDCacheMVA(U32 mva) ; 使无效数据cache的某块mva,并把数据(虚拟地址)写到C7
   EXPORT MMU_InvalidateDCacheMVA
MMU_InvalidateDCacheMVA
   ;r0=mva
   mcr p15,0,r0,c7,c6,1
   MOV_PC_LR
 
;void MMU_CleanDCacheMVA(U32 mva) ; 清空数据cache中的某块mva,并把数据(虚拟地址)写到C7
   EXPORT MMU_CleanDCacheMVA
MMU_CleanDCacheMVA
   ;r0=mva
   mcr p15,0,r0,c7,c10,1
   MOV_PC_LR
 
;void MMU_CleanInvalidateDCacheMVA(U32 mva) ; 清空无效数据cache中的某块mva,并把数据(虚拟地址)写到C7
   EXPORT MMU_CleanInvalidateDCacheMVA
MMU_CleanInvalidateDCacheMVA
   ;r0=mva
   mcr p15,0,r0,c7,c14,1
   MOV_PC_LR
 
;void MMU_CleanDCacheIndex(U32 index) ; 清空数据cache中的某块Index,并把组号 组内序号写到C7中
   EXPORT MMU_CleanDCacheIndex
MMU_CleanDCacheIndex
   ;r0=index
   mcr p15,0,r0,c7,c10,2
   MOV_PC_LR
 
;void MMU_CleanInvalidateDCacheIndex(U32 index)  ; 清空将无效数据cache中的某块Index,并把组号 组内序号写到C7中
EXPORT MMU_CleanInvalidateDCacheIndex
MMU_CleanInvalidateDCacheIndex
   ;r0=index
   mcr p15,0,r0,c7,c14,2
   MOV_PC_LR
 
;void MMU_WaitForInterrupt(void) ; 等待中断激活,使ARM进入节能状态,停止执行等待中断激活。
;当异常中断IRQ或FIQ发生后,该MCR指令进入IRQ或FIQ中断处理程序执行。
   EXPORT MMU_WaitForInterrupt
MMU_WaitForInterrupt
   mcr p15,0,r0,c7,c0,4
   MOV_PC_LR
 
;===============
; TLB functions   快表TLB功能(C8)
; C8控制控制清楚TLB的相关操作。它是一个只写的寄存器。使用MRC指令读取该寄存器,将产生不可预知的效果。
;指令具体格式如下:
;MCR P15,0,,,,
;,的不同的组合决定指令执行的不同操作。完成操作将产生的数据写到Rd,然后写到C8
;===============
;使无效整个统一的cache;或者使无效整个数据cache和指令cache
;voic MMU_InvalidateTLB(void)
   EXPORT MMU_InvalidateTLB
MMU_InvalidateTLB
   mcr p15,0,r0,c8,c7,0
   MOV_PC_LR
 
;void MMU_InvalidateITLB(void) ;使无效整个指令cache
   EXPORT MMU_InvalidateITLB  ;供外部使用(*个人理解*)
MMU_InvalidateITLB      ;调用标记
   mcr p15,0,r0,c8,c5,0
   MOV_PC_LR              ;调用返回
 
;void MMU_InvalidateITLBMVA(U32 mva) ; 使无效指令cache的单个地址变换条目mva,并把虚拟地址返回到C8
   EXPORT MMU_InvalidateITLBMVA
MMU_InvalidateITLBMVA
   ;ro=mva
   mcr p15,0,r0,c8,c5,1
   MOV_PC_LR
 
;void MMU_InvalidateDTLB(void) ; 使无效整个数据cache
EXPORT MMU_InvalidateDTLB
MMU_InvalidateDTLB
mcr p15,0,r0,c8,c6,0
MOV_PC_LR
 
;void MMU_InvalidateDTLBMVA(U32 mva) ; 使无效数据cache的单个地址变换条目mva,并把虚拟地址返回到C8
EXPORT MMU_InvalidateDTLBMVA
MMU_InvalidateDTLBMVA
;r0=mva
mcr p15,0,r0,c8,c6,1
MOV_PC_LR
 
;=================
; Cache lock down      缓存内容锁定(C9)
; Cache内容锁定,就是将一些关键代码和数据预取到cache后,设置一定的属性,使发生cache块替换时,
;这些关键代码和数据所在的块不会被替换。指令具体格式如下:
;MCR  P15,0,,,,
;MCR  P15,  0,   ,,,
;当系统中包含独立的数据cache和指令cache时,对应于数据cache和指令cache分别有一个独立的cache内容锁定寄存器。
;=1 选择指令cache的内容锁定寄存器
;=0 选择数据cache的内容锁定寄存器
;当系统中使用统一的数据cache和指令cache时,操作数应为0
;=================锁数据cache
;void MMU_SetDCacheLockdownBase(U32 base)
   EXPORT MMU_SetDCacheLockdownBase
MMU_SetDCacheLockdownBase
   ;r0= victim & lockdown base
   mcr p15,0,r0,c9,c0,0
   MOV_PC_LR
 
;void MMU_SetICacheLockdownBase(U32 base)  ; 锁指令cache
   EXPORT MMU_SetICacheLockdownBase
MMU_SetICacheLockdownBase
   ;r0= victim & lockdown base
   mcr p15,0,r0,c9,c0,1
   MOV_PC_LR
 
;=================
; TLB lock down   快表内容锁存(C10)  ; 具体操作同cache锁存
;=================锁数据快表
;void MMU_SetDTLBLockdown(U32 baseVictim)
   EXPORT MMU_SetDTLBLockdown
MMU_SetDTLBLockdown
   ;r0= baseVictim
   mcr p15,0,r0,c10,c0,0
   MOV_PC_LR
 
;void MMU_SetITLBLockdown(U32 baseVictim)  ;  锁指令快表
   EXPORT MMU_SetITLBLockdown
MMU_SetITLBLockdown
   ;r0= baseVictim
   mcr p15,0,r0,c10,c0,1
   MOV_PC_LR
 
;============
; Process ID  获得进程标识符(C13)
;============获得进程标识符
;void MMU_SetProcessId(U32 pid)
   EXPORT MMU_SetProcessId
MMU_SetProcessId
   ;r0= pid
   mcr p15,0,r0,c13,c0,0
   MOV_PC_LR
 
   END
这个东东和CP15密切相关,是一个启动代码,等我下次回来再分析一遍

关键字:S3C2440  源程序 引用地址:S3C2440学习笔记五(2440slib.s源程序的分析)

上一篇:s3c2410 中断异常处理
下一篇:S3C2440学习三(基础模块的使用1)

推荐阅读最新更新时间:2024-03-16 15:02

s3c2440裸机-异常中断(二. und未定义指令异常)
1._und(未定义指令异常)介绍 我们之前分析过5种异常,那么如何进入未定义指令异常,当然是cpu读取指令发生异常,出现了指令解析异常。 我们先来看下当cpu解析到什么样的指令才会触发未定义指令异常呢? 从上面的arm指令格式中可知,只要指令码属于划线的格式,就属于未定义指令异常。 2.汇编向c函数传参 我们知道汇编给C语言函数传参是通过r0,r1,...通过堆栈的方式去传递的参数,比如r0=1, r1=2;那么在被调用的c函数中argv0就是r0, argv1就是r1...,那么我们如果通过汇编给C函数传递字符串呢? 我们可以通过这样声明und_string为一个字符串: und_string: .string unde
[单片机]
<font color='red'>s3c2440</font>裸机-异常中断(二. und未定义指令异常)
一种0-24小时的时钟源程序
  该程序可用四位LED显示器进行实时显示。这是一种基本的时钟程序,利用它可以略加修改,即可制成0-12小时或可预置起始时刻的时钟程序。该时钟源程序命名为th090.c,即用C语言编写的。      只需按照上述规范,可在MPIAB IDE集成开发环境下编辑其源程序,其清单如下:   源程序建立后,即可通过PI CC 编译器进行编译而生成th090.e相对应的目标码th090.hex。      说明:(1)读者也可用汇编语言,在MPLAB IDE集成开发环境下,建立汇编语言的源程序,再用汇编软件MPASM进行汇编,同样可生成相对应的目标码.hex。如果读者是用汇编语言建立0-24小时的时钟程序,将会看到汇编语言的
[单片机]
一种0-24小时的时钟<font color='red'>源程序</font>
S3C2440与SDRAM与NAND与NOR的地址连线分析
S3C2440有27根地址线ADDR ,8根片选信号nGCS0-nGCS7,对应bank0-bank7,当访问bankx的地址空间,nGCSx引脚为低电平,选中外设。 2^27=2^7 * 2^10 * 2^10 = 128Mbyte 8*128Mbyte = 1Gbyte 所以S3C2440总的寻址空间是1Gbyte。 市面上很少有32位宽度的单片SDRAM,一般选择2片16位SDRAM扩展得到32位SDRAM. 选择的SDARM是HY57V561620F,4Mbit * 4bank *16,共16Mbyte?(后面有解释) 两块HY57V561620F并接,构成64M 32bit的SDRAM 首先了解下SDRAM的寻
[单片机]
<font color='red'>S3C2440</font>与SDRAM与NAND与NOR的地址连线分析
NANDFlashd的读写(基于s3c2440)
#ifndef __TEST_H__ #define __TEST_H__ #include def.h #define MAX_NAND_BLOCK 2048 //一共2048块 #define NAND_PAGE_SIZE 2048 //每块main区2k字节=2048 typedef struct nand_id_info //芯片的ID信息 { U8 IDm; //厂商ID U8 IDd; //设备ID U8 ID3rd; U8 ID4th; U8 ID5th; } nand_id_info; typedef struct bad_block_info //登记
[单片机]
ARM9(S3C2440) Touch Screen
触摸屏工作原理 触摸屏分为:电阻式,电容式,声表面波式,红外线扫描式等类型,使用的最多的是4线电阻式的触摸屏。 触摸屏工作流程 (1)、设置触摸屏接口为等待中断模式,等待触摸屏被按下。 (2)、如果中断(INT_TC)发生,选择X,Y坐标转换模式(X/Y坐标分别转换模式,X/Y坐标自动转换模式),启动AD转换。 (3)、当AD转换完毕后,通过中断(INT_ADC),获取X/Y坐标,ADCDAT0 bit -x坐标,ADCDAT1 bit -Y坐标。 (4)、设置触摸屏接口为等待中断模式,等待触摸笔离开触摸屏。 (5)、返回步骤1,等待下次触摸笔被按下。 实验主要代码 main
[单片机]
ARM9(S3C2440) LED控制
下面为TQ2440开发板的硬件LED接口: LED控制思想 1、将相应的引脚设置为输出 2、再将相应的引脚设置为低电平 代码实现 src: inc: 2440init.s为开发板开启首先运行的代码。目的:初始化C语言环境。 ; NAME: 2440INIT.S ; DESC: C start up codes ; Configure memory, ISR ,stacks ; Initialize C-variables 。。。。。。 。。。。。。 IMPORT MMU_SetAsyncBusMode IMPORT MMU_SetF
[单片机]
ARM9(<font color='red'>S3C2440</font>) LED控制
GPIO-点亮一个LED(JZ2440-S3C2440)
1、看电气原理图 GPF4--------(GPFCON =01; GPFDAT =1) GPF4引脚输出1(高电平):LED1灯灭。 GPF4引脚输出0(低电平):LED1电亮。 2、如何让引脚输出高/低电平 (1)配置引脚功能(2)输出引脚:写值到某个寄存器;输入引脚:读寄存器的值。 3、看芯片手册 GPIO包括A----J组。 这里要用到GPF组的寄存器: GPFCON寄存器:用来配置引脚的功能; GPFDAT:引脚的值。 GPFCON寄存器的可以设置引脚的功能为:输入、输出、中断和保留功能。 GPFDAT寄存器: 4、编写程序:GPFCON的地址为0x56000050。G
[单片机]
GPIO-点亮一个LED(JZ2440-S3C2440)
Samsung S3C2440平台上的Vxworks BSP移植
  研究基于S3C2440平台上的Vxworks BSP移植具有重要的意义。本文就BSP的概念、BSP移植过程中重点修改的几个文件、串口和网口驱动以及BSP的调试和仿真做详细的介绍。   BSP概述   VxWorks操作系统将所有硬件的功能函数分别放到一系列库中,这些库就被称为板级支持包BSP。BSP是连接VxWorks操作系统与硬件平台的一个接口软件包,在引导系统、支持系统运行过程中扮演着重要的角色,首先,通过BSP可以生成引导操作系统的bootrom;其次,引导行工程的建立基础就是BSP;最后,BSP具有与用户交互的作用,可以提供一个基础的硬件调试环境。BSP还可以使VxWorks运行于特定的硬件平台,如ARM、PPC、
[单片机]
Samsung <font color='red'>S3C2440</font>平台上的Vxworks BSP移植
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved