<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > Samsung S3C2440平臺上的Vxworks BSP移植

Samsung S3C2440平臺上的Vxworks BSP移植

作者: 時(shí)間:2011-08-16 來(lái)源:網(wǎng)絡(luò ) 收藏
部分代碼修改如下:

本文引用地址:http://dyxdggzs.com/article/178741.htm

  /*添加了對串行口UART的初始化,配置了UART的一些控制寄存器,并設置了波特率,部分代碼如下*/

  InitUART:

  #define UART_BRD (( 50750000 / (115200 * 16)) - 1)

  mov r2,#UART_BRD /*設置串口的波特率 */

  /*初始化堆棧指針*/

  ldr sp, L$_STACK_ADDR

  mov fp, #0

  在建立堆棧之后,系統就具備了高級語(yǔ)言的執行條件,后續的代碼就可以用C語(yǔ)言來(lái)實(shí)現了。

  /*使程序跳轉至C語(yǔ)言程序段代碼如下*/

  #if (ARM_THUMB)

  ldr r12,L$_rStrtInRom

  orr r12,r12, #1

  bx r12

  #else

  ldr pc,L$_rStrtInRom /*跳轉到romStart()中執行*/ #endif

  CPU將執行權轉移給romStart()之后。該函數就使內存清空,然后把整個(gè)引導映像復制到內存中,最后將CPU的控制權交給usrInit()。

  修改sysLib.c

  文件sysLib.c提供VxWorks和應用程序間的板級聯(lián)系,這里重點(diǎn)介紹一下內存映射函數。

  目標系統開(kāi)啟了MMU模塊,在sysLib.c文件里面就定義了一個(gè)sysPhysMemDesc[ ]表。部分代碼如下所示:

  PHYS_MEM_DESC sysPhysMemDesc [] =

  { (void*) (ROM_BASE_ADRS+0xf0000000), (void *) (ROM_BASE_ADRS),

  ROUND_UP(ROM_SIZE_TOTAL*2,PAGE_SIZE),

  VM_STATE_MASK_VALID|VM_STATE_MASK_WRITABLE|VM_STATE_MASK_CACHEABLE,

  VM_STATE_VALID|VM_STATE_WRITABLE_NOT|VM_STATE_CACHEABLE_NOT

  }

  上面一小段代碼是對ROM_BASE_ADRS 的內存映射,ROM_BASE_ADRS+0xf0000000是要映射的虛擬地址,ROM_BASE_ADRS是硬件設計時(shí)定義的實(shí)際物理地址,ROUND_UP(ROM_SIZE_TOTAL*2,PAGE_SIZE)是映射長(cháng)度,VM_STATE_MASK_VALID|VM_STATE_MASK_WRITABLE|VM_STATE_MASK_CACHEABLE是可初始化的地址狀態(tài),VM_STATE_VALID|VM_STATE_WRITABLE_NOT|VM_STATE_CACHEABLE_NOT是實(shí)際初始化的地址狀態(tài)。

  若添加新的外設,該外設對應的內存空間必須在sysPhysMemDesc[]中配置。通過(guò)這樣的配置就完成了內存映射和MMU的開(kāi)啟。

  修改dm9kEnd.c

  由于使用的是DM9000網(wǎng)卡。要做好DM9000網(wǎng)卡的END驅動(dòng)首先要初始化網(wǎng)卡的數據結構dm9kDevice,這個(gè)數據結構如下:

  typedef struct dm9kDevice

  {

  END_OBJ endObj; /*繼承類(lèi) */

  int unit; /*設備單元號 */

  UINT32 flags; /* 本地標志信號*/

  int ivec; /* 中斷向量 */

  int ilevel; *中斷級 */

  ……

  } DM9K_DRV_CTRL

  數據結構中的END_OBJ類(lèi)型成員、網(wǎng)卡單元號、中斷號和中斷向量是網(wǎng)卡驅動(dòng)中必須包含的成員元素。

  驅動(dòng)的部分接口函數,主要包括網(wǎng)卡加載函數dm9kEndLoad、網(wǎng)卡啟動(dòng)函數dm9kStart、停止網(wǎng)卡函數dm9kStop、網(wǎng)卡控制函數dm9kIoctl、網(wǎng)卡卸載函數dm9kUnload、網(wǎng)卡發(fā)送函數dm9kSend、獲取組播地址函數dm9kMCastGet、啟動(dòng)輪詢(xún)模式函數dm9kPollStart、關(guān)閉輪詢(xún)模式函數dm9kPollStop、輪詢(xún)模式發(fā)送函數dm9kPollSend、輪詢(xún)模式接收函數dm9kPollRcv等,通過(guò)對這些接口函數編寫(xiě)功能,實(shí)現網(wǎng)卡驅動(dòng)。

  在編寫(xiě)驅動(dòng)的過(guò)程中,還必須注意:由于目標板用一種100pin的DM9000芯片,這種芯片除了有CMD信號之外,還有6根地址片選信號SA4~SA9,根據SA4~SA9對應的CPU地址線(xiàn)和數據手冊上引腳定義,可以計算出網(wǎng)卡的端口地址,如果SA4~SA9對應CPU地址的addr4~addr9,那么網(wǎng)卡端口基址就是0x18000300,這樣可以計算出網(wǎng)卡的基地址。

  

  圖2 VxWorks COM1口的打印信息



關(guān)鍵詞: BSP 移植 Vxworks 平臺 S3C2440 Samsung

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>